-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathMainAppWindow.cs
120 lines (98 loc) · 3.37 KB
/
MainAppWindow.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
using System;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class MainAppWindow : Form
{
public MainAppWindow()
{
InitializeComponent();
listView.View = View.Details;
}
private delegate void ArpScannerDelegate(MainAppWindow form);
private delegate void formDelegate(string ip, string mac);
private void button1_Click(object sender, EventArgs e)
{
if (ArpScanner.scanRunning)
{
MessageBox.Show("A scan is already in progress...");
return;
}
ArpScanner scanner = new ArpScanner();
ArpScannerDelegate scannerDelegate = new ArpScannerDelegate(scanner.scanNetwork);
listView.Items.Clear();
ProgressBar.Value = 0;
IAsyncResult asyncResults = scannerDelegate.BeginInvoke(this,
null, null);
}
internal void updateList(string ip, string mac)
{
if (listView.InvokeRequired)
{
formDelegate pointer = new formDelegate(updateList);
Invoke(pointer, new object[] { ip, mac });
}
else
{
ListViewItem newItem = new ListViewItem(ip);
newItem.SubItems.Add(mac);
listView.Items.Add(newItem);
}
}
private delegate void progressDelegate();
internal void updateProgress()
{
if (listView.InvokeRequired)
{
progressDelegate pointer = new progressDelegate(updateProgress);
Invoke(pointer);
}
else
{
this.ProgressBar.PerformStep();
}
}
private void button2_Click(object sender, EventArgs e)
{
Form f = new Form2();
f.Show();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private delegate void spoofer(string host);
private void BlockNetworkMenuItem_Click(object sender, EventArgs e)
{
int selectedItems = listView.SelectedItems.Count;
for (int i = 0; i < selectedItems; i++)
{
var selected = listView.SelectedItems[i];
var IPaddr = selected.Text;
selected.BackColor = System.Drawing.Color.Khaki;
// Avoid adding the same IP twice.
if (ArpScanner.threads.ContainsKey(IPaddr))
{
continue;
}
Thread t = new Thread(() => ArpScanner.spoof(selected.Text));
t.Start();
ArpScanner.threads.Add(IPaddr, t);
//selected.Selected = false;
}
}
private void StopBlockingMenuItem_Click(object sender, EventArgs e)
{
if (listView.SelectedItems.Count <= 0)
return;
var selected = listView.SelectedItems[0];
selected.BackColor = System.Drawing.Color.White;
Thread t = (Thread)ArpScanner.threads[selected.Text];
t.Abort();
ArpScanner.threads.Remove(selected.Text);
}
private void listView_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}