#
#
#
import sys
from pykd import *
def printBreakLine():
dprintln( "\n=====================================================================================\n" )
def printNdisObj():
ndis=loadModule("ndis")
nextMP = ptrPtr( ndis.ndisMiniportList )
mpList = []
while nextMP != 0:
mp = typedVar( "ndis", "_NDIS_MINIPORT_BLOCK", nextMP )
mpList.append( mp )
nextMP = mp.NextGlobalMiniport
printBreakLine()
for m in mpList:
dprintln( "Adapter:", True )
dprintln( "%s\tNDIS_MINIPORT_BLOCK( %x )" % ( loadUnicodeString(m.pAdapterInstanceName), m.getAddress(), m.getAddress() ), True )
lwf = m.LowestFilter
if lwf != 0:
dprintln( "\nLight-Weight Filters:", True )
while lwf != 0:
filt = typedVar( "ndis", "_NDIS_FILTER_BLOCK", lwf )
dprintln( "%s\tNDIS_FILTER_BLOCK( %x )" % ( loadUnicodeString(filt.FilterFriendlyName), filt.getAddress(), filt.getAddress() ), True )
lwf = filt.HigherFilter
opn = m.OpenQueue
if opn != 0:
dprintln( "\nBound protocols:", True )
while opn != 0:
openBlock = typedVar( "ndis", "_NDIS_OPEN_BLOCK", opn )
proto = typedVar( "ndis", "_NDIS_PROTOCOL_BLOCK", openBlock.ProtocolHandle )
dprint( "%s \tNDIS_OPEN_BLOCK( %x )" % ( loadUnicodeString( proto.Name.getAddress() ), openBlock.getAddress(), openBlock.getAddress() ), True )
dprintln( "\tNDIS_PROTOCOL_BLOCK( %x )" % ( proto.getAddress(), proto.getAddress() ), True )
opn = openBlock.MiniportNextOpen
printBreakLine()
if __name__ == "__main__":
printNdisObj()