#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...