forked from volure/keystoreBrute
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfrmBrute.cs
98 lines (77 loc) · 3.03 KB
/
frmBrute.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
namespace keystoreBrute
{
public partial class frmBrute : Form
{
public frmBrute ()
{
InitializeComponent ();
}
protected override void OnLoad (EventArgs e)
{
base.OnLoad (e);
string personalFolder = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
if (personalFolder.EndsWith ("Documents"))
personalFolder = Path.GetDirectoryName (personalFolder);
personalFolder = Path.Combine (personalFolder, ".android");
txtKeystoreFile.Text = Path.Combine (personalFolder, "debug.keystore");
}
bool passwordLost;
List<string> combinations = new List<string>();
int index = 0;
public string GetPassword ()
{
if (index < combinations.Count)
return combinations[index++];
MessageBox.Show ("Unable to Find Password");
passwordLost = false;
return "";
}
public void ExecuteCommand ()
{
String password = GetPassword ();
lblPassword.Text = password;
Process output = Cmd.Execute ("keytool", "-list -keystore " + txtKeystoreFile.Text + " -storepass " + password.Replace ("\"", "\\\""));
if (output.ExitCode == 0) {
MessageBox.Show (String.Format ("The Password is {0}", password));
passwordLost = false;
}
string result = "\nPassword: " + password + "\r\n\t";
result += output.StandardOutput.ReadToEnd ().Trim ();
txtResults.AppendText (result);
}
private void btnBruteForce_Click (object sender, EventArgs e)
{
index = 0;
List<string> parts = new List<string> ();
parts.AddRange (txtKeyParts.Lines);
txtResults.Text = "";
txtFailedPasswords.Text = "";
while (parts.Contains (""))
parts.Remove ("");
txtKeyParts.Lines = parts.ToArray ();
passwordLost = true;
combinations.Clear ();
List<List<string>> permutations;
permutations = PermuteUtils.Permute<string> (parts, parts.Count).Select (permutation => permutation.ToList ()).ToList ();
while (permutations.First().Count > 0) {
Console.WriteLine ("permutations " + permutations.Count);
combinations = combinations.Concat (permutations.Select (seq => String.Join ("", seq.ToArray ()))).Distinct ().ToList ();
permutations = permutations.Select (seq => seq.Take (seq.Count - 1).ToList ()).ToList ();
}
while (passwordLost) {
ExecuteCommand ();
Application.DoEvents ();
}
}
}
}