2012-09-27 68 views
0

我有一系列數據包在pcap文件與各種協議,如GTPV2,S1AP,直徑等等等我需要知道是否有一種方法來修改某些字段的編程方式,爲例如:Wireshark - 編程從pcap文件修改數據包

爲GTPv2的協議:MCC領域 - 移動國家代碼,MNC領域 - 移動網絡代碼 的S1AP協議:Protocolie場等等等等

我設法讓proto_tree和修改tvbuff內容通過專門處理我感興趣的緩衝區的偏移量,但我可以這樣說:

e212.mcc = "something" 

其中e212.mccc是一個Wireshark過濾器?我問是否可以用任何語言完成,但我的猜測是解析器僅用於顯示,而不是修改,我沒有API通過Wireshark過濾器直接訪問數據包的字段。如果是這樣,你知道任何開源工具可以根據一些規則(最好/還包括Wireshark過濾器)修改pcap文件中的數據包嗎?

+0

這種編輯不適用於Wireshark。看看[libnetdude](http://stackoverflow.com/a/9932181/1170277)。 – mavam

回答

0

我不完全明白你的問題,但如果我是對的,sed會爲你做好工作。正則表達式可以讓你瀏覽文件,選擇特定的模式(甚至偏移)並替換它們。當我需要將必須交給第三方的文件的機密信息密封起來時,我直接在pcap文件上使用這種技術。

檢查here,並給它一個嘗試:)

+0

我知道sed,這隻會對基於文本的協議有效,但是如果你想從一個數據包中修改一個特定的字段,這個數據包是以二進制格式編碼的,那麼sed不會對你有太大的幫助。 – florinp

0

我做在Perl這樣的事情一旦被導出捕捉文件與Wireshark的文字,然後構建一個文本文件到一個數組,其中以十六進制每一個數據包是一個入口,然後我只是將該數組運行到foreach循環,深入到GTP層並通過IE字段解析,根據需要調整有問題的IE的十六進制值。然後,我將數組打印到一個新的文本文件中(重新生成左邊的十六進制偏移是非常棘手的部分),然後將新的文本文件讀入text2pcap實用程序以重新生成.pcap文件。