Exemplo n.º 1
0
        private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            int PortNum, PortUsed;

            DataAccess1.getPortused(comboBox1.Text, out PortNum, out PortUsed);
            textBox1.Text = PortNum.ToString();
        }
Exemplo n.º 2
0
 public void ExecuteLoadPortNumber()
 {
     PortNum.Clear();
     foreach (string s in SerialPort.GetPortNames())
     {
         PortNum.Add(s);
     }
     SelectedIndexPortNum = SelectedIndexLast;
 }
Exemplo n.º 3
0
    /*
     * Funkce s využitím knihovny SharpPCap zpracovává pakety.
     * Podle argumentů programu, které jí byly předány, apikuje filtr a ukončí se s návratovou funkcí false,
     * neodpovídal-li mu paket. Vytáhne si ze struktury IPPaket informace potřebné pro hlavičku, sestaví ji
     * a vypíše. Pro zpracování těla paketu volá funkci work_packet_body
     */
    private static bool work_packet(RawCapture raw, Argument arg)
    {
        //Extrahuje z rawCapture Packet (typ IPPacket, ze kterého lze lépe převzít informace)
        var packet = Packet.ParsePacket(raw.LinkLayerType, raw.Data);
        var ip     = packet.Extract <IPPacket>();

        //Pokud je typ packetu TCP který podle parametrů nezachystáváme (nebo analogicky UDP který nezachystáváme)
        //nebo je-li jiného typu, funkce nic nevypíše a vrací false (tudíž counter se nezapočítá do celkového počtu)
        if (!arg.Tcp && ip.Protocol == ProtocolType.Tcp)
        {
            return(false);
        }
        if (!arg.Udp && ip.Protocol == ProtocolType.Udp)
        {
            return(false);
        }
        if (ip.Protocol != ProtocolType.Tcp && ip.Protocol != ProtocolType.Udp)
        {
            return(false);
        }

        //Analyzuje o který packet jde a vytvoří verzi pro další zpracování
        bool      isTcp         = false; //false dále v programu == jde o udp
        TcpPacket PacTcp        = null;
        UdpPacket PacUdp        = null;
        bool      PortChecksOut = true;

        if (ip.Protocol == ProtocolType.Tcp)
        {
            //TCP
            PacTcp = (TcpPacket)ip.PayloadPacket;
            isTcp  = true;
        }
        else
        {
            //UDP
            PacUdp = (UdpPacket)ip.PayloadPacket;
        }

        //Vytvoří se string header a uloží se do něj v žádaném formátu čas přijetí paketu
        var    date   = raw.Timeval.Date;
        string header = date.Hour.ToString() + ":" + date.Minute.ToString() + ":" + date.Second.ToString() + "." +
                        date.Millisecond.ToString();

        //blok se pokusí přeložit ip adresu odesílatele, nenajde-li ji, uloží do stringu header pouze IP adresu
        try {
            IPHostEntry entry = Dns.GetHostEntry(ip.SourceAddress);
            header += " " + entry.HostName;
        }
        catch (SocketException) {
            header += " " + ip.SourceAddress.ToString();
        }

        int PortNum;

        //načte číslo portu z odpovídajícího paketu
        if (isTcp)
        {
            PortNum = PacTcp.SourcePort;
        }
        else
        {
            PortNum = PacUdp.SourcePort;
        }

        //má-li se kontrolovat pouze jeden port, ověří zda je odesílatel ten port, pokud ne, uloží si informaci
        //že se zatím port nenašel, a přidá do hlavičky k vypsání číslo portu
        if (!arg.AllPorts)
        {
            if (PortNum != arg.Port)
            {
                PortChecksOut = false;
            }
        }
        header += " : " + PortNum.ToString();

        //blok se pokusi prelozit destination adress, pokud nenajde, ulozi do hlavicky k vypsani IP adresu místo toho
        try {
            IPHostEntry entry = Dns.GetHostEntry(ip.DestinationAddress);
            header += " > " + entry.HostName;
        }
        catch (SocketException) {
            header += " > " + ip.DestinationAddress.ToString();
        }

        if (isTcp)
        {
            PortNum = PacTcp.DestinationPort;
        }
        else
        {
            PortNum = PacUdp.DestinationPort;
        }
        //Pokud první port byl vyhodnocen jako neodpovídající (aka hledalo se číslo portu, ne všechny, a nebyl to on),
        //a zárveň ani zde číslo neodpovídá hledanému, funkce vrací false a vše do tohoto momentu zpracovávané se zahazuje
        if (!PortChecksOut && PortNum != arg.Port)
        {
            return(false);
        }
        header += " : " + PortNum.ToString() + "\n";

        //Vypíše zpracovanou hlavičku, v tento moment už je jisté že zpracováváme paket který prošel filtry
        Console.WriteLine(header);

        parse_packet_body(raw);
        return(true);
    }