شيفرة هذه الصفحة لم تبدأ العمل.

فتح index.html مباشرة من مجلد يمنع المتصفح من تحميل وحدات JavaScript، فلا يحدث شيء عند اختيار ملف. قدّم المجلد عبر HTTP بدلا من ذلك:

powershell -ExecutionPolicy Bypass -File serve.ps1

ثم افتح http://localhost:8080/.

البصمة والمجموع التحقّقي — MD5 وSHA-1 وSHA-256 وSHA-512

افحص تنزيلاً في مقابل الرقم الذي نشره الناشر، دون أن ترسله إلى أحد.

اللغة: العربية
عرض الشيفرة المصدرية
ملفاتك لا تُرفع أبدا. لا يوجد خادم.

المجموع التحقّقي حسابٌ على بايتات ملفك، وهو يجري هنا، في هذه الصفحة، على معالجك أنت. يُقرأ الملف من قرصك أربعة ميغابايتات في كل مرة وتُرمى كل قطعة ما إن تُحسَب، فلا يُجمَّع شيء في أي مكان أبداً — لا في الذاكرة، ولا على خادم قطعاً. ولا يقف في الطرف الآخر من هذه الصفحة خادم يُرسَل إليه ملف، حتى لو أراد شيء هنا ذلك.

فحص حي: جارٍ الفحص…

دون اتصال: جارٍ الفحص…

لا داعي لأن تصدّقنا: افتح أدوات المطوّر، وراقب تبويب «الشبكة»، ثم افحص ملفاً. لن يحمل أي طلب بايتاً منه، ولا اسمه، ولا حجمه. أو اقطع الاتصال بالإنترنت وافحص واحداً رغم ذلك.

1 اختر ملفاً

2 المجاميع التحقّقية

يُحسَب MD5 وSHA-256 افتراضياً، لأنهما بينهما يغطّيان كل صفحة تنزيل تقريباً. وأشِّر على غيرهما فيُقرأ الملف من جديد له — فالقراءة هي النصف البطيء، وكلُّ ما أُشِّر عليه قبل اختيار الملف يخرج من مرور واحد عليه.

أي المجاميع التحقّقية تُحسَب

3 افحصه في مقابل ما ينبغي أن يكون

الصق المجموع التحقّقي الذي أعطتك إياه صفحة التنزيل. والهيئة لا تهمّ — ست عشرية مجرّدة، أو خَرج sha256sum، أو ملفَّ SHA256SUMS كاملاً، أو هيئة SHA256 (file) = …، أو خاصية integrity من وسم نصّ برمجي. وأيُّ خوارزمية هي يتبع طولَها، فلا شيء يُختار.

عرض بصيغة Markdown

كيف تفحص تنزيلاً في مقابل مجموعه التحقّقي

  1. اختر الملف. أفلِته على المُنتقي، أو اختره يدوياً. يُقرأ من قرصك قطعاً مباشرة؛ ولا يُرسَل شيء إلى أي مكان أثناء ذلك، وليس ثمّة حجم تستسلم عنده الصفحة.
  2. دعه يُقرأ. يُحسَب MD5 وSHA-256 افتراضياً، في مرور واحد. ويعرض الشريط أين بلغ من الملف وبأي سرعة يمضي ذلك — وصورةُ قرص كبيرة تستغرق نحو ما كان سيستغرقه نسخُها، لأنه القدر نفسه من القراءة.
  3. الصق ما ينبغي أن يكون. أياً كان ما أعطتك إياه صفحة التنزيل، وبأي هيئة: ست عشرية مجرّدة، أو سطراً من خَرج sha256sum، أو ملفَّ SHA256SUMS كاملاً، أو خاصية integrity من وسم نصّ برمجي. وأيُّ خوارزمية هي يتبع طولَها، والمربع الصحيح يؤشّر على نفسه.
  4. اقرأ الجواب، لا اللون. تقول الصفحة في جملة هل هذا هو الملف الذي يصفه ذلك المجموع التحقّقي. فالمطابقة تعني أن البايتات مطابقة للتي قاسها الناشر. وعدمُها يعني أنها ليست كذلك، وأن التنزيل ينبغي أن يُجلَب من جديد قبل أن يُفتَح.
  5. خذ المجاميع التحقّقية إن احتجت إليها. انسخ واحداً، أو انسخها كلها، أو احفظها ملفاً نصّياً صغيراً بالهيئة الموسومة التي تكتبها أدوات سطر الأوامر، فتسافر الخوارزمية مع الرقم.

النسخة الأطول

كيف تفحص تنزيلاً في مقابل مجموعه التحقّقي كيف تفحص مجموعاً تحقّقياً من نوع MD5 أو SHA-256 على Windows وmacOS وLinux أو في متصفحك، وماذا تثبت المطابقةُ فعلاً، والخطأُ الذي يجعل التمرين كلَّه بلا معنى.

أسئلة

هل يُرفع ملفي إلى أي مكان؟

لا. يُقرأ من قرصك بمتصفحك أنت ويُبصَم على معالجك أنت، أربعة ميغابايتات في كل مرة. ولا جانب خادمَ لهذه الأداة، و Content-Security-Policy الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به — وليس واحد منها لنا. اقطع الاتصال بالشبكة وستظل تعمل.

هل ثمّة حدّ للحجم؟

لا. فالملف لا يُحفَظ كاملاً أبداً: يُقرأ قطعاً وتُحسَب كل قطعة وتُسقَط، فصورةُ قرص بأربعين غيغابايتاً تستعمل الميغابايتات القليلة نفسها التي يستعملها ملف نصّي. والذي تكلّفه هو الوقت، والصفحة تقول لك كم وهي تمضي.

وهذا هو سبب كتابة الخوارزميات هنا بدل مناولتها إلى crypto.subtle.digest الخاصة بالمتصفح، وهي أسرع. فذلك الاستدعاء يأخذ الرسالة كلها في مخزن واحد ولا سبيل إلى إطعامه ملفاً قطعاً، فاستعمالُه كان سيضع أكبر ملف تستطيع فحصه تحت رحمة قدر الذاكرة الذي يُسمَح لهذا التبويب به. وعلى هاتف ذلك بضع مئات من الميغابايتات، والملف الذي يريد الناس فحصه أكثر من غيره صورةُ قرص.

طابق المجموع التحقّقي. فماذا أثبت ذلك فعلاً؟

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

فهو يثبت أن التنزيل لم يُبتَر ولم يُفسده قرص معطوب ولم يُستبدَل به شيء في الطريق. ولا يثبت أن الملف آمن، لأن الناشر يستطيع قياس برمجية خبيثة بالدقة نفسها التي يقيس بها أي شيء. ويثبت القليل جداً إن كان المجموع التحقّقي جاء من الصفحة نفسها، عبر الاتصال نفسه، الذي جاء منه الملف: فمن استطاع تغيير أحدهما استطاع تغيير الآخر. والمجموع التحقّقي أثمن ما يكون حين يصلك بطريق آخر — ملفُّ SHA256SUMS موقَّع، أو إعلانُ إصدار من توزيعة، أو مرآةٌ ثانية، أو مدير حزم يعرفه أصلاً.

لم يطابق. فماذا الآن؟

نزِّله من جديد أولاً، من المكان نفسه. فالنقلُ المقطوع أو المستأنَف هو السبب الأشيع بفارق كبير، والنسخة الثانية تحسم الأمر عادةً.

فإن أعطت النسخة الثانية الجواب الخطأ نفسه، فتأكّد أنك تقارن بالسطر الصحيح: فصفحات الإصدار تسرد عدة ملفات، والمجموع التحقّقي لبناء ARM لن يطابق بناء x86 أبداً. ثم تأكّد من رقم الإصدار. فإن كان ذلك كله صحيحاً وما زال لا يطابق، فلا تفتح الملف. اجلبه من مرآة أخرى وقارن المجموعين التحقّقيين أحدهما بالآخر.

أيّها ينبغي أن أستعمل؟

أيّها نشره الناشر. فمغزى العملية المقارنةُ برقمه، ولا تستطيع أن تختار رقمه نيابةً عنه.

وإن كنت تنتج مجموعاً تحقّقياً لا تفحص واحداً، فاستعمل SHA-256. فـ MD5 وSHA-1 مكسوران بالمعنى الذي يهمّ: إذ يمكن بناءُ ملفين مختلفين لهما البصمة نفسها عمداً، في ساعات على MD5 وبكلفة معتدلة على SHA-1. ولا يجعلهما ذلك عديمَي النفع في مقابل الحوادث — فالتنزيل المبتور لن يتصادم مع الأصل مصادفةً — لكنه يعني أن أياً منهما لا يستطيع أن يقول لك إن أحداً لم يعبث. أما SHA-384 وSHA-512 فلا بأس بهما ولا هما أحسن عملياً؛ وهما هنا لأن بعض المشاريع تنشرهما.

لماذا MD5 هنا أصلاً إن كان مكسوراً؟

لأنه ما زال هو المنشور. فالمرايا وتنزيلاتُ البرامج الثابتة وصفحاتُ برمجيات الجامعات وكثيرٌ جداً من مواقع المورّدين نشرت MD5 قبل عشرين سنة ولم تعاود النظر في الصفحة منذئذ، والأداةُ التي ترفض حساب واحد كانت سترفض الإجابة عن السؤال الذي جاء به زوّارها فعلاً.

والذي تستطيعه بدلاً من ذلك أن تقول كم يساوي الجواب، وهو ما تفعله الملاحظة التي بجانب مربع الاختيار. فـ MD5 الذي يطابق ما زال يستبعد تنزيلاً فاسداً. ولا يستبعد تنزيلاً متعمَّداً.

ما الهيئات التي أستطيع لصقها في حقل المقارنة؟

كلُّ الهيئات المعتادة، وهو يستنتج أيّها أيّ بنفسه.

ست عشرية مجرّدة، بمسافات فيها أو دونها. أو سطر من خَرج md5sum أو sha256sum، واسم الملف بعده. أو ملفُّ SHA256SUMS كامل بأربعين سطراً، فيكون السطر الذي يُسمّي ملفك هو المستعمَل. أو الهيئة BSD، SHA256 (disk.iso) = …. أو تسمية في المقدمة، كـ SHA-256: …. أو خاصية تكامل مورد فرعي، sha384-…، وهي base64 لا ست عشرية ويُفكّ ترميزها قبل المقارنة.

وأيُّ خوارزمية هي يأتي من طولها: 32 محرفاً ست عشرياً MD5، و40 SHA-1، و64 SHA-256، و96 SHA-384، و128 SHA-512. ولا اثنان منها بالطول نفسه، فلا شيء يُختار ولا شيء يُخطأ فيه.

هل سيعطي الجواب نفسه الذي يعطيه sha256sum أو certutil؟

نعم، بايتاً بايتاً. فهذه مواصفات دقيقة لها متجهات اختبار منشورة، وكل خوارزمية هنا تُفحَص في مقابل تلك المتجهات وفي مقابل تنفيذ نظام التشغيل نفسه في كل بناء.

والفرق الوحيد الذي ستراه العرض. فـ certutil -hashfile في Windows يطبع بالأحرف الكبيرة ويضع مسافات؛ وهذه الصفحة تطبع بالصغيرة، وهو ما يستعمله كل ناشر تقريباً. والمقارنة تتجاهل الاثنين، فالمجموع التحقّقي المنسوخ من certutil يطابق واحداً بالأحرف الصغيرة ملصوقاً هنا.

هل أستطيع فحص ملفين أحدهما في مقابل الآخر؟

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

وذلك جدير بالمعرفة للحالة التي تُحسِنها المجاميع التحقّقية في صمت — تقريرُ هل النسخة التي على قرص النسخ الاحتياطي هي الملف نفسه حقاً الذي على الحاسوب المحمول، حين يدّعي الاثنان الحجم نفسه والتاريخ نفسه.

هل يغيّر ملفي؟

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

هل هو مجاني، وهل أحتاج إلى حساب؟

هو مجاني، ولا حساب ولا تسجيل دخول ولا فترة تجريبية. ولا حدّ لحجم الملف ولا لعدد الملفات التي تفحصها. ويحمل الموقع إعلانات، وهي ما يدفع تكاليفه؛ ولا يُعطى المعلنون شيئاً عن ملفك.

هل يعمل دون اتصال؟

نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فأداةٌ ترسل ملفك بعيداً ليُبصَم كانت ستتوقف في اللحظة التي تقطع فيها الاتصال.