python 讀取修改pcap包
阿新 • • 發佈:2018-12-25
思路
利用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)