用Python实现B2M算法:将二进制文件映射为灰度图片

12 篇文章 0 订阅
5 篇文章 0 订阅

其具体过程如下:对于给定的恶意代码可执行文件,即二进制文件,读取8位为一个无符号的整形(范围为0-255,固定的行宽为一个向量,整个文件最后生成一个二维数组。将此数组可视化为一个灰阶图像,该二维数组中每个元素的范围为0-255,正好为灰度图像中每个像素的取值范围,即每个数组元素对应图像中的一个像素。

例子:

将如下文件映射为图片:


代码为:

import numpy, scipy, os, array

filename = 'd:/test/QQApp.exe'
graphname = 'd:/test/QQApp.png'

f = open(filename,'rb') # 读入文件
ln = os.path.getsize(filename) # 文件长度(byte)
width = 256 # 固定图片宽度为256
rem = ln%width # 计算余出的字节 
a = array.array("B") # uint8 数组
a.fromfile(f,ln-rem) # 将文件读入数组a中,舍去余出的字节
f.close()            
g = numpy.reshape(a,(len(a)/width,width)) # 将数组转为二维
g = numpy.uint8(g)
scipy.misc.imsave(graphname,g) # 保存图片

转化后的图片为:


  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值