الصفحة الرئيسية » howto » الأرقام السحرية الرموز السرية التي يخبئها المبرمجون في جهاز الكمبيوتر الخاص بك

    الأرقام السحرية الرموز السرية التي يخبئها المبرمجون في جهاز الكمبيوتر الخاص بك

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

    ما هي الأرقام السحرية?

    تستخدم معظم لغات البرمجة نوعًا صحيحًا من 32 بتًا لتمثيل أنواع معينة من البيانات خلف الكواليس - داخليا يتم تخزين الرقم في ذاكرة الوصول العشوائي (RAM) أو استخدامها بواسطة وحدة المعالجة المركزية (32) والأصفار ، ولكن في شفرة المصدر سيتم كتابتها إما في تنسيق عشري عادي أو بتنسيق سداسي عشري يستخدم الأرقام من 0 إلى 9 والأحرف من A إلى F.

    عندما يريد نظام التشغيل أو أحد التطبيقات تحديد نوع الملف ، يمكن أن ينظر إلى بداية الملف الخاص بعلامة خاصة تشير إلى نوع الملف. على سبيل المثال ، قد يبدأ ملف PDF بالقيمة سداسي عشرية 0x255044462D312E33 ، التي تساوي "٪ PDF-1.3" بتنسيق ASCII ، أو يبدأ ملف ZIP بـ 0x504B ، والذي يساوي "PK" ، والذي ينحدر من الأداة المساعدة الأصلية PKZip. بالنظر إلى هذا "التوقيع" ، يمكن تحديد نوع الملف بسهولة حتى بدون أي بيانات وصفية أخرى.

    ملفات Java Class Compiled تبدأ بـ CAFEBABE

    يمكن استخدام "ملف" أداة Linux من المحطة الطرفية لتحديد نوع الملف - في الواقع ، فإنه يقرأ الأرقام السحرية من ملف يسمى "السحر".

    عندما يريد تطبيق استدعاء دالة ، يمكنه تمرير قيم إلى هذه الوظيفة باستخدام أنواع قياسية مثل الأعداد الصحيحة ، والتي يمكن التعبير عنها في شفرة المصدر بالتنسيق السداسي العشري. وينطبق ذلك بشكل خاص على الثوابت ، وهي معرفات يتم تعريفها بأسماء يمكن قراءتها على البشر مثل AUTOSAVE_INTERVAL ، ولكنها ترسم إلى قيم عدد صحيح فعلي (أو أي نوع آخر). لذا بدلاً من مبرمج يكتب قيمة مثل 60 في كل مرة يسمونها الدالة في التعليمات البرمجية المصدر ، يمكنهم استخدام ثابت AUTOSAVE_INTERVAL للحصول على إمكانية قراءة أفضل. (عادة ما يتم التعرف على الثوابت بسهولة لأنها مكتوبة بأحرف كبيرة).

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

    المرح مع الأرقام السحرية: بعض الأمثلة البارزة

    كل AppleScript ينتهي بـ FADEDEAD

    إذا ألقيت نظرة سريعة على الكود المصدري لـ Linux ، سترى أن استدعاء نظام _reboot () على Linux يتطلب أن يتم تمرير متغير "سحري" يساوي الرقم السداسي العشري 0xfee1dead. إذا حاول شيء ما استدعاء هذه الوظيفة دون تمرير هذه القيمة السحرية أولاً ، فسيؤدي ذلك إلى ظهور خطأ.

    المعرف الفريد العمومي (GUID) (المعرف الفريد العام) لقسم تمهيد نظام الإدخال والإخراج الأساسي (BIOS) في نظام تقسيم GPT هو 21686148-6449-6E6F-744E-656564454649 ، الذي يشكل سلسلة ASCII "Hah! IdontNeedEFI" ، وهي إشارة إلى حقيقة أن GPT ستستخدم عادةً في أجهزة الكمبيوتر التي حلت محل BIOS مع UEFI ، ولكن ليس بالضرورة أن يكون.

    اختارت مايكروسوفت الشهيرة 0x0B00B135 في شفرة المصدر الافتراضية تدعم جهاز Hyper-V المقدمة إلى Linux ، ثم قاموا بتغيير القيمة إلى 0xB16B00B5 ، وفي النهاية قاموا بتحويلها إلى رقم عشري قبل إزالتها من الكود المصدري بالكامل.

    تتضمن المزيد من الأمثلة الممتعة ما يلي:

    • 0xbaaaaaad - يستخدمه تسجيل الأعطال في iOS للإشارة إلى أن السجل هو stackshot للنظام بأكمله.
    • 0xbad22222 - يستخدمه تسجيل الأعطال في iOS للإشارة إلى أن تطبيق VoIP قد تم قتله بواسطة iOS نظرًا لأنه أساء التصرف.
    • 0x8badf00d - (Ate Bad Food) يتم استخدامه بواسطة سجلات الأعطال في iOS للإشارة إلى أن التطبيق استغرق وقتًا طويلاً لفعل شيء ما وتم قتله بسبب انتهاء مهلة المراقبة.
    • 0xdeadfa11 - (Dead Fall) الذي يستخدمه تسجيل الأعطال في iOS عند إنهاء أحد التطبيقات بواسطة المستخدم.
    • 0xDEADD00D - يستخدمه Android للإشارة إلى إحباط VM.
    • 0xDEAD10CC (القفل الميت) الذي يستخدمه تسجيل الأعطال في iOS عند قيام أحد التطبيقات بتأمين مورد في الخلفية.
    • 0xBAADF00D (Bad Food) المستخدمة من قبل الدالة LocalAlloc في Windows من أجل التصحيح.
    • 0xCAFED00D (مقهى المتأنق) المستخدمة من قبل ضغط حزمة 200 في جاوة.
    • 0xCAFEBABE (Babe المقهى) المستخدمة من قبل Java كمعرف لملفات الفئة المترجمة
    • 0x0D15EA5E (المرض) المستخدمة من قبل نينتندو على جيم كيوب و Wii للإشارة إلى أن الحذاء العادي حدث.
    • 0x1BADB002 (1 التمهيد سيئة) المستخدمة من قبل مواصفات التشغيل المتعدد كرقم سحري
    • 0xDEADDEAD - يستخدمه Windows للإشارة إلى تعطل التصحيح الذي تم بدء تشغيله يدويًا ، والمعروف باسم Blue Screen of Death.

    هذه ليست الوحيدة هنا ، بالطبع ، ولكن مجرد قائمة قصيرة من الأمثلة التي تبدو ممتعة. هل تعرف المزيد؟ قل لنا في التعليقات.

    رؤية أمثلة لنفسك

    يمكنك رؤية المزيد من الأمثلة عن طريق فتح محرر سداسي عشر ثم فتح أي عدد من أنواع الملفات. هناك الكثير من برامج تحرير عرافة مجانية لنظام التشغيل Windows أو OS X أو Linux - فقط تأكد من أنك حذرة عند تثبيت البرامج المجانية حتى لا تصاب بفيروسات برامج التجسس أو برامج التجسس.

    وكمثال إضافي ، فإن صور الاسترداد لهواتف Android مثل ClockworkMod تبدأ بـ "ANDROID!" إذا تمت قراءتها بتنسيق ASCII.

    ملحوظة: لا تغير أي شيء أثناء النظر يمكن للمحررين عرافة كسر الأشياء!