【发布时间】:2014-03-31 17:02:29
【问题描述】:
我需要在文件中搜索病毒签名,我正在使用 java 来执行此操作我已经编写了所有其他功能,例如收集文件并将它们过滤成需要搜索的文件等。我只需要一点帮助病毒签名方面。
使用什么格式(散列字符串、二进制、字节)?
我应该使用什么方法来扫描字符串(搜索算法等)?
我正在考虑将文件转换为字节,然后使用 Boyer-Moore 字符串搜索算法来搜索字节。
我想使用签名文件中的病毒签名并扫描文件以查找它们。
public void Search(File file) {
if (file.exists()) {
if (file.isDirectory()) {
if (file.canRead()) {
File[] listOfFiles = file.listFiles();
if (listOfFiles != null) {
for (int i = 0; i < listOfFiles.length; i++) {
Search(listOfFiles[i]);
}
}
} else {
cannotReadDirCount++;
}
} else if (file.isFile()) {
if (file.canRead()) {
totalFileCount++;
for (int a = 0; a < executableCriteriaList.size(); a++) {
if (file.getName().endsWith(executableCriteriaList.get(a).toLowerCase()) || file.getName().endsWith(executableCriteriaList.get(a).toUpperCase())) {
// scanExecutableFile(file); HERE IS where i need to scan the file
searchFiles.add(file);
}
}
} else {
cannotReadFileCount++;
}
}
} else {
cannotReadFileCount++;
}
}
感谢您的帮助
【问题讨论】:
-
二进制比较不一定足以扫描病毒,它们通常比这更聪明。我建议调用现有的病毒扫描程序。
-
这是一个项目,所以我需要以自己的方式实现它如果我必须自己扫描,你会建议什么方法?二进制?然后用字符串算法让它更快?
-
好吧,如果你能找到一个签名文件,其中包含要比较的二进制字符串,你建议的 Boyer-Moore 似乎是一个很好的方法。
-
如果不同的格式(例如二进制优于字节或哈希),您是否知道签名的速度或检测是否存在差异?我将其视为某种帮助来决定实施哪个hooked-on-mnemonics.blogspot.co.uk/2011/01/…
-
使用(映射的)字节缓冲区。并且有多个签名,您可能会选择Wu-Manber。
标签: java algorithm file search byte