【问题标题】:python code for calculating session id randomness用于计算会话 id 随机性的 python 代码
【发布时间】:2012-09-12 13:02:22
【问题描述】:

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

【问题讨论】:

  • 如果您担心生成 id 的哈希函数的有效传播,您可以查看使用的哈希算法。如果是 md5 或者 sha1 就可以了,不用担心。
  • 它是一个遗留应用程序,使用了一些自定义算法(使用时间戳生成 ids)。我在特定的字符位置看到了一些不够随机的异常
  • “特定字符位置的异常”并不等同于安全问题,而且我认为 1000 个会话 ID 不足以进行这种分析n。应该做的是分析所使用的算法,而不是创建的cipher。不,我不知道任何此类工具(可能出于上述原因)。

标签: algorithm session random python-2.7 security


【解决方案1】:

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

前提是您希望所有字符出现在所有会话 ID 中的某个位置的可能性相同(字符的分布是统一的)。假设您收集/生成了 100 个数字会话 ID(因此每个位置的可能字符为 0-9),您希望每个数字在每个位置出现 100/10=10 次。

现在为序列中的每个位置构建一个直方图,其中包含一个字符在所有会话 ID 中实际出现在该位置的次数。

考虑到您希望它们均匀分布,要弄清楚您在每个位置观察到的字符分布的可能性有多大,您可以使用像Chi Squared test 这样的统计测试。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多