循环浏览文件并提取重复数据以进行分析

时间:2014-04-23 02:30:57

标签: python perl analysis

我有分析tcpdump文件的数据。结果如下。

第一列是时间,按照src mac,dest_mac,src_ip& src_port和dest_ip_dest_ip。

我有从一个源ip到目标ip的数据,它出现在不同的行中,只有相同的信息,除了时间上差别不大。而不是显示所有这些信息,我想循环遍历文件,如果目标IP相同,记录开始时间和结束时间,采取差异并打印只有一行的差异。

目前的结果

03-23 00:37:28.174515 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 49671 | 180.149.153.11 | 80
03-23 00:37:28.174536 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 49671 | 180.149.153.11 | 80
03-23 00:41:36.422588 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 49672 | 180.149.153.11 | 80
03-23 00:44:18.584080 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 49671 | 180.149.153.11 | 80
03-23 00:44:22.588592 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 35660 | 180.149.134.61 | 80
03-23 00:45:12.636571 | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 35661 | 180.149.134.61 | 80

我的期望:

(00:44:22 - 00:37:28) | 8ca982044d00 | c04a00332142 | 192.168.1.100 | 35661 | 180.149.134.61 | 80

我不指望你为我编写代码,但是一点点暗示会很有帮助

1 个答案:

答案 0 :(得分:1)

这就是你如何构建数据来计算差异:

  • 保留网络词典。这基本上可以是字典的字典,其中源ip是外部字典的键,而目标ip是外键的值和内部字典的键。内部字典的值可以是以开始时间作为其第一个元素的列表,结束时间作为此源IP目标IP对的第二个元素。即,

    network[src][dest] = [start_time, end_time]
    
  • 使用csv模块解析输入文件并按上述方式构建网络。

  • 拥有网络后,您将拥有开始和结束日期/时间。您可以使用strprime()strftime()方法计算差异。

  • 然后使用csv模块将数据写入输出文件

下面的代码会查看您上面提供的数据,并构建我解释过的字典网络词典:

from pprint import pprint
import csv

network = {}
with open('file1') as input_file:
    csv_reader = csv.reader(input_file, delimiter='|')
    for row in csv_reader:
        src = row[3].strip()
        dest = row[5].strip()
        if src not in network:
            network[src] = {}
        elif dest not in network[src]:
            network[src][dest] = [row[0].strip(), row[0].strip()]
        else:
            network[src][dest][4] = row[0].strip()
pprint(network)

这给出了:

{'192.168.1.100': {'180.149.134.61': ['03-23 00:44:22.588592',
                                      '03-23 00:45:12.636571'],
                   '180.149.153.11': ['03-23 00:37:28.174536',
                                      '03-23 00:44:18.584080']}}

现在您已经组织了源和目标ips,其他步骤很简单。

希望这有帮助。