补全:解析 DNS 查询里的名字
本节的 DNS 小工具:
encode_name("www.example.com") b"\x03www\x07example\x03com\x00"(每段前面一个长度字节,末尾 0)
build_query(qid, name) 12 字节头(id、标志 0x0100、问题数 1、其余 0)+ 名字 + 类型 A(1) + 类 IN(1)补全 decode_name(buf, pos):从 buf 的 pos 位置起读「长度 + 段」直到 0,交回 (点连起来的名字, 名字之后的位置)。用 build_query 的包验证。
全部评论