任何人都可以想到一种算法,可以检测随机文件名?例如,一个人可以知道文件名“SKJJSMIJ.EXE”看起来像是随机生成的,而文件名是“winsetup.exe”或“Photoshop.exe”,但程序如何确定?谢谢!检测随机文件名的算法?
回答
在你给的例子中,“非随机的”文件名都包含英文单词,而“随机”的文件名不。我认为,对于“随机性”的一个很好的开始启发式,你似乎定义它将是检查文件名的子串(当然在扩展之前),以查看它们是否与合适大小的字典中的单词相匹配。
嘛,当然,这将取决于目标语言,但是,对于英语,我想不出任何话把我的头顶部具有两个J
字符连胜,也没有任何有连续三个字符。
您可能还会寻找在键盘的一个部分有优势字符的分组,如ewrwqr
或bvnvxbnx
。
或者,检查辅音元音比既为单词的单词和截面。
这可能是一个好的开始,但没有办法是万无一失的。
那么如果SKJJSMIIJ
来自society of knights juggling juniors, skunks, mascots, idiots, introverts and jockeys
?那么它将是一个合法的文件名。还要考虑一个名称,如Eyjafjallajökull.jpg
。这看起来像一个随机文件名,但实际上是冰岛火山的名字。你可以制定一个算法来检测不可发音的文件名,但是会带来很多误报。
其实,至少在我回答中提到的各种评估集合中,'Eyjafjallajökull'可能不会'看起来像一个随机文件名。除此之外,非base64字符和“Xxxxx”大小写方案不可能是随机文件名中的元素。 – Amber 2010-11-02 06:31:13
如果你真的进入这个深度,有几个不同的项目,你可以尝试:
查找字典单词。如果一个文件名包含长度大于等于4的字典单词,那么它可能不是随机的。
查找辅音/元音模式 - 如果一个文件有很多(3+)辅音一排,它更可能是随机的。另一方面,如果连续存在几乎不超过2个辅音/元音,则不太可能是随机的。
看看大写。如果有大量的大写字母(如
XxXXx
或xxXxXX
),那么这是一个随机的机会。另一方面,如果它遵循一个非常整齐的大写模式(如Xxxxx
,XxxxxXxxxXxxxx
或类似的),它是不太可能是随机的。看不太性格配对。将文件名分解为相邻字母对(因此
"abcd.txt"
变为['ab', 'bc', cd']
),并将每个对的出现频率与正常文件名的预先计算出的一组值进行比较。这与检查字典单词类似,但不需要全面的字典(也可以在专有名词等方面进行培训)。查找数字与字母的图案 - 具有非常混合数字和字母的部分(尤其是那些没有在它们之间的分隔符)的文件名是可能的随机的。
没有方法做到万无一失,但如果你把这些启发式的许多共同制定的总体得分,你也许可以得到一个“足够好”的近似。
- 1. 随机数算法
- 2. 随机性算法
- 3. 随机组算法
- 4. 随机游走算法的条件
- 5. 随机Prim的算法
- 6. 随机数的算法
- 7. 检测随机字符串
- 8. 随机文本混淆算法失败
- 9. 随机决策算法
- 10. 算法分析:随机数
- 11. 约随机选算法
- 12. 随机布局算法
- 13. 随机聚类算法
- 14. 随机绘图算法
- 15. 正在检测的随机圈子
- 16. 创建Visual Studio Web测试以上载带有随机文件名的文件
- 17. 在C++中生成随机文件名
- 18. C++:用随机名输出文件
- 19. vb.net选择随机文件夹名称
- 20. 使用MD5或随机文件命名?
- 21. 检索计算机名称
- 22. 随机森林和随机树算法之间的区别
- 23. 简单的检测算法
- 24. 主机名检测PHP
- 25. 闪存驱动器自动删除文件,计算机检测
- 26. 随机落下的物体和碰撞检测方法
- 27. 稳定的随机颜色算法
- 28. 找到一个随机数的算法
- 29. 随机选择学习卡的算法
- 30. 随机生成方程的算法
你为什么这样做?试图检测作为Windows进程“hjdd.exe”运行的病毒的 – Shoban 2010-11-02 06:06:29
?如果你是,那么通过它的文件名判断一个文件是一个坏主意。 – zengr 2010-11-02 06:11:45
这可能是一个非常有道理的原因 - 例如审计组织文件命名标准的政策? – Russell 2010-11-02 06:46:31