Dd

dd 的按位補碼?

  • December 12, 2013

安全擦除磁碟時,如何使用 dd 進行“按位補碼”?(或使用其他 UNIX 工具?)

tr是音譯字節的工具:

LC_ALL=C tr < file 1<> file '\0-\377' '\377\376\375\374\373\372\371\370\367\366\365\364\363\362\361\360\357\356\355\354\353\352\351\350\347\346\345\344\343\342\341\340\337\336\335\334\333\332\331\330\327\326\325\324\323\322\321\320\317\316\315\314\313\312\311\310\307\306\305\304\303\302\301\300\277\276\275\274\273\272\271\270\267\266\265\264\263\262\261\260\257\256\255\254\253\252\251\250\247\246\245\244\243\242\241\240\237\236\235\234\233\232\231\230\227\226\225\224\223\222\221\220\217\216\215\214\213\212\211\210\207\206\205\204\203\202\201\200\177\176\175\174\173\172\171\170\167\166\165\164\163\162\161\160\157\156\155\154\153\152\151\150\147\146\145\144\143\142\141\140\137\136\135\134\133\132\131\130\127\126\125\124\123\122\121\120\117\116\115\114\113\112\111\110\107\106\105\104\103\102\101\100\77\76\75\74\73\72\71\70\67\66\65\64\63\62\61\60\57\56\55\54\53\52\51\50\47\46\45\44\43\42\41\40\37\36\35\34\33\32\31\30\27\26\25\24\23\22\21\20\17\16\15\14\13\12\11\10\7\6\5\4\3\2\1\0'

或者:

LC_ALL=C tr < file 1<> file '\0-\377'  "$(awk '
 BEGIN{for (i=0;i<256;i++) printf "\\%o", 255-i}')"

但正如其他人指出的那樣,作為安全擦除沒有意義。首先它不安全,因為原始數據很容易導出,然後從性能的角度來看,由於需要讀取數據,因此在旋轉儲存上效率非常低,然後需要搜尋來重寫數據。

我想我會跳過嘗試自己做這件事,而是dd尋找提供這些類型功能的實際工具。我熟悉的 4 個可以做到這一點的工具如下:

  • 擦除
  • 擦拭
  • 撕碎
  • 漂白劑

在這 4 種方法中,我會考慮nwipe哪一種方法可以安全地從磁碟和/或分區中擦除數據。我也可能會看 BleachBit。

   nwipe的ss

注意: nwipe可以從 ncurses TUI 或直接從命令行執行。

摘自nwipe手冊頁

  -m, --method=METHOD
         The wiping method (default: dodshort).
         dod522022m / dod       - 7 pass DOD 5220.22-M method
         dodshort / dod3pass    - 3 pass DOD method
         gutmann                - Peter Gutmann's Algorithm
         ops2                   - RCMP TSSIT OPS-II
         random / prng / stream - PRNG Stream
         zero / quick           - Overwrite with zeros

您還可以告訴它執行此操作的輪數:

  -r, --rounds=NUM
         Number  of  times  to  wipe the device using the selected method
         (default: 1)

例子

$ nwipe -m dod /dev/sda1

參考

按位補碼

如果您查看原始碼,nwipe您會注意到 DoD 7 和 DoD 3 方法都執行按位補碼。

國防部 7

   char dod [7];

   nwipe_pattern_t patterns [] =
   {
           {  1, &dod[0] }, /* Pass 1: A random character.               */
           {  1, &dod[1] }, /* Pass 2: The bitwise complement of pass 1. */
           { -1, ""      }, /* Pass 3: A random stream.                  */
           {  1, &dod[3] }, /* Pass 4: A random character.               */
           {  1, &dod[4] }, /* Pass 5: A random character.               */
           {  1, &dod[5] }, /* Pass 6: The bitwise complement of pass 5. */
           { -1, ""      }, /* Pass 7: A random stream.                  */
           {  0, NULL   }
   };

國防部 3

   char dod [3];

   nwipe_pattern_t patterns [] =
   {
           {  1, &dod[0] }, /* Pass 1: A random character.               */
           {  1, &dod[1] }, /* Pass 2: The bitwise complement of pass 1. */
           { -1, ""      }, /* Pass 3: A random stream.                  */
           {  0, NULL   }
   };

進一步研究這一點,似乎任何聲稱執行 DoD 3 或 7 的軟體都將執行此按位補碼,作為這些特定擦除方法需要執行的一系列通行證的一部分。

引用自:https://unix.stackexchange.com/questions/104585