您的位置:首页 > 编程语言 > Python开发

Python 进行病毒样本特征分析

2014-06-03 21:39 239 查看
这几天一直在做有关病毒样本特征提取的工作,解析出了一个样本病毒特征,今天用python进行了相似样本的检验,想和大家一同分享。

开始是这么写的:

#!/usr/bin/python

import os

import os.path

rootdir = "./sample_Backdoor_Linux"

for filenames in os.walk(rootdir):

for filename in filenames[2]:



record = open(rootdir+"/"+filename,"rb")

link = open("bad virus.txt","r")

str_find = record.read()

print str_find

str_text = link.read()

print str_text

# if str_find.index(str_text) < 0:

# break

# print filenam

运行之后发现根本无法找到病毒样本,为什么(⊙o⊙)?

后来发现了这个让我想揍自己的问题所在,文本中读取出的二进制,并非内存中的二进制,所以根本根本没有可比性,please 记住

于是就有了下面的版本:

#!/usr/bin/python

import os

import os.path

import binascii

rootdir = "./sample_Backdoor_Linux"

def loaddb(dbname):

fd = open(dbname, "r")

signs = fd.readlines()

return signs

def process_sign(signs):

signatures = []

for line in signs:

a=line.strip()

print a

signatures.append(binascii.a2b_hex(line.strip()))

return signatures

def compare_sign(signatures,rootdir):

for filenames in os.walk(rootdir):

file_count = 0

found = 0

for filename in filenames[2]:

file_count = file_count + 1

filepath = rootdir+"/"+filename

content = open(filepath,"rb").read()

i=0

for sign in signatures:

i = i+1

if content.find(sign) != -1:

found = found + 1

print filepath, "Found Virus[%d]"%i

break

print "detect objects: %d/%d"%(found, file_count)

signs_txt_list = loaddb('bad virus.txt')

signatures = process_sign(signs_txt_list)

compare_sign(signatures,rootdir)

后来成功的完成了检验工作,感觉自己真的还要踏踏实实的提高自己才行。

上面主要用了binascii.a2b_hex来对二进制数据转化为内存数据,这样才能与病毒样本进行比较。还有一点就是要无论何时都要记住函数的封装性,这样不仅仅容易分析,当有错误时也更加容易进行分析。



分享一句自己很喜欢的话:

强者不是没有眼泪的人,而是含着眼泪奔跑的人!

转载请注明出处:http://blog.csdn.net/u010484477 O(∩_∩)O谢谢

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐