獲取應用的報文

2021-10-06 16:36:30 字數 3134 閱讀 1515

#coding=utf-8

import os

import socket

import struct

import os,time,threading

import subprocess

def get_connect(self):  

with open(self.file,'r') as f:

s=f.readlines()

#print(len(s))

while (self.len1 < len(s)):

if s[self.len1].split()== :

self.len1=self.len1+1

elif s[self.len1].split()[0] == 'tcp' or s[self.len1].split()[0] == 'udp':

self.len1=self.len1+1

srcport=k.split()[1].split(':')[1]

dstip=k.split()[2].split(':')[0]

self.dic1[srcport]=dstip

self.len1=self.len1+1

else:

self.len1=self.len1+1

return self.dic1

class pcap():

definit(self, file):

self.file = file

self.i=self.file.split(』/』)[-1].split(』.』)[0]# 取路徑中的檔名

self.file_pcap=open(『d:/python/pcap1/target.pcap』,『ab+』)

def db_log(self):

f=open(self.file,'rb')

pcap_file = f.read()

if count==0:

pcap_file_header=pcap_file[0:24]

self.file_pcap.write(pcap_file_header)

#print(srcbytearr.find(magic_number,0))

#print(srcbytearr)

#print(srcbytearr[0:36])

#print(srcbytearr[16:20])

#packet_len=struct.unpack('i',pcap_file[32:36])[0]

#print(srcbytearr[36:40])

#startindex=0

j=24

len1=24

len2=0

#print(len(pcap_file))

while (jh',s[50:52])[0])

dstport=str(struct.unpack('>h',s[52:54])[0])

#print(srcport)

dstip=socket.inet_ntoa(struct.pack("!i",socket.htonl(dstip)))

#print(dstip)

#print(srcport1)

#print(srcport)

#print(s.hex())

for key in dic2:

#print(key,dic2[key],len(key))

#print(srcport,dstport,dstip,len(dstip))

if key==srcport or key==dstport:

#print('111111111111111111')

self.file_pcap.write(s)

len1=len2

j=len2

else:

#print('000000000000000')

continue

len1=len2

j=len2

#print(len2)

ifname== 『main』:

#第乙份:獲取應用的連線資訊和所有報文

#獲取pc的所有網路連線資訊並保持到2.txt中

def netstat():

while 1:

time.sleep(0.1) #預設秒為單位

os.system(『netstat -anb >> c:/2.txt』)

threading.thread(target=netstat).start()

#使用wireshark持續抓應用發的所有報文

def my():

#os.system('c:/program files (x86)/wireshark/dumpcap.exe -i 4 -p -s 0 -b filesize:100000 -w d:/python/packet/out.pcap')

# -p引數保證保持的報文是pcap格式

subprocess.popen("c:/program files (x86)/wireshark/dumpcap.exe -i 4 -p -s 0 -b filesize:100000 -w d:/python/packet/out.pcap")

threading.thread(target=my).start()

#第二部分:根據應用的連線資訊,從抓取的報文中提取出網路應用的報文,方便應用識別,避免網路雜報。這樣提取出的報文,都是相應應用的報文,例如qq應用

file ='c:/1.txt'

dic2=s.get_connect()

#print(dic2)

count=0

for fpathe,dirs,fs in os.walk('d:/python/pcap/'):#路徑可修改

for fl in fs:

print(fl)

s=pcap(os.path.join(fpathe,fl))

s.db_log()

count=count+1

can test 接收報文 獲取CAN報文並解析

一 獲得can報文的過程 準備軟硬體環境,硬體周立功can卡,軟體使用zlgcantest,安裝在電腦上 通過can卡連線整車can或者除錯埠,通過軟體互動介面獲取can報文。二 can2.0b報文基本格式 接收到的報文,是一串十六進製制的字元,而報文格式定義和位數是按照二進位制定義的。29位擴充套...

CXF獲取出入站報文

在springboot整合cxf 服務端中,是直接將報文列印出來的,這個適合在除錯的時候使用,但是在實際中,期望的是將報文儲存下來。直接上 configuration slf4j public class cxfconfig class customeventsender implements lo...

獲取應用的bundle identifier

nsstring identifier nsbundle mainbundle bundleidentifier 就上面的一段 針對nsbundle有三個函式需要注意,這些函式都是針對info.plist操作的,可以獲取對應的鍵值 bundleidentifier,返回nsstring型別的bund...