作成した DNS サーバーでカミンスキー攻撃をシミュレートする必要がある課題に取り組んでいます。現在、偽の dns 応答パケット ペイロードを生成しようとしています。dnslib を使用してパケットを生成し、その結果を pack() します。これにより、16進リテラルが得られます。
'\xcf\x90\x85\x80\x00\x01\x00\x01\x00\x00\x00\x00\x03abc\x03com\x00\x00\x01\x00\x01\xc0\x0c\x00\x01\x00\ x01\x00\x00\x00\x00\x00\x04\x01\x02\x03\x04'
これがペイロード データの正しい形式であるとは思えません。具体的には、すべての「\ x」を捨てる必要があると思うので、ストリームは cf 90 85 80 ... になります。
残念ながら、私はこれを行うことができないようです。文字列操作ツールはリテラルでは機能しないようで、通常のリテラルから文字列への変換 (literal_eval) はエラーで失敗します。
TypeError: compile() expected string without null bytes
私が試した他の変換 (int(packet,0)) は、リテラルの一部がテキストであるため失敗します (奇数の長さにつながります)。
おそらく非常に簡単な解決策があります。