import sys import os.path from pykd import dprintln from pykd import dprint def printAllSamples(): dprintln( "Kernel mode", True ) dprintln( "Get process list Run Source", True) dprintln( "Get kernel service list Run Source", True) dprintln( "Get driver object Run Source", True) dprintln( "" ) def runSample( sampleName ): try: packageName, moduleName = sampleName.split(".") module = __import__( name = sampleName, fromlist = moduleName ) module.__dict__[ "run" ]() except ImportError: dprintln("import error") pass dprintln( "" ) dprintln( "Sample list", True ) dprintln( "" ) def printSample( sampleName ): try: packageName, moduleName = sampleName.split(".") module = __import__( name = sampleName, fromlist = moduleName ) fileName = os.path.dirname( module.__dict__["__file__"] ) fileName = os.path.join( fileName, moduleName + ".py" ) with open( fileName ) as f: for line in f: dprint( line ) except ImportError: dprintln("import error") pass dprintln( "" ) dprintln( "Sample list", True ) dprintln( "" ) def main(): if len(sys.argv) <= 2: return printAllSamples() if sys.argv[1] == "run": runSample( sys.argv[2] ) if sys.argv[1] == "source": printSample( sys.argv[2] ) if __name__ == "__main__": main()