متوفر أيضًا بلغات أخرى: English · Español · Português · Français
فاكّ ترميز bencode: الصيغة ذات الجواب الواحد الصحيح
الصق نص bencode أو افتح ملف تورنت، لترى بنيته والقواعد التي يخالفها وبصمة info الخاصة به.
ما هو bencode؟
bencode هو الترميز الذي يستعمله BitTorrent لملفات .torrent ولحركة البيانات مع المتعقّب. له أربعة أنواع ولا يكاد يستعمل علامات ترقيم: فالسلسلة هي طولها ثم نقطتان ثم البايتات، فـ 4:spam هي كلمة spam؛ والعدد حرف i ثم الأرقام ثم e؛ والقائمة حرف l ثم محتواها ثم e؛ والقاموس حرف d ثم مفاتيح وقيم متعاقبة ثم e. وهذه هي الصيغة كلها.
وما يميّزه أنه قانوني بحكم بنائه. فالمواصفة تشترط ورود مفاتيح القاموس مرتبة، وتحرّم i-0e، وتحرّم أي عدد يبدأ بصفر. وهذه القواعد الثلاث مجتمعةً تجعل لكل قيمة ترميزًا صحيحًا واحدًا لا غير: فلا مسافات تتبدل، ولا ترتيب يُختار، ولا سبيل إلى كتابة العدد نفسه بطريقتين.
وهذه الخاصية هي سبب اختيار bencode أصلًا. إذ يُعرَّف التورنت ببصمة SHA-1 لقاموس info فيه، فوجب أن يكون الترميز قابلًا لإعادة الإنتاج بايتًا ببايت وإلا لم تعد الهوية ثابتة. وهذه الصفحة تفكّ ما تلصقه، وتشير إلى كل قاعدة يخالفها، وتحسب تلك البصمة كما تشترط المواصفة.
طريقة الاستخدام
- الصق نص bencode، أو افتح ملف .torrent. يُقرأ الملف داخل متصفحك ولا يُرفع أبدًا. وتُختصر البايتات غير القابلة للطباعة بدل تشويهها، ولا يضيع شيء في الطريق.
- اقرأ الحكم والملاحظات. وهما سؤالان مختلفان: هل يخالف المدخل قاعدة منصوصة، وهل تعيد إعادةُ ترميزه البايتات نفسها. وتذكر كل ملاحظة أي قاعدة وأين.
- قارن بصمتَي info. واحدة من البايتات الأصلية، والأخرى من فكّ الترميز ثم إعادته. فإن اختلفتا فأنت تنظر إلى الخلل نفسه الذي تحذّر منه المواصفة.
لماذا قد تغيّر إعادةُ الترميز هويةَ التورنت
ليست بصمة info بصمةً لمحتوى التورنت بأي معنى مجرد. بل هي بصمة SHA-1 لبايتات قاموس info كما ترد في الملف بالضبط. فإذا فكّ برنامجٌ ترميز تورنت ثم أعاد ترميزه، ولم يكن الأصل قانونيًّا تمامًا، تغيّرت البايتات وتغيّرت البصمة معها — وتلك البصمة هي ما تستعمله المتعقّبات والأقران لتعريف التورنت أصلًا.
وتستبق المواصفة هذا بتفصيل غير معتاد. إذ تقول إن بصمة info هي ما تحصل عليه بفكّ الترميز وإعادته شرط أن يكون الفاكّ قد تحقق من المدخل تحققًا تامًّا، وتسمّي ترتيب المفاتيح والأصفار البادئة بالاسم. ثم تقول إن على العملاء إما رفض الملفات غير الصالحة أو أخذ المقطع مباشرةً، وإنه لا يجوز لها إجراء ذهاب وإياب على بيانات غير صالحة. والمواصفات لا تفرد عادةً فقرةً كاملة لأمر افتراضي.
وليس افتراضيًّا. فأثناء بناء هذه الصفحة، اختُبرت مكتبة bencode واسعة الانتشار على الصور الخمس التي تعدّها المواصفة غير صالحة: مفاتيح غير مرتبة، ومفتاح مكرر، وi-0e، وi03e، وi-03e. فقبلتها جميعًا، وأعادت ترميز كل منها إلى بايتات مختلفة، وأنتجت بصمة SHA-1 مغايرة في الحالات الخمس. أما المستند الصحيح فمرّ عبر المكتبة نفسها بايتًا ببايت وبصمته لم تتغير، وهذا ما يجعل تلك الخمس سلوكًا للمكتبة لا خللًا في الاختبار.
ولذلك تحسب هذه الصفحة البصمة من شريحة من البايتات التي أعطيتها، لا بإعادة ترميزها أبدًا، وتعرض المعادَ ترميزه إلى جانبها لترى وحسب كيف تفترقان.
الصحة والقانونية سؤالان مختلفان
من المغري اختبار مستند bencode بفكّ ترميزه ثم إعادته ثم مقارنة البايتات. وهذا يلتقط المفاتيح غير المرتبة والأصفار البادئة، وهو الفحص الذي تختاره أي أداة تقريبًا. لكنه لا يلتقط كل شيء.
فالقاموس الذي يحمل المفتاح نفسه مرتين يخالف قاعدة الترتيب، لأن الترتيب لا يترك موضعًا لتكرار. غير أن الفاكّ الذي يحفظ المدخلتين سيكتبهما ثانيةً في موضعيهما، فتعود البايتات مطابقة. فالذهاب والإياب يقول إن المستند سليم، والمواصفة تقول إنه ليس كذلك. ولذلك تجيب هذه الصفحة عن السؤالين على حدة وتبيّن أيهما أيّ.
وثمة كذلك قاعدة لا تنص عليها المواصفة. فهي تحرّم الأصفار البادئة في الأعداد وتجعل i0e الاستثناء الوحيد، لكنها تصف السلسلة بأنها مسبوقة بطولها بالأساس عشرة فحسب، ولا تقول شيئًا عن كيفية كتابة ذلك الطول. فالسلسلة التي تبدأ بـ 03:abc غريبة إذن لا محرَّمة، وتذكرها هذه الصفحة ملاحظةً دون احتسابها في الحكم. وحيث تمتنع المواصفة عن الفصل، تمتنع الصفحة مثلها.
ما لا تستطيع هذه الأداة إخبارك به
لا تخبرك هل التورنت آمن أو مكتمل أو يشير إلى شيء نافع. فهي تقرأ بنيةً لا معنى: وبصمات القطع عندها مجرد سلاسل بايتات، ولا تحاول مقابلتها بشيء. وقد يكون الملف bencode قانونيًّا تمامًا ويظل تورنتًا لشيء لا تريده.
ولا تدّعي شيئًا عن أي عميل BitTorrent بعينه. فالمواصفة تقول ما يجب على العميل فعله؛ أما ما يفعله أي منها حقًّا فليس مما تستطيع هذه الصفحة رصده، ولم يُختبر شيء هنا في مواجهة عميل.
وأخيرًا، bencode صيغة بايتات لا صيغة نص. فقد يحوي المفتاح أو القيمة أي بايت كان، ومنها ما لا يشكّل نصًّا صالحًا في أي ترميز، وبصمات القطع في تورنت حقيقي هي ذلك بعينه. وتحفظ هذه الصفحة كل بايت سليمًا في الذهاب والإياب، وحين يتعذر عرض قيمة كنص تذكر عدد بايتاتها بدل اختلاق محارف غير موجودة.
لماذا هي مجانية؟
فكّ ترميز bencode معالجةٌ لسلاسل نصية، والبصمة يحسبها متصفحك نفسه. لا خادم في المسار، فلا شيء يستوجب فاتورة ولا حساب يلزم إنشاؤه.
لا يُرفع أي شيء. فملف .torrent الذي تفتحه يُقرأ محليًّا ولا يغادر التبويب، وهذا هنا أهم من المعتاد.