gpt4 book ai didi

Windows DHCP 客户端主机名编码

转载 作者:可可西里 更新时间:2023-11-01 10:35:12 25 4
gpt4 key购买 nike

最近我一直在尝试从捕获的 DHCP 数据包中保存主机名列表。我发现,每个 DHCP 主机名(选项 12) 都应具有 RFC 1035 中定义的格式。因此,如果我理解正确的话,主机名应该以 7 位 ASCII 编码,并且还有其他限制,例如:- 名称不应以数字开头,并且应省略一些禁用字符。

我在数据包中遇到的几乎所有设备都满足此限制条件,但 Windows 设备(Vendor ID MSFT 5.0)则不然。恕我直言,Windows DHCP 客户端采用计算机(移动)名称并将其填写在主机名选项中。

当计算机名称设置为例如 "Lukáš-PC" 时会出现问题。 Wireshark 将此主机名显示为 Luk\240\347-PC。 (240 和 347 是八进制数字)。为了亲自查看,我使用 printf("%hhu", c)(C 语言)在数据包中打印了值。

á = 160
š = 231

恕我直言,我认为这是简单的 char 变量溢出。我尝试从溢出值中推断出原始值,但我没有发现字符和已知编码之间有任何关系。所以我的问题是:

有什么方法可以将这些值转换回原始值吗?如果是,原始字符编码是什么,何时发生溢出?

谢谢。

最佳答案

默认 char通常是有符号的,并扩展到 int当传递给可变参数函数时。为确保打印无符号,请使用 printf("%hhu", c)printf("%d", (unsigned char)c); .

不可能知道正确的编码,因为它取决于每个系统的设置。

请注意,任何合规系统必须根据RFC 3490 对名称进行编码,但 Windows 似乎喜欢违反标准。

关于Windows DHCP 客户端主机名编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com