2014-06-19 33 views
0

我試圖打印保存在Windows註冊表中的網絡歷史記錄,並且遇到了一個障礙。如何在Python中使用_winreg打印網絡歷史記錄?

我有兩個功能。一個用於轉換二進制文本,另一個用於獲取實際數據。

以下是我有:

def val2addr(val): 
    addr = "" 
    for ch in val: 
     addr += ("%02x "% ord(ch)) 
    addr = addr.strip(" ").replace(" ", ":")[0:17] 
    return addr 

def printNets(): 
    net = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged" 
    key = OpenKey(HKEY_LOCAL_MACHINE, net) 
    print key 
    print '\n[*] Networks You have Joined.' 
    for i in range(100): 
     try: 
      guid = EnumKey(key, i) 
      netKey = OpenKey(key, str(guid)) 
      (n, addr, t) = EnumValue(netKey, 5) 
      macAddr = val2addr(addr) 
      netName = str(name) 
      print '[+] ' + netName + ' ' + macAddr 
      CloseKey(netKey) 
     except: 
      break 

我相信錯誤是在此GUID值:

for i in range(100): 
    try: 
     guid = EnumKey(key, i) 
     netKey = OpenKey(key, str(guid)) 
     (n, addr, t) = EnumValue(netKey, 5) 

當我在自己獨立運行「試試看」的子碼它拋出了一句:

[錯誤259]沒有更多數據可用

指向guid值。

我認爲這是我卡住的地方。我在查找錯誤時遇到了問題,因爲它只是被拋到了除了代碼之外,因此沒有給我任何反饋。

請幫忙!!!

編輯:從我正在挖掘它可能是由於在64位系統上運行32位Python。儘管如此,仍在挖掘。

回答

1

,當我遇到了32/64位問題,我繞着它通過使用類似這樣的

import winreg 
HKLM =winreg.HKEY_LOCAL_MACHINE 
bb = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged" 
abc = winreg.OpenKeyEx(HKLM, bb,0,(winreg.KEY_WOW64_64KEY + winreg.KEY_ALL_ACCESS)) 
efg = winreg.EnumKey(abc,0) 
z = winreg.OpenKeyEx(abc,str(efg)) 
q = winreg.QueryValueEx(z,"Description")[0] 
print (q) 
q = winreg.QueryValueEx(z,"DefaultGatewayMac")[0] 
print (q) 

希望這個代碼可以幫助指點你在正確的方向

+0

我剛剛更新蟒蛇到64位來 – RabidGorilla

相關問題