Q1-是否可以使用库捕获DNS请求/响应?

Q2-如果是,一旦我拥有该数据包,是否有人有任何示例代码显示我如何从DNS响应中提取字段?特别是DNS为给定的DNS名称特别提供的IP地址。

有帮助吗?

解决方案

是的,有可能。

示例代码在远面有点...

本质上,您需要:

  1. 提取以太网标头
  2. 提取IP标头
  3. 提取UDP标头[假设数据包没有碎片或使用TCP
  4. 提取DNS有效载荷

然后根据非常彻底的描述处理其余的数据包 RFC 1035.

实际上,这意味着:

  1. 忽略请求 - 您需要的所有信息都是在响应中(QR == 1)
  2. 检查 RCODE == 0ANCOUNT > 0
  3. 问题 查找要查询的名称的部分
  4. 回答 (DUH!)部分

为了使事情变得更复杂,您必须处理DNS标签(一系列 <count><data...> 字段)并可能处理压缩标签!

这听起来很讨厌,但实际上都不是 难的。我有完成所有操作的C ++代码,但时间不长,但我无法发布。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top