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来对二进制数据转化为内存数据,这样才能与病毒样本进行比较。还有一点就是要无论何时都要记住函数的封装性,这样不仅仅容易分析,当有错误时也更加容易进行分析。
分享一句自己很喜欢的话:
强者不是没有眼泪的人,而是含着眼泪奔跑的人!
开始是这么写的:
#!/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谢谢
相关文章推荐
- python利用小波分析进行特征提取
- Python 文本挖掘:使用机器学习方法进行情感分析(一、特征提取和选择)
- 用纳米器件进行电流-电压(I-V)脉冲特征分析
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结2——级联分类器与检测过程
- 利用Python进行数据分析——第一章:重要Python库安装配置
- 利用python 提取log 文件中的关键句子,并进行统计分析
- 征集病毒样本分析
- 专伤浏览器、会“自杀”的***病毒样本简单分析
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结(转载)
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(5) .
- 昨日的病毒简单分析了下【附Bin样本】
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图 .
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结2——级联分类器与检测过程
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
- AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图 .
- (转)利用Hog特征和SVM分类器进行行人检测(自己收集正反例样本训练分类器)
- 用Python进行网络爬虫和数据分析的初次尝试(一)
- 利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(4) .