1. 程式人生 > >python 讀取修改pcap包

python 讀取修改pcap包

思路

利用scapy庫,在這個庫的基礎下能夠做很多的事情,python讀取pcap包網上一找一大把
將讀取出來的pcap包改一個名字,然後寫回,這不就OK了嗎
寫回的函式是:scapy.wrpcap(‘filename’,list)
第一個引數是filename,第二個引數是一個list,儲存報文的list

樣例程式碼

#coding=utf8
import scapy.all as scapy
from scapy.layers import http
import random
#p就是一堆資料,上幾層的各種資料


charset = 'QWER.;[]?|%[email protected]
#$%^&*()-uiopadDFGHJKLZXCVBNMqwfghjklzcvbnm,6789=+'
#字符集在這裡,可以隨意更改 def string_change(str_data): #通過字符集替換一個等長的攻擊字串 str_response = '' for i in range(len(str_data)): index = random.randint(0,len(charset)-1) # 隨機整個區間 str_response+=charset[index] print str_response return
str_response # 提取出pacp檔案中的所有包,改寫path欄位然後寫入新的pcap,tcp流都會儲存 list_a = [] if __name__ == '__main__': count = 0 #用來記載重複生成樣本資料 port = 0 packeges = scapy.rdpcap('/home/seen/桌面/http.pcap') while(count!=1): #帶有混淆的攻擊流量 for p in packeges: #重新拷貝流的時候需要給埠修改啥的,這裡還沒做
temp = p if temp.haslayer("HTTPRequest"): temp["HTTPRequest"].Path = string_change(temp["HTTPRequest"].Path) list_a.append(temp) else: list_a.append(temp) count = count + 1 scapy.wrpcap('/home/seen/桌面/test_1to0.pcap',list_a)