You reach a large metal door. It’s protected by large yellow bars. There appears to be an panel with a keypad…
We’re given a .jar file to reverse. JADX is a great tool for doing exactly that. I’m personally using the GUI version of JADX.
This is the only Java file in the JADX decompilation:
package defpackage;
import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.UIManager;
/* compiled from: bunker.java *//* renamed from: Bunker reason: default package *//* loaded from: Bunker.jar:Bunker.class */class Bunker extends JFrame implements ActionListener { static JFrame f; static JTextField l; String output = "";
Bunker() { }
public static void main(String[] strArr) { f = new JFrame("Bunker"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { System.err.println(e.getMessage()); } Bunker bunker = new Bunker(); l = new JTextField(8); l.setEditable(false); JButton jButton = new JButton("0"); JButton jButton2 = new JButton("1"); JButton jButton3 = new JButton("2"); JButton jButton4 = new JButton("3"); JButton jButton5 = new JButton("4"); JButton jButton6 = new JButton("5"); JButton jButton7 = new JButton("6"); JButton jButton8 = new JButton("7"); JButton jButton9 = new JButton("8"); JButton jButton10 = new JButton("9"); JPanel jPanel = new JPanel(); jButton.addActionListener(bunker); jButton2.addActionListener(bunker); jButton3.addActionListener(bunker); jButton4.addActionListener(bunker); jButton5.addActionListener(bunker); jButton6.addActionListener(bunker); jButton7.addActionListener(bunker); jButton8.addActionListener(bunker); jButton9.addActionListener(bunker); jButton10.addActionListener(bunker); jPanel.add(l); jPanel.add(jButton); jPanel.add(jButton2); jPanel.add(jButton3); jPanel.add(jButton4); jPanel.add(jButton5); jPanel.add(jButton6); jPanel.add(jButton7); jPanel.add(jButton8); jPanel.add(jButton9); jPanel.add(jButton10); f.add(jPanel); f.setSize(120, 500); f.show(); }
public void actionPerformed(ActionEvent actionEvent) { this.output += actionEvent.getActionCommand(); l.setText(this.output); if (this.output.length() == 8) { System.err.print("USER ENTERED: "); System.err.println(this.output); l.setText(""); if (this.output.equals("72945810")) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < "Q^XSNZD^\\WKk\u0004\tnCVKJkTOPYCm_AGLYUEmPZFLCETFP[[E".length(); i++) { sb.append((char) ("Q^XSNZD^\\WKk\u0004\tnCVKJkTOPYCm_AGLYUEmPZFLCETFP[[E".charAt(i) ^ this.output.charAt(i % this.output.length()))); } JOptionPane.showMessageDialog((Component) null, sb.toString()); } else { JOptionPane.showMessageDialog((Component) null, "=== BUNKER CODE INVALID ==="); } this.output = ""; } }}Seems like the code is just 72945810.
Run the program with java -jar Bunker.jar and input the code into the numeric keypad to get the flag!
flag{bunker_11_says_await_further_instruction}