最近维基百科破坏行为检测竞赛的获胜者 表明可以通过以下方式改进检测“考虑QWERTY的随机键盘命中检测 键盘布局".

例子: woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

有没有什么软件可以 已经这样做了 (最好是 免费和开源) ?

如果不, ,是否有一个活跃的 FOSS 项目 目标 是为了达到这个目的吗?

如果不, ,你会如何建议 实施 有这样的软件吗?

有帮助吗?

解决方案

如果两个 二元组 所分析的文本中的 QWERTY 术语很接近,但英语中的统计频率接近于零(例如“fg”或“cd”对),那么有可能涉及随机键盘点击。如果发现更多这样的对,那么机会就会大大增加。

如果您想考虑使用双手进行攻击,则测试与另一个字母分隔的字母的 QWERTY 接近度,但测试两个二元组(甚至三元组)的二元组频率。例如,在文本“flsjf”中,您可以检查 F 和 S 的 QWERTY 距离,但检查二元组 FL 和 LS(或三元组 FLS)的频率。

其他提示

根据我的经验,大多数键盘混搭往往都在主排。检查所使用的大部分字符是否是相当简单的 asdfjkl;.

考虑两个字母序列的经验分布,即“给定字母 a 跟在字母 b 后面的概率”,所有这些概率都会填充一个大小为 27x27 的表格(将空间视为字母)。

现在,将其与一堆英语/法语/其他文本的历史数据进行比较。使用 Kullback 散度进行比较。

采用基于键盘布局的方法将提供一个很好的指标。使用 QWERTY 布局,您会发现任何给定文本中大约 52% 的字母都来自键盘字符的顶行。大约 32% 的字符来自中线,14% 的字符来自底线。虽然从一种语言到另一种语言略有不同,但仍然存在可以检测到的非常清晰的模式。使用相同的方法来发现其他键盘布局中的模式,然后确保在检查乱码之前检测用于输入的任何文本的布局。尽管模式很明确,但最好仅将此方法用作一个指标,因为这种方法最适合较长的脚本。使用其他指示符(例如与字母/数字混合的非字母/数字字符、文本长度等)将提供进一步的指示符,这些指示符在应用加权时可以提供非常好的乱码条目的整体指示。

弗莱德利的答案可以扩展到从附近的字母构造单词的语法。

例如 asasasasasdf 可以用连接的语法生成 as, sa, sddf.

使用这样的语法,扩展到键盘上的所有字母(字母彼此相邻)可以在解析后为您提供使用这种“乱码”语法可以生成多少文本的度量。

警告:当然,任何讨论此类语法并列出“乱码”文本示例的文本都会比常规拼写检查文本得分高得多。

请注意,示例方法不会捕获“h4x0rrulezzzzz!!!!!”形式的破坏行为。

这里的另一种方法(可以与上述方法集成)是对被破坏的文本的语料库进行统计分析,并尝试获取被破坏的文本中的常见单词。

编辑:
既然你假设是 QWERTY,我想我们也可以假设是英语?

KISS 怎么样——通过英语拼写检查器运行文本,如果它失败了,那么就得出结论,它可能是乱码(问题是,为什么要区分快速输入的乱码和随机的废话,或者与拼写非常糟糕的文本区分开来?)

或者,如果要考虑其他键盘布局(德沃夏克,任何人?)和语言,那么可以通过所有可用的语言拼写检查器运行文本,然后继续(这也将提供语言自动检测)。

这不是非常有效的方法,但可以用作基线测试。

笔记:
从长远来看,我认为破坏者会适应并开始破坏,例如其他维基百科页面的摘录,这最终很难自动检测为破坏行为(好吧,可以对现有文本进行校验和并在重复项上引发标志,但如果文本来自其他来源,最终会很困难)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top