Почему мой stdout мешает моей веб-странице в python?

1

Действительно простой код, который просто запускает один 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>
  • 0
    Что вы видите, когда вы «просматриваете источник»?
  • 0
    @JimGarrison эй, добавил выше, я собираюсь обернуть тег шрифта вокруг отправленных 1 пакетов, чтобы увидеть, будет ли это работать .... обычно HTML не так требователен
Теги:
scapy
cgi-bin

3 ответа

1
Лучший ответ

Скорее всего, вывод sendp тормозит HTML настолько плохо, что он отображается как текст, что вы можете сделать, это попробовать передать verbose = 0 в sendp (если вывод не важен), или попробуйте другой подробный уровень. если вывод sendp важен для вас, вы можете запустить его в отдельном script с subprocess.Popen и попытаться отформатировать вывод так, чтобы он вписывался в HTML-страницу.

edit: ops, кто-то уже ответил почти с тем же

  • 0
    Не могли бы вы связать меня с тем, что вы говорите? Я не уверен, что понимаю многословно = 0 ...
  • 0
    Я голосую за то, что вы покупаете еще не отмеченную маркировку, пытаясь использовать модуль подпроцесса прямо сейчас, и задал другой вопрос здесь, следуя вашему маршруту
Показать ещё 1 комментарий
1

Как я понимаю, sendp не просто отсылает пакет к stdout; он посылает его "вниз по проводу" на более низком уровне протокола. Поэтому, если вы хотите отправить html-заголовок, вам нужно будет обернуть его внутри пакета, а не наоборот.

Но вы уверены, что вам нужно возиться с scapy? Если вы хотите отправить POST-запросы на веб-сервер, вы можете просто использовать urllib2.urlopen. Поместите свои данные POST в необязательный аргумент data, и он будет использовать POST вместо GET для запроса.

  • 0
    Хаха, извини, что они совершенно разные, сайт просто оболочка, поэтому я могу протестировать брандмауэр с помощью pcaps. Веб-сервер управляется через интерфейс em0, но интерфейс em1 является отдельным для тестирования FW, это просто фиктивный pcap, который я отправляю.
0

Не отображается то, что вы отправляете http-данные (например, заголовки ответов).

Вы должны быть, потому что он запущен с веб-сервера.

  • 0
    pcap только что отослан по проводам, это для тестирования брандмауэра, это просто фиктивный pcap, поэтому он просто пуст. Он отправляется, когда он не закомментирован, но сайт не генерируется ...
  • 0
    Я думал, что моя первая строка генерирует настоящий HTML ... он работает для многих других моих сценариев ... у вас есть часто задаваемые вопросы или как создать страницу для того, о чем вы говорите :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню