
لينكس للهاكرز #5: ضغط الملفات، ونسخة الطب الشرعي التي لا يفلت منها ملف محذوف
Murtaja
🧭 قبل أن نبدأ
في هذه الحلقة الخامسة من سلسلة Linux Basics for Hackers نغطي الفصل التاسع: الضغط والأرشفة، والفصل العاشر: إدارة نظام الملفات وأجهزة التخزين. فصلان قد يبدوان "إداريين" بحتين، لكنهما يخفيان بداخلهما واحدة من أقوى أدوات الطب الشرعي الرقمي (Digital Forensics) التي سنكتشفها معًا: أداة تنسخ حتى الملفات التي ظننت أنك حذفتها للأبد.
🗜️ الفصل التاسع: الضغط والأرشفة (Compressing and Archiving)
📉 نوعا الضغط: ما الذي يهم الهاكر فعلًا؟
يبدأ الكاتب بتوضيح مفهوم أساسي: هناك ضغط فاقد (Lossy) وضغط غير فاقد (Lossless).
الضغط الفاقد (مثل صيغ
.mp3و.jpg) يقلّص حجم الملف بشكل كبير جدًا، لكنه يُضحّي بجزء من البيانات الأصلية — تضحية غير محسوسة في الصور والصوت، لكنها غير مقبولة إطلاقًا عندما يتعلق الأمر بسكربت أو مستند يجب أن يبقى مطابقًا للأصل حرفًا بحرف.
لهذا السبب، يركّز الفصل بالكامل على الضغط غير الفاقد (Lossless)، لأنه — كما يقول الكاتب — بالنسبة للهاكر، سلامة البيانات أهم من نسبة الضغط.
📦 tar: تجميع الملفات في أرشيف واحد
قبل الضغط، عادة نحتاج أولًا "تجميع" عدة ملفات في ملف واحد باستخدام tar (اختصار لـ Tape Archive، إرث من أيام الشرائط المغناطيسية):
kali > tar -cvf HackersArise.tar hackersarise1 hackersarise2 hackersarise3
c= إنشاء (create)v= تفصيلي (verbose)، يعرض أسماء الملفات أثناء العمليةf= يخبر الأمر أن ما يليه هو اسم الملف الناتج
ملاحظة مثيرة للاهتمام: حجم ملف tar الناتج غالبًا أكبر من مجموع الملفات الأصلية بسبب "الحمل الإضافي" (Overhead) الذي يضيفه tar لتنظيم الأرشيف — فرق يصبح غير ملحوظ كلما كبرت الملفات.
لعرض محتويات الأرشيف دون استخراجها:
kali > tar -tvf HackersArise.tar
ولاستخراجها فعليًا:
kali > tar -xvf HackersArise.tar
🤏 ثلاث أدوات لضغط الأرشيف
بعد التجميع، نضغط الملف الناتج لتقليل حجمه فعليًا. يقدم الفصل ثلاث أدوات بخصائص مختلفة:
| الأداة | الامتداد | الخصائص |
|---|---|---|
gzip | .tar.gz | الأكثر استخدامًا، توازن جيد بين السرعة والحجم |
bzip2 | .tar.bz2 | الأبطأ، لكن ينتج أصغر حجم ملف |
compress | .tar.Z | الأسرع، لكن ينتج أكبر حجم ملف، الأقل استخدامًا اليوم |
مثال عملي بالأرقام يقدمه الكاتب على نفس الملف (40,960 بايت بعد التجميع بـ tar):
- بعد
gzip: 3,299 بايت - بعد
bzip2: 2,081 بايت (الأصغر!) - بعد
compress: 5,476 بايت (أكثر من ضعف bzip2)
لماذا يهمّك أنت كهاكر معرفة الأدوات الثلاث كلها، رغم أن واحدة منها كافية؟ يوضح الكاتب:
"The main reason you, as a budding hacker, should know all three methods is that when accessing other tools, you will run into various types of compression." — "السبب الرئيسي لضرورة معرفتك بالطرق الثلاث كهاكر ناشئ هو أنك عند التعامل مع أدوات أخرى، ستصادف أنواعًا مختلفة من الضغط."
بمعنى آخر: لن تختار أنت دائمًا صيغة الضغط، بل ستُضطر أحيانًا للتعامل مع ملف مضغوط بصيغة معينة وصلك من مصدر آخر — والاستعداد لكل الاحتمالات جزء من الاحترافية.
🔬 dd: النسخة التي لا يفلت منها شيء
هنا يصل الفصل إلى أهم أداة فيه على الإطلاق، والتي يصفها الكاتب بنفسه بأنها "تقف فوق البقية":
"Within the world of information security and hacking, one Linux archiving command stands above the rest in its usefulness. The dd command makes a bit-by-bit copy of a file, a filesystem, or even an entire hard drive... even deleted files are copied." — "في عالم أمن المعلومات والاختراق، يوجد أمر أرشفة واحد في لينكس يتفوق على البقية من حيث الفائدة. أمر
ddينشئ نسخة بت-ببت (Bit-by-Bit) من ملف، أو نظام ملفات، أو حتى قرص صلب كامل... حتى الملفات المحذوفة تُنسخ."
هذه هي النقطة الجوهرية: أدوات النسخ العادية مثل cp تنسخ فقط ما هو "منطقيًا" موجود على القرص، لكن dd ينسخ القرص فيزيائيًا بت لبت، أي أنه يلتقط حتى البيانات التي حُذفت لكنها لم تُطمَس فعليًا بعد. هذا يجعله أداة أساسية على وجهين متعاكسين تمامًا:
- للهاكر المهاجم: بعد السيطرة على نظام هدف، يمكنه نسخ القرص الصلب بالكامل — بما في ذلك بيانات ظنّ صاحبها أنها حُذفت.
- لمحقق الطب الشرعي الرقمي: يستخدم نفس الأداة بالضبط لأخذ نسخة كاملة من قرص هاكر مشتبه به، بحثًا عن أدلة قد تكون "محذوفة" ظاهريًا فقط.
الصيغة الأساسية:
dd if=inputfile of=outputfile
مثال لنسخ قرص USB بالكامل:
kali > dd if=/dev/sdb of=/root/flashcopy
يمكن تسريع العملية وتحسين موثوقيتها بخيارين:
kali > dd if=/dev/media of=/root/flashcopy bs=4096 conv:noerror
حيث bs=4096 يحدد حجم الكتلة المنسوخة في كل مرة (أسرع من الافتراضي 512 بايت)، وnoerror تجعل العملية تستمر حتى لو واجهت أخطاء قراءة.
⚠️ تذكير: أمر
ddبطيء جدًا مقارنة بأدوات النسخ العادية، ولا يجب استخدامه للنسخ اليومي الروتيني — دوره الحقيقي هو النسخ الفيزيائي الدقيق عند الحاجة لتحليل جنائي رقمي أو استرجاع بيانات حساسة.
💾 الفصل العاشر: إدارة نظام الملفات وأجهزة التخزين (Filesystem and Storage Device Management)
🗃️ مجلد /dev: كل جهاز هو ملف
يبدأ الفصل بفكرة تلخّص فلسفة لينكس بأكملها: كل جهاز متصل بالنظام يُمثَّل بملف داخل مجلد /dev. عند تنفيذ:
kali > ls -l /dev
سترى أسماء مثل sda, sda1, sdb, cdrom، وغيرها. نظام التسمية له منطق واضح:
sd: قرص SATA أو SCSI (الأقراص الحديثة).- الحرف بعدها (a, b, c...): ترتيب القرص نفسه — أول قرص هو
sda، الثانيsdb، وهكذا. - الرقم بعد الحرف: رقم التقسيم (Partition) على ذلك القرص —
sda1هو التقسيم الأول من القرص الأول.
🔤 نوعا الأجهزة: Character وBlock
كل سطر في /dev يبدأ إما بـ c (character device، أجهزة تتبادل البيانات حرفًا حرفًا مثل الفأرة ولوحة المفاتيح) أو b (block device، أجهزة تتبادل البيانات على شكل كتل كبيرة مثل الأقراص الصلبة، لأنها تحتاج سرعة نقل أعلى).
لعرض الأقراص وتقسيماتها بشكل شجري أوضح دون الحاجة لصلاحيات root:
kali > lsblk
🔗 التركيب (Mounting): كيف "يرى" لينكس قرصًا جديدًا؟
هذا من أهم المفاهيم التي تربك القادمين من ويندوز أو ماك. في لينكس، الاتصال الفيزيائي لا يعني بالضرورة أن الجهاز أصبح متاحًا للاستخدام. يجب "تركيبه" (Mount) منطقيًا في نقطة معينة ضمن شجرة الملفات — عادة /mnt (تركيب يدوي) أو /media (تركيب تلقائي).
kali > mount /dev/sdb1 /mnt
ولإزالة القرص بأمان (وهو ما نعرفه في ويندوز/ماك بـ"إخراج القرص" Eject):
kali > umount /dev/sdb1
(لاحظ: الأمر umount وليس unmount — تفصيل صغير لكنه فخ شائع للمبتدئين).
🕵️ لماذا يهم الهاكر معرفة نوع نظام الملفات على قرص؟
يذكر الكاتب تفصيلًا مهمًا جدًا من منظور التحقيق الجنائي الرقمي: عند فحص قرص USB بأداة fdisk -l، قد تجد أنه بصيغة NTFS أو HPFS أو exFAT — وهذه أنظمة ملفات خاصة بويندوز وماك، لا بلينكس أصلًا (الذي يستخدم عادة ext2/ext3/ext4). معرفة نوع نظام الملفات قد تكشف على أي نظام تشغيل تم تنسيق القرص أصلًا — معلومة قيّمة جدًا أثناء أي تحقيق.
📊 مراقبة القرص: df وfsck
df(disk free): يعرض مساحة القرص المستخدمة والمتاحة لكل الأقراص المُركَّبة:
kali > df
fsck(filesystem check): يفحص نظام الملفات بحثًا عن أخطاء ويحاول إصلاحها تلقائيًا. الشرط الأهم: يجب فك تركيب القرص أولًا (umount) قبل فحصه، وإلا سيرفض الأمر العمل:
kali > umount /dev/sdb1
kali > fsck -p /dev/sdb1
💎 اقتباسات هذا الجزء تستحق التوقف عندها
- "بالنسبة للهاكر، سلامة البيانات أهم من نسبة الضغط." — درس مهم في أن الكفاءة ليست دائمًا الأولوية القصوى؛ الدقة أحيانًا أهم.
- "أمر
ddينشئ نسخة بت-ببت... حتى الملفات المحذوفة تُنسخ." — الجملة التي تلخّص لماذا لا شيء يُحذف حقًا على مستوى القرص الفيزيائي. - "الاتصال الفيزيائي لا يعني بالضرورة أن الجهاز متاح منطقيًا." — فارق جوهري بين لينكس وأنظمة التشغيل الأخرى يستحق أن يُفهم جيدًا.
🎯 خلاصة الجزء
في هذين الفصلين تعلمنا كيف نُجهّز ملفاتنا للنقل والتخزين بكفاءة (tar، gzip، bzip2)، وكيف يُدير لينكس أجهزة التخزين ماديًا ومنطقيًا (تسمية الأقراص، mount/umount، فحص الأخطاء). لكن النجم الحقيقي في هذه الحلقة هو أمر dd — أداة بسيطة في الصياغة، لكنها تحمل قوة هائلة: القدرة على رؤية ما "اختفى" ظاهريًا فقط. هذا مثال ممتاز على فكرة تتكرر في الكتاب كله: أبسط الأدوات غالبًا ما تكون الأخطر في يد من يفهمها جيدًا.
في الحلقة القادمة ننتقل إلى الفصل الحادي عشر: نظام السجلات (Logging)، والفصل الثاني عشر: استخدام الخدمات وإساءة استخدامها — حيث نتعلم كيف "يتذكر" النظام كل ما يحدث فيه، وكيف تُخفي أثرك، وكيف تستغل خدمات شهيرة مثل Apache وMySQL وSSH. 🚀