Использовать его просто. Установим брейкпойнт:
bp ndis!NdisFIndicateReceiveNetBufferLists
При его срабатывании (а это при наличии сетевого подключения случится очень быстро ) выполним команду:
!py nbl @rdx ( для amd64 в rdx лежит указатель на NET_BUFFER_LIST )
В результате получим что то вроде:
Length: 92 bytes
Ethernet header: OK
Dest MAC: ff-ff-ff-ff-ff-ff
Src MAC: 20-cf-30-70-25-e2
Type: IPv4
IPv4 header: OK
version: 4
header length: 20 bytes
total length: 78 bytes
protocol: UDP
TTL: 128
Src addr: 10.244.0.50
Dest addr: 10.244.7.255
UDP header: OK
Src port: 137
Dest port: 137
Length: 58
Checksum: 0xec8a
Поодерживается разбор заголовков Ethernet, IPv4, UDP, TCP. В будущем, возможно, добавим поддержку и других протоколов. Если кому то скрипт окажется полезен - пишите, и это будущее может стать настоящим :).
UPD1:
Eще у нас есть скрипт, отображающий внтуренние структуры NDIS ( минпорты, протоколы и.т.д ) и их взаимосвязь: ndis.py, иногда бывает полезно, надеемся, будет и вам.
Для NDIS 5.1 тоже актуально :)
ОтветитьУдалитьЕсть рацпредложение.
Добавить подсчёт реальных контрольных сумм. И указывать в скобочках valid/invalid. Например:
Checksum: 0xec8a (valid)
Планов много :). Хотелось бы сначала доделать парсер протоколов. Для NDIS5 тоже сделаю поддержку, не трудно
ОтветитьУдалить