作者Dong0129 (阿東)
看板Python
標題[問題] Scapy存檔問題
時間Sun Apr 19 23:31:54 2015
各位版友好,
最近在寫Scapy的東西,
但存檔的地方...我不知道是哪裡出了問題...
File:
100.100.100.100 1 10.1.1.1
200.200.200.200 2 10.2.2.1
100.100.100.200 3 10.1.1.2
.
.
.
File資料依序分別是IP位置、代號、重配的IP
然後接下來是我code的scapy程式
目的是要把封包檔裡符合IP位置的項目轉換成重配的IP
rfd=open("File","r")
for line in rfd.read()splitlines():
items,item2,item3=line.split('\t')
pkts=rdpcap("pcapfilename")
for pkt in pkts:
if pkt[IP].src==item1:
pkt[IP].src=item3
if pkt[IP].dst==item1:
pkt[IP].dst=item3
wrpcap("new_pcapfilename",pkts)
rfd.close()
執行過後,
新產生的PCAP檔內IP位置並沒有被替換掉...
它重新存了原檔...
請問程式碼有誤嗎?
已解決
_____________________________________________________________________
剛剛重新re一遍程式,
應該要把pkts=rdpcap("pcapfilename")
拿到for迴圈外面放才對,
即:
rfd=open(...)
pkts=rdpcap(...)
for line in ...:
謝謝各位的指點。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.113.177
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1429457517.A.615.html
※ 編輯: Dong0129 (220.137.113.177), 04/19/2015 23:59:37
1F:推 ug945: 看不出來這跟Scrapy有什麼關係 04/20 00:00
2F:→ ug945: 如果是輸出入有問題 建議先用測試資料模擬輸出入 04/20 00:00
您好,已修改標題,
因為有試過用比較少資料的檔案去試,
但都沒辦法成功...
等等會試著把src跟dst拆開來做看看...
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 00:05:50
3F:→ ccwang002: 沒看到這隻程式哪裡寫檔案了,你只讀了 rfd 04/20 00:17
4F:→ ccwang002: rfd 讀了之後改內容要再寫回去,是 wrdpcap 做嗎? 04/20 00:18
wrpcap即是將檔案儲存@@還是我用錯了?
5F:→ qoo1991: 呃 你只讀檔 然後還是存一樣東西回去= = 04/20 00:24
6F:→ qoo1991: 然後我是不知道你想IP做啥 這樣做沒改checksum 你的封包 04/20 00:25
7F:→ qoo1991: 就全爛了 04/20 00:25
8F:推 qoo1991: 要修改後再存回去還是正確的要重算IPv4 header checksum 04/20 00:30
之前有試過直接給另一台機器的IP當做dest ip,下send()後確實有將封包送達,
目標在重現背景流量,所以想要修改pcap檔案理的IP之後,
看能否使用salt-stack做部署讓檔案在其他node裡送。
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 00:48:13
9F:推 qoo1991: 只改IP 沒改checksum 送不出去的 Dst host 會把它丟掉. 04/20 01:18
10F:→ qoo1991: 這是計網的嘗試 04/20 01:18
11F:→ qoo1991: *常識 另外你說收到我想應該是scapy幫你重算了 04/20 01:19
我想是的,因為在接收端的確有看見它在做一些動作,
但目前的目標是要讓流量能夠動起來,所以一步一步去試,
謝謝您的指點!
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 01:25:46
12F:→ qoo1991: 我的建議是你改完IP後直接用sendp 就直接重送 04/20 01:34
13F:→ qoo1991: sendp(rdpcap("/tmp/pcapfile")) # tcpreplay 04/20 01:34
謝謝您,我一開始就是照這一個程式來做,
但是之後需要把檔案分送到各個虛擬節點上,在虛擬節點上做send的動作,
才會想要先修改IP位置並重新儲存,
謝謝您的指點!
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 01:40:40
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 01:40:58
※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 02:09:37