Я хотел бы создавать одиночные пакеты wifi, получая необработанные двоичные данные непосредственно перед тем, как они будут преобразованы в форму волны и переданы. Насколько я понимаю, это должно быть на уровне канала передачи данных и включать все заголовки (биты синхронизации, CRC и т. Д.) И сами данные. Есть ли способ сделать это (желательно с Python)? Я заглянул в scapy, Wireshark и т. Д., Но я не могу сказать, могут ли они получить то, что мне нужно.Craft raw wifi packet
ответ
Вы можете сбросить весь пакет через режим монитора.
Например, этот код нюхают все пакеты данных от интерфейса mon0:
from scapy.all import *
def handler(pkt):
if pkt.haslayer(Dot11):
if pkt.type == 2:
pkt.show()
sniff(iface="mon0", prn=handler)
- это очень близко к тому, что мне нужно, но есть ли способ сделать пакет * из * некоторых данных, а не обнюхивать пакеты реального мира? В основном, есть scapy добавить все соответствующие заголовки? – JeffThompson
См. Этот пример: [Отправка пакетов 802.11 с помощью Scapy] (http://blog.packetheader.net/2014/01/sending-80211-packets-with-scapy.html) и [Использование ScaPy] (http: // www .secdev.org/projects/scapy/doc/usage.html) – Dmitry
Спасибо @Dmitry, эта ссылка многообещающая, но я не получаю результаты, которые выглядят правильно - я не вижу биты синхронизации или другие элементы заголовка, которые я ожидал бы , – JeffThompson
Вы можете получить немного больше информации? Поскольку ScaPy может манипулировать пакетами, отправлять их, захватывать и сопоставлять запросы и ответы. – Dmitry
Спасибо @ Dmitry - мне бы хотелось получить произвольные данные (скажем, HTTP-запрос) и упаковать их с битами синхронизации, всеми заголовками, CRC и т. Д. И получить последовательность бит, которая соответствует пакету непосредственно перед преобразованием в сигнал. Кажется, Wireshark и т. Д. Могут дать мне пакет, но несколько слоев вверх. Я хочу увидеть это на этом последнем этапе. – JeffThompson