Matplotlib画散点图统计程序中PE Section Name

题目

有两个数据集,分别为 Benignware 和 Malware,我们需要统计它们 PE Section Name 出现的次数。要求使用 Matplotlib 画出散点图,X轴为不同的 PE Section Name,Y轴为该 Name 分别在 Benignware 和 Malware 中出现的次数。

最终效果

在这里插入图片描述

完整代码

from matplotlib import pyplot
import pefile
import os

BenignSampleData = {}
MalSampleData = {}
Data = {}
os.chdir(r'D:\PyCharmProjects\quiz\BenignSample') # 正常程序文件夹路径
BenignSampleFilenames = os.listdir()
for file in BenignSampleFilenames:
    pe = pefile.PE(file)
    for section in pe.sections:
        a = str(section.Name)
        a = a.replace(r'\x00', '')
        a = a.replace(r'b', '')
        a = a.replace(r"'", '')
        if (BenignSampleData.get(a) == None):
            BenignSampleData[a] = 1
        else:
            BenignSampleData[a] = BenignSampleData[a] + 1
os.chdir(r'D:\PyCharmProjects\quiz\MalSample') # 恶意程序文件夹路径
MalSampleFilenames = os.listdir()
for file in MalSampleFilenames:
    pe = pefile.PE(file)
    for section in pe.sections:
        b = str(section.Name)
        b = b.replace(r'\x00', '')
        b = b.replace(r'b', '')
        b = b.replace(r"'", '')
        if(MalSampleData.get(b) == None):
            MalSampleData[b] = 1
        else:
            MalSampleData[b] = MalSampleData[b] + 1
for x in BenignSampleData.keys():
    Data[x] = [BenignSampleData[x], 0]
for y in MalSampleData.keys():
    if(y in Data.keys()):
        Data[y] = [Data[y][0], MalSampleData[y]]
    else:
        Data[y] = [0, MalSampleData[y]]
X = list(Data.keys())
Y1 = []
Y2 = []
for key in Data.keys():
    Y1.append(Data[key][0])
    Y2.append(Data[key][1])

pyplot.xlabel('PE Section Name', fontsize=15, color='k')
pyplot.ylabel('Number Of Occurrences', fontsize=15, color='k')
pyplot.scatter(X, Y1, marker="o", color='b', label="BenignSample")
pyplot.scatter(X, Y2, marker="x", color='r', label="MalSample")
pyplot.legend()
pyplot.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旺仔不爱牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值