Анализатор Python 802.11 из необработанного сокета

Работа над парсером 802.11 из необработанного сокета. Назначение синтаксического анализатора - определить, сколько пакета оставить для дальнейшей обработки. Сохраняется только слой 2, все слои 3 и выше удаляются. Все хорошо, пока часть безопасности. WEP имеет 4-байтовый заголовок, а TKIP и CCMP имеют 8-байтовый заголовок. Я ищу алгоритм, чтобы определить, есть ли у фрейма заголовок WEP или TKIP/CCMP, но не могу найти его в Google. Мне нужно только определить, используется ли WEP или TKIP или CCMP. Очевидно, что я должен сделать это, используя первые 4 байта защитного "заголовка".

Единственное, что мне удалось найти, это определить, что это в dot11.py от impacket, в котором говорится: "Теперь мы должны различать WEP и WPA/WPA2. WPA/WPA2 имеют ExtIV (бит 5) и WEP отключены" (SIC),

macSz = n # current determination of mac frame size
if flags['protected']:
    # pf flag is set
    sec = frame[macSz:macSz+4] # get first 4 bytes of msdu
    bs = struct.unpack("=4B",sec)
    # wep test case returns bs = (231, 1, 0, 0)
    # ccmp test case returns bs = (2, 0, 79, 222)

    if bs[3] & 0x20:
        # using TKIP/CCMP
        macSz += 8
    else:
        # using WEP
        macSz += 4

Я не могу найти никакой литературы, чтобы подтвердить это утверждение, и приведенный выше код либо неверен с моей стороны, либо не работает, так как в большинстве случаев он считает, что все WEP. Что я могу найти, так это то, что 5-й бит байта 4 в заголовке WEP должен быть битом заполнения, в TKIP он зарезервирован, а в CCMP он является частью PN2.

Мой вопрос заключается в том, правильно ли я это кодировал (что я не думаю), или это неправильный способ определения WEP или нет, и если последний, кто-нибудь знает работающий алгоритм. Я не специалист по криптологии.

Прежде чем сказать, использовать scapy, это может быть вариант во время окончательной обработки, но не вариант на данном этапе, так как он потребляет слишком много служебной информации и отбрасывает пакеты. Я только хочу определить размер пакета на уровне 2, включая незашифрованные заголовки безопасности для передачи для дальнейшей обработки.

РЕДАКТИРОВАТЬ 1: По этой ссылке http://www.xirrus.com/cdn/pdf/wifi-demystified/documents_posters_encryption_plotter должен быть расширенный IV, равный 1 биту, в 4-м байте, в бите 5 (нулевой индекс), в котором оба CCMP и TKIP, этот бит установлен. Тем не менее, я все еще не могу заставить вышеуказанный код работать. Кажется, он идентифицирует TKIP, но все же классифицирует CCMP как WEP, поэтому в моем порядке байтов должно быть что-то. Я буду продолжать изучать это

РЕДАКТИРОВАТЬ 2: Таким образом, похоже, что это был порядок байтов. Я использовал пакеты, захваченные в wireshark, копируя шестнадцатеричный код для проверки. Когда я использовал сырой сокет, он работает

0 ответов

Другие вопросы по тегам