Neden dd kullanarak rasgele veri yazmak disk bölümleri ile sonuçlanır?


11

ddKomutu çalıştırmadan önce, komut lsblkaşağıdaki çıktıyı döndürdü:

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

Komut dd if=/dev/urandom of=/dev/sda conv=fsync status=progressçalıştırılır. Ancak cihaz güç kaybeder ve kapanır. Güç eski durumuna getirildiğinde, komut lsblkaşağıdaki çıktıyı döndürür:

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk

@RuiFRibeiro - Benzetme için teşekkürler, ancak ddözellikle komut diskleri silmek amaçlanıyorsa neden bölümlere neden olacağı net değil ?
motive

1
Tesadüf: elektrik kesintisiyle ilişkili olması pek olası değildir. Cihaza rastgele veriler yazarsınız. Bu rastgele verilerin bazıları ilk birkaç bloğa gitti, bölüm tabloları burada yaşıyor. Muhtemelen bir bölüm tanımladınız.
ctrl-alt-delor

Eğer sonucunu gönderebilir file /dev/sda*ve sudo fdisk -l /dev/sda*?
phuclv

@phuclv - Süreci başlattığım için çıktı hala değerli olacak mı?
Motive

1
@ Motivated Disklerin silinmesi ddamacının kendiliğinden olmadığını unutmayın . Bir diske rasgele veri yazmak rasgele sonuçlar doğurabilir.
jjmontes

Yanıtlar:


20

Birkaç olasılık:

  • Linux, bazıları çok az sihirli bayt kullanan birçok farklı bölüm tablosu türünü destekler ve daha sonra rasgele verileri (*) yanlış tanımlamak kolaydır [bu nedenle rastgele bir şekilde “geçerli” bölüm tablosu oluşturmak mümkündür].

  • Bazı bölüm tablosu türlerinde diskin sonunda da (özellikle GPT) yedeklemeler bulunur ve sürücünün başlangıcı rasgele çöple değiştirilirse bu durum alınabilir.

  • Cihaz düzgün çalışmıyor ve verileri yazmayı bitirmeden önce bağlantısı kesildi veya eski verileri döndürmeye devam etti, böylece bölüm tablosu hayatta kalıyor. Bazen bu USB çubuklarla olur.

  • ...

(*) İçlerinde rasgele veriler içeren 1000 dosya oluşturun ve nelerin ortaya çıktığını görün:

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

Bir sürücüyü rastgele parçalamanın amacı eski verilerin iyiliğini ortadan kaldırmaktır. Sürücünün daha sonra boş, kullanılmamış, bozulmamış durumda görüneceğine dair bir söz yoktur.

Bunu elde etmek için sıfır silme ile takip etmek yaygındır. LVM kullanıyorsanız, LVM'nin oluşturduğunuz herhangi bir LV'nin ilk birkaç kesimini sıfırlaması normaldir, bu nedenle eski veriler karışmaz.

Ayrıca wipefsdosya sistemi ve bölüm tablosu meta verilerinden kurtulmak için kullanabileceğiniz eski sihirli bayt imzalarından kurtulmak için özel bir yardımcı program ( ) da vardır .


Aygıtlar daha önce ATA Secure Erase komutu kullanılarak silinmişti. Ben bu veri kaldıracağını varsayalım ki 1. geri döndürülemez 2. bölüm bilgileri hayatta değil. Bu doğruysa, ddkomutu çalıştırırken kesintiye uğradığında rastgele verilerin oluşturulmasının bölüm tablolarına benzeyen verilere neden olabileceğini mi söylemek istersiniz? Ayrıca bunlar SATA sabit diskleridir (SSD olmayan).
Motive

5
Rasgele veriler herhangi bir şeye benzeyebilir. Rastgele olmak demek. Sonsuz Maymunlar Teoremini biliyor musunuz? Yeterince büyük miktarda maymun daktilolara yeterince uzun bir süre rastgele girerse, bunlardan birinin bir noktada veya başka bir Shakespeare'in tüm eserlerini üreteceğini belirtir. Bir MBR bölümleme tablosu gerçekten küçüktür (sadece 64 bayt), sağlama toplamı veya doğrulaması ve çok yoğun bir biçimi yoktur. 64 baytlık rastgele bir dizginin geçerli bir bölüm tablosu üretmesi büyük olasılıktır. Diğer bölüm tablosu biçimleri de benzer şekilde basittir.
Jörg W Mittag

Evet, bölüm tablosu yalnızca 64 bayt, (sonunda) bölüm türü yalnızca 1 bayttır ve girişlerin yasal veya sıralı olması gerekir. MBR'de ilk küme / sektör / 512 byes'in sıfırlanması mantıklıdır. Ayrıca öngörülemeyen önyükleme davranışı istemezsiniz, daha az olasıdır, ancak yine de bir risktir.
mckenzm

18

Burada görüldüğü gibi, MBR (Ana Önyükleme Kaydı) nispeten basittir; https://en.wikipedia.org/wiki/Master_boot_record .

Kullandığınızda /dev/urandom, her zaman bir bölüm tablosu gibi görünen bir şey oluşturabilirsiniz. Çözüm, bölme tablosu bölgelerini sıfırla doldurmak dev/urandomve geri kalanı için kullanmaktır .

Linux ayrıca tetiklenebilecek diğer ek disk formatlarını da destekleyerek rastgele verilerle doldururken "geçersiz" bölümlerin görünmesine neden olur.


13

512 baytlık bir koleksiyonu Ana Önyükleme Kaydı olarak tanımlayan şey 0x55 0xAA, sonunda değerlerin varlığıdır . 65.536'da 1 /dev/urandomgibi bir değer üretme şansı var : çok olası değil, ancak benzer şekilde imkansız şeyler her zaman olur.

( Apple Bölüm Haritası gibi diğer bazı bölüm tabloları da benzer şekilde kısa imzalara sahiptir. Bunun yerine bunlardan birini oluşturmuş olabilirsiniz.)


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.