2015-04-26 9 views
2

Я новичок в scapy, и я следую некоторому онлайн-учебнику, но я застрял в этой проблеме. Я могу отправлять пакеты через проводное соединение, но когда я пробую это с помощью беспроводной связи, я сталкиваюсь с этой ошибкой. Я пробовал искать Google, но это не помогло. Я надеюсь найти решение. Заранее спасибо.scapy: ошибка отправки пакетов

Я использую окна 8.1, Python 2,7

>>> p=IP(dst="192.168.1.1")/ICMP() 
>>> sr1(p) 
Begin emission: 
ERROR: --- Error sending packets 
Traceback (most recent call last): 
    File "c:\Python27\lib\site-packages\scapy\arch\windows\__init__.py", line 374, 
in sndrcv 
    pks.send(p) 
    File "c:\Python27\lib\site-packages\scapy\arch\pcapdnet.py", line 257, in send 

    sx = str(cls()/x) 
    File "c:\Python27\lib\site-packages\scapy\packet.py", line 268, in __str__ 
    return self.build() 
    File "c:\Python27\lib\site-packages\scapy\packet.py", line 330, in build 
    p = self.do_build() 
    File "c:\Python27\lib\site-packages\scapy\packet.py", line 319, in do_build 
    pkt = self.self_build() 
    File "c:\Python27\lib\site-packages\scapy\packet.py", line 310, in self_build 
    p = f.addfield(self, p, val) 
    File "c:\Python27\lib\site-packages\scapy\fields.py", line 70, in addfield 
    return s+struct.pack(self.fmt, self.i2m(pkt,val)) 
    File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 95, in i2m 
    return MACField.i2m(self, pkt, self.i2h(pkt, x)) 
    File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 89, in i2h 
    x = conf.neighbor.resolve(pkt,pkt.payload) 
    File "c:\Python27\lib\site-packages\scapy\layers\l2.py", line 38, in resolve 
    return self.resolvers[k](l2inst,l3inst) 
    File "c:\Python27\lib\site-packages\scapy\layers\inet.py", line 732, in <lambd 
a> 
    conf.neighbor.register_l3(Ether, IP, lambda l2,l3: getmacbyip(l3.dst)) 
    File "c:\Python27\lib\site-packages\scapy\arch\windows\__init__.py", line 292, 
in getmacbyip 
    ifip = str(pcapdnet.dnet.intf().get(iff)['addr']) 
KeyError: 'addr' 
INFO: --- Error sending packets 
......................... 
Received 25 packets, got 0 answers, remaining 1 packets 
WARNING: __del__: don't know how to close the file descriptor. Bugs ahead ! Plea 
se report this bug. 
+0

попробуйте запустить cmd как администратор –

ответ

3

Немного поздно, но:

Я столкнулся с той же проблемой, несколько месяцев назад, и то, что работал для меня в конце концов должен был туннель WiFi через другой сетевой интерфейс. Похоже, что проблема заключается в процессе получения IP; Возможно, вам стоит попробовать запустить как администратор и установить возможности как Python, так и файлов Scapy, чтобы они имели полный контроль (щелкните правой кнопкой мыши-> Свойства-> Безопасность).

Вы сталкиваетесь с той же проблемой при использовании других методов, таких как send/sr/srp?

+0

Спасибо за комментарий. Я попытался изменить разрешения на полный контроль, но это не помогло. Проблема заключается в функции getmacbyip(). Я немного изменил эту функцию, после чего начал отправлять пакет, но адрес mac не разрешен, и пакет не доставляется. – aaveg

+0

еще одна вещь srp работает. – aaveg

+0

srp работает? это загадка ... вы создали его как Ether/IP, когда вы использовали srp? потому что, насколько я понимаю, srp не работает с протоколами уровня 3. – FitzChivalry

2

я найти решение;}

Просто редактировать C: \ python27 \ Lib \ сайт-пакеты \ scapy \ арка \ windows__init __ ру Как это:

  1. Удалить C: \ python27 \ LIB. \ сайт-пакеты \ scapy \ арка \ windows__init __. Pyc
  2. Изменения линия прибудет (МФЛ) [ 'адрес']), чтобы получить (МФЛ) [ 'link_addr'])
+0

Я пробовал это раньше, но я получаю еще одну ошибку, которая говорит, что scapy не может решить адрес mac адреса назначения – aaveg

+0

Да, broc, Я пришел к той же проблеме, и она все еще не работает. –

0

в случае, если кто-либо имеет проблемы с getmacbyip() time out b Efore может разрешить MAC, вот фикс лейкопластырь, которая работает:

mac = None 
while not mac: 
    mac = getmacbyip(ipaddr) 

getmacbyip() вернет None, если она не решает. Это работает, но все равно потребуется несколько секунд. Я бы хотел, чтобы это не было необходимо, чтобы заставить его работать.

Смежные вопросы