Lau*_*uza 10 python entropy python-2.7 python-3.x
香农熵是:
\r\n\r\n is the end of a HTPP header:
Run Code Online (Sandbox Code Playgroud)
不完整的HTTP标头:
我有一个PCAP格式的网络转储(dump.pcap),我试图 使用Python 计算HTTP协议中包含\r\n\r\n 和不包含数据包的数量的熵\r\n\r\n并比较它们.我用以下方法读取数据包:
import pyshark
pkts = pyshark.FileCapture('dump.pcap')
Run Code Online (Sandbox Code Playgroud)
我认为Ti在shannon公式中是我的转储文件的数据.
dump.pcap:https://uploadfiles.io/y5c7k
我已经计算了IP号的熵:
import numpy as np
import collections
sample_ips = [
"131.084.001.031",
"131.084.001.031",
"131.284.001.031",
"131.284.001.031",
"131.284.001.000",
]
C = collections.Counter(sample_ips)
counts = np.array(list(C.values()),dtype=float)
#counts = np.array(C.values(),dtype=float)
prob = counts/counts.sum()
shannon_entropy = (-prob*np.log2(prob)).sum()
print (shannon_entropy)
Run Code Online (Sandbox Code Playgroud)
任何的想法?是否有可能计算与HTTP协议的分组的数目的熵\r\n\r\n 和没有\r\n\r\n在头或它是一个无义想法?
转储的几行:
30 2017/246 11:20:00.304515 192.168.1.18 192.168.1.216 HTTP 339 GET / HTTP/1.1
GET / HTTP/1.1
Host: 192.168.1.216
accept-language: en-US,en;q=0.5
accept-encoding: gzip, deflate
accept: */*
user-agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Firefox/45.0
Connection: keep-alive
content-type: application/x-www-form-urlencoded; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
虽然我不明白你为什么要这样做,但我不同意其他人认为这是荒谬的。
例如,你可以拿一枚硬币,翻转它,然后测量它的熵。假设你翻转 1,000 次,得到 500 个正面和 500 个反面。即每个结果的频率为 0.5,或者统计学家正式称之为“事件”。
现在,由于两个 Ti 相等 (0.5),并且 0.5 的对数底数 2 为 -1,因此硬币的熵为 -2 *(0.5 * -1) = -1(负 2 是负号)前面并认识到两个相同的东西相加与乘以 2 相同。
如果硬币正面朝上的频率是反面朝上的 127 倍怎么办?现在出现尾部的概率为 1/128,其对数底数为 2,为 -7。因此,-7 乘以 1/128(粗略地)得到的贡献约为 1/32。正面的概率非常接近 1。但是 1 的以 2 为底的对数(或任何基数)为零。所以该项的值大约为零。因此,记住减号(如果我在脑子里做对的话),那枚硬币的熵约为 -1/32。
因此,你的技巧是收集大量随机消息,并将它们计入两个桶中。然后按照上面的方法进行计算即可。
如果您询问如何进行计数,并且计算机上有这些,则可以使用 grep(unix 上的正则表达式工具)等工具或其他系统上的类似实用程序。它会为您排序。