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);
            }
        }
示例#4
0
        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();
            }
        }