Python KeyError: 'flags', при запуске скрипта BlueBorne - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь запустить файл l2cap_infra.py с Python 2, но я получаю следующую ошибку:

Traceback (most recent call last):
  File "l2cap_infra.py", line 524, in <module>
    main(*sys.argv[1:])
  File "l2cap_infra.py", line 508, in main
    l2cap_loop, _ = create_l2cap_connection(src_hci, dst_bdaddr, pcap_path=pcap_path)
  File "l2cap_infra.py", line 489, in create_l2cap_connection
    handle_information_negotiation_process(l2cap_loop)
  File "l2cap_infra.py", line 425, in handle_information_negotiation_process
    l2cap_loop.send(info_req)
  File "l2cap_infra.py", line 142, in send
    self._sock.send(packet)
  File "l2cap_infra.py", line 213, in send
    self.send_fragment(Raw(str(l2cap)[i:i+L2CAP_DEFAULT_MTU]), i == 0)
  File "l2cap_infra.py", line 223, in send_fragment
    hci = HCI_Hdr() / HCI_ACL_Hdr(handle=scapy_handle, flags=scapy_flags) / frag
  File "/usr/local/lib/python2.7/dist-packages/scapy/base_classes.py", line 227, in __call__
    i.__init__(*args, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 135, in __init__
    self.fields[f] = self.get_field(f).any2i(self, v)
  File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 170, in get_field
    return self.fieldtype[fld]
KeyError: 'flags'

Это может быть конфликт версий; У меня была похожая проблема, и мне пришлось редактировать файл в /usr/local/lib/python2.7/.

Какой код мне нужно изменить в этом связанном файле или в одной из моих библиотек pip, чтобы этот код работал?

1 Ответ

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

Кажется, это проблема совместимости между BlueBorne и Scapy .

Вы (скорее всего) установили последнюю версию Scapy ( v2. 4.0 ), в результате чего поля kwarg были удалены из инициализатора scapy.layers.bluetooth.HCI_ACL_Hdr, а BlueBorne ( l2cap_infra.py и, возможно, другие) не были обновлены (или разветвлены) соответственно.

Последняя версия, которая все еще имеет это v2. 3,3 ( [GitHub]: secdev / scapy - (v2.3.3) scapy / scapy / слои / bluetooth.py ).

Возможные решения:

  • Удалите текущую версию Scapy (pip uninstall scapy) и установите v2.3.3 (pip install scapy==2.3.3).Возможно, это самый простой (и наиболее подходящий) для вас ( [PyPI]: scapy 2.3.3 )
  • Отправьте сообщение об ошибке в BlueBorne и дождитесь егодобавить поддержку более новых Scapy версий
  • Исправить это самостоятельно (" fields " ( v2.3.3 ) в " PB"+" BC"( v2.4.0 ) kwargs преобразование), и, возможно, отправьте патч:)
...