private void button1_Click(object sender, EventArgs e) { if (networkInterfaces.SelectedIndex == -1) { MessageBox.Show("Please select a network interface first.", "Select a network interface", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); } else { status = true; button1.Enabled = false; button2.Enabled = true; networkInterfaces.Enabled = false; timer1.Interval = trackBar1.Value; allSystemsOnline(); if (disableWebServer.Checked != true) { if (!IsAdministrator()) { string current_username = System.Security.Principal.WindowsIdentity.GetCurrent().Name; AddAddress(deviceDescURL.Text.Replace(sourceIP.Text, "*"),current_username); AddAddress(scpdURL.Text.Replace(sourceIP.Text, "*"), current_username); removeFromNetSh.Add(deviceDescURL.Text.Replace(sourceIP.Text, "*")); removeFromNetSh.Add(scpdURL.Text.Replace(sourceIP.Text, "*")); } try { ws = new WebServer(SendResponse, deviceDescURL.Text.Replace(sourceIP.Text, "*")); if (deviceFromFile != null) { ws.device = deviceFromFile; } ws.Run(); scpdWs = new WebServer(SendSCPDResponse, scpdURL.Text.Replace(sourceIP.Text, "*")); scpdWs.Run(); if (ws.ErrorMessage != "") { MessageBox.Show(ws.ErrorMessage); } else { hitCounter.Text = "Web Server Started"; } } catch { MessageBox.Show("Failed to start web servers. Something already on port:"+webserverPort.Text+"?"); } } else { hitCounter.Text = "Using custom URL"; } timer1.Start(); timer1_Tick(null, null); timer2.Start(); timer2_Tick(null, null); device = allDevices[networkInterfaces.SelectedIndex]; if (!bw.IsBusy) { bw.RunWorkerAsync(); } else { bw.CancelAsync(); } } }
private void button3_Click(object sender, EventArgs e) { try { openFileDialog2.ShowDialog(); } catch { } try { if (openFileDialog2.FileName != "") { savedDeviceTree.Nodes.Clear(); Learn.device device = getDeviceFromFile(openFileDialog2.FileName); deviceFromFile = device; learnedUDN = device.UDN; savedDeviceName.Text = device.deviceName; webServerResponse.Text = device.deviceDescription; foreach (string serviceType in device.serviceTypes) { upnpTypes.Clear(); upnpTypes.Add(serviceType); } TreeNode savedActions = savedDeviceTree.Nodes.Add("Actions"); TreeNode savedResources = savedDeviceTree.Nodes.Add("Resources"); foreach (string action in device.actions.Keys) { savedActions.Nodes.Add(action); } foreach (string resource in device.mimeTypes.Keys) { TreeNode rNode = savedResources.Nodes.Add("/resource/?localResourceID=" + resource); rNode.ToolTipText = "/resource/?localResourceID=" + resource + " - " + device.mimeTypes[resource] + ", " + device.downloadedURLs[resource].Count() + "bytes"; } if (mimicWs != null) { mimicWs.Stop(); } if (!IsAdministrator()) { string current_username = System.Security.Principal.WindowsIdentity.GetCurrent().Name; AddAddress("http://*:" + webserverPort.Text + "/Resource/", current_username); removeFromNetSh.Add("http://*:" + webserverPort.Text + "/Resource/"); } mimicWs = new WebServer(ResourceSendResponse, "http://*:" + webserverPort.Text + "/Resource/"); mimicWs.device = device; mimicWs.Run(); if (mimicWs.ErrorMessage != "") { MessageBox.Show(mimicWs.ErrorMessage); } else { hitCounter.Text = "Web Server Started"; } timer3.Enabled = true; } } catch { MessageBox.Show("Error loading device"); } }
private void button5_Click(object sender, EventArgs e) { timer3.Enabled = false; deviceFromFile = null; if (mimicWs != null) { mimicWs.Stop(); } mimicWs = null; savedDeviceTree.Nodes.Clear(); mimicDeviceLog.Text = ""; savedDeviceName.Text = "No Device Loaded"; allSystemsOnline(); if (status == true) { button1_Click(null, null); } }
private void fakeRouterBw_DoWork(object sender, DoWorkEventArgs e) { int ifaceID = networkInterfaces.SelectedIndex; LivePacketDevice device = allDevices[ifaceID]; string srcIP = ""; for (int i = 0; i != device.Addresses.Count; ++i) { DeviceAddress address = device.Addresses[i]; if (address.Address.Family.ToString() == "Internet") { string[] addressParts = address.Address.ToString().Split(); srcIP = addressParts[1]; } } if (srcIP != "") { string srcURL = "http://" + srcIP + ":9090/"; WebServer ws = new WebServer(fakeRouterSendResponse, srcURL); ws.Run(); for (int i = 0; i < fakeRouterHowMany; i++) { foreach (string upnpType in upnpTypes) { string notifyString = "NOTIFY * HTTP/1.1\r\n" + "Cache-Control: max-age = 300\r\n" + "Host: 239.255.255.250:1900\r\n" + "Location: " + srcURL + Guid.NewGuid().ToString() + "\r\n" + "NT: " + upnpType + "\r\n" + "NTS: ssdp:alive\r\n" + "SERVER: UPnP-Pentest-Toolkit\r\n" + "USN: uuid:" + Guid.NewGuid().ToString() + "\r\n" + "\r\n"; notifySpoof(device, notifyString, srcIP, 1900, "239.255.255.250", 1900); } } Thread.Sleep(600000); ws.Stop(); } }