You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[keychain_dumper](https://github.com/ptoomey3/Keychain-Dumper/) was written by [ptoomey3](https://github.com/ptoomey3/).<br/>
11
12
The idea for the iTunes backup feature was given to me by:<br/>
The code for the iTunes backup feature was loosely based on [this GitHub project](https://github.com/Starwarsfan2099/iOS-Restriction-Key-Cracker) by [u/Starwarsfan2099](https://reddit.com/user/Starwarsfan2099)
15
16
16
17
## Dependencies
17
18
18
-
To compile:<br/>
19
-
slf4j (slf4j-api-1.7.2 and slf4j-jdk14-1.7.2 are used for compilation of the release jars)<br/>
20
-
sshj (sshj-0.27.0 is used for compilation of the release jars)<br/>
21
-
ed25519-java (eddsa-0.3.0 is used for compilation of the release jars)<br/>
22
-
bc-java (bcprov-jdk15on-1.64 is used for compilation of the release jars)<br/><br/>
23
-
Note: The iproxy feature currently does not work.<br/>
-Windows: Must have iproxy in your PATH environment variable
19
+
All dependencies are handled by Maven.<br/>
20
+
sshj<br/>
21
+
slf4j<br/>
22
+
ed25519><br/>
23
+
bcprov-jdk15on<br/>
24
+
bcpkix-jdk15on<br/>
25
+
jzlib
28
26
29
27
## Compilation/Execution
30
28
31
-
This tool can either be run from the .jar executable of the latest release in the Releases tab, or can be compiled using javac.
29
+
To run this program, you can either download the JAR from the Releases tab or generate one yourself with Maven.<br/>
30
+
Whether you use the Releases JAR or one generated yourself, if you want to use the iOS 12-13 features, keychain_dumper must be in the same directory as the JAR.<br/>
31
+
OpenSSH is required to use the iOS 12-13 features and the iOS 7.0-11.4.1 SSH features. If you're using checkra1n, iproxy will work as an alternative. If you're using any other jailbreak, OpenSSH is available on the default repos.
32
32
33
33
## Contacting me
34
34
35
35
I will respond to any PM I receive on Reddit.<br/>
intconfirm = JOptionPane.showConfirmDialog(null, "This feature requires SQLite 3.x by Sam Bingner to be installed on your device. Do you consent to automatic installation of this package on your device?");
53
+
if (confirm == 0) {
54
+
Stringip = JOptionPane.showInputDialog("Device IP address? OpenSSH must be installed on your device.");
55
+
StringportStr = JOptionPane.showInputDialog("Device SSH server port? (press enter to default to 22)");
56
+
intport = 22;
57
+
if (!portStr.equals("")) {
58
+
port = Integer.parseInt(portStr);
59
+
}
60
+
StringrootPass = JOptionPane.showInputDialog("What is your device's root password? (press enter to default to 'alpine')");
61
+
if (rootPass.equals("")) {
62
+
rootPass = "alpine";
63
+
}
64
+
Display.FRAME.getContentPane().removeAll();
65
+
Display.FRAME.getContentPane().add(newJLabel("Connecting to " + ip + ":" + port + " over SSH..."));
66
+
Display.refresh();
67
+
System.out.println("Connecting to " + ip + ":" + port + " over SSH...");
68
+
SSHClientssh = newSSHClient();
69
+
ssh.addHostKeyVerifier(newPromiscuousVerifier());
70
+
ssh.connect(ip, port);
71
+
Display.FRAME.getContentPane().add(newJLabel("Logging in as user 'root'..."));
72
+
System.out.println("Logging in as user 'root'...");
73
+
Display.refresh();
74
+
ssh.authPassword("root", rootPass);
75
+
Display.FRAME.getContentPane().add(newJLabel("Uploading keychain_dumper to device..."));
76
+
Display.refresh();
77
+
System.out.println("Uploading keychain_dumper to device...");
String[] list = keychain.split("ParentalControls")[1].split("\n");
120
+
Stringpassword = null;
121
+
for (inti = 0; i < 20; i++) {
122
+
if (list[i].startsWith("Keychain Data: ")) {
123
+
password = list[i].split(": ")[1];
124
+
break;
125
+
}
126
+
}
127
+
Display.FRAME.getContentPane().add(newJLabel("Found Screen Time passcode! Passcode: " + password));
128
+
System.out.println("Found Screen Time passcode! Passcode: " + password);
129
+
Display.refresh();
130
+
JButtonbutton = newJButton("Back");
131
+
button.addActionListener(newBackListener());
132
+
Display.FRAME.getContentPane().add(button);
133
+
Display.refresh();
134
+
JOptionPane.showMessageDialog(null, "Found Screen Time passcode! Passcode: " + password);
135
+
}
136
+
} catch (Exceptionex) {
137
+
handleException(ex, true);
138
+
Display.FRAME.getContentPane().add(newJLabel("Failed to retrieve Screen Time passcode! If you're sure you've done everything correctly, create an issue on GitHub."));
0 commit comments