กู้คืนส่วนหัว LUKS โดยบังเอิญบนระบบไฟล์ปกติ


0

ฉันกำลังมีปัญหาใหญ่จริงๆในขณะนี้ดังนั้นทางออกที่รวดเร็วมากจะได้รับการชื่นชมมาก ฉันอยู่ในเซสชัน SSH บนแล็ปท็อปที่มีการเข้ารหัส LUKS และฉันคิดว่าฉันกำลังกู้คืนส่วนหัว แต่ฉันรู้ในภายหลังว่าฉันมี SSH จริงๆแล้วที่เดสก์ท็อปของฉันและบังเอิญใช้ไฟล์สำรองข้อมูลส่วนหัว LUKS เพื่อกู้คืนบนเดสก์ท็อปของฉันซึ่งไม่มีการเข้ารหัส LUKS ใด ๆ ตอนนี้ฉันไม่สามารถบูตเข้าสู่ระบบไฟล์ของฉันได้เลย มีวิธีใดบ้างที่ฉันสามารถเรียกคืนระบบปฏิบัติการของฉันหรืออย่างน้อยที่สุดไฟล์ของฉัน? ฉันลบไปแล้วพยายามลบส่วนหัวทันทีที่ฉันรู้ แต่ก็ไม่ได้ช่วยให้ส่วนหัวยังคงอยู่เพียงปุ่มทั้งหมดจะถูกปิดใช้งาน

ระบบไฟล์ Kali Linux 64 บิต 64 บิต, ดูอัลบูตกับพาร์ติชัน Windows 10 พาร์ติชัน Kali Linux เป็นพาร์ติชันที่เขียนทับส่วนหัวโดยไม่ตั้งใจ

คำสั่งที่ฉันใช้เพื่อเรียกคืนส่วนหัวโดยไม่ได้ตั้งใจคือ: cryptsetup luksHeaderRestore /dev/sda5 --header-backup-file header.bak


โปรดอย่าเพิ่มรายละเอียดในคำถามของคุณในความคิดเห็น แก้ไข คำถามของคุณทำให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
Scott

ลองทดสอบดิสก์ได้ หรือ photorec เพื่อกู้คืนไฟล์โดยไม่มี dir โครงสร้าง & amp; อาจไม่มีชื่อไฟล์ คุณค้นหาวิธีการกู้คืนการเขียนทับ ext4 2M แรกหรือไม่
Xen2050

คำตอบ:


0

คุณอาจกู้คืนได้เกือบทุกอย่าง แต่ถ้ามีอะไรผิดพลาดคุณอาจพบว่าตัวเองแย่กว่าตอนนี้

ตัวเลือกทำด้วยตัวเองคือการกู้คืนระบบไฟล์จากหนึ่งใน superblock สำรอง

  1. สร้างดิสก์อิมเมจของพาร์ติชันที่เสียหายและทำงานทั้งหมดของคุณกับอิมเมจนี้ คุณจะต้องมีฮาร์ดไดรฟ์ที่มีพื้นที่ว่างเพียงพอในการเก็บอิมเมจของดิสก์นี้
  2. ใช้ losetup เพื่อตั้งค่ารูปภาพเป็นอุปกรณ์ย้อนกลับ นี่จะให้ชื่ออุปกรณ์เช่น /dev/loop0.
  3. วิ่ง mke2fs -n บนอุปกรณ์ลูปแบ็คเพื่อหาว่าซูเปอร์บล็อกสำรองนั้นอยู่ที่ไหน คุณแสร้งทำเป็นสร้างระบบไฟล์ใหม่ที่นี่ ( -n ตัวเลือก) เพื่อรับ mke2fs เพื่อบอกคุณว่าจะนำสิ่งไหนไปใช้
  4. วิ่ง e2fsck -n -b <insert a superblock address here> บนอุปกรณ์ลูปแบ็คพร้อมที่อยู่ซูเปอร์บล็อกสำรองแต่ละแห่งจนกว่าคุณจะพบที่ทำงาน ที่นี่คุณกำลังแสร้งทำเพื่อซ่อมแซมระบบไฟล์ ( -n อีกครั้ง) เพื่อดูว่ามันจะทำงาน คุณจะประสบความสำเร็จในการลองครั้งแรก
  5. เรื่องวิ่ง e2fsck บนอุปกรณ์ย้อนกลับเท่านั้นที่ไม่มี -n ตัวเลือก สิ่งนี้จะซ่อมแซมระบบไฟล์ในระดับสูงสุดเท่าที่จะเป็นไปได้
  6. เมานต์อุปกรณ์ลูปแบ็คเป็นระบบไฟล์และดูว่าความเสียหายเป็นอย่างไร

เมื่อคุณทำสิ่งนี้แล้วคุณมีสองตัวเลือก: คุณสามารถทำซ้ำขั้นตอนในระบบไฟล์เดิมหรือคุณสามารถคัดลอกไฟล์ที่คุณต้องการปิดภาพลบไฟล์เดิมติดตั้งกาลีติดตั้งใหม่และคัดลอกไฟล์ที่กู้คืน ไฟล์ลงบนมัน

ตัวเลือกที่ปลอดภัยคือการส่งไดรฟ์ของคุณไปยัง บริษัท กู้คืนข้อมูล โดยทั่วไปแล้วพวกเขาจะทำตามขั้นตอนเดียวกับด้านบน แต่เนื่องจากพวกเขาคุ้นเคยกับขั้นตอนดังกล่าวจึงไม่ทำให้สับสน อาจมีค่าใช้จ่ายไม่กี่ร้อยดอลลาร์


ขอบคุณสำหรับความช่วยเหลือ ฉันคิดว่าตัวเลือกที่ดีที่สุดในตอนนี้คือการกู้คืนระบบไฟล์และคัดลอกไฟล์ไปยังการติดตั้ง Kali ใหม่อย่างที่คุณพูด เวลานี้ฉันจะต้องแน่ใจว่าได้อ่าน STDOUT อย่างถูกต้องก่อนเขียนทับส่วนต่าง ๆ ของพาร์ติชันของฉัน คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับการใช้งานได้อีกเล็กน้อย mke2fs และ e2fsck? ฉันอาจจะคิดออกเองจากหน้าคน แต่ฉันคิดว่ามันจะดีกว่าที่จะได้ยินจากคนโดยตรงเช่นกัน
computer_geek64

0

Mount มีตัวเลือกให้ลองใช้ superblock สำรอง ( -o b=40961 ตัวอย่าง) ดังนั้นคำสั่งที่มีแบบอ่านอย่างเดียวบวกหนึ่งใน superblock สำรองของคุณเช่น

mount -v -o ro,b=40961 /dev/sda5 mountpoint

อาจเป็นสิ่งที่ควรลองอ่านอย่างน้อยก็อ่านอย่างเดียวไม่ควรทำอันตรายใด ๆ และไม่ต้องการสำเนา


ฉันพยายามสร้างระบบไฟล์ ext4 ขนาดเล็ก (50M) คัดลอกไฟล์ประมาณ 34M ใน 40 ไฟล์จากนั้นเขียนทับ 2M แรกด้วยศูนย์ (ขนาดของส่วนหัวสำรองของ luks)

คำสั่ง e2fsck (พร้อม & amp; โดยไม่ลอง superblock สำรองทั้งหมดด้วย -b ) ไม่ได้กู้คืนไฟล์ใด ๆ อาจเป็นขนาดที่เล็กและ% ค่อนข้างใหญ่ที่ถูกเขียนทับ แต่ถึงแม้ว่าตอนนี้จะสามารถเชื่อมต่อได้ แต่ไม่มีไฟล์อยู่ (แม้จะหายไป + พบว่าว่างเปล่า) คำตอบอื่น ( https://superuser.com/a/1044614/307834 ) พูดว่าไฟล์ & amp; รายการไดเรกทอรีอาจถูกเขียนทับและ superblock สำรองอาจช่วยไม่ได้

อย่างไรก็ตาม Photorec สามารถกู้คืนไฟล์ 33 จาก 40 ไฟล์ (ไม่มีชื่อไฟล์), 31 เหมือนกันแม้ว่าจะเปลี่ยน 2 ไฟล์ (md5 ไม่ตรงกัน) ต่อไปนี้คือ ลิงก์ไปยังคำแนะนำทีละขั้นตอน (มันจะแสดง superblock สำรองด้วย)

หากคุณมีรายการสำรองของชื่อไฟล์ทั้งหมดและแฮช (เช่น md5 จาก find | md5sum หรือแม้แต่ crc32) มันจะง่ายกว่ามากเมื่อเทียบกับไฟล์กลับไปที่ชื่อไฟล์ แน่นอนว่าการสำรองไฟล์เองนั้นดีที่สุด - ไม่ใช่ไฟล์ระบบทั้งหมดพวกเขาสามารถดาวน์โหลดได้อย่างง่ายดาย & amp; ติดตั้งใหม่อีกครั้ง แต่เป็นเพียงข้อมูลส่วนตัว & amp; ไฟล์ ($ HOME?) และอาจเป็นไฟล์กำหนดค่าใน / etc


อย่างไรก็ตามหากใครสนใจนี่คือคำสั่งเพื่อสร้าง ext4 ขนาดเล็กและทำลายมัน & amp; พยายามกู้คืน:

$ fallocate -l 50M 50

$ mke2fs -v -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 50
mke2fs 1.43.4 (31-Jan-2017)
fs_types for mke2fs.conf resolution: 'ext4', 'small'
Discarding device blocks: done                            
Discard succeeded and will return 0s - skipping inode table wipe
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
12824 inodes, 51200 blocks
2560 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33685504
7 block groups
8192 blocks per group, 8192 fragments per group
1832 inodes per group
Filesystem UUID: b42aef3d-4e2a-44c3-8bb1-967968f61e38
Superblock backups stored on blocks: 
        8193, 24577, 40961

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

$ sudo mount -v 50  /media/50
mount: /dev/loop1 mounted on /media/50.
$ cp -ar /usr/share/backgrounds /media/50/backgrounds # 40 files totaling 34M
$ sudo umount -v /media/50 
umount: /media/50 unmounted

บันทึกไฟล์ "ดี" ต้นฉบับไว้เพื่อเปรียบเทียบ

$ cp -v 50 50-bak
'50' -> '50-bak'

โดยไม่ต้อง Conv dd เพิ่งเขียนทับ 50 ด้วยไฟล์ 2M ที่เติมเต็ม

$ dd if=/dev/zero of=50 bs=1M count=2 conv=notrunc
2+0 records in
2+0 records out
2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.00552528 s, 380 MB/s

บันทึกสำเนาของไฟล์ที่เสียหายเพื่อลองอีกครั้งในภายหลัง

$ cp -v 50 50-broken
'50' -> '50-broken'

การรัน "e2fsck 50" จะ "ซ่อมแซม" ระบบไฟล์ แต่การติดตั้งไม่พบไฟล์ที่กู้คืน

รับ / ตรวจสอบ superblock สำรอง

$ mke2fs -n 50
mke2fs 1.43.4 (31-Jan-2017)
Creating filesystem with 51200 1k blocks and 12824 inodes
Filesystem UUID: 7a31ebab-ddc2-40a6-89f6-39ecc26578cc
Superblock backups stored on blocks: 
        8193, 24577, 40961

คำสั่ง e2fsck นั้น น่า / อาจช่วย:

$ e2fsck -v -b 40961 50
e2fsck 1.43.4 (31-Jan-2017)
Superblock has an invalid journal (inode 8).
Clear<y>? yes
*** journal has been deleted ***

Resize inode not valid.  Recreate<y>? yes
Pass 1: Checking inodes, blocks, and sizes
Root inode is not a directory.  Clear<y>? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Root inode not allocated.  Allocate<y>? yes
/lost+found not found.  Create<y>? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  +(1--1875) +1878 +(8193--8450) +(24577--24834) +(40961--41218)
Fix<y>? yes
Free blocks count wrong for group #0 (6301, counted=6314).
Fix<y>? yes
Free blocks count wrong for group #2 (4096, counted=8192).
Fix<y>? yes
Free blocks count wrong (44438, counted=48547).
Fix<y>? yes
Inode bitmap differences:  +1 +(3--10)
Fix<y>? yes
Free inodes count wrong for group #0 (1820, counted=1821).
Fix<y>? yes
Directories count wrong for group #0 (3, counted=2).
Fix<y>? yes
Free inodes count wrong (12812, counted=12813).
Fix<y>? yes
Recreate journal<y>? yes
Creating journal (4096 blocks):  Done.

*** journal has been regenerated ***

50: ***** FILE SYSTEM WAS MODIFIED *****

          11 inodes used (0.09%, out of 12824)
           0 non-contiguous files (0.0%)
           0 non-contiguous directories (0.0%)
             # of inodes with ind/dind/tind blocks: 0/0/0
        6749 blocks used (13.18%, out of 51200)
           0 bad blocks
           0 large files

           0 regular files
           0 directories
           0 character device files
           0 block device files
           0 fifos
           1 link
           0 symbolic links (0 fast symbolic links)
           0 sockets
------------
           1 file

การติดตั้งยังคงเปิดเผยว่าไม่มีไฟล์ที่กู้คืน ...
ลองติดตั้งโดยตรงกับ superblock สำรอง (-b) ไม่ทำงานกับบล็อกสำรองใด ๆ

$ sudo mount -vo ro,b=40961 50 /media/50
mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

# Nothing in syslog/dmesg.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.