非常简单的代码,它只需要使用scapy来触发一个pcap (包),
如果我只是想对自己做一些简单的cgi-bin帖子来运行一组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>发布于 2012-03-01 07:50:00
很可能sendp的输出会把超文本标记为文本,你能做的就是尝试将verbose=0传递给sendp (如果输出不重要),或者尝试其他详细级别。如果sendp的输出对您很重要,您可以使用subprocess.Popen在单独的脚本中运行它,并尝试格式化输出,使其适合HTML页面。
编辑: ops,有人已经回答了几乎相同的问题
发布于 2012-03-01 07:40:11
据我所知,sendp不仅将包回传到标准输出;它还在较低的协议层将其“发送到线路上”。因此,如果你想发送一个html头,你需要将它包装在一个包中,而不是相反。
但是你确定你需要和斯帕希打交道吗?如果你想要的只是向can服务器发送POST请求,你可以直接使用urllib2.urlopen。将POST数据放入可选的data参数中,它将对请求使用POST而不是GET。
发布于 2012-03-01 07:03:21
看起来你没有发送http数据(例如响应头)。
因为它是在web服务器上运行的,所以您应该这样做。
https://stackoverflow.com/questions/9507602
复制相似问题