吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1355|回复: 26
上一主题 下一主题
收起左侧

[Windows] 【python】CRC32(C)多线程文件校验工具_v1.2

[复制链接]
跳转到指定楼层
楼主
不谙世事的雨滴 发表于 2024-12-29 17:17 回帖奖励

原V1.0的帖子(https://www.52pojie.cn/thread-1925899-1-1.html已无法编辑,所以开了新帖。


软件(和源码)链接:

①百度云:(拥有完整资料,包括软件自身、操作演示视频老版本软件演示视频中的音乐文件分享
https://pan.baidu.com/s/1iBlKi5hV_kdkkzCgVjblYQ?pwd=0000


②蓝奏云:(因文件大小100M限制,只有软件自身、源码和一个说明用的txt文本文件,以及导航用的、存有百度云链接的文本文件)
https://wwm.lanzouq.com/b0ny5lvuf


没有百度云VIP账号,想要看操作演示
请访问下面这个链接,到B站收看:
注意!新版的操作演示去掉了音乐欣赏,改由本人实时录音解说,
但上面的百度云链接里还存放着这些音乐文件,也新增了些音乐文件

https://www.bilibili.com/video/BV18rupeWEt7



软件github地址:
https://github.com/ssh-buanshishi/adaptive_multi-thread_crc32c_file_verify_tool







软件详细简介请看V1.0的帖子https://www.52pojie.cn/thread-1925899-1-1.html




【版本更新详情】


★★★ V1.2兼容性依旧良好,最低可以支持win7(32位),win7之后的版本跑起来应该没问题,至少自己的win10试过了。

     适配win10以下(win7)windows控制台的传统cls清屏机制,解决了win7下进度不刷新、堆积起来的问题。




★★★ 兼容旧版本程序生成的记录文件【文件CRC32校验值.txt】 ★★★

★★★ 此版本生成的记录文件【checksum.crc32c】可加”.txt“后缀方便编辑,不会影响校验 ★★★

注意:V1.2操作方式发生了改变,exe文件(和bat启动器)改为接收argv[1]或者双击后弹出文件夹选择框(tkinter窗口可以自适应系统缩放,应该大概率不会模糊)来接受文件夹路径不再需要复制exe文件夹到目标目录
建议简单查看操作演示视频https://www.bilibili.com/video/BV18rupeWEt7)以适应V1.2,也可以自己摸索一下,应该不难的。

新的操作方式也是为了去掉V1.0版本不必要的磁盘写入(V1.0复制文件到目标目录下的这个操作),将程序文件固定下来。

记录文件使用预分配方式写出,极大概率保证了不会出现文件碎片。

升级crc32c的python库至2.7.1版本,
考虑到此库的作者后续可能会放弃python_3.8的支持(也就是win7的支持),建议认准此版本号下载安装,以获得对win7的支持。

此外还改进了些代码的写法。

下面是软件截图:










至于对更快的读取速度的追求,我已经尝试过pywin32库的win32file模块的CreateFile函数(带【FILE_FLAG_SEQUENTIAL_SCAN】的flag)和ReadFile函数,相当于直接调用windows的文件api,结果相比较python自带的f=open(xxx,mode="rb")和f.read(),提升基本察觉不到。
mmap模块创建memory mapped file也试过,结果速度太垃圾了,自己的nvme固态上的多线程一共只有500~600MiB/s的读取速度(原本可以达到2 GiB/s左右)。

CRC32的计算速度现阶段基本上是受制于硬盘的速度的,我之前写CRC32C校验软件的时候用python测试过,用内存中的随机数据来跑,常见的CRC32(B)的软件算法的速度,能达到5-6GiB每秒。这款CRC32(C)多线程文件校验工具所用到的python库crc32c:
https://pypi.org/project/crc32c/https://github.com/ICRAR/crc32c) ,
因为可以调用CPU的SSE4.2指令集中的crc32指令,所以速度更快,可以到15~20GiB每秒(同样采用固定大小的随机内存内容测试),现阶段应该很难找到比这个校验速度更快的校验算法了,MD5和SHA算法我记得也才大概700~900MiB每秒。
SSE4.2指令集现在也普及了,AMD的锐龙,intel七代以上的估计都有。

未来PCIE5.0硬盘的读取速度估计也差不多可以到15GiB每秒,可以说这个crc32c的硬件加速指令算法是可以“战未来”的。


对于这个crc32c的库,说起来我自己也稍微贡献了一部分意见和建议:https://github.com/ICRAR/crc32c/issues/51,这个issue的对话中,头像和52pojie这边一样的就是我。
现在想来,还得谢谢当初的自己,在python3.8维护周期结束前提交了issue,才有了现在已经比较完善的crc32c的2.7.1版本(可以一直用下去的那种),不然未来这个库的作者是否放弃对python_3.8的支持就很不确定了。


我观察过,番剧压制组【Moozzi2】在每次发布的种子的文件夹里都有类似【checksum.md5】的校验文件,说明现在校验文件的工具还是“有市场”的。
虽然sha、md5的安全性比crc32(包括crc32c之内的一系列crc算法)更高,但是crc32c硬件加速指令算法的速度,目前可以说很难找到更快的了。在日常下载影片、番剧、图片的应用场景下,尤其是这种文件比较大的情况下,几乎不会有人有闲工夫逆向破解crc32算法,我们更关心下载的文件是否完整。

所以相信未来crc32c文件校验工具肯定有自己的一席之地。
我也希望这个软件自身或者软件代码,在未来能被更多人用到。

PS:我已经不止一次幻想过番剧压制组用上我的crc32c校验工具的场景了。如果哪位大佬有番剧组的渠道、联系方式,记得向他们推荐推荐这款软件,不求完全替换原来的校验方法,只要多上一个我的软件生成的校验记录就行(但愿未来能实现吧

免费评分

参与人数 5吾爱币 +7 热心值 +4 收起 理由
onlyclxy + 3 + 1 鼓励转贴优秀软件安全工具和文档!
nndyky + 1 + 1 鼓励转贴优秀软件安全工具和文档!
wsasecy + 1 + 1 谢谢@Thanks!
illblood + 1 谢谢@Thanks!
tianxiangyu + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
illblood 发表于 2024-12-29 20:48
这才是真正有用的好东西,一般人不见得用的上,可到要用的时候,还不一定弄找的到,感谢大佬
推荐
wsasecy 发表于 2024-12-30 09:26
3#
hrpzcf 发表于 2024-12-29 17:28
4#
kongson 发表于 2024-12-29 17:28
非常感谢大佬分享!
5#
davidxin 发表于 2024-12-29 17:32
感谢大佬,试试看
6#
daviddot 发表于 2024-12-29 17:43
谢谢分享
7#
ocean888 发表于 2024-12-29 19:41
感谢分享
8#
lazhou 发表于 2024-12-29 19:46
收藏学习,谢谢大佬分享!
9#
slm44 发表于 2024-12-29 21:07

感谢分享棒棒哒
10#
SZX188 发表于 2024-12-29 22:11
感觉挺好的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-1 20:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表