0

この投稿の反対を行うための最良の方法は何かを知りたい: Netbios 名 python をエンコードする

したがって、エンコードするには、これを使用できます:

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"

この機能の逆について考えましたが、なぜ機能しないのかわかりません。

ありがとう !

4

1 に答える 1

1

この関数を使用します ( dpkt ソース コードから取得):

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'
于 2012-11-30T20:52:23.770 に答える