# # # 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()