文章出自《Python绝技 运用Python成为顶级***》中部分代码,稍作修改


遍历Windows注册表键值,代码如下:

import _winreg
key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer")
try:
        i=0
        while 1:

#EnumValue枚举键值,EnumKey枚举子键(guid=_winrge.EnumKey(key,i))
        name,value,type=_winreg.EnumValue(key,i)
        print "name: "+repr(name)
        print "type: "+repr(type)
        print "value: "+repr(value)
        print "__________________________"
        i+=1
except WindowsError:
        print


效果

wKioL1hrUcmhbb16AAA0ISmItxM872.png-wh_50


下面我们编写个在WINDOWS操作系统中,查找曾经访问过的有线网络和无线网络,对应的网关的Mac地址的脚本

import _winreg
def val2addr(val):
        addr=''
        for ch in val:

#ord 作用:字符转换为10进制整数 ;"%02x"以16进制输出变量,如果输出的变量不足2位用0补足
            addr+='%02x '% ord(ch)
            addr=addr.strip(' ').replace(' ',':')[0:17]
        return addr
def printNets():
        net=r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged"
        key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,net)
        print '\n[*] Networks You have Joined.'
        for i in range(100):
                try:
                        guid=_winreg.EnumKey(key,i)
                        netKey=_winreg.OpenKey(key,str(guid))
                        n,addr,t=_winreg.EnumValue(netKey,5)
                        macAddr=repr(addr)
                        n,name,t=_winreg.EnumValue(netKey,4)
                        netName=repr(name)
                        macAddr=val2addr(addr)
                        print '[+] '+netName+' '+macAddr
                        _winreg.CloseKey(netKey)
                except WindowsError:
                        print
def main():
        printNets()
if __name__=="__main__":
        main()