python实现crc32爆破,得到加密文件内容
crc32爆破
基本原理
crc检验原理实际上就是一个p位二进制序列之后附加一个r位二进制检验码(序列), 从而构成一个总长为n=p+r位的二进制序列, 附加在数据序列之后的这个检验码与数据序列的内容之间存在这某种特定的关系. 如果干扰因素使数据序列中的某一位或者某些位发生变化,这种特定的关系就会被破坏, 因此通过这种特性可以利用来爆破文件的内容.
文件的内容只有相同的时候他的crc校验才会一样.只要已知压缩文件的长度已知就可以获取他的crc32值来与我们的内容计算得到的值进行相互比较, 从而得到文件内容.(前提是文件内容长度够小才可以通过这种方法来实现,否则内容过长pc的算力有限)
现在有一个flag.zip 里面有一个flag.txt 文件 密码未知
使用模块如下:
import string
import zipfile
import binascii
确定文件的长度
pig@deep:~/Desktop/crc32碰撞$ zipinfo flag.zip
Archive: flag.zip
Zip file size: 166 bytes, number of entries: 1
-rw-a-- 6.3 fat 4 Bx stor 19-Oct-29 20:52 flag.txt
1 file, 4 bytes uncompressed, 4 bytes compressed: 0.0%
得到文件的内容为4个字节长度
通过zipfile模块来获取当前压缩文件的crc32的值
def getcrc():f = zipfile.ZipFile("flag.zip", "r")GetCrc = f.getinfo("flag.txt")crc = GetCrc.CRCjisuancrc(crc) // 将得到的crc的值传递给接下来需要计算crc的模块
通过binascii模块来计算crc的值并得到文件内容
def jisuancrc(crc):for a in dic:for b in dic:for c in dic:for d in dic:s = a + b + c + ds = str(s).encode() //注意python2和python3之间的编码方式的不同, 如果是python2版本则不需要这行if (binascii.crc32(s)) == crc: // 如果是python2还需要加上0xfffffff 使crc值都是正值,python3则不需要print (s)return
字典模块通过string模块得到
dic = string.ascii_letters + string.digits + '+-={}'
调用:
if __name__ = "__main__":getcrc()
运行结果
0x80e245d8
b'123a'
[Finished in 6.7s]
如果文件内容过长的话, 通过这种方式就不现实了.
通过bugku的一道: 好多压缩包 题目实践一下
解压文件得到如下的压缩文件
pig@deep:~/Desktop/123$ ls
out0.zip out19.zip out28.zip out37.zip out46.zip out55.zip out64.zip
out10.zip out1.zip out29.zip out38.zip out47.zip out56.zip out65.zip
out11.zip out20.zip out2.zip out39.zip out48.zip out57.zip out66.zip
out12.zip out21.zip out30.zip out3.zip out49.zip out58.zip out67.zip
out13.zip out22.zip out31.zip out40.zip out4.zip out59.zip out6.zip
out14.zip out23.zip out32.zip out41.zip out50.zip out5.zip out7.zip
out15.zip out24.zip out33.zip out42.zip out51.zip out60.zip out8.zip
out16.zip out25.zip out34.zip out43.zip out52.zip out61.zip out9.zip
out17.zip out26.zip out35.zip out44.zip out53.zip out62.zip
out18.zip out27.zip out36.zip out45.zip out54.zip out63.zip
得到每个压缩包都是4个字节的大小, 压缩的文件为data.txt, 通过脚本得到文件内容, 脚本如下:
#!/usr/bin/python
# -*- coding=utf8 -*-
"""
# @Author : pig
# @CreatedTime:2020-01-22 21:44:34
# @Description :
"""import zipfile
import string
import binasciidef jisuan(crc):for a in dic:for b in dic:for c in dic:for d in dic:s = a + b + c + ds = str(s).encode()if crc == (binascii.crc32(s)):print (s)f.write(s.decode('utf-8'))returndef getcrc():for i in range(68):file = 'out' + str(i) + '.zip'f = zipfile.ZipFile(file, 'r')GetCrc = f.getinfo('data.txt')crc = GetCrc.CRCprint (hex(crc))jisuan(crc)dic = string.ascii_letters + string.digits + '+/='
f = open('out.txt', 'w+')
getcrc()
f.close()
运行结果部分如下:
0x75f90d3a
b'z5Bz'
0xbb21560
b'AAAN'
0x9b0d08f1
b'AAAA'
0x9b0d08f1
b'AAAA'
0x30fa0c4d
b'AKo+'
0xbaab6848
b'egCA'
0xc2a03377
b'IwBJ'
0x9b0d08f1
b'AAAA'
0x56c367d7
b'VAAA'
0x8881454e
b'AAKG'
0xf399b503
b'NKv+'
0x8a39ea8d
b'a2Md'
0xf8522b5f
b'SR0z'
0x22e2c069
b'AwAB'
0x9b0d08f1
b'AAAA'
0xabc2f082
b'Q01U'
0x1b10de7b
b'CRUU'
0x4246c91b
b'y91B'
0x5a277153
b'T5Uk'
0xe54efe07
b'SNPo'
0x65e4ea0a
b'j5hF'
0xdb4eed2e
b'EVFB'
0xac675758
b'Rvef'
0x3c84028a
b'HSBC'
0x2b91ca65
b'fG0r'
0x1200cac6
b'uGnK'
0x422dd115
b'nygs'
0xa40a3790
b'Myj8'
0x7cbac4f2
b'SBaZ'
0x33a35543
b'HxsY'
0x2aa2f2bf
b'HY84'
0xe5493ec
b'LEZ2'
0x3196a7ea
b'4cXt'
0x4e1b1b60
b'Z01y'
0xa00b3338
b'3k1K'
0x26f1c2c4
b'1YJ0'
0x776956ca
b'vpK9'
0x37f3cd7
b'HwqU'
0xc7e6946c
b'zb6u'
0xd6f0e0b6
b'9z8i'
0x533d25ef
b'gEr3'
0x20e4f175
b'dCCQ'
0x3e45a71b
b'LQAd'
0x9b0d08f1
b'AAAA'
0xfa23e40b
b'HQAA'
0x4d4c79c0
b'AAJi'
0x2edc1696
b'0efV'
0x4dcce21e
b'T2Md'
0x86e357e2
b'SR0w'
0xe3094587
b'CAAg'
0x9b0d08f1
b'AAAA'
0x6174723d
b'Zmxh'
0x5a3c911f
b'Zy50'
0xf14e1946
b'eHQA'
0xf7d5bb98
b'sDRp'
0xd5aaac4b
b'ZmZp'
0xbbf6f69f
b'eCB0'
0xc31189d5
b'aGUg'
0xc5bf6c84
b'Zmls'
0x6a2864de
b'ZSBh'
0x80122009
b'bmQg'
0x6823cb5a
b'Z2V0'
0xec5157cc
b'IHRo'
0x1a429051
b'ZSBm'
0xc997df0d
b'bGFn'
0x86bcd0ce
b'xD17'
0xe5d81889
b'AEAH'
0x4134031c
b'AA=='
[Finished in 316.6s]
可以看见才多长这个东西很考验pc的性能, 然后直接进行base64解码, 得到的内容转为rar格式的文件, 然后补全文件头得到flag, 这里具体就不阐述了
得到的内容如下:
z5BzAAANAAAAAAAAAKo+egCAIwBJAAAAVAAAAAKGNKv+a2MdSR0zAwABAAAAQ01UCRUUy91BT5UkSNPoj5hFEVFBRvefHSBCfG0ruGnKnygsMyj8SBaZHxsYHY84LEZ24cXtZ01y3k1K1YJ0vpK9HwqUzb6u9z8igEr3dCCQLQAdAAAAHQAAAAJi0efVT2MdSR0wCAAgAAAAZmxhZy50eHQAsDRpZmZpeCB0aGUgZmlsZSBhbmQgZ2V0IHRoZSBmbGFnxD17AEAHAA==
个人网站
python实现crc32爆破,得到加密文件内容相关推荐
- Python攻防-暴力破解ZIP加密文件的密码
文章目录 前言 Python语法 自定义迭代器 Python多线程 Python脚本 单线程数字爆破 单线程字符爆破 多线程字典爆破 总结 前言 本文继续记录学习下 Python 的有趣应用:借助 P ...
- Python暴力破解教程: Zip加密文件, pdf加密书籍在线爆破!
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明 ...
- java使用aes加密文件内容
aes是什么? aes是对称加密的一种,什么是对称加密呢?就是加密和解密使用相同的秘钥的加密算法,显而易见,aes加密和md5不同,aes是可逆的,aes加密算法用于替代以前的des加密算法. 使用场 ...
- python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...
在我们使用python语言中的文件时,可以使用open()方法打开文件,close()方法关闭文件,read()方法读取文件内容,write()方法写入内容到文件中.下面利用几个实例说明文件读写方法, ...
- aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?
OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文!)命令行界面: openssl aes-256-cbc -salt -in filename -out filename.enc Py ...
- 应用python的docx模块解析word文件内容
目录 工作问题 涉及知识点 实现过程 目标 调用对应的库和模块 定义通用方法 1.[遍历全部的同格式文件]返回一个文件夹内,限定某类格式文件,返回全部这类文件的绝对路径 2.[提取段落&表格中 ...
- python学习笔记20(读取文件内容)
1.一次性读取文件全部内容(读取的文件milktea和main.py在同一目录的情况) ''' 读取与main.py同一目录的文件milktea.txt文件里面的内容 利用open()函数打开文件,返 ...
- [转载] Python利用openpyxl模块读取excel文件内容
参考链接: Python | 使用openpyxl模块调整Excel文件的行和列 import openpyxl wb = openpyxl.load_workbook('原始数据.xlsx') #读 ...
- python中for循环在遍历文件内容时的问题
f1= open(file1) f2= open(file2) for f1_line in f1:f2_line = f2.readline() f1= open(file1) f2= open(f ...
最新文章
- Python天气预报数据获取脚本
- python numba库是什么,如何给python代码加速?JIT、autoit、LLVM
- linux php7 安装redis扩展(php7可以使用自测)
- XStream生成的XML中带class属性,去掉class属性
- Annotation 的前世今生
- 一年增加1.2w星,Dapr能否引领云原生中间件的未来?
- centos7 源码安装goaccess
- idea快速搭建spring cloud-注册中心与注册
- OpenLDAP(2.4.3x)服务器搭建及配置说明
- spark sql cache时发现的空字符串问题
- Mysql 2018国家统计局区划和城乡划分数据库(包含经纬度数据,以及数据来源,提供大家参考)
- SCI-HUB 印度被诉、twitter账号被封,是梁上君子还是罗宾汉?
- 联网时显示已连接无法连接到服务器怎么办,路由器显示已连接不可上网怎么办?...
- 机器学习(三):线性模型
- Viper快速配置与上手
- STM32F4的LED点灯
- Log4j simple example
- 我所认为的高级软件工程师
- 马云等10位大佬心酸往事:9天9夜未睡、装姑娘陪聊、遭人追杀、一夜白头…
- 源程序 正算主程序 GSZS
热门文章
- Python网络爬虫实践(1):爬取网易云音乐播放量大于1000万的歌单
- 科技文献检索(十一)——常用文摘型数据库
- 计算机打印机端口配置,如何设置打印机端口,打印机端口设置的方法步骤
- 移动App与服务器安全通信
- MindMapper中如何添加父主题
- 黑苹果oc清除nvram_基于OpenCore0.6.1的黑苹果安装,小白也能看
- python3实现百度翻译
- springAop学习笔记(二,springboot进本配置和使用)
- W7系统如何增大C盘空间(动态磁盘)
- 使用Openoffice实现并发多进程word文档转换预览