从 dhcpd.leases 解码 UID

从 dhcpd.leases 解码 UID

我正在我的网络上测试一个已分配此租约的设备:

lease 192.168.110.85 {
  starts 3 2022/07/20 16:12:37;
  ends 3 2022/07/20 16:22:37;
  cltt 3 2022/07/20 16:12:37;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet a4:06:e9:10:95:64;
  uid "\001\244\006\351\020\225d";
}

该设备在生产网络上运行不正常。我正在尝试获取任何我能获取的信息。

但我无法解码UID“\001\244\006\351\020\225d”。

根据 DHCP 手册,这应该是十六进制字符串,其他来源则称它是八进制(但事实并非如此)。如果是十六进制字符串,我该如何解释这些字节?

DHCP服务器是运行在Linux平台上的isc-dhcp。

答案1

我不知道“解码”客户端发送的 UID 值是否真的有意义,因为客户端可能会选择一个无法以任何有意义的方式解码的 UID。

我相信你很幸运,因为手动的(参见 uid 部分)似乎与您示例中的内容相匹配:

uid 客户端标识符;

uid 语句记录客户端用于获取租约的客户端标识符。客户端无需发送客户端标识符,并且只有客户端确实发送了客户端标识符时才会出现此语句。客户端标识符通常是 ARP 类型(1 表示以太网),后跟 MAC 地址,就像硬件声明中一样,但这不是必需的。

客户端标识符是记录为以冒号分隔的十六进制列表或带引号的字符串如果它被记录为带引号的字符串并且包含一个或多个不可打印的字符,则这些字符将表示为八进制转义符 - 反斜杠字符后跟三个八进制数字。使用的格式由lease-id-format参数决定,默认为八进制。

(强调添加)

查看您的值"\001\244\006\351\020\225d",它显然是值的引用字符串变体,并且大多数字节都被转义了。

输入字节 十六进制 评论
\001 01 以太网
\244 A4
\006 06
\351 E9
\020 10
\225 95
d 64 (参考你最喜欢的 ascii 表)

完美匹配hardware ethernet a4:06:e9:10:95:64

相关内容