-
Notifications
You must be signed in to change notification settings - Fork 0
/
MainForm.cs
151 lines (133 loc) · 4.86 KB
/
MainForm.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
using AnotherLAPSUIApp.Properties;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.DirectoryServices;
using System.Management.Automation;
using System.Security.Principal;
namespace AnotherLAPSUIApp
{
public partial class MainForm : Form
{
public string _UNAME = "Default User";
public MainForm()
{
InitializeComponent();
}
private void searchForPassword(string hostname)
{
timer1.Stop();
timer1.Enabled = false;
searchingLabel.Visible = true;
hostnameTextBox.Enabled = false;
searchBtn.Enabled = false;
passwordTextBox.Text = "";
if (hostname == null || hostname == "")
{
MessageBox.Show("Cannot search for a blank hostname.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
string password = askDCForPassword(hostname);
if (password.Contains("get-adcomputer : Cannot find an object with identity:"))
{
MessageBox.Show("There is no computer with the name \"" + hostname + "\" in AD. Please try a different search.", "Computer Not Found", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
passwordTextBox.Text = password;
}
}
searchingLabel.Visible = false;
hostnameTextBox.Enabled = true;
searchBtn.Enabled = true;
}
private string askDCForPassword(string hostname)
{
string foundPassword = "";
string path = Directory.GetCurrentDirectory() + "\\laps-lookup.ps1";
saveLookupScript(path, hostname);
try
{
var process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = @"powershell.exe";
process.StartInfo.Arguments = "-ExecutionPolicy Bypass -File \"" + path + "\" --Hostname " + hostname;
process.Start();
string s = process.StandardOutput.ReadToEnd();
process.WaitForExit();
foundPassword = s;
}
catch (Exception e)
{
MessageBox.Show("Error trying to lookup password.\n\n\nSource:\n" + e.Source + "\nMessage:\n" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
removeLookupScript(path);
return foundPassword;
}
private void saveLookupScript(string path, string hostname)
{
removeLookupScript(path);
string script = String.Format(Resources.LookUpScript_ScriptContents, hostname, combineDCNamesFromResources());
StreamWriter sw = new StreamWriter(path);
sw.WriteLine(script);
sw.Close();
}
private string combineDCNamesFromResources()
{
string output = "";
string[] DCs = Resources.DC_NAMES_CSV.Split(',');
for (int i = 0; i < DCs.Length; i++)
{
output += "\"" + DCs[i] + "\"";
if (i != DCs.Length - 1)
output += ",";
}
return output;
}
private void removeLookupScript(string path)
{
if (File.Exists(path))
{
File.Delete(path);
}
}
private void Form1_Load(object sender, EventArgs e)
{
_UNAME = WindowsIdentity.GetCurrent().Name;
currentUserLabel.Text = "Current User: " + _UNAME;
}
private void hostnameTextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
searchingLabel.Visible = true;
hostnameTextBox.Enabled = false;
searchBtn.Enabled = false;
timer1.Enabled = true;
timer1.Start();
}
}
private void searchBtn_Click(object sender, EventArgs e)
{
searchingLabel.Visible = true;
hostnameTextBox.Enabled = false;
searchBtn.Enabled = false;
timer1.Enabled = true;
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
searchForPassword(hostnameTextBox.Text);
}
private void copyPwdBtn_Click(object sender, EventArgs e)
{
Clipboard.SetText(passwordTextBox.Text);
}
private void AboutBtn_Click(object sender, EventArgs e)
{
(new AboutForm()).ShowDialog();
}
}
}