8

最近 Wikipedia 破坏检测竞赛的获胜者表示,可以通过“检测随机键盘击中考虑 QWERTY 键盘布局”来改进检测。

例子:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

是否有任何软件已经这样做了(最好是免费和开源的)?

如果没有,是否有一个积极的 FOSS 项目,其目标是实现这一目标?

如果没有,您会如何建议实施这样的软件?

4

5 回答 5

7

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

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

于 2010-09-27T11:51:35.133 回答
3

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

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

于 2010-09-27T12:04:02.830 回答
2

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

于 2010-09-27T09:18:23.777 回答
1

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

于 2015-09-21T03:53:31.127 回答
0

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

例如asasasasasdf,可以使用连接assasd的语法生成df

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

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

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

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

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

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

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

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

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

于 2010-09-27T11:54:16.240 回答