大家好,首先这是我在计算器上的第一篇文章\ O/Python的NBNS数据包的发送速率
嗯,我的工作,我要建立一个“nbnsStrom”的剧本,研究他的FWS comportement 。 原始(编译后的)病毒以25 000个数据包/秒的速度发送,当我们辛苦地达到1000个数据包/秒时。我尝试使用多线程,但我的CPU已经100%与我的原始脚本。 我是否需要在C中移植我的脚本,否则我错过了使用python性能的东西。
我的主要功能
def main():
packets_sent = 0
c_range = ip_ranges() #return a list
packet = Ether()/ IP()/UDP(sport=137,dport=137,len=58)/NBNSQueryRequest(FLAGS=0x0110, QUESTION_NAME='WPAD')
start_time = time.time()
for ip in c_range:
packet[IP].dst = ip
sr1(packet, verbose=False)
packets_sent +=1
timer = time.time() - start_time
print "ratio : "+` packets_sent/timer`+" p/s"
感谢您的阅读,请原谅我的英语是不是我的母语,干杯!
谢谢回答。关于sr,我试过所有scapy发送函数,sr是我试过的最后一个;我粘贴到我的帖子。无论如何,我没有想过要发送一份清单。 通过“数据包[IP] .dst = ip然后重新发送”不是资源饥饿。 此外,我将调查没有临时文件的sendpfast。 – 2014-09-23 14:14:16
@mtthnn,我编辑了我的回复。请回顾一下,并尝试调用'sendp'(而不是''send')一次(不在循环内部),然后再恢复以进一步优化代码。 – Yoel 2014-09-23 15:14:18
非常感谢! 103020个数据包(9477840字节)在1.16秒内发送 – 2014-09-23 15:30:05