รับไฟล์จาก XFS ด้วยขนาดบล็อก 64kb


9

ฉันได้รับภารกิจในการกู้คืนไฟล์จากหนึ่งใน 2 ไดรฟ์ของฉันทำงานได้อย่างสมบูรณ์แบบไม่เสียหายและไม่ได้เข้ารหัสซึ่งเคยเป็นใน RAID 1 NAS เป็น Patriot Javelin S4 ซึ่งฉันพบจากการวิจัยของฉัน ) ใช้ตัวควบคุมการโจมตีปลอม Promise Fasttrack

ข้อมูลนี้หายากมากดังนั้นสำหรับชาว Google ในสถานการณ์เดียวกันนี่คือข้อเท็จจริงบางอย่างเกี่ยวกับ NAS นี้:

  • ตัวควบคุม RAID: สัญญา FastTrack (FakeRaid)
  • ระบบเสียง: LVM2
  • ระบบไฟล์: XFS ที่มีขนาดบล็อก 64kb (65536 ไบต์)
  • Arch: 800MHz AMCC PowerPC processor, RAM 256MB (จากการวิจัยของ Matthew)

ฉันมีคอมพิวเตอร์ Windows 10 และ MacOS เท่านั้นเมื่อทำสิ่งนี้และฉันไม่พบซอฟต์แวร์ที่สามารถติดตั้ง XFS ในระดับเสียง LVM2 (ยกเว้น 1 ข้อเพิ่มเติมด้านล่างนี้) ฉันต้องถอดเน็ตบุ๊ก Acer Aspire One เก่าออกแล้วติดตั้งลูกสุนัขลินุกซ์ไว้ (โดยเฉพาะรสชาติ lxpup)

dmraidบนลินุกซ์ลูกสุนัขฉันจัดการเพื่อติดระบบไฟล์นี้โดยใช้เครื่องมือที่เรียกว่า เครื่องมือนี้มีวิธีการติดตั้งไดรฟ์ข้อมูล pdc ซึ่งเป็นรหัสสำหรับ Promise FastTrack เมื่อฉันจัดการเพื่อข้ามผ่านการติดตั้งห่วงบางอย่างฉันได้รับการเข้าถึงระบบไฟล์ XFS จริงและความกลัวของฉันมันกลายเป็นขนาดบล็อก 64kb

นี่คือที่ฉันเริ่ม googling สิ่งต่าง ๆ เช่น "read xfs 64kb block size" และไปไหนมาไหน คำตอบเพียงไม่กี่คำที่กล่าวว่า: "linux ไม่สามารถอ่านขนาดบล็อกที่ใหญ่กว่า 4kb เว้นแต่ว่าคุณจะแก้ไขเคอร์เนล" ฉันไม่รู้ว่าจะแก้ไขเคอร์เนลอย่างไรและฉันรู้สึกงุนงงว่าไม่มีการเลียนแบบใด ๆ

ฉันได้กล่าวถึงข้อยกเว้น 1 ข้อระหว่างแอพที่ไม่สามารถอ่านพาร์ติชันนี้บน Win / Mac ข้อยกเว้นนั้นคือ ufsexplorer มันเป็นแอพ $ 100 มันสามารถแสดงไฟล์ได้อย่างราบรื่น ฉันคัดลอกไฟล์สองสามไฟล์ที่พิสูจน์ว่าใช้งานได้ แต่รุ่นทดลองอนุญาตให้คัดลอกไฟล์เล็ก ๆ เท่านั้น

ฉันปฏิเสธที่จะเชื่อว่าไม่มีเครื่องมือโอเพนซอร์สฟรีที่ระดับความซับซ้อนใด ๆ ที่ไม่สามารถช่วยฉันอ่าน 64kb xfs ได้

คำถามของฉันคือ:ไม่มีใครรู้ว่าเครื่องมือดังกล่าวหรือไม่ คำแนะนำเฉพาะเกี่ยวกับวิธีรับข้อมูลโดยใช้หนึ่งเครื่องมือขึ้นไปหรือการแก้ไขเคอร์เนลหรืออย่างอื่น (ฟรี) ได้รับการชื่นชมอย่างมาก

อีกจุดหนึ่ง: ฉันอยากจะไม่สร้างภาพท้องถิ่นของไดรฟ์เหล่านี้ (ยกเว้นว่าเป็นวิธีเดียว) ท้ายที่สุดมันเป็นข้อมูล 2TB ฉันอาจมีพื้นที่ไม่มากนัก

PS หากมีลินุกซ์ที่รู้จักฉันสามารถติดตั้งบนเอเซอร์ของฉันที่สามารถอ่าน 64kb xfs ได้นั่นก็เป็นโซลูชันที่ทำงานได้เช่นกัน

Update 1 : ผมเพิ่งได้เรียนรู้เกี่ยวกับhttps://www.cgsecurity.org/wiki/TestDisk อาจจะคุ้มค่ากับการยิง จะรายงานกลับเมื่อฉันมีเวลาลอง

อัปเดต 2 : TestDisk ดูเหมือนว่าจะรับรู้ถึงการมีอยู่ของพาร์ติชัน XFS แต่ฉันไม่แน่ใจว่าจะดำเนินการกับแบบฟอร์มที่นั่นได้อย่างไร ฉันไม่เห็นวิธีที่จะแตกไฟล์ดังนั้นฉันเพิ่งละทิ้งไปตอนนี้และลองใช้วิธี qemu ในคำตอบของ Matthew


ฉันเห็นโซลูชันสองวิธีสร้างเคอร์เนลที่กำหนดเองของคุณเองหรือสร้างภาพด้วยพาร์ติชันxfs
Alexander Tolkachev

@Alexander สวัสดีขอบคุณที่ตอบกลับ ลิงก์ใด ๆ เกี่ยวกับเคอร์เนลที่กำหนดเอง นอกจากนี้อาจมีวิธีโคลนไดรฟ์ในไดรฟ์ mac ของฉันในขณะแปลงระบบไฟล์แบบทันทีหรือไม่ และเพื่อความชัดเจน: ฉันมีไดรฟ์ NAS ติดอยู่ด้วย SATA -> ตัวแปลง USB ดังนั้นฉันสามารถเสียบเข้ากับ windows หรือ mac ได้โดยตรงโดยไม่ต้องสร้างรูปภาพ
Max Chernyak

ลองดูว่า xfsdump ช่วยได้ไหม
อังคาร

> มันกลายเป็นขนาดบล็อก 64kb โปรดอธิบายอย่างละเอียดว่าคุณมาถึงข้อสรุปนี้อย่างไร
poige

1
ฉันเห็น. สิ่งที่ฉันจะไปอยู่ในรองเท้าของคุณคือการเขียนไปยังรายชื่อเมลที่สอดคล้องกัน: xfs.org/index.php/XFS_email_list_and_archives
poige

คำตอบ:


8

ฉันได้ทำการวิจัยเกี่ยวกับปัญหาของคุณแล้ว ไม่ใช่เรื่องง่าย แต่ดูเป็นไปได้

พื้นที่ของรหัสทำลายคุณคือ (ดีในเมล็ดที่ใหม่กว่า): fs/xfs/libxfs/xfs_sb.c

271         /*
272          * Until this is fixed only page-sized or smaller data blocks work.
273          */
274         if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) {
275                 xfs_warn(mp,
276                 "File system with blocksize %d bytes. "
277                 "Only pagesize (%ld) or less will currently work.",
278                                 sbp->sb_blocksize, PAGE_SIZE);
279                 return -ENOSYS;
280         }

โดยทั่วไปจำเป็นต้องมีขนาดบล็อก XFS อย่างน้อยเท่ากับขนาดหน้าของระบบ

นี่หมายถึงสองสิ่ง

  1. นี่เป็นวิธีแก้ปัญหาข้อบกพร่องก่อนหน้านี้ที่ไม่รู้จัก
  2. ขนาดหน้าเดิมของระบบคือ 64k

ฉันไปตรวจสอบเคอร์เนลเก่าจริง ๆ (EL4) และข้อ จำกัด ข้างต้นก็ยังอยู่ที่นั่น นี่หมายความว่ามันเป็นไปไม่ได้ที่จะทำสิ่งที่คุณต้องการในสถาปัตยกรรมของคุณ (x86)

ให้คุณให้ชื่อ NAS ฉันทำ googling และค้นพบสิ่งนี้: http://www.techwarelabs.com/patriot-javelin-s4-network-attached-storage/2/

ซึ่งแปลว่ามันใช้ CPU PPC

ฮาร์ดแวร์ของ Javelin นั้นเกินความสามารถในการจัดการบทบาทเพิ่มเติม เป็นระบบลินุกซ์ในตัวที่มีตัวประมวลผล AMPC PowerPC 800 MHz และ RAM ขนาด 256 MB

แท้จริงแล้วใน PowerPC kernels สามารถสร้างขึ้นเพื่อใช้ทั้ง 64k pages หรือ 4k pages สิ่งนี้จะอธิบายได้ว่าเหตุใดบล็อกจึงเป็น 64k และทำไมคุณไม่สามารถเรียกใช้ระบบไฟล์บนเครื่องของคุณได้ซึ่งมันทำงานบน NAS ของตัวเองมาก่อน

หากคุณต้องการลองเปิดระบบไฟล์ - ฉันคิดว่าตัวเลือกที่ดีที่สุดของคุณคือการใช้งานอินสแตนซ์ของเครื่องเสมือนในไฮเปอร์ไวเซอร์โดยใช้ PPC64LE (ฉันคิดว่านั่นเป็นสถาปัตยกรรมจริงของ CPU นั้น) Fedora สร้าง PPC64LE ของตนเองด้วย 64k เพจ

https://alt.fedoraproject.org/alt/

คุณสามารถใช้ qemu เพื่อทำสิ่งนี้ ผู้ชายคนนี้ดูเหมือนจะให้คำแนะนำบางอย่าง (ไม่ผ่านการทดสอบ) เกี่ยวกับวิธีการทำสิ่งนี้

https://rwmj.wordpress.com/tag/ppc64le/

จากตรงนั้นให้เปิดเผยดิสก์ใน VM และทำตามปกติ dmraid / lvm / mount เพื่อเข้าถึงไดรฟ์


ฉันจะรายงานกลับทันทีที่ฉันมีเวลาพิจารณาแนวทาง qemu ดูมีความหวังมากขอบคุณเวลาที่คุณใส่มัทธิว
Max Chernyak

ขณะนี้ฉันกำลัง astuck virt-builder fedora-25 --arch ppc64le -o fedora-25-ppc64le.imgพยายามที่จะวิ่ง ฉันอยู่ในลูกสุนัขลินุกซ์และรับ "supermin: ไม่สามารถตรวจพบตัวจัดการแพคเกจที่ใช้โดยระบบหรือ distro นี้"
Max Chernyak

ใช้เครื่อง distora แบบ fedora เพื่อทำมัน
Matthew Ife

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

@ Hakunin ฉันสามารถจัดรูปแบบและเมานต์ระบบไฟล์ 64kb xfs ในสถาปัตยกรรม ppc64le ตามที่ฉันแนะนำให้คุณทำเมื่อต้นสัปดาห์นี้ดังนั้นฉันจึงรู้ว่าสิ่งนี้จะใช้ได้
Matthew Ife
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.