1

我正在寻找一种方法来查找应用程序和它在给定时间戳访问的 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:我是初学者,在提交问题之前已经做了研究

谢谢

4

0 回答 0