Я довольно новичок в Scapy, и я пытаюсь создать пакет RTS и отправить его в точку доступа, чтобы получить ответ CTS. Тем не менее, мне действительно трудно найти правильный способ сделать это (быть новичком в сети и пакеты 802.11 тоже не помогают).
Это код, который у меня есть сейчас:
bytes = struct.pack("<H", 123) # 123 microseconds
timeval = struct.unpack(">H", bytes)[0]
pkt = RadioTap()/Dot11(addr1 = target_addr, addr2 = my_addr, type = 1, subtype = 11, ID = timeval)
Я знаю, что type
должно быть равно 1, поскольку это контрольный пакет, и что subtype
должно быть равно 11, потому что это RTS-пакет. Однако, когда я отправляю пакет с sr()
или srp()
или sr1()
, я либо не получаю ответ (Scapy ждет ответа, но ничего не возвращается, поэтому он просто продолжает ждать), либо я получаю точное сообщение, которое я отправил .
В этом вопросе упоминается добавление слоя Dot11Elt()
в конце, однако это ничего не меняет в моем случае.
Это тип ответа, который я получаю:
И если я открою 0-й элемент кортежа ответа с помощью Wireshark, я получу:
Я спрятал MAC-адреса, но они такие же, как те, что я положил в пакет, который я отправил на точку доступа (target_addr
и my_addr
). Я ожидаю получить CTS с my_addr
в качестве «адреса назначения».
Что я делаю не так?