DASCTF 2023六月挑战赛|二进制专项cap复现

文章讲述了如何使用Python对cap.bin这个bmp格式的文件进行读取、加密处理,其中涉及一个名为enc_fun的加密函数,该函数使用特定算法对文件内容逐字节进行异或操作。在处理过程中,作者最初因忽视Python变量无长度限制而遇到溢出问题,通过添加0xffffffff修正后成功完成文件写入。最终,加密后的数据被写入新的文件fuck.bin。
摘要由CSDN通过智能技术生成

对给的cap.bin进行读写操作,看了官方wp才知道是bmp格式,

 这里v11就是filew,写的是同一个文件

 核心加密段在这里,但是根据这样来写应该是这样

def enc_fun(enc):
    i=0
    while (i<len(enc)):
        v14=i+3
        v15=((0x4EC4EC4F*4*v14%0xffffffff)>>32)
        i+=1
        enc[i-1]^=ord(key[(v14%0xffffffff - 13 * ((v15%0xffffffff >> 31) + (v15%0xffffffff >> 2)))%len(key)-2])
enc_arr=[]
with open("cap.bin","rb") as f:
    a=f.read()
    for i in range(len(a)):
        enc_arr.append(a[i])
    f.close()
enc_fun(enc_arr)
with open("fuck","wb+") as f1:
    for i in enc_arr:
        f1.write(i.to_bytes(1,"big"))

最开始的时候忘了C语言变量有长度的,python一直报溢出,加个0xffffffff就好了,然后就直接写文件了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值