无法用Python计算基于ID + 密码 + 挑战的FREERADIUS CHAP响应

2024-10-02 00:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力计算基于CHAP ID+明文密码+质询哈希的响应哈希。在

以下是我目前为止的代码:

def computeResponse(id_hex,password, challenge):
    #id_hex_result = id_hex.encode("hex")
    result = id_hex+password+challenge
    print result
    response = hashlib.md5(result).hexdigest()
    print "Generated: ",response
    print "Captured : ef53ae181830c4822f14ca826054cc8c"
computeResponse("1","SantaCruzpass","c8ec74267d0bbff78fe49abf756c211d")

产生的响应不同,结果如下所示:

^{pr2}$

生成的哈希是程序计算的响应,而捕获的哈希是在HQ和Freeradius之间的身份验证期间捕获的实际响应哈希。在

我是不是做错了?捕获的CHAP Id为“0x01”,其十六进制值为1。在


Tags: 代码id密码responsedefpasswordresultencode
2条回答

您的密码已经是二进制格式。在

尝试以下操作:

只是比纳西。不快乐你会得到你需要的东西。在

def computeResponse(id_hex,password, challenge):

id_hex = binascii.unhexlify(id_hex)
challenge = binascii.unhexlify(challenge)
result = id_hex+password+challenge
print result
response = hashlib.md5(result).hexdigest()

我也有同样的问题。我的解决方案是:

def check_chap_password(clear_text_password, chap_challenge, chap_password):
    chap_id = chap_password[0:2]
    check_chap_password = chap_id + hashlib.md5(bytearray.fromhex(chap_id) + password + bytearray.fromhex(chap_challenge)).hexdigest()
    return check_chap_password == chap_password

示例:

^{pr2}$

相关问题 更多 >

    热门问题