[問題] 存檔問題(已解決)

看板Python作者 (阿東)時間10年前 (2015/04/19 23:31), 10年前編輯推噓3(3011)
留言14則, 3人參與, 最新討論串1/1
各位版友好, 最近在寫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://www.ptt.cc/bbs/Python/M.1429457517.A.615.html ※ 編輯: Dong0129 (220.137.113.177), 04/19/2015 23:59:37

04/20 00:00, , 1F
看不出來這跟Scrapy有什麼關係
04/20 00:00, 1F

04/20 00:00, , 2F
如果是輸出入有問題 建議先用測試資料模擬輸出入
04/20 00:00, 2F
您好,已修改標題, 因為有試過用比較少資料的檔案去試, 但都沒辦法成功... 等等會試著把src跟dst拆開來做看看... ※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 00:05:50

04/20 00:17, , 3F
沒看到這隻程式哪裡寫檔案了,你只讀了 rfd
04/20 00:17, 3F

04/20 00:18, , 4F
rfd 讀了之後改內容要再寫回去,是 wrdpcap 做嗎?
04/20 00:18, 4F
wrpcap即是將檔案儲存@@還是我用錯了?

04/20 00:24, , 5F
呃 你只讀檔 然後還是存一樣東西回去= =
04/20 00:24, 5F

04/20 00:25, , 6F
然後我是不知道你想IP做啥 這樣做沒改checksum 你的封包
04/20 00:25, 6F

04/20 00:25, , 7F
就全爛了
04/20 00:25, 7F

04/20 00:30, , 8F
要修改後再存回去還是正確的要重算IPv4 header checksum
04/20 00:30, 8F
之前有試過直接給另一台機器的IP當做dest ip,下send()後確實有將封包送達, 目標在重現背景流量,所以想要修改pcap檔案理的IP之後, 看能否使用salt-stack做部署讓檔案在其他node裡送。 ※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 00:48:13

04/20 01:18, , 9F
只改IP 沒改checksum 送不出去的 Dst host 會把它丟掉.
04/20 01:18, 9F

04/20 01:18, , 10F
這是計網的嘗試
04/20 01:18, 10F

04/20 01:19, , 11F
*常識 另外你說收到我想應該是scapy幫你重算了
04/20 01:19, 11F
我想是的,因為在接收端的確有看見它在做一些動作, 但目前的目標是要讓流量能夠動起來,所以一步一步去試, 謝謝您的指點! ※ 編輯: Dong0129 (220.137.113.177), 04/20/2015 01:25:46

04/20 01:34, , 12F
我的建議是你改完IP後直接用sendp 就直接重送
04/20 01:34, 12F

04/20 01:34, , 13F
sendp(rdpcap("/tmp/pcapfile")) # tcpreplay
04/20 01:34, 13F

04/20 01:35, , 14F
不需要在存PCAP回去 參考這篇吧 http://goo.gl/yCd3eD
04/20 01:35, 14F
謝謝您,我一開始就是照這一個程式來做, 但是之後需要把檔案分送到各個虛擬節點上,在虛擬節點上做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
文章代碼(AID): #1LCyfjOL (Python)
文章代碼(AID): #1LCyfjOL (Python)