我当时在读有关神奇的中国驱动器的文章。怎么做?这篇文章讨论了“循环模式”,并且有评论建议让操作系统使用其他控制器。
我去买了其中一台设备,尝试了一下,并以广告形式工作(已满时覆盖数据),尽管当我格式化它时,它开始显示其“真实”容量。
如何实现的?
我当时在读有关神奇的中国驱动器的文章。怎么做?这篇文章讨论了“循环模式”,并且有评论建议让操作系统使用其他控制器。
我去买了其中一台设备,尝试了一下,并以广告形式工作(已满时覆盖数据),尽管当我格式化它时,它开始显示其“真实”容量。
如何实现的?
Answers:
FAT32有一个具有可用空间的主表。您可以十六进制编辑该主表以显示任何数量的可用空间。我已经有一个大小为3.7 GB的软盘了。
硬件未修改-只是修改了文件表以欺骗操作系统。在格式化期间,文件表将被擦除,因此将还原真正的容量读数。
如果您去不知名的卖家,那么您在任何时候都可能会被这类廉价的假冒闪存驱动器或什至在中国的硬盘驱动器所困扰。
在看到您的消息之前,我确定它是一个不同的控制器-使用修改后的控制器,您可以将所需的信息告诉操作系统。但是考虑到格式会修改此行为,这意味着在文件系统级别也会发生某种欺骗行为。这提出了两个选择:
这是对控制器的修改,在格式化后根本无法使用,因为它取决于文件系统的修改(在我看来,这种可能性更大)。
还有另一种方法无需硬件修改即可执行此操作,例如,将空闲块链接列表修改为循环(我对FAT32的细节还不熟悉,无法确定是否可行-可能几天后再检查一次)否则先做...)。
编辑:天真地假设正在使用FAT32,更可能的情况是使用了一个不同的文件系统,该文件系统无意中允许使用这种循环可用空间管理技巧(只要操作系统也支持该文件系统,它就会对用户几乎不可见)。这使得看着这样的设备更加有趣...
这是在密钥上(使用Linux)创建1,000,000,000,000字节(1 TB)磁盘的方法:
创建伪造的格式化1 TB磁盘:
mkdosfs -C temp_file 1000000000
检查它确实发生了
ls -lh temp_file
连接您的DoK并检查其安装方式:
mount
查找设备名称,例如/dev/sdb1
(如果在此处输入错误,则可能会破坏连接到系统的其他磁盘,因此请小心!)
卸载:
sudo umount /dev/sdb1
找出我们的FAT表的大小:
ls -s temp_file
(第一个数字是大小(以千字节为单位))
复制到DoK
echo "head -c [size_from_above]K temp_file > /dev/sdb1" | sudo sh
吓坏你的朋友!您可以将其安装在本地以像这样玩:
mkdir test
sudo mount temp_file test -o loop
非常简单,
闪存芯片控制器包含一些设置。产品ID,供应商ID,闪存芯片的数量和大小。
通过使用带有小芯片的旧设备,用错误数量的闪存芯片覆盖固件,总驱动器容量将大于已安装闪存的数量。
因为地址行的数量没有改变,所以将始终写入芯片。例如,将首先写入128 MB,然后选择下一个芯片,然后再写入128。
因为只有一个芯片,所以未连接选择线,并且第二个闪存芯片数据将覆盖第一个芯片数据。
因为控制器会报告所有芯片的大小,包括未连接到操作系统的芯片,所以操作系统会很乐意将其格式化为错误的大小。