使用PCap.Net捕获DNS响应?

时间:2010-08-17 11:17:59

标签: .net dns winpcap sharppcap pcap.net

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

Q2 - 如果是,一旦我有了数据包,任何人都有任何示例代码 这表明我如何从DNS响应中提取字段?在 特别是DNS为给定DNS名称解析的IP地址 特别提供。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。

示例代码有点偏长,但是......

实质上,您需要:

  1. 提取以太网标头
  2. 提取IP标头
  3. 提取UDP标头[假设数据包未分段,或使用TCP]
  4. 提取DNS有效负载
  5. 然后根据RFC 1035中给出的非常详尽的描述处理数据包的其余部分。

    在实践中,这意味着:

    1. 忽略请求 - 您需要的所有信息都在回复中(QR == 1
    2. 检查RCODE == 0ANCOUNT > 0
    3. 查看问题部分以查找被查询的名称
    4. 答案(duh!)部分
    5. 中寻找答案

      更复杂的是,您必须处理DNS标签(一系列 <count><data...> 字段)并可能处理压缩标签!

      这听起来很讨厌,但实际上 很难。我有C ++代码完成所有这些并且它不是那么久,但我不能发布它。