ciphey 是下一代解码工具,由推出 Ciphey 的同一团队构建。
我们完全打算用 ciphey 取代 Ciphey。
✨ 你可以在 https://skerritt.blog/introducing-ciphey/ 阅读更多关于 ciphey 的信息 ✨
使用 ciphey 最简单的方式是加入 Discord 服务器,前往 #bots 频道,并通过 $ciphey 使用它。输入 $help 获取帮助信息!
第二种最佳方式是使用 cargo install ciphey,然后通过 ciphey 调用。
你也可以 git clone 此仓库并运行 docker build . 来获取镜像。
以下是一些你可能感兴趣且我们引以为豪的功能。
ciphey 非常快。其他解码器(如 Ciphey)需要先进的人工智能来确定应该采取哪条解码路径(例如,先尝试 Caesar 还是 Base64 等)。
ciphey 如此之快,以至于我们目前不需要担心这个问题。对于 Ciphey 能完成的每一次解码,ciphey 可以完成约 7 次。这相当于速度提升了 700%。
ciphey 由两个主要部分组成:库和 CLI。CLI 仅仅是库的使用者,因此你可以在 ciphey 之上进行构建。我们已构建的一些功能包括:
ciphey 目前支持 16 种解码器,并且数量正在快速增加(参见 问题 #61)。Ciphey 支持大约 50 种,而我们每天都在添加更多。
Ciphey 的一个大问题是它可能会无限运行。如果它无法解码你的文本,你将永远无法得知!
ciphey 内置了一个计时器(集成在库和 CLI 中),这意味着它最终会超时。CLI 默认超时时间为 5 秒,Discord 机器人为 10 秒(以考虑网络消息传输的延迟)。
ciphey 已有约 120 个测试、文档测试(确保文档保持更新),并且我们对所有主要组件强制执行文档要求。这真是太好了。
LemmeKnow 是 PyWhat 的 Rust 版本。它的速度快了 33 倍,这意味着我们现在解码和判断事物是否为 IP 地址等的速度比 Python 快了 3300%。
Ciphey 不支持多线程,速度相当慢。ciphey 使用 Rayon(最快速的多线程库之一)原生支持多线程。
虽然仅有 16 种解码器(且它们相当快)时我们尚未完全体会到其效果,但随着我们添加更多解码器(以及更慢的解码器),我们将看到它不会对整体程序速度产生太大影响。
Ciphey 不支持像 Rot13 -> Base64 -> Rot13 这样的多级解密,因为它太慢了。ciphey 足够快以支持这一点,尽管我们最终计划将其关闭。
ciphey 现在支持可配置的乱码检测灵敏度级别,从而在不同类型的编码中实现更准确的明文识别。像 Caesar 这样的经典密码使用低灵敏度以更好地处理类似英文的结果,而大多数其他解码器默认使用中等灵敏度。
这一特性有助于减少明文检测中的误报和漏报,使 ciphey 在更广泛的编码文本中更加可靠。
ciphey 现在通过来自 gibberish-or-not crate 的基于 BERT 的模型提供增强的明文检测。该特性:
ciphey --enable-enhanced-detection 启用我们现在使用 A* 搜索。这非常快。
A* 通过使用启发式函数来估计从当前状态到目标状态的成本。
首先,我们忽略对非常快的解码器(如 Base64)的启发式函数,确保在每个节点上首先运行它们。
然后,我们使用 cipher_identifier 为剩余解码器计算启发式函数,该函数可以确定给定字符串是某种密码的概率。
我们将之前的结果存储在缓存中,以避免重复计算相同路径。
我们修剪搜索树以避免不必要的计算,并在内存占用过高时控制内存使用。
我们还跟踪解码器的统计信息,以动态优先处理效果更好的解码器(例如:Caesar 很流行,但 Beaufort 不是,因此 Caesar 会被动态地优先于 Beaufort)。
最后,我们跟踪常用的配对。例如,base64 -> base64 非常常见,因此我们优先考虑这条路径(以及其他常见路径)。
现在你可以为 ciphey 设置自定义主题。如果你想改变 ciphey 的外观,这很有用。
这也有助于无障碍访问。
我们现在采用了可能是最好的 Vigenere 算法。
它快速、准确,并且处理非字母字符的能力优于任何其他算法。
我们使用四元组 / 三元组 / 英文词典检查器来计算明文概率。
我们根据密码的不同改变阈值。例如,Caesar 返回的文本“看起来”像英文,而 base64 则不是。
此外,我们还有一个包含约 500 个常用正则表达式的数据库,涵盖 API 密钥、MAC 地址等。
我们还有一个 is_password 函数,用于判断字符串是否是在数据泄露中见过的确切密码。
我们现在将统计数据存储在数据库中。这对于观察 ciphey 随时间的变化非常有用。
我们将 AI 用于两个目的: