題 硬盤的容量是如何偽造的?


我正在讀書 神奇的中國人開車。這怎麼辦?這篇文章談到了“循環模式”,評論建議讓不同的控制器對操作系統撒謊。

我去買了這些設備中的一個,嘗試了它並且它像廣告一樣工作(當它已滿時覆蓋數據),雖然當我格式化它時,它開始顯示其“真正的”容量。

這是如何實現的?


88
2018-04-13 05:23


起源


關於黑客新聞的有趣討論 - Ivo Flipse♦
我認為問題會更好,題為“閃存的容量是如何偽造的”,因為它實際上是假冒閃存驅動器上的存儲量,而不是磁性硬盤。 - Joseph Earl
我想要一個中國魔術驅動器,但我不是飛到中國去買一個!,會成為一個偉大的極客插科打g的禮物。 - Moab
+1。在熱門問題視圖中看到這個問題“火箭走到榜首”之前,我從未聽說過這個問題。 - jprete
嘿..謝謝:)當我對一個帶有2個巨型螺母的“硬盤”感到好奇時,我沒想到會有這樣的回應 - Rohan Monga


答案:


FAT32 有一個可用空間的主表。您可以對該主表進行十六進制以顯示任意數量的可用空間。我現在有一張3.7 GB的軟盤。


59
2018-04-13 13:19



是的,你可以篡改FAT,但也有辦法修改微控制器來騙取操作系統。 Windows確實會重複格式化磁盤,錯誤地將其識別為比實際大得多。通常它們具有某種內置算法來循環閃存芯片,使得OS實際上能夠創建有效(外觀)主表。 - TheCompWiz
當我開始搗亂並掌握主表和控制器時,我希望有更多的問題可以遵循這個:) - Rohan Monga
注意詳細說明在哪裡找到主表或如何編輯它? - Ivo Flipse♦
我很想看到一些關於這方面的文檔,我已經嘗試用編程複製它,並且無法欺騙操作系統以達到規模。看到這個帖子在這裡看看我嘗試了什麼 stackoverflow.com/questions/7482920/... - cromestant
我有一本雜誌使用Norton Commander和hexedit來改變報告的分區大小。太糟糕了我丟失了雜誌。 - Barfieldmv


硬件未被修改 - 只需修改文件表以欺騙操作系統。在格式化期間,文件表被擦除,因此恢復了真正的容量讀取。

如果你去一個沒有信譽的賣家,你可能會一直被這些類型的便宜的假閃存驅動器甚至是中國的硬盤驅動器所困。


19
2018-04-13 13:20



去年我在Ebay以15英鎊的價格從中國購買了一塊64Gb記憶棒。我應該知道價格不可用。實際上它是4Gb,標籤上刻有假的“6”字樣。文件系統被擾亂的方式意味著你不會注意到問題 多於 4Gb被複製到設備上,此時新文件剛剛開始覆蓋現有文件的一部分。我從來沒有能夠重新格式化,所以我至少可以將它用作4Gb棒。 - FumbleFingers
@FumbleFingers,是的,賣家通常搞砸芯片信息,所以你不能直接格式化,但你必須這樣做:1。使用ChipGenius軟件+批量生產工具來修復芯片信息。 2.使用低級格式化工具執行實際格式。這是一個指南: agnipulse.com/2010/04/how-i-fixed-a-fake-64gb-usb-drive - KoKo
謝謝!也許我畢竟可以從中獲得一些價值(如果我還沒有把它放在垃圾桶裡沮喪)。 - FumbleFingers


直到我看到你的消息,我確信它是一個不同的控制器 - 使用修改過的控制器,你可以告訴你喜歡的任何操作系統。但鑑於格式修改了這種行為,這意味著在文件系統級別也發生了某種欺騙。這提出了兩個選擇:

  • 這是對控制器的修改,在格式化之後根本不起作用,因為它取決於文件​​系統修改(在我看來這似乎更有可能)。

  • 沒有硬件修改,還有另一種方法可以做到這一點。通過將一個空閒塊鍊錶修改為循環(我不熟悉FAT32的細節來決定是否可行 - 如果沒有其他人先做,可能會在幾天內檢查......)。

編輯:假設正在使用FAT32是天真的,更可能的情況是使用不同的文件系統,無意中允許這種循環的自由空間管理技巧(只要操作系統也支持該文件系統 - 它會幾乎對用戶不可見)。這使得看這樣的設備更有趣......


6
2018-04-13 05:38



這是一個文件系統的東西,我很確定。這些驅動器不是物理修改的。 - crasic
然而,我會買這麼小的東西......用於測試目的:) - Greenleader
如果您打算使用自定義或修改過的控制器,那麼您將失去批量購買廉價控制器的價格節省。因此,對我而言,它似乎更有可能完全在文件系統級別完成 - 與替換/修改硬件相比,使用dd的原始寫入快速,便宜且簡單。 - kaerast


以下是如何在密鑰上創建1,000,000,000,000字節(1 TB)磁盤(使用Linux):

  1. 創建偽造的1 TB磁盤:

    mkdosfs -C  temp_file 1000000000
    
  2. 檢查它是否真的發生了

    ls -lh temp_file
    
  3. 連接你的DoK並檢查它是如何安裝的:

    mount
    
  4. 找到設備名稱,例如 /dev/sdb1 (如果你在這裡犯了錯誤,你可能會破壞連接到系統的其他磁盤,所以要小心!)

  5. 卸下它:

    sudo umount /dev/sdb1
    
  6. 找出我們的FAT表的大小:

    ls -s temp_file
    

(第一個數字是以千字節為單位的大小)

  1. 複製到DoK

    echo "head -c [size_from_above]K temp_file > /dev/sdb1" | sudo sh
    
  2. 嚇壞你的朋友!你可以在本地安裝它,就像這樣玩:

    mkdir test
    sudo mount temp_file test -o loop
    

6
2018-04-20 13:37





非常簡單,

閃存芯片控制器包含一些設置。產品ID,供應商ID以及閃存芯片的數量和大小。

通過使用帶有小芯片的舊設備,使用錯誤數量的閃存芯片覆蓋固件,總驅動器容量將大於安裝的閃存數量。

因為地址線的數量沒有改變,所以芯片將始終被寫入。例如,首先寫入128 MB,然後選擇下一個芯片,然後寫入另外128個。

因為只有一個芯片,所以選擇線沒有連接,第二個閃存芯片數據覆蓋第一個芯片數據。

由於控制器會報告所有芯片的大小,包括未連接的芯片,操作系統會很樂意將其格式化為錯誤的大小。


5
2018-04-14 07:03



這裡的問題是,如果以這種方式在硬件中完成更新的數據也會覆蓋驅動器開頭附近的FAT32文件分配表和根目錄,從而使驅動器無法使用直到重新格式化。事實並非如此,這表明它是一個文件系統黑客,使其工作。 - Mokubai♦
是的,巧妙的是,這將很快被抓住。 - Rohan Monga


有兩種方法可以做到這一點:

  1. 分區:存在多個用於修改和手動創建分區的工具。例如,可以選擇更多真實可用的氣缸。這樣做是微不足道的。防爆。分區魔術,我認為甚至fdisk都可以做到這一點

  2. 設備固件:另一種方法是修改設備的固件。大多數設備(但不是全部)都有固件中包含的信息(即插即用和其他信息)。

例如,通常的技巧是在容量較小的設備中使用容量更大的硬盤的固件並“增加”空間。


1
2018-04-13 17:39