[python小工具]文件hex比较(用于练习突破upload图片二次渲染)

简单小工具,存个源码,若有需要,直接复制就好
功能就是存储两文件的hex值于文本当中,然后对比hex值,输出哪行相同。在相同的相邻几行插入木马即可。
用法:

Usage: imgcom.py [options]

Options:
  -h, --help  show this help message and exit
  --f1=IMG1   <input img name>
  --t1=OUT1   <input out file name>
  --f2=IMG2   <input img name>
  --t2=OUT2   <input out file name>

在这里插入图片描述

源码:

import optparse

def loadimg(img,txt):
    try:
        f = open(img,'rb')
        outfile = open(txt, "w")
        n = 0;  #记录大小
        s = f.read(1)
        while s:
            byte = ord(s)
            n = n+1
            outfile.write(hex(byte).ljust(4,'0').replace('0x','') + " ")
            if n%16==0:
                outfile.write(hex(byte).ljust(4,'0').replace('0x','') + "\n")
            s = f.read(1)
        print(img+' total bytes: %d'%n)
        f.close()
    except:
        print('Error:no search "'+img+'"')

def compare(txt1,txt2):
    f1 = open(txt1,'r')
    f2 = open(txt2,'r')
    i = 0;
    comlist = []
    for tempf1 in f1:
        i = i+1
        if(tempf1==f2.readline()):
            comlist.append(i)
    f1.close()
    f2.close()
    print('两文件hex 以下行数相同:')
    for l in comlist:
        print(l,end=' ')

def start():
    parse = optparse.OptionParser()
    parse.add_option("--f1",  dest="img1", type="string", help="<input img name>", default="noURL")
    parse.add_option("--t1", dest="out1", type="string", help="<input out file name>", default="noURL")
    parse.add_option("--f2", dest="img2", type="string", help="<input img name>", default="noURL")
    parse.add_option("--t2", dest="out2", type="string", help="<input out file name>", default="noURL")
    (options, args) = parse.parse_args()
    loadimg(options.img1,options.out1)
    loadimg(options.img2, options.out2)
    compare(options.out1,options.out2)

start()

经过试验,二次渲染对gif改变最小。jpg渲染之后几乎只有文件头与之前相同。所以建议使用gif图片马突破二次渲染。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值