大家好,首先這是我在計算器上的第一篇文章\ 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