用于计算会话ID随机性的python代码

时间:2012-07-16 11:52:00

标签: algorithm session random python-2.7 security

我有一个包含1000个会话ID的列表。 session-id长度各为32个字符。我可以使用哪种最有效的算法来确定每个字符级别的随机性或变化?我是python的新手,有人可以帮我开发一个python代码片段吗? 仅供参考,如果令牌长度为10个字符,Burpsuite中的Sequencer工具会为每个10个字符位置提供随机性图表。 (算法不为我所知)

1 个答案:

答案 0 :(得分:0)

我不知道Burp是如何做到这一点的,但确定每个角色级别的变化的一种方法是对会话ID中的每个位置进行字符频率分析。

前提是您希望所有角色都可能出现在所有会话ID的位置(角色的分布是统一的)。假设您已经收集/生成了100个数字会话ID(因此每个位置的可能字符数为0-9)您希望每个数字在每个位置显示100/10 = 10次。

现在,对于序列中的每个位置,构建一个直方图,显示一个角色在所有会话ID中实际出现在该位置的时间。

为了确定在每个位置观察到的角色分布的可能性,假设您希望它们均匀分布,您可以使用像Chi Squared test这样的统计测试。

我在这里使用Chi Squared测试编写了一个简单的Python字符计数测试器:https://github.com/decbis/salr。我将来会添加更多测试。