Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- import socket
- import binascii
- from twisted.names.client import getHostByName
- from wx._misc import GetHostName
- def sendarp(interface, atype, dip):
- rawsocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.SOCK_RAW)
- rawsocket.bind((interface, socket.SOCK_RAW))
- hwtype = struct.pack('!H', 0x0001)
- ptype = struct.pack('!H', 0x0806)
- iptype = struct.pack('!H', 0x0800)
- bcast_mac = struct.pack('!6B', *(0xFF,)*6)
- zero_mac = struct.pack('!6B', *(0x00,)*6)
- Hlen = struct.pack("!B", 0x0006)
- Plen = struct.pack("!B", 0x0004)
- ipstr = '192.168.1.102'
- ownip = socket.inet_aton(ipstr)
- ownmac = rawsocket.getsockname()[4]
- arp_request = struct.pack("!H", 0x0001)
- arp_reply = struct.pack("!H", 0x0002)
- arp_type = atype
- targetip = socket.inet_aton(dip)
- if atype == 'reply':
- arp_type = arp_reply
- else:
- arp_type = arp_request
- arppacket = [bcast_mac, ownmac, ptype, hwtype, iptype, Hlen, Plen, arp_type, ownmac, ownip, zero_mac, targetip ]
- ethpacket = [bcast_mac, ownmac, ptype]
- #print arppacket
- sarp = str(arppacket)
- stringeth = str(ethpacket)
- stringarp = stringeth.join(arppacket)
- rawsocket.send(''.join(arppacket))
- return True
- rawsocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0806))
- sendarp('wlan0', 'request', '192.168.1.142')
- pkt = rawsocket.recvfrom(2048)
- print pkt
- arpheader = pkt[0][15:41]
- hwtype = arpheader[0][0:1]
- ptype = arpheader[1:3]
- Hlen = arpheader[3:4]
- Plen = arpheader[4:5]
- Optype = arpheader[5:7]
- Sendermac = arpheader[7:13]
- Senderip = socket.inet_ntoa(arpheader[13:17])
- Targetmac = arpheader[17:23]
- Targetip = arpheader[23:27]
- print binascii.hexlify(arpheader)
- print binascii.hexlify(hwtype)
- print ptype
- print binascii.hexlify(ptype)
- print binascii.hexlify(Hlen)
- print binascii.hexlify(Plen)
- print binascii.hexlify(Optype)
- print binascii.hexlify(Sendermac)
- print Senderip
- print binascii.hexlify(Targetmac)
- print struct.unpack("HHHH", Targetip)
Advertisement
Add Comment
Please, Sign In to add comment