解码Netbios名称Python

解码Netbios名称Python,python,decoding,netbios,Python,Decoding,Netbios,我想知道与此相反的最佳方式是什么: 因此,要进行编码,可以使用以下方法: encoded_name = ''.join([chr((ord(c)>>4) + ord('A')) + chr((ord(c)&0xF) + ord('A')) for c in original_name]) 但要解码这个,例如: Netbios_Name= "\x46\x45\x45\x46\x46\x44\x45\x45\x46\x45\x45\x45\x45

我想知道与此相反的最佳方式是什么:

因此,要进行编码,可以使用以下方法:

encoded_name = ''.join([chr((ord(c)>>4) + ord('A'))
               + chr((ord(c)&0xF) + ord('A')) for c in original_name])
但要解码这个,例如:

Netbios_Name= "\x46\x45\x45\x46\x46\x44\x45\x45\x46\x45\x45\x45\x45\x45\x46\x44\x46\x44\x46\x44\x43\x41\x43\x41\x43\x41\x43\x41\x43\x41\x43\x41"
## When correctly reversed, Netbios_Name should output in ASCII : "TESDTDDSSS"
我曾想过这个函数的相反方向,但我不明白为什么它不起作用

谢谢

使用此功能(摘自):


谢谢,我以前见过,但是像这样使用它会破坏他们的代码。在你的应用程序中包含这个库是一个选择吗?(
来自dpkt.netbios import decode_name
)我正在尝试构建一个不需要任何外部模块的开源程序!但谢谢你的建议,谢谢:)
def decode_name(nbname):
    """Return the NetBIOS first-level decoded nbname."""
    if len(nbname) != 32:
        return nbname
    l = []
    for i in range(0, 32, 2):
        l.append(chr(((ord(nbname[i]) - 0x41) << 4) |
                     ((ord(nbname[i+1]) - 0x41) & 0xf)))
    return ''.join(l).split('\x00', 1)[0]
>> decode_name(Netbios_Name).strip()
'TESDTDDSSS'