2014-06-19 4 views
0

Я пытаюсь распечатать историю сети, сохраненную в реестре Windows, и запутался.Как распечатать историю сети с помощью _winreg в Python?

У меня есть две функции. Один для преобразования двоичного текста, а второй для получения фактических данных.

Вот что у меня есть:

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] больше нет доступных данных

Указание на значение направляющей.

Я думаю, что именно там я застрял. У меня возникли проблемы с поиском ошибки, потому что она просто забрасывается за исключением кода и, таким образом, не дает мне обратной связи.

Пожалуйста, помогите !!!

EDIT: Из того, что я копаю, это может быть связано с запуском 32-битного Python на 64-битной системе. Тем не менее, копать.

ответ

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