Действительно простой код, который просто запускает один pcap (пакет) с помощью scapy,
Если я просто хочу сделать простые cgi-bin POSTS для себя, чтобы запустить набор из 10 простых тестов, почему это просто отбрасывается как текст (а не веб-сайт). Если я прокомментирую строку
sendp(a, iface="em1")
Затем приведенный ниже код действительно генерирует веб-сайт в порядке... но он фактически не отправит пакет, я думаю, что это что-то с 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>
Скорее всего, вывод sendp тормозит HTML настолько плохо, что он отображается как текст, что вы можете сделать, это попробовать передать verbose = 0 в sendp (если вывод не важен), или попробуйте другой подробный уровень. если вывод sendp важен для вас, вы можете запустить его в отдельном script с subprocess.Popen и попытаться отформатировать вывод так, чтобы он вписывался в HTML-страницу.
edit: ops, кто-то уже ответил почти с тем же
Как я понимаю, sendp
не просто отсылает пакет к stdout; он посылает его "вниз по проводу" на более низком уровне протокола. Поэтому, если вы хотите отправить html-заголовок, вам нужно будет обернуть его внутри пакета, а не наоборот.
Но вы уверены, что вам нужно возиться с scapy? Если вы хотите отправить POST-запросы на веб-сервер, вы можете просто использовать urllib2.urlopen
. Поместите свои данные POST в необязательный аргумент data
, и он будет использовать POST вместо GET для запроса.
Не отображается то, что вы отправляете http-данные (например, заголовки ответов).
Вы должны быть, потому что он запущен с веб-сервера.