more
This commit is contained in:
49
vault-door-5/VaultDoor5.java
Executable file
49
vault-door-5/VaultDoor5.java
Executable file
@@ -0,0 +1,49 @@
|
||||
import java.net.URLDecoder;
|
||||
import java.util.*;
|
||||
|
||||
class VaultDoor5 {
|
||||
public static void main(String args[]) {
|
||||
VaultDoor5 vaultDoor = new VaultDoor5();
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.print("Enter vault password: ");
|
||||
String userInput = scanner.next();
|
||||
String input = userInput.substring("picoCTF{".length(),userInput.length()-1);
|
||||
if (vaultDoor.checkPassword(input)) {
|
||||
System.out.println("Access granted.");
|
||||
} else {
|
||||
System.out.println("Access denied!");
|
||||
}
|
||||
}
|
||||
|
||||
// Minion #7781 used base 8 and base 16, but this is base 64, which is
|
||||
// like... eight times stronger, right? Riiigghtt? Well that's what my twin
|
||||
// brother Minion #2415 says, anyway.
|
||||
//
|
||||
// -Minion #2414
|
||||
public String base64Encode(byte[] input) {
|
||||
return Base64.getEncoder().encodeToString(input);
|
||||
}
|
||||
|
||||
// URL encoding is meant for web pages, so any double agent spies who steal
|
||||
// our source code will think this is a web site or something, defintely not
|
||||
// vault door! Oh wait, should I have not said that in a source code
|
||||
// comment?
|
||||
//
|
||||
// -Minion #2415
|
||||
public String urlEncode(byte[] input) {
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i=0; i<input.length; i++) {
|
||||
buf.append(String.format("%%%2x", input[i]));
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
public boolean checkPassword(String password) {
|
||||
String urlEncoded = urlEncode(password.getBytes());
|
||||
String base64Encoded = base64Encode(urlEncoded.getBytes());
|
||||
String expected = "JTYzJTMwJTZlJTc2JTMzJTcyJTc0JTMxJTZlJTY3JTVm"
|
||||
+ "JTY2JTcyJTMwJTZkJTVmJTYyJTYxJTM1JTY1JTVmJTM2"
|
||||
+ "JTM0JTVmJTMwJTYyJTM5JTM1JTM3JTYzJTM0JTY2";
|
||||
return base64Encoded.equals(expected);
|
||||
}
|
||||
}
|
||||
9
vault-door-5/sol.py
Executable file
9
vault-door-5/sol.py
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/home/maxime/.pyvenv/bin/python3
|
||||
from base64 import b64decode
|
||||
from urllib.parse import unquote
|
||||
|
||||
S = "JTYzJTMwJTZlJTc2JTMzJTcyJTc0JTMxJTZlJTY3JTVm" + "JTY2JTcyJTMwJTZkJTVmJTYyJTYxJTM1JTY1JTVmJTM2" + "JTM0JTVmJTMwJTYyJTM5JTM1JTM3JTYzJTM0JTY2"
|
||||
S = b64decode(S)
|
||||
S = unquote(S)
|
||||
print(S)
|
||||
|
||||
Reference in New Issue
Block a user