用PCAP.NET捕获DNS响应?
题
Q1-是否可以使用库捕获DNS请求/响应?
Q2-如果是,一旦我拥有该数据包,是否有人有任何示例代码显示我如何从DNS响应中提取字段?特别是DNS为给定的DNS名称特别提供的IP地址。
解决方案
是的,有可能。
示例代码在远面有点...
本质上,您需要:
- 提取以太网标头
- 提取IP标头
- 提取UDP标头[假设数据包没有碎片或使用TCP
- 提取DNS有效载荷
然后根据非常彻底的描述处理其余的数据包 RFC 1035.
实际上,这意味着:
- 忽略请求 - 您需要的所有信息都是在响应中(
QR == 1
) - 检查
RCODE == 0
和ANCOUNT > 0
- 看 问题 查找要查询的名称的部分
- 在 回答 (DUH!)部分
为了使事情变得更复杂,您必须处理DNS标签(一系列 <count><data...>
字段)并可能处理压缩标签!
这听起来很讨厌,但实际上都不是 那 难的。我有完成所有操作的C ++代码,但时间不长,但我无法发布。
不隶属于 StackOverflow