Exemplo n.º 1
0
        new private void PacketHandler(Packet packet)
        {
            var arpPacket = packet.Ethernet.Arp;

            switch (arpPacket.Operation)
            {
            case PcapDotNet.Packets.Arp.ArpOperation.Reply:
                var senderIp = arpPacket.SenderProtocolIpV4Address.ToString();
                if (_isOwnIpIncluded || _ownIp != senderIp)
                {
                    if (senderIp == _gatewayIp)
                    {
                        if (!_gateways.ContainsIP(senderIp))
                        {
                            var target = new Target();
                            target.IP = senderIp;
                            //target.MAC = arpPacket.SenderHardwareAddress.ToString();
                            target.PMAC   = new PhysicalAddress(arpPacket.SenderHardwareAddress.ToArray());
                            target.MAC    = Helper.AddSeperatorToNakedMac(target.PMAC.ToString(), ":");
                            target.Vendor = VendorCodeResolver.instance.Resolve(target.MAC);
                            Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                            {
                                _gateways.Add(target);
                            }));
                        }
                    }
                    else if (!_targets.ContainsIP(senderIp))
                    {
                        var target = new Target();
                        target.IP = senderIp;
                        //target.MAC = arpPacket.SenderHardwareAddress.ToString();
                        target.PMAC   = new PhysicalAddress(arpPacket.SenderHardwareAddress.ToArray());
                        target.MAC    = Helper.AddSeperatorToNakedMac(target.PMAC.ToString(), ":");
                        target.Vendor = VendorCodeResolver.instance.Resolve(target.MAC);
                        Application.Current.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            _targets.Add(target);
                        }));
                    }
                }
                break;
            }
        }