1

scapyを使用して1つのpcap(パケット)を起動するだけの本当に単純なコード、

単純なcgi-binPOSTSを実行して、10個の簡単なテストのセットを実行したいだけの場合、これが(Webサイトではなく)テキストとしてキックバックするのはなぜですか。行をコメントアウトすると

sendp(a, iface="em1")

次に、以下のコードは実際にWebサイトを正常に生成します...しかし実際にはパケットを送信しません。これはstdoutを使用したものだと思います...提案は大歓迎です!

#!/usr/local/bin/python

from scapy.all import *
#import v6tester_main

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>NPD Automation Tool - GCT-USG</title>'
print '</head>'
print '<body>'
print '<font> NPD Automation Tool </font>'

a = Ether() / IP() / IPv6() / ICMPv6EchoRequest()
sendp(a, iface="em1")

print '<br>'
print '<font>End of Test</font>'
print '</body>'
print '</html>'

ソースを表示すると、これが表示されます->

<html>
<head>
<title>NPD Automation Tool - GCT-USG</title>
</head>
<body>
<font> NPD Automation Tool </font>

Sent 1 packets.
<br>
<font>End of Test</font>
</body>
</html>
4

3 に答える 3

1

おそらく、sendpの出力はHTMLにブレーキをかけ、テキストとして表示されないため、sendpにverbose = 0を渡すか(出力が重要でない場合)、他の詳細レベルを試すことができます。sendpの出力が重要な場合は、subprocess.Popenを使用して別のスクリプトで実行し、HTMLページに収まるように出力をフォーマットしてみてください。

編集:おっと、誰かがすでにほぼ同じで答えた

于 2012-02-29T23:49:59.673 に答える
1

私が理解しているようにsendp、パッケージを標準出力にエコーするだけではありません。下位のプロトコル レベルで「ダウン ザ ワイヤ」で送信します。したがって、html ヘッダーを送信する場合は、パッケージ内にラップする必要があります。その逆ではありません。

しかし、あなたはscapyをいじる必要がありますか?POST リクエストを Web サーバーに送信することだけが必要な場合は、urllib2.urlopen. オプションの引数に POST データを入れるdataと、リクエストに GET の代わりに POST が使用されます。

于 2012-02-29T23:40:11.480 に答える
0

http データ (応答ヘッダーなど) を送信しているようには見えません。

Web サーバーから実行されているためです

于 2012-02-29T23:03:20.600 に答える