使用Python分析wireshark文件
1 pyshark庫(kù)
支持wireshark的解析等。
安裝pyshark
pip install pyshark
2 dpkt庫(kù)
這也是一個(gè)用于分析pcap文件的庫(kù),是所有分析pcap庫(kù)中最快的一個(gè)。
官方參考文檔:
https://dpkt.readthedocs.io/en/latest/print_packets.html
https://dpkt.readthedocs.io/en/latest/examples.html#examples-in-dpkt-examples
安裝
pip install dpkt
3 應(yīng)用實(shí)例
dpkt讀pcap文件
f = open('new1.pcap','rb')
pcap = dpkt.pcap.Reader(f)
# ts是timestemp時(shí)間戳,buf(二進(jìn)制數(shù)據(jù))是主體的數(shù)據(jù)包信息。
for ts,buf in pcap:
pass
獲取每個(gè)數(shù)據(jù)包的ip地址
#由buf這個(gè)二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為Ethernet類的對(duì)象
eth = dpkt.ethernet.Ethernet(buf)
ip_src = eth.data.src #這里是獲取這個(gè)數(shù)據(jù)包的源ip
#要注意的是,這里的源ip是以二進(jìn)制的方式返回的,如果我們要獲取點(diǎn)分十進(jìn)制的ip地址
#可以這樣做
def inet_to_str(inet):
try:
return socket.inet_ntop(socket.AF_INET,inet)
except:
return False#這里因?yàn)榫唧w需要把IPv6給丟棄了
#如果希望IPv6也能獲取可以這樣
#return socket.inet_ntop(socket.AF_INET6,inet)
ip_src = inet_to_str(eth.data.src)
ip_dst = inet_to_str(eth.data.dst)#目的ip\
獲取報(bào)文中的ip
#coding=utf-8
import dpkt
import socket
import time
def inet_to_str(inet):
try:
return socket.inet_ntop(socket.AF_INET,inet)
except:
return False
def getip():
f = open('new1.pcap','rb')#要以rb方式打開(kāi),用r方式打開(kāi)會(huì)報(bào)錯(cuò)
pcap = dpkt.pcap.Reader(f)
for ts,buf in pcap:
print(ts)打印時(shí)間戳
eth=dpkt.ethernet.Ethernet(buf)
#這里也是對(duì)沒(méi)有IP段的包過(guò)濾掉
if eth.type != dpkt.ethernet.ETH_TYPE_IP:
continue
ip = eth.data
ip_src = inet_to_str(ip.src)
ip_dst = inet_to_str(ip.dst)
print(ip_src+'-->'+ip_dst)
if __name__=='__main__':
getip()
修改報(bào)文中的源ip和目的
import dpkt
import os
import socket
test = open("new.pcap","wb")
writer = dpkt.pcap.Writer(test)
f=open("old.pcap",'rb')
packets = dpkt.pcap.Reader(f)
for ts,buf in packets:
eth = dpkt.ethernet.Ethernet(buf)
# 這里是將點(diǎn)分十進(jìn)制轉(zhuǎn)化成二進(jìn)制
eth.data.src = socket.inet_pton(socket.AF_INET, "192.168.1.1")
eth.data.dst = socket.inet_pton(socket.AF_INET, "192.168.1.2")
writer.writepkt(eth,ts=ts)#不加ts參數(shù),數(shù)據(jù)包時(shí)間戳?xí)J(rèn)為當(dāng)前時(shí)間
test.flush()
test.close()
到此這篇關(guān)于使用Python分析wireshark文件的文章就介紹到這了,更多相關(guān)Python分析wireshark文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django 權(quán)限管理(permissions)與用戶組(group)詳解
這篇文章主要介紹了Django 權(quán)限管理(permissions)與用戶組(group)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
如何搜索查找并解決Django相關(guān)的問(wèn)題
每個(gè)程序員都會(huì)在開(kāi)發(fā)過(guò)程中遇到這樣或那樣的問(wèn)題, 有時(shí)光靠一個(gè)人是無(wú)法解決所有問(wèn)題的, 所以我們應(yīng)該找到適當(dāng)?shù)牡胤教釂?wèn).2014-06-06
詳解pycharm的python包opencv(cv2)無(wú)代碼提示問(wèn)題的解決
這篇文章主要介紹了詳解pycharm的python包opencv(cv2)無(wú)代碼提示問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python由已知數(shù)組快速生成新數(shù)組的方法
這篇文章主要介紹了python由已知數(shù)組快速生成新數(shù)組的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
python 自動(dòng)化偷懶的四個(gè)實(shí)用操作
這篇文章主要介紹了python 自動(dòng)化偷懶的四個(gè)實(shí)用操作,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
PyTorch 如何將CIFAR100數(shù)據(jù)按類標(biāo)歸類保存
這篇文章主要介紹了PyTorch 將CIFAR100數(shù)據(jù)按類標(biāo)歸類保存的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
新版Pycharm顯示Conda?executable?is?not?found解決辦法
這篇文章主要給大家介紹了關(guān)于新版Pycharm顯示Conda?executable?is?not?found解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Pycharm具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù)
這篇文章主要介紹了Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04

