如何对5元组进行哈希处理(SRC IP-SRC端口-DST IP-DST端口-Procotol)

问题描述 投票:0回答:1

我将网络连接存储为5个元组的PCAP文件,并使用Python在该列表中进行了很多搜索。但是,将所有5个值相互比较的简单解决方案非常慢。我的列表中包含Session对象,该对象存储以下数据,SrcIP:192.168.0.1SrcPort:443DstIP:192.168.0.101DstPort:5000协议:TCP我想在python中创建一个哈希函数,该函数为每个会话(5个元组)生成一个唯一的哈希值,并仅存储该值。我阅读了以下问题:Hash function for SRC DST IP and Port但是仍然对可以使用默认python模块(例如ipaddress和hashlib)可以实现的解决方案感到好奇。

我尝试过ipaddress模块​​,最终得到5个不同的值,如下所示:

import ipaddress

ip1 = ipaddress.ip_address('192.168.1.1')
ip2 = ipaddress.ip_address('255.255.255.255')
port1 = 445
port2 = 5001
protocol = 'tcp'
print(int(ip1))
print(int(ip2))
print(port1)
print(port2)
print(protocol)

其中打印出以下内容:

3232235777
4294967295
445
5001
tcp
python python-3.x hash
1个回答
1
投票

快速简单:在使用您的值构建的字符串上利用python的hash

hash

示例:

key = '{};{};{};{};{}'.format(src_ip, src_port, dst_ip, dst_port, protocol)
hashed_key = hash(key)

打印

key = '192.168.0.1;443;192.168.0.101;5000;TCP'
print(hash(key))

有关散列函数的更多控制,请查看2213561766848318588

© www.soinside.com 2019 - 2024. All rights reserved.