簡體   English   中英

ARP中毒python(Linux)失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM