Получение ошибки в Scapy 3.0 при использовании RadioTap, который отлично работает в Scapy 2.4 - PullRequest
0 голосов
/ 20 сентября 2018

Я просто пытаюсь создать пакет в scapy, который начинается с, например,

packet = RadioTap()/Dot11()/Dot11ACK()

packet.show() выдает мне эту ошибку.Я не могу отправлять пакеты без поля RadioTap.

###[ RadioTap dummy ]###

      version   = 0
      pad       = 0
      len       = None
      present   =
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scapy/packet.py", line 851, in show
    if isinstance(f, ConditionalField) and not f._evalcond(self):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scapy/fields.py", line 144, in _evalcond
    return self.cond(pkt)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scapy/layers/dot11.py", line 130, in <lambda>
    ConditionalField(LELongField('tsft', 0), lambda pkt: pkt.getdictval('present')['TSFT']),
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scapy/packet.py", line 186, in getdictval
    return fld.i2dict(self, v)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/scapy/fields.py", line 919, in i2dict
    if x & 1:
TypeError: unsupported operand type(s) for &: 'NoneType' and 'int'

1 Ответ

0 голосов
/ 20 сентября 2018

Нет такой вещи (пока) как "Scapy version 3.0".Существовал форк Scapy, изначально названный его автором «Scapy3k» или «Scapy for Python3» (что, как вы можете видеть, приводит к путанице).Наконец, он был недавно переименован в «Kamene», после бесконечных разговоров между сопровождающими Scapy, автором Kamene и некоторыми сопровождающими дистрибутивов.

Код, который вы используете здесь с Python 3, следовательно, вероятно, не Scapy, а Kamene.Чтобы быть ясным, когда вы переехали в Камене, полагая, что вы обновляли Scapy, вы фактически переключились на программное обеспечение, которое получило очень ограниченное количество обновлений (исправлений, новых функций), чем само Scapy.

Одна и та же кодовая база для Scapy работает с Python 2.7 и 3.x.Таким образом, обновившись до Scapy v. 2.4.0, вы сможете запускать свой код с обеими версиями Python (и, надеюсь, получить те же результаты).Если вы не получаете такие же результаты, откройте вопрос !

...