Q1-ライブラリでDNS要求/応答をキャプチャすることは可能ですか?
Q2-はいの場合、パケットを受け取ったら、DNS応答からフィールドを抽出する方法を示すサンプルコードを誰かが持っていますか?特に、DNSが特定のDNS名に対して解決したIPアドレス。
はい、可能です。
ただし、サンプルコードは少し長めになります...
本質的に、次のことを行う必要があります。
次に、 RFC 1035に記載されている非常に詳細な説明に従って、パケットの残りの部分を処理します。
実際には、それは次のことを意味します。
QR == 1
)RCODE == 0
てANCOUNT > 0
問題をさらに複雑にするには、DNSラベル(一連の<count><data...>
フィールド)を処理する必要があり、圧縮ラベルも処理する可能性があります。
これは厄介に聞こえますが、実際にはそれほど難しいことではありません。私はこれらすべてを実行するC++コードを持っており、それほど長くはありませんが、リリースできません。