网络安全学习第5篇 启发式查杀

实验目的

请依据课程《JS下载者脚本木马的分析与防御技术》中的内容,利用启发式查杀的思想,尽可能多地查杀掉本次实验样本中的恶意程序。
说明:
1、《JS下载者脚本木马的分析与防御技术》完整课件下载地址:https://pan.baidu.com/s/1c2fwTBq    密码: yuhb
2、大家也可以参考《查杀带有编码的脚本木马》以及《正则表达式入门》来完成本次的实验。
3、本次样本文件都是真实的恶意程序,请在分析前关闭电脑中的杀毒软件。
4、绝对不可以在真实的计算机中运行本次的样本。
5、请提交实验报告以及你的源代码文件。实验报告中请说明你的程序可以查杀掉哪些样本(列出MD5)。

参考资料与样本.rar

解压密码:www.52pojie.cn


实验内容

 

#作者:
#时间:2019/04/08
#功能:启发式查杀病毒程序
#参考:https://blog.csdn.net/LZGS_4/article/details/50371030 - Python读取文件夹下的所有文件
#      https://blog.csdn.net/Together_CZ/article/details/61191528 - python 获取字符串MD5值
#      https://blog.csdn.net/mighty13/article/details/77995857 - Python遍历文件夹下所有文件及目录
#      https://blog.csdn.net/Cryhelyxx/article/details/45219947 - python获取指定目录下的所有指定后缀的文件名
#      https://blog.csdn.net/lovemianmian/article/details/8867613 - 关于python 的re.sub用法
#      https://www.cnblogs.com/xiaobeibei26/p/6481707.html - Python之threading多线程
#      https://cloud.tencent.com/developer/article/1199693 - Python多线程学习
#      https://cloud.tencent.com/developer/ask/134011 - 如何声明python全局列表?
import os
import re
import hashlib
import threading
from multiprocessing import Pool
from requests.exceptions import ReadTimeout
from requests.exceptions import HTTPError
from requests.exceptions import RequestException
from requests.exceptions import ConnectionError


all_virus_md5 = [] # 所有病毒的md5值
all_warn_program_md5 = [] #警告程序的md5值
program_path = [] # 程序路径集合
program_sum = [] # 程序数量下标
virus_count = 0
program_count = 0
warn_program_md5 = 0
mylock = threading.RLock()
mylock2 = threading.RLock()
mylock3 = threading.RLock()


#利用os模块system()方法获取文件的MD5值
def get_file_md5(file_path):
    """
    获取文件md5值
    :param file_path: 文件路径名
    :return: 文件md5值
    """
    with open(file_path, 'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        _hash = md5obj.hexdigest()
    return str(_hash).upper()


#去掉all_virus_md5中的特定元素
def all_virus_md5_remove(note):
    global virus_count
    global mylock
    if note in all_virus_md5:
        all_virus_md5.remove(note)
        mylock.acquire()  #加锁
        virus_count = virus_count - 1
        mylock.release()  #解锁
    print("已经执行完all_virus_md5_remove!")


#去掉all_virus_md5中的特定元素
def all_warn_program_md5_remove(note):
    global warn_program_md5
    globa
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值