对TACAC使用md5字节异或

2024-04-23 09:38:35 发布

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

我正在写一个基本的TACACS客户端模块。我可以通过电话把包拿到网上结构包好吧,我已经和wireshark核对过了。但我不知道如何处理md5的字节异或,甚至不知道是否正确创建了哈希。TACACS的rfc说,从TACACS头和‘secret key’中提取特定的项,并对其加密五次,在每次运行期间连接上一个散列。见下文

def encrypt(packet, tac_key):
    key = packet[4:8] + bytes(tac_key, 'utf-8') + packet[:1] + packet[2:3]
    h1 = md5()
    h1.update(key)
    hash = h1.digest()
    previous = h1.digest()

    for i in range(2, 6):
        new = md5()
        key = key + previous
        new.update(key)

        hash += new.digest()
        previous = new.digest()

    return hash

数据包已经过了结构包你知道吗

body = struct.pack(fmt, TAC_AUTHEN_LOGIN, TAC_PLUS_PRIV_LVL_USER, TAC_PLUS_AUTHEN_TYPE_PAP, TAC_PLUS_AUTHEN_SVC_LOGIN,
                   user_len, port_len, rem_addr_len, data_len, bytearray(user, 'utf-8'),
                   bytearray(port, 'utf-8'), bytearray(data, 'utf-8)'))

这是正确的方法还是我不应该使用结构包然后加密它?你知道吗


Tags: keynewlenpacketplushashh1结构