إخفاء المعلومات في نظام ملفات الأقراص الضوئية

أثناء البحث عن معلومات مثيرة للاهتمام حول إخفاء المعلومات ، صادفت مقالة مسلية عن علم إخفاء المعلومات في نظام الملفات ، وبعد مرور بعض الوقت ، قادني إلى فكرة إنشاء إخفاء المعلومات في نظام ملفات الأقراص الضوئية.

ربما في هذه الأيام ، لم يتبق من الأشخاص الذين يستخدمون الأقراص في الحياة اليومية تقريبًا ، لأن هناك خيارًا أكثر جدارة في مواجهة محركات أقراص فلاش ليحلوا محلهم.

بعد قليل من التفكير ، قررت أنه لا يزال من الممكن العثور على بعض الأقراص ، على سبيل المثال ، داخل نظام الملفات ، يمكنك إخفاء بعض المعلومات السرية ثم نقلها إلى أخرى حتى لا يشك أحد في أي شيء.

هذا هو ما سنفعله ، وهو: سنستخدم مكتبة الثعبان ، والتي سوف تساعدنا على تشفير المعلومات من ملف نصي ، ثم إخفاؤها في أحشاء القرص لدينا.

صورة

ولكن قبل أن نبدأ ، دعونا أولاً نلقي نظرة على بعض الأشياء الصغيرة ، ونعرف أيضًا مفهوم القرص الضوئي.

ما هو القرص البصري؟


القرص البصري (Eng. Optical Optical) - وهو الاسم الجماعي لوسائط التخزين المصنوع في شكل أقراص ، تتم القراءة باستخدام الإشعاع الضوئي (الليزر).

صورة

يتم تقديم كل قرص على جهاز كمبيوتر بتنسيق معين في شكل صورة تحتوي على جميع المعلومات وهيكل القرص ، ويستخدم للعمل مع المعلومات دون وسيط بصري ، وكذلك لأرشفة البيانات على الوسائط الصلبة
التنسيق القياسي للأقراص الضوئية هو iso9660 ، ولكن لا يزال هناك
ضع في اعتبارك أن الصورة تحتوي على معلومات أقل من القرص المضغوط الأصلي. يحتوي القرص على معلومات الخدمة ، والتي يمكن ، على وجه الخصوص ، استخدامها للحماية من النسخ. سوف نعمل مع ISO9660.

نظرة من الداخل


والآن ، دعونا ننظر إلى بنية iso9660 من الداخل ، يمكنك العثور على معلومات مفصلة هنا ، هنا وهنا ، ولمن يعرف الإنجليزية أيضًا هنا . من نفسي ، أنا فقط أقول أنه يتكون بشكل أساسي من واصفين : سجل التمهيد وموصف حجم الصوت الأساسي (PVD) ، يمكنك فتح أي ISO في 010editor وترى بنفسك.

صورة

يمكن استخدام Boot Boot من قبل الأنظمة التي تحتاج إلى تهيئة العديد من أنواع البيانات قبل إتاحة القرص ، على الرغم من أن ISO 9660 لا يشير إلى المعلومات الموجودة في Boot Boot أو كيفية استخدامها على الإطلاق.

PVD هي نقطة الانطلاق في تحديد iso9660 ، يبدو كما يلي:

صورة

صورة

لمحبي المخططات:

صورة

ستجد المزيد من المعلومات هنا.

ونحن نتحرك.

التهيئة في هيكل ISO


سوف نعمل مع الدليل الجذر ، حيث سنقوم بإنشاء الدلائل الخاصة بنا وإضافة الملفات الضرورية.

لهذا سوف نستخدم مكتبة pycdlib ، يمكنك التعرف عليها على الرابط التالي .

دعنا ننتقل إلى كتابة البرنامج ، لكن من لا يريد أن يذهب خطوة بخطوة ، ستجد الكود المصدري على الرابط إلى مستودع التخزين في جيثب:

#     import base64 import pycdlib 

إعداد الملفات مع النص


الآن نحن بحاجة إلى إعداد ملفاتنا ، والتي سوف نسقط في هيكل ISO لدينا.

مسار العمل على النحو التالي:

  1. نأخذ النص المصدر في ملفات معينة ونقرأه في متغيرات - لا شيء يمنعنا من أخذ الكثير من النص ، لكن في العرض التوضيحي أخذت جملتين فقط في كل ملف - سنواصل معالجة هذه المتغيرات
  2. بعد أن نظرنا في الجمل ، نحتاج إلى تشفير المحتويات ، وسوف نشفّر باستخدام base64
  3. نكتب المحتوى المشفر في ملفات جديدة تسمى UP و DOWN . تسمى الملفات لأنني قررت إعادة الترتيب بطريقة تتم كتابة جزء واحد من الملف الأول وجزء واحد من الملف الثاني (أي الأجزاء العليا) في UP ، وفي جزء 2 من الملف الأول و 2 جزء من الملف الثاني ( أي الأجزاء السفلية)

 with open('/home/ul/stegist1.txt','rb') as stegist1:#   for line1 in stegist1.readlines(2): print(line1)#   1  for line2 in stegist1.readlines(2): print(line2)#   1  stegist1.close() enc_line1=base64.b64encode(line1)#     base64 enc_line2=base64.b64encode(line2) with open('/home/ul/stegist2.txt','rb') as stegist2: for line3 in stegist2.readlines(2):#   2  print(line3) for line4 in stegist2.readlines(2):#   2  print(line4) stegist2.close() enc_line3=base64.b64encode(line3)#   print(enc_line3) enc_line4=base64.b64encode(line4) print(enc_line4) with open('/home/ul/UP.txt','ab') as up:#  UP    up.write(enc_line1) up.write(enc_line3) with open('/home/ul/DOWN.txt','ab') as down:#  DOWN    down.write(enc_line2) down.write(enc_line4) 

إخفاء


حان الوقت للانتقال إلى مكتبة pycdlib ذاتها التي تحدثت عنها في البداية. ليس من الصعب التعامل معها: فنحن ننشئ كائنًا نضيف من خلاله العديد من الملفات والدلائل إلى الداخل.

 iso=pycdlib.PyCdlib() #   PyCdlib iso.new(rock_ridge='1.09')#  rockridge(    iso   ) iso.add_directory(iso_path='/A1',rr_name='a1')#  (  ) iso.add_directory(iso_path='/B1',rr_name='b1') iso.add_directory(iso_path='/B1/B2',rr_name='b1b2') iso.add_directory(iso_path='/A1/A2',rr_name='a1a2') iso.add_file('/home/ul/stegistup.txt', iso_path='/A',rr_name='a')#   up iso.add_file('/home/ul/stegistdown.txt', iso_path='/B',rr_name='b')#   down iso.write('papastegisto.iso')#  iso () 

كما نرى ، لقد كتب نصنا بنجاح

صورة

أريد أن ألاحظ أنه يمكننا إنشاء مسار معين ، على سبيل المثال / A ، إما ملف أو مجلد.

إذا حددنا أولاً إنشاء دليل في / A ، ثم حددنا إنشاء ملف في / A ، فسوف يتم عرض رسالة خطأ ، ولن يكون الأمر مماثل لوضع الملف في مجلد.

ملحقات لنظام ملفات ISO9660


هناك امتدادان رئيسيان لنظام الملفات iso: RockRidge و Joilet .

RockRidge


هذا امتداد لنظام ملفات ISO 9660 مصمم لتخزين سمات الملفات المستخدمة في أنظمة التشغيل POSIX (أي متوافق مع يونكس).

تتم كتابة ملحقات Rock Ridge عبر نظام الملفات ISO 9660 بحيث يمكن قراءة قرص Rock Ridge البصري بواسطة برنامج مصمم للعمل مع ISO 9660.

مزيد من التفاصيل
قد يقوم Rock Ridge بتخزين المعلومات الإضافية التالية حول محتويات القرص:

  • أسماء الملفات الطويلة (حتى 255 حرفًا) ؛
  • قيود أقل على استخدام الأحرف في أسماء الملفات ؛
  • هيكل دليل التعشيش التعسفي.
  • لكل سمات الملف مكتوبة:
  • أذونات الملفات ، بما في ذلك حقول uid و gid ؛
  • عدد الروابط الثابتة إلى الملف ؛
  • أوقات الإنشاء ، التعديل ، الوصول ، تغيير السمات ، إلخ.
  • الملفات الخاصة المدعومة:
  • ملفات متفرقه
  • روابط رمزية
  • ملفات الجهاز
  • ملفات المقبس
  • ملفات FIFO.

يتم تسجيل هذه البيانات في الدلائل الخاصة ، وعادة ما تكون أسماءهم مخفية.

Joilet


هذا امتداد لنظام ملفات ISO 9660 مصمم لتخفيف قيود اسم الملف التي فرضتها ISO 9660. تم تطوير المواصفات بواسطة Microsoft وتم دعمها بواسطة جميع إصدارات Microsoft Windows منذ نظامي التشغيل Windows 95 و Windows NT 4.0.
بشكل افتراضي ، يتم استخدامه على جميع وسائط الأقراص المضغوطة مع البيانات الصادرة بعد عام 1995.

مزيد من التفاصيل
تقدم Joliet مجموعة إضافية من أسماء الملفات. الأسماء تصل إلى 64 حرفًا Unicode ويتم تخزينها بترميز UCS-2. لتخزينها ، يتم استخدام رأس إضافي خاص (Descript Volume Descriptor ، SVD) ، والذي يتم تجاهله دون قيد أو شرط من قبل البرامج المتوافقة مع ISO 9660 ، وبالتالي ضمان التوافق مع الإصدارات السابقة.

معظم منصات البرامج الحالية ، بما في ذلك Microsoft Windows و Linux و Mac OS X و FreeBSD ، قادرة على قراءة وسائط التخزين من خلال ملحق نظام الملفات Joliet ، والذي يسمح لك بتبادل الملفات بين أنظمة التشغيل هذه حتى عند استخدام الحروف الهجائية غير اللاتينية (مثل العربية واليابانية والسيريلية) وهو ما لم يكن ممكنا مع ISO 9660 المعتادة.

في الواقع ، يوجد أيضًا ملحق 3 لنظام ملفات ISO ، ويسمى روميو .

هذا امتداد ISO 9660 لـ MS Windows 95 ، ولا توجد معلومات كافية عنه على الإنترنت ، وعلى الأرجح لا يستخدم هذا التمديد في أي مكان آخر.

يمكنك العثور على مزيد من المعلومات حول الامتدادات وأنظمة الملفات على CD / DVD هنا ، والآن دعنا نعود إلى برنامجنا.

يبدو أن التعليمات البرمجية الناتجة لترميز المعلومات من ملف ووضع الملفات التي تحتوي على معلومات مشفرة في iso كما يلي:

 #     import base64 import pycdlib #   with open('/home/ul/stegist1.txt','rb') as stegist1: #  for line1 in stegist1.readlines(2): print(line1) #  for line2 in stegist1.readlines(2): print(line2) #  enc_line1=base64.b64encode(line1) print(enc_line1) enc_line2=base64.b64encode(line2) print(enc_line2) with open('/home/ul/stegist2.txt','rb') as stegist2: #  for line3 in stegist2.readlines(2): #  print(line3) for line4 in stegist2.readlines(2): #  print(line4) enc_line3=base64.b64encode(line3) #  print(enc_line3) enc_line4=base64.b64encode(line4) print(enc_line4) with open('/home/ul/UP.txt','ab') as up: #  UP    up.write(enc_line1) up.write(enc_line3) with open('/home/ul/DOWN.txt','ab') as down: #  DOWN    down.write(enc_line2) down.write(enc_line4) #   iso iso=pycdlib.PyCdlib() iso.new(rock_ridge='1.09') iso.add_directory(iso_path='/A1',rr_name='a1') iso.add_directory(iso_path='/B1',rr_name='b1') iso.add_directory(iso_path='/B1/B2',rr_name='b1b2') iso.add_directory(iso_path='/A1/A2',rr_name='a1a2') iso.add_file('/home/ul/stegistup.txt', iso_path='/A',rr_name='a') iso.add_file('/home/ul/stegistdown.txt', iso_path='/B',rr_name='b') iso.write('papastegisto.iso') 

وأذكرك أن الرمز الكامل متاح أيضًا على الرابط الخاص بـ github
الآن دعنا ننتقل إلى الجزء الأخير - اكتب iso الناتجة لدينا على القرص
يمكنك تسجيل ما تريد ، سأستخدم Nero 7
سوف نستخدم CD-R
CD-ROM ، CD-R و CD-RW
وهي تختلف في أن القرص المضغوط هو قرص للقراءة فقط ، ولا يمكن كتابة أي شيء هناك. CD-R و CD-RW هي أقراص قابلة للتسجيل. CD-R يسمح لك بالكتابة مرة واحدة على القرص ، CD-RW - بشكل متكرر.

ولكن ماذا عن DVD؟

الفرق الرئيسي من CD-R / RW هو مقدار البيانات التي يمكن كتابتها على قرص DVD بحجم 4.7 جيجا بايت مقابل 650،700 ميجابايت. تدعم بعض تنسيقات DVD ما يصل إلى 13 وحتى 17 جيجابايت
مزيد من المعلومات القرص

كما نرى ، تمت كتابة البرنامج بنجاح على القرص.

صورة

الآن يمكننا نقله على القرص للأشخاص الذين نريدهم.

فك


لماذا سنفعل كل هذا إذا لم يمكن فك تشفير المعلومات ، أليس كذلك؟

إذا كنت مهتمًا بهذه الطريقة ، يمكنك كتابة برنامج يقوم باستخراج الملفات المرفقة وفك تشفيرها ، وسيكون بالضبط ما سيستخدمه الأشخاص لديك.

وهذا كل شيء. كانت مهمتي هي توضيح إحدى الطرق الممكنة لإخفاء المعلومات ، باستخدام الأقراص التي يبدو أنها غرقت في غياهب النسيان.

صورة

سأكون سعيدًا لرؤية اقتراحاتك والإضافات والتصحيحات والتعليقات الأخرى.

ملاحظة: أود أن أعرب عن الشكر الخاص ل PavelMSTU على المشاورات والركلات التحفيزية.

Source: https://habr.com/ru/post/ar449016/


All Articles