硬盘容量是如何伪造的?

Roh*_*nga 90 hard-drive controller

我正在阅读有关神奇的中国驱动器。这将如何完成?该帖子讨论了“循环模式”,评论建议使用不同的控制器来欺骗操作系统。

我去买了这些设备中的一个,试了一下,它像广告一样工作(当数据已满时覆盖数据),尽管当我格式化它时,它开始显示它的“真实”容量。

这是如何实现的?

Bar*_*dmv 58

FAT32有一个带有可用空间的主表。您可以对该主表进行十六进制编辑以显示任意数量的可用空间。我有一张 3.7 GB 大小的软盘已经有很长时间了。

  • 是的,您可以篡改 FAT,但也有一些方法可以修改微控制器以欺骗操作系统。Windows 确实会反复格式化磁盘,错误地将其识别为比实际大得多。通常他们有某种内置算法来循环闪存芯片,使得操作系统实际上能够创建一个有效的(看起来)主表。 (4认同)
  • 请详细说明在哪里可以找到主表或如何编辑它? (2认同)
  • 我很想看到一些关于这个的文档,我已经尝试用编程来复制它,但一直无法欺骗操作系统看到大小。在此处查看此线程以查看我尝试过的内容 http://stackoverflow.com/questions/7482920/modifying-usb-drives-information (2认同)

KoK*_*oKo 19

硬件没有被修改 - 文件表只是被修改来欺骗操作系统。在格式化期间,文件表被擦除,因此恢复了真正的容量读数。

如果你去一个没有信誉的卖家那里,你可能会一直被这些廉价的假闪存驱动器甚至是中国的硬盘抓到。

  • 去年,我在 Ebay 上以 15 英镑的价格从中国购买了一个据称为 64Gb 的记忆棒。我应该知道这个价格无法提供容量。事实上,它是 4Gb 的,标签上刻有一个假的前导“6”。文件系统被打乱的方式意味着你不会注意到问题,直到 * 超过 * 4Gb 被复制到设备上,此时新文件刚刚开始覆盖现有文件的一部分。我永远无法重新格式化这个东西,所以我至少可以将它用作 4Gb 记忆棒。 (11认同)
  • @FumbleFingers,是的,卖家把芯片信息搞砸是很常见的,所以你不能直接格式化,但你必须这样做: 1.使用ChipGenius软件+量产工具修复芯片信息。2.使用低级格式化工具执行实际格式化。这是一个指南:http://agnipulse.com/2010/04/how-i-fixed-a-fake-64gb-usb-drive/ (7认同)

Ofi*_*fir 6

直到我看到你的消息,我才确定这是一个不同的控制器 - 使用修改后的控制器,你可以告诉操作系统你喜欢的任何东西。但是鉴于格式修改了这种行为,这意味着在文件系统级别也发生了某种欺骗。这提出了两个选择:

  • 这是对控制器的修改,在格式化后根本不起作用,因为它取决于文件系统修改(在我看来这仍然更有可能)。

  • 还有另一种方法可以在不修改硬件的情况下执行此操作,例如通过将空闲块链表修改为循环(我对 FAT32 的细节不够熟悉,无法确定这是否可行 - 如果没有人可能会在几天内检查否则首先...)。

编辑:假设正在使用 FAT32 是幼稚的,更有可能的情况是使用了不同的文件系统,无意中允许使用这种循环可用空间管理技巧(只要操作系统也支持该文件系统 - 它会对用户几乎不可见)。这使得查看这样的设备更加有趣......

  • 然而,我会买这么小的东西......用于测试目的:) (4认同)
  • 这是一个文件系统的事情,我敢肯定。这些驱动器没有经过物理修改。 (2认同)

Bor*_*ris 6

以下是在 key 上创建 1,000,000,000,000 字节 (1 TB) 磁盘的方法(使用 Linux):

  1. 创建假格式化的 1 TB 磁盘:

    mkdosfs -C  temp_file 1000000000
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查它是否真的发生了

    ls -lh temp_file
    
    Run Code Online (Sandbox Code Playgroud)
  3. 连接你的 DoK 并检查它是如何安装的:

    mount
    
    Run Code Online (Sandbox Code Playgroud)
  4. 找到设备名称,比如/dev/sdb1 (如果你在这里弄错了,你可能会破坏连接到系统的其他磁盘,所以要小心!)

  5. 卸载它:

    sudo umount /dev/sdb1
    
    Run Code Online (Sandbox Code Playgroud)
  6. 找出我们的 FAT 表的大小:

    ls -s temp_file
    
    Run Code Online (Sandbox Code Playgroud)

(第一个数字是以千字节为单位的大小)

  1. 复制到 DoK

    echo "head -c [size_from_above]K temp_file > /dev/sdb1" | sudo sh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 吓坏你的朋友!你可以在本地安装它,像这样玩:

    mkdir test
    sudo mount temp_file test -o loop
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

非常简单,

闪存芯片控制器包含一些设置。产品 ID、供应商 ID 以及闪存芯片的数量和大小。

用小芯片的旧设备,用错误数量的闪存芯片覆盖固件,总驱动容量将大于安装闪存的数量。

因为地址线的数量没有改变,芯片将始终被写入。例如,先写入 128 MB,然后选择下一个芯片,然后再写入 128 MB。

因为只有一个芯片,所以没有连接选择线,第二个flashchip数据覆盖了第一个芯片的数据。

因为控制器报告了所有芯片的大小,包括未连接到操作系统的芯片,操作系统很乐意将其格式化为错误的大小。

  • 这里的问题是,如果在硬件中以这种方式完成,较新的数据也会覆盖驱动器开头附近的 FAT32 文件分配表和根目录,从而使驱动器在重新格式化之前无法使用。这不会发生的事实表明它是一个文件系统黑客,使它工作。 (3认同)