我正在寻找一种方法来查找应用程序和它在给定时间戳访问的 url 之间的映射。为此,我首先通过解析从时间 t1 到 t2 的数据包转储文件来获得 tcp 端口号到 url 的映射。我写了这个用于解析的python代码:
import dpkt
f = open('/home/nachiket/Desktop/Research work/my project/s1-pcapFilesParsed/pcap files/2017_04_01_023856.pcap')#2017_03_30_013908.pcap #2017_03_02_010455.pcap
pcap = dpkt.pcap.Reader(f)
g=open('s1final.txt','w')
g.write("\n")
list=set()
for ts, buf in pcap:
eth = dpkt.ethernet.Ethernet(buf)
ip = l2.data
tcp = ip.data
if type(tcp)!=str:
if (tcp.dport == 80 or tcp.dport == 443) and len(tcp.data) > 0:
try:
http1 = dpkt.http.Request(tcp.data)
if http1.uri!='/_ping':
g.write("p "+str((hex(tcp.sport).split('x')[-1])).upper()) #converted to hex
except (dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError):
continue
现在我将 tcp 端口从 /proc/net/tcp 映射到 uid,从 uid 我得到了应用程序名称。因此,我合并了这两个文件,并在给定的时间戳得到了 tcp 端口到应用程序名称的映射。
蟒蛇代码:
#! /bin/bash
for i in {1..80}
do
adb shell "date +%s" > dump/netdump$i
adb shell "cat /proc/net/tcp" >> dump/netdump$i
echo finished: $i
sleep 1
done
我面临的问题是运行第一个代码的 tcp 端口与从第二个代码运行的 tcp 端口完全不匹配。如果应该在给定时间戳的应用程序使用的公共 tcp 端口的基础上合并它们,从而在给定时间找到应用程序到 url 的映射。但是端口不匹配。我知道 /proc/net/tcp 用于获取每个套接字的详细信息,但它不应该影响我猜的 tcp 端口。
PS:我是初学者,在提交问题之前已经做了研究
谢谢