【问题标题】:Decode Netbios Name Python解码 Netbios 名称 Python
【发布时间】:2012-11-30 20:02:43
【问题描述】:

我想知道与这篇文章相反的最佳方法是什么: encode Netbios name 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"

我虽然知道这个功能的反面,但我不知道为什么它不起作用。

谢谢!

【问题讨论】:

    标签: python decoding netbios


    【解决方案1】:

    使用这个函数(取自dpkt source code):

    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'
    

    【讨论】:

    • 谢谢,我以前看到过,但是像这样使用它会破坏他们的代码。
    • 在您的应用程序中包含该库是一种选择吗? (from dpkt.netbios import decode_name)
    • 我正在尝试构建一个不需要任何外部模块的开源程序!不过谢谢你的建议,不胜感激:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2011-06-12
    • 2021-05-06
    • 1970-01-01
    • 2023-04-09
    • 2018-09-09
    • 1970-01-01
    相关资源
    最近更新 更多