2011-02-12 71 views
-2

我有70万个MD5病毒签名的格式如下数据库:VB.net MD5校验,以十六进制

83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 
86016:4bed8673ab3d695c52c233306ed3f733:Worm.Gaobot-319 

是有办法的MD5校验和转换为有效的十六进制签名?
如果是这样,如何(使用VB.net)我将md5校验和转换为十六进制,删除第一个83968:的东西,并保持相同的格式名称?

所以最终产品会是什么样子:

{valid hex signature} :Worm.Gaobot-318 
+0

什么是*有效的十六进制签名*?你能举出一个具体的例子吗? – 2011-02-12 16:44:35

+0

好吧下面是一个有效的十六进制签名是EICAR测试病毒的一部分:“58354f2150254041505b345c505a58353428505e2937434329377d2445494341522d5354414e4441” – 2011-02-12 16:46:58

+0

所以我的意思是,我不能只是这个MD5“961ed981485cea5ab3936496966ba0d6”转换为十六进制,因为这不会是一个病毒签名了。 – 2011-02-12 16:48:51

回答

1

我明白你在说什么。你有来自clam数据库的大量病毒MD5s。但后来你才知道MD5不是很好的签名,但是十六进制签名是好的。现在你想把MD5转换成hex.Its不可能。您可以计算给定字符串的MD5,但无法从给定的MD5取回字符串。

快乐编码!

1

你的“有效的十六进制签名”不是一个MD5哈希 - 它太长了。 MD5产生16个字节,所以32个十六进制字符......你的Eicar例子是80个字符(40个字节)。

您尚未指定使用什么算法来首先提供该“有效的十六进制签名”,但假设没有冗余,您根本没有足够的信息来生成它。这就像是在你只知道每个演讲的第一个单词时,如何产生剧本的大纲。

0

看起来您的MD5值已经以十六进制格式表示。所以你在这方面很好。剩下的唯一东西就是将字符串拆分为“:”字符。假设这是您的格式:

83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318

下面是一些C#代码的伪....

string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 "; 
string arr[] = fullStr.Split(":"); 
for(int i=0; i<arr.length; i++) 
{ 
    Console.WriteLine(arr[i]); 
} 
1
$string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 "; 
$string name = fullStr.Split(":")[2]; 
$string md5 = fullStr.Split(":")[1]; 

这会给你的名字,并没有“83968”或MD5“:”