我用windows10为我的DVR生成了一个安全代码,我忘记了密码。你知道吗
在我的笔记本上安装了python3.7.2
你知道吗内存:16GB 硬盘:1TB你知道吗
#!/usr/bin/env python3
import sys
from re import search
from numpy import uint32
from requests import get
from datetime import datetime
def keygen(seed):
magic = 0
for i, char in enumerate(seed):
i += 1
magic += i * ord(char) ^ i
secret = str(uint32(1751873395 * magic))
c = str.maketrans("012345678", "QRSqrdeyz")
return secret.translate(c)
def get_serial_date(ip):
try:
req = get("http://192.168.178.43/upnpdevicedesc.xml")
except Exception as e:
print("Unable to connect to {ip}:\n{e}")
sys.exit(-1)
model = search("<modelNumber>(.*)</modelNumber>", req.text).group(1)
serial = search("<serialNumber>(.*)</serialNumber>", req.text).group(1)
serial = serial.replace(model, "")
datef = datetime.strptime(req.headers["Date"], "%a, %d %b %Y %H:%M:%S GMT")
date = datef.strftime("%Y%m%d")
return "{serial}{date}"
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: {sys.argv[0]} <ip>")
print("Connects to a device and generates a security key")
sys.exit(1)
seed = get_serial_date(sys.argv[1])
print("Got seed: {seed}")
key = keygen(seed)
print("Generated security key: {key}")
有没有办法修复这个错误代码或者我需要对我的笔记本设置做些什么?你知道吗
这是我得到的错误代码
Got seed: {seed}
Traceback (most recent call last):
File "beer.py", line 41, in <module>
key = keygen(seed)
File "beer.py", line 14, in keygen
secret = str(uint32(1751873395 * magic))
OverflowError: Python int too large to convert to C long
如果使用
uint32
将数字减少到0 … 2**32-1
范围内,则可以使用以下方法:还要注意的是,在循环中使用
enumerate
和i += 1
是非常混乱的。你知道吗相关问题 更多 >
编程相关推荐