遍历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


下面我们编写个在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()