Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python从文件中获取clamav数据库中的十六进制符号_Python_Database_Hex_Virus - Fatal编程技术网

如何使用python从文件中获取clamav数据库中的十六进制符号

如何使用python从文件中获取clamav数据库中的十六进制符号,python,database,hex,virus,Python,Database,Hex,Virus,如何从如下所示的文件中获取十六进制符号: Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f HTML.Phishing.Bank-1:3:*:3c6d6170206e616d653d22{-36}223e3c6172656120636f6f7264733d22302c20302c20{4-12}222073686170653d2272656374222068726566

如何从如下所示的文件中获取十六进制符号:

    Exploit.HTML.ObjectType:3:*:3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f
    HTML.Phishing.Bank-1:3:*:3c6d6170206e616d653d22{-36}223e3c6172656120636f6f7264733d22302c20302c20{4-12}222073686170653d22726563742220687265663d22{-160}3c2f6d61703e3c696d67207372633d226369643a
    Exploit.HTML.MHTRedir.1n:3:*:6d732d6974733a6d68746d6c3a66696c653a2f2f633a5c*21687474703a2f2f
    Exploit.HTML.MHTRedir.2n:3:*:646174613d226d732d6974733a6d68746d6c3a66696c653a2f2f(63|64)3a5c
    Exploit.HTML.MHTRedir.3n:3:*:7372633d226d732d6974733a6d68746d6c3a66696c653a2f2f633a5c
    Exploit.HTML.DragDrop:3:*:6265686176696f723a75726c282364656661756c7423616e63686f72636c69636b293b*666f6c6465723d227368656c6c3a
    HTML.Phishing.Bank-4:3:*:7468697320656d61696c20697320666f72206e6f74696669636174696f6e206f6e6c792e20746f20636f6e746163742075732c20706c65617365206c6f6720696e746f20796f7572206163636f756e7420616e642073656e6420612062616e6b206d61696c2e203c2f7072653e
    W32.MyLife.E:1:*:7a6172793230*40656d61696c2e636f6d
我知道签名从3号开始:“
我正试图用clamav数据库用python制作一个简单的病毒扫描程序,但我无法从数据库中获得类似的符号。。。
我已经尝试过binascii.hexlify(file.read()),但它给出了一个很长的十六进制字符串。

一种方法是这样做。可以写得更短,但我认为这更清楚

f=open('clamavfile','r')
signatures={}
for l in f.readlines():
    data=l.strip().split(':') #strip whitespace from the line, and split by :
    signatures[data[0]]=data[-1] # the filename is the first item, the signature is the last item

如果简单地按:拆分是不够的,您也可以使用re模块。

我认为这些签名是由人类创建的,也就是说,实际上必须有人确定样本的重要部分,然后再对其进行签名。您可以开始阅读此指南:谢谢Paolo,我使用了数据库中的md5文件。