ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

F3 闪存防伪检测完整指南:一文读懂如何测出 U 盘真实容量

F3 闪存防伪检测完整指南:一文读懂如何测出 U 盘真实容量 F3 闪存防伪检测完整指南一文读懂如何测出 U 盘真实容量【免费下载链接】f3F3 - Fight Flash Fraud项目地址: https://gitcode.com/gh_mirrors/f3/f3你买了一块 1TB 闪存盘拷到 200GB 时旧文件开始损坏问题多半是扩容设备标称的容量远大于真实容量。F3Fight Flash Fraud即打击闪存欺诈是一个开源的闪存容量测试工具它把设备写满再逐扇区校验让假容量无处遁形。它解决什么问题一块 256GB U 盘只剩 27GB的故事前阵子有同事拿着 U 盘来求助。他买了块 256GB 的 USB 3.0 盘做备份头一周一切正常拷到 30GB 左右发现怪事同一个视频拷进去两次第二次拷完之前的旧文件消失了。我起初怀疑驱动问题。他换了台电脑复现症状一模一样。于是我们做了唯一可靠的事验证设备的真实容量。扩容盘的问题不是慢而是说谎。小容量芯片通过固件改写对外谎报 256GB。只要写入量没超过真实容量它表现得和正品毫无区别——这正是多数人发现时数据已损坏的原因而且损坏的数据无法恢复。关键点在于系统里显示的容量数字是设备自己报上来的。操作系统没有手段核实。唯一可靠的办法是沿着真实容量写到底让设备露出马脚。核心能力一览4 个命令与各自适用前提F3 由 4 个同名前缀的命令组成分工明确f3write f3read完整读写校验把设备写满 1GB 的伪随机测试文件再逐扇区核对。输出包括真实容量、损坏扇区数、读写速度。适用前提设备已格式化并挂载到文件系统不需要 root。f3probe快速容量探测直接操作裸块设备用算法在几分钟内定位真实容量适合大容量盘。适用前提仅 Linux需要 root 权限设备须挂在 USB 口上默认会破坏盘上数据可加参数保留数据但更慢。f3fix重建分区表按真实容量创建一个刚好贴合的分区让系统从此不再写到不存在的空间。适用前提手上要有 f3probe 输出的实际最后一个扇区号。f3brew块级调试工具按块写入、重置设备、再读回比对主要供开发者研究扩容芯片行为。适用前提Linux root普通用户可以忽略实现见 src/f3brew.c。首次上手从克隆源码到完成第一次测试第 1 步克隆并编译。源码是纯 CLinux 下两条命令搞定git clone https://gitcode.com/gh_mirrors/f3/f3 cd f3 make sudo make install第 2 步找到设备。插 U 盘前后各运行一次lsblk对比多出来的那一行记下类似/dev/sdb的块设备名。注意区分整盘sdb和分区sdb1f3probe 要整盘f3write/f3read 要挂载点。第 3 步在挂载点做完整读写校验f3write /media/你/TEST f3read /media/你/TEST注意不要在存有重要数据的卡上直接跑 f3write。测试文件会占满全部空闲空间遇到扩容盘时旧数据可能被设备自己覆盖掉。第 4 步或者用 f3probe 快速探测裸设备需要 rootsudo f3probe --destructive --time-ops /dev/sdb注意--destructive表示允许 f3probe 覆盖盘上已有数据换取探测速度。只在空卡或已备份数据上使用。编译 f3probe 和 f3fix 还依赖 libudev 与 libparted缺了就先装Ubuntu 下为libudev-dev、libparted-dev再用make extra sudo make install-extra构建这两个额外命令。工作原理用编号书籍揪出假闪存核心思路一句话写入可以自证的数据再读回来对答案。打个比方。仓库管理员闪存主控声称仓库有 1 万个货位。你不信就让他在每个货位放一本书书的封面上写第 N 本书只属于第 N 个货位。之后你抽查每本书的编号都对得上仓库是真的从第 3000 位抽出来的书封面写着第 200 位说明第 3000 位根本不存在——仓库其实只有 2000 个货位写满之后它悄悄把书塞回前面的空位。这个绕回开头的行为就是扩容盘的典型特征叫回绕wraparound。对应到 F3 的实现扇区512 字节是闪存的读写最小单位相当于仓库的一个货位。f3read 能算出每个扇区本来该是什么内容实际读回来对不上就计入损坏、轻微改动或覆盖三类。测试数据是伪随机的看起来像乱码实则由固定算法生成。写和读两端用同一套算法所以 f3read 不必另存一份底稿就能重新算出答案——这就是 1TB 设备也能被完整填测的原因。f3probe 更聪明它不填满全盘而是基于对扩容芯片行为模型容量边界 内部缓存大小的判断只写最有用的那部分数据。就像测井深不必灌满整口井一根带刻度的绳子就够。对一块 15GB 的扩容盘它有时只写约 0.01% 的数据量就能给出精确的真实容量和缓存大小算法在 src/libprobe.c。场景实战把一块 16GB U 盘修成可用的 7.86GB现象。一块 16GB U 盘系统显示 15.33GB。拷完一批文件后旧文件打不开提示格式无法识别。排查。先用lsblk确认它是/dev/sdb然后以 root 运行f3probe --destructive --time-ops /dev/sdb。1 分 13 秒后结果出来设备是假盘limbo 型最常见的扩容类型可用容量只有 7.86GB标称 15.33GB。整个过程中它只写了 2158 个块约 1MB 数据就摸到了底。结果。按 f3probe 给出的建议修复并重新格式化sudo f3fix --last-sec16477878 /dev/sdb sudo mkfs.vfat /dev/sdb1注意f3fix 会重写分区表务必二次确认设备号没拿错如果提示内核没有加载新分区表把 U 盘拔下再插上即可。之后对新分区再跑一遍 f3write/f3read8 个测试文件全部通过Data OK 7.84GB损坏为 0。这块 U 盘不再是 16GB但从那天起它不会再悄悄毁掉任何数据。避坑清单5 个高频错误与正确做法常见错误后果正确做法把系统盘当成 U 盘跑 f3probe系统盘数据被破坏插盘前后各跑一次lsblk对比确认f3probe 传错分区时也会报错提醒带数据的卡直接跑 f3write旧文件被扩容盘回绕覆盖先备份或清空卡再开始测试f3write 结束后立刻 f3read卡内约 256MB 的缓存会骗过校验f3read 前先拔掉设备再重新插入强制清掉缓存把 TF 卡插在相机卡槽里测f3probe 报非 USB 设备无法工作改用外置 USB 读卡器以系统显示的容量为准固件会谎报系统无从核实用 f3probe 或 f3write/f3read 做扇区级验证生态与延伸GUI、容器与社区入口图形界面F3-GuiLinuxFlatpak 封装含 4 个命令并支持修复后自动格式化、F3 QTLinux、F3XSwiftmacOS、Fake-USB-TesterLinuxPython Qt5。不想碰命令行从这几个入口进。容器化仓库自带 Dockerfile执行make docker可构建本地镜像社区也有现成镜像用--device参数把 U 盘透传进容器即可测试。格式兼容3.0 版本起f3write 生成的测试文件与 Windows 端知名工具 H2testw 使用同一种.h2w格式两端可以互相校验对方的产物。配套脚本仓库scripts/下有两个即用脚本——log-f3wr一键连跑 f3write f3read 并把输出写入日志f3write.h2w会把测试文件尺寸调整成 H2testw 兼容值。姐妹工具卡容量为真但偶发损坏flaky flash时社区项目 Flakyflash 可以在 FAT 文件系统上定位坏簇并标记争取延长使用但建议尽早更换。参与贡献项目由社区力量共同维护贡献指南见 doc/contribute.rst。里面列了明确的参与方式提 PR、写使用博客、甚至捐赠你手中的扩容盘作为测试样本。你的下一步运行lsblk找到那块 U 盘克隆仓库、编译10 分钟内跑完第一次扩容盘探测。如果拿到 Data LOST 的报告别继续用它——保存 f3probe 的输出当证据找卖家要回你的钱。【免费下载链接】f3F3 - Fight Flash Fraud项目地址: https://gitcode.com/gh_mirrors/f3/f3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表