
أداة لاستكشاف، استخراج، إصلاح، وتحليل جنائي لأنظمة ملفات FAT

هذه الأداة مصممة للتعامل مع أنظمة ملفات FAT، بهدف استكشافها، استخراج البيانات، إصلاحها، استعادتها، وتحليلها جنائياً. تدعم حالياً FAT12 و FAT16 و FAT32.
يمكنك بناء fatcat بهذه الطريقة:
mkdir build
cd build
cmake ..
make
ثم تثبيته:
make install
يأخذ Fatcat صورة (image) كوسيط:
fatcat disk.img [options]
ملاحظة: حسب بنائك، قد تضطر لتحديد الخيارات قبل disk.img، أي fatcat [options] disk.img
يمكنك تحديد إزاحة (offset) في الملف باستخدام -O، قد يكون هذا مفيداً إذا كان هناك أقسام متعددة على جهاز الكتلة، على سبيل المثال:
fatcat disk.img -O 1048576 [options]
سيؤدي هذا إلى إخبار fatcat بالبدء من البايت 1048576. ألقِ نظرة على درس الأقسام.
يمكنك استكشاف قسم FAT باستخدام الخيار -l بهذه الطريقة:
$ fatcat disk.img -l /
Listing path /
Cluster: 2
d 24/10/2013 12:06:00 some_directory/ c=4661
d 24/10/2013 12:06:02 other_directory/ c=4662
f 24/10/2013 12:06:40 picture.jpg c=4672 s=532480 (520K)
f 24/10/2013 12:06:06 hello.txt c=4671 s=13 (13B)
يمكنك أيضاً تقديم مسار مثل -l /some/directory.
باستخدام -L، يمكنك تقديم رقم عنقود (cluster number) بدلاً من المسار، قد يكون هذا مفيداً أحياناً.
إذا أضفت -d، سترى أيضاً الملفات المحذوفة.
في السرد، البادئة هي f أو d لإظهار ما إذا كان السطر يتعلق بملف أو دليل.
c= يشير إلى رقم العنقود، s= يشير إلى الحجم بالبايت (والذي يجب أن يكون مماثلاً للحجم المنسق بعده).
يشير الحرف h في النهاية إلى أن الملف من المفترض أن يكون مخفياً.
يشير الحرف d في النهاية إلى أن الملف قد تم حذفه.
يمكنك قراءة ملف باستخدام -r، سيتم كتابة الملف على المخرجات القياسية:
$ fatcat disk.img -r /hello.txt
Hello world!
$ fatcat disk.img -r /picture.jpg > save.jpg
باستخدام -R، يمكنك تقديم رقم عنقود بدلاً من المسار، ولكن سيتم فقدان معلومات حجم الملف وسيتم تقريب الملف إلى عدد العناقيد التي يناسبها، إلا إذا قدمت الخيار -s لتحديد حجم الملف المراد قراءته.
يمكنك استخدام -x لاستخراج أدلة نظام ملفات FAT إلى دليل:
fatcat disk.img -x output/
إذا أردت الاستخراج من عنقود معين، قدمه مع -c.
إذا قدمت -d للاستخراج، فسيتم استخراج الملفات المحذوفة أيضاً.
كما هو موضح أعلاه، يمكن العثور على الملفات المحذوفة في السرد بتقديم -d:
$ fatcat disk.img -l / -d
f 24/10/2013 12:13:24 delete_me.txt c=5764 s=16 (16B) d
يمكنك الاستكشاف وتحديد ملف أو دليل محذوف مثير للاهتمام.
لاستعادة ملف محذوف، استخدم ببساطة -r لقراءته. لاحظ أن الملف الناتج سيتم قراءته بشكل متتابع من نظام FAT الأصلي وقد يكون تالفاً.
لاستعادة دليل محذوف، لاحظ رقم عنقوده واستخرجه كما هو موضح أعلاه:
# إذا كان عنقود الدليل المحذوف هو 71829
fatcat disk.img -x output/ -c 71829
انظر أيضاً: درس استعادة الملفات المحذوفة
بافتراض أن قرصك يحتوي على قطاعات تالفة، قد ترغب في القيام بعملية استرداد عليه.
النصيحة الأولى هي عمل نسخة من بياناتك باستخدام ddrescue، وحفظ قرصك على قرص آخر أو في ملف سليم.
عندما تكون القطاعات تالفة، سيتم استبدال بايتاتها بأصفار في صورة ddrescue.
طريقة أولى هي محاولة استكشاف صورتك باستخدام -l كما هو موضح أعلاه والتحقق باستخدام -i لمعرفة ما إذا كان fatcat يتعرف على القرص كنظام FAT.
ثم يمكنك محاولة إلقاء نظرة على -2، للتحقق مما إذا كانت جداول تخصيص الملفات (FAT tables) مختلفة، وإذا كانت تبدو قابلة للدمج. من المحتمل جداً أن تكون قابلة للدمج، في هذه الحالة، يمكنك تجربة -m لدمج جداول FAT، لا تنس عمل نسخة احتياطية قبل ذلك (انظر أدناه).
عندما يكون نظام الملفات لديك تالفاً، توجد ملفات وأدلة مفقودة نسميها "يتيمة" (orphaned)، لأنه لا يمكن الوصول إليها من النظام العادي.
يوفر لك fatcat خياراً للعثور على هذه العُقد، حيث سيقوم بتحليل آلي لنظامك واستكشاف القطاعات المخصصة لنظام الملفات لديك، ويتم ذلك باستخدام -o.
ستحصل على قائمة بالأدلة والملفات، مثل:
There is 2 orphaned elements:
Directory clusters 4592 to 4592: 2 elements, 49B
File clusters 4611 to 4611: ~512B
يمكنك بعد ذلك استخدام -L و -R مباشرة لإلقاء نظرة على تلك الملفات والأدلة:
$ fatcat disk.img -L 4592
Listing cluster 4592
Cluster: 4592
d 23/10/2013 17:45:06 ./ c=4592
d 23/10/2013 17:45:06 ../ c=0
f 23/10/2013 17:45:22 poor_orphan.txt c=4601 s=49 (49B)
لاحظ أن الملفات اليتيمة لها حجم غير معروف، وهذا يعني أنه إذا قرأتها، ستحصل على ملف بحجم مضاعف لحجم العناقيد.
انظر أيضاً: درس الملفات اليتيمة
يمكنك استخدام fatcat لاختراق نظام ملفات FAT لديك
العلامة -i ستوفر لك الكثير من المعلومات حول نظام الملفات:
fatcat disk.img -i
سيعطيك هذا بيانات الرأس مثل أحجام القطاعات، أحجام FAT، تسمية القرص، إلخ. سيقوم أيضاً بقراءة جدول FAT لتقدير استخدام القرص.
يمكنك أيضاً الحصول على معلومات حول عنقود معين باستخدام -@:
fatcat disk.img -@ 1384
سيعطيك هذا عنوان العنقود (إزاحة العنقود في نظام الملفات) وقيمة العنقود التالي في جدولي FAT.
يمكنك استخدام -b لعمل نسخة احتياطية من جداول FAT لديك:
fatcat disk.img -b backup.fats
واستخدام -p لإعادة كتابتها:
fatcat disk.img -p backup.fats
يمكنك الكتابة إلى جداول FAT باستخدام -w و -v:
fatcat disk.img -w 123 -v 124
سيؤدي هذا إلى كتابة 124 كقيمة للعنقود التالي لـ 123.
يمكنك أيضاً اختيار الجدول باستخدام -t، 0 يعني كلا الجدولين، 1 يعني الأول و 2 يعني الثاني.
يمكنك إلقاء نظرة على الفرق بين FATs باستخدام -2:
# مشاهدة الفرق
$ fatcat disk.img -2
Comparing the FATs
FATs are exactly equals
# كتابة 123 في العنقود 500 فقط في FAT1
$ fatcat disk.img -w 500 -v 123 -t 1
Writing next cluster of 500 from 0 to 123
Writing on FAT1
# مشاهدة الفرق
$ fatcat disk.img -2
Comparing the FATs
[000001f4] 1:0000007b 2:00000000
FATs differs
It seems mergeable
يمكنك دمج FATs باستخدام -m. لكل إدخال مختلف في الجدول، إذا كان أحدهم صفراً والآخر غير صفر، سيتم اختيار القيمة غير الصفرية:
$ fatcat disk.img -m
Begining the merge...
Merging cluster 500
Merge complete, 1 clusters merged
انظر أيضاً: درس إصلاح FAT
يمكن لـ Fatcat إصلاح الأدلة التي تحتوي على سلسلة FAT تالفة.
للقيام بذلك، استخدم -f. سيتم تجول شجرة نظام الملفات بالكامل وسيتم إصلاح الأدلة غير المخصصة في FAT ولكن يمكن لـ fatcat قراءتها في FAT.
يمكنك الحصول على معلومات حول إدخال باستخدام -e:
fatcat disk.img -e /hello.txt
سيؤدي هذا إلى عرض عنوان الإدخال (وليس الملف نفسه)، مرجع العنقود، وحجم الملف (إذا لم يكن دليلاً).
يمكنك إضافة العلامة -c [عنقود] لتغيير عنقود الإدخال والعلامة -s [حجم] لتغيير حجم الإدخال.
انظر أيضاً: درس المرح مع FAT
يمكنك استخدام -k للبحث عن مرجع عنقود.
يمكنك مسح بيانات القطاعات غير المخصصة، باستخدام الأصفار باستخدام -z، أو باستخدام بيانات عشوائية باستخدام -S.
على سبيل المثال، ستصبح الملفات المحذوفة بعد ذلك غير قابلة للقراءة.
هذا البرنامج مرخص بموجب رخصة MIT.