الانتقال إلى المحتوى
العربية
المنضدةأدوات لا ترفع شيئا
ورشة تابعة لجمعية ODERSAلا شيء يخرج، ولا شيء يُحفظ، ولا شيء يصلنا.

طريقة العمل

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

قواعد البناء الأربع

الملف لا يغادر الجهاز

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

صفر ارتباط بالشبكة

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

الشيفرة تُقرأ

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

كل أداة تعلن صيغها هي وحدودها هي

لا نقول أبدا «كل الصيغ». الصيغة التي لا يعرف المتصفح فتحها لا تصير ممكنة لأننا كتبناها في صفحة رئيسية.

جدول التوافق

هو ثمرة حملة تحقق أُجريت قبل كتابة أول أداة، وهو مؤرَّخ. المتصفحات تتغير: فيُعاد التحقق منه عند كل مراجعة، ولا يُنسخ.

تم التحقق من التوافق بتاريخ July 30, 2026

صيغ الصور التي يعرف المتصفح فتحها

هذا ما يقرر إن كانت الأداة تستطيع عرض ملفكم والعمل عليه. والصيغة الغائبة من هنا ليست «قريبا»: هي غير موجودة.

Chrome، EdgeFirefoxSafari (macOS، iOS)
JPEG (.jpg)yesyesyes
PNG (.png)، بما في ذلك المتحركyesyesyes
WebP (.webp)yesyesyes
Safari منذ الإصدار 14، على macOS Big Sur وما بعده.
AVIF (.avif)yesyesyes
Chrome 85، Firefox 93، Safari 16.1.
GIF (.gif)yesyesyes
BMP (.bmp)yesyesyes
SVG (.svg)yesyesyes
ICO (.ico)yesyesyes
TIFF (.tif، .tiff)nonoyes
Safari هو المتصفح الوحيد الذي يعرض ملف TIFF. أما البيانات الوصفية لملف TIFF فتُقرأ في كل مكان: هي في ترويسة الملف، لا في الصورة.
HEIC، HEIF (صور iPhone)nonoyes
يعرضها Safari 17 وiOS 17. أما Chrome وFirefox وEdge فلم تفك ترميزها يوما، لسبب يتعلق ببراءات اختراع على المرمّاز. وفاكّ الترميز البرمجي يزن أكثر من عشرة ميغابايت: استُبعد، وكُتب ذلك.
JPEG XL (.jxl)partlypartlyyes
حُدّث في 30/07/2026. هي أكثر الصيغ تقلبا في هذه المجموعة: سُحبت من Chromium سنة 2022، ثم عاد فاكّ ترميز مكتوب بلغة Rust في Chrome 145 في فبراير 2026 وفي Firefox 152 في يونيو 2026، لكنه معطَّل افتراضيا في الاثنين، خلف راية. أما Safari فيعرضها افتراضيا منذ إصداره 17. ولا متصفح يعرف كتابتها. ولا أداة في هذا الموقع تعتمد عليها ما دام الوضع يتحرك.

الصيغ التي يعرف المتصفح كتابتها

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

Chrome، EdgeFirefoxSafari (macOS، iOS)
كتابة ملف PNGyesyesyes
الصيغة الوحيدة التي تجعلها المواصفة إلزامية: وهي أيضا البديل الشامل.
كتابة ملف JPEGyesyesyes
كتابة ملف WebPyesyesno
Chrome 50، Edge 79، Firefox 96. ولا إصدار واحد من Safari، لا على Mac ولا على iPhone، يعرف كتابة ملف WebP انطلاقا من لوحة رسم. هذا أنفع سطر في هذا الجدول كله: المحوّل الذي يعلن «WebP» من دون قول ذلك سيكذب على واحد من كل زائرَي iPhone.
كتابة ملف AVIFnonono
سطر مصحَّح في 30/07/2026. الادعاء بأن Chrome يعرف كتابة ملف AVIF انطلاقا من لوحة رسم ابتداء من إصداره 124 منتشر في كل مكان، منسوخا من موقع إلى موقع، ولم نجد له أي مصدر أول: لا مدخل في سجل خصائص Chrome، ولا ملاحظة إصدار، ولا صفحة توافق مخصصة. لذلك لا تعتمد أدواتنا عليه: هي تقيس عند التشغيل ما يعرف المتصفح كتابته بدل أن تفترضه. وإن أتاحه متصفح غدا، عرضته أداة التحويل من دون أن يتغير سطر واحد من الشيفرة.

قدرات المتصفح التي تعتمد عليها الأدوات

Chrome، EdgeFirefoxSafari (macOS، iOS)
تشفير أصلي (AES-GCM، ومفتاح مشتق من كلمة مرور، وSHA-256)yesyesyes
متاح في كل مكان منذ 2017، لكن على صفحة تُقدَّم عبر HTTPS فقط. وهذه حال هذا الموقع.
ضغط وفك ضغط أصليان (gzip، deflate)yesyesyes
متاح في كل المتصفحات. وتوضيح نافع أُضيف في 30/07/2026: صيغة deflate الخام، وهي الوحيدة التي تصلح لصناعة ملف zip، وصلت متأخرة عن البقية (Chrome 103، Firefox 113، Safari 16.4). فشيفرة zip مكتوبة بين 2020 و2022 كان يمكن أن تفشل على Chrome يعلن رغم ذلك أنه يعرف الضغط.
معالجة الصور خارج الشاشة (في خيط منفصل)yesyesyes
Chrome 69، Firefox 105، Safari 16.4. وهذا ما يتفادى تجميد الصفحة عند ملف كبير.
قراءة الرموز الشريطية ورموز QR بواسطة النظامpartlynono
شُدّد في 30/07/2026، وهو أشد مما كنا نكتب. هذه الوظيفة ليست معيارا من معايير الويب: هي تستند إلى نظام التشغيل، فلا توجد إلا على Chromium في macOS وChromeOS وأندرويد. وهي غائبة عن ويندوز ولينكس، أي عن أغلبية الحواسيب المكتبية. ولم يطبّقها Firefox يوما. أما Safari فله نسخة تجريبية خلف راية منذ الإصدار 17، وهي معطلة منذ iOS 18. فلا تستطيع أداة رموز QR أن تستند إليها: يلزم دمج قراءة خاصة بها.
الحفظ عبر نافذة «حفظ باسم» الحقيقيةyesnono
Chromium وحده؛ أما Firefox وSafari فرفضا هذه الواجهة. والبديل هو التنزيل التقليدي، وهو يعمل في كل مكان: لذلك هو ما تستعمله أدواتنا افتراضيا.
تلبيد ملف قطعة قطعةnonono
يحسب المتصفح بصمة SHA-256 حسابا ممتازا، لكن على ملف كامل يُسلَّم إليه دفعة واحدة فقط: لا توجد أي دالة لتغذيته تدريجيا. وهذا ما يفرض حد حجم على أداة البصمة، وهذا الحد يحمل سببه هذا.
تشفير ملف على شكل تدفق، من دون قراءته كاملاnonono
الحد نفسه المطبَّق على التلبيد: تشفير المتصفح يعمل على كتلة كاملة، والطلب المتعلق بنسخة تدفقية مفتوح منذ 2016 من دون جواب. والتقطيع اليدوي ممكن، لكن كل قطعة يجب عندها أن تُربط بموضعها، وإلا أمكن نزع قطع أو إعادة ترتيبها من دون أن ينتبه الختم. وأداة التشفير عندنا تفضّل إعلان حد حجم صادق على ارتجال بناء من هذا النوع.
صناعة مفتاح حديثة (Argon2) داخل المتصفحnonono
Argon2 هو اليوم الخيار الأول الموصى به لصناعة مفتاح انطلاقا من كلمة مرور، وهو غير موجود في أي متصفح: يلزم دمج محرك WebAssembly. لذلك تستعمل أداة التشفير عندنا PBKDF2 مع SHA-256 و600000 مرور، وهي القيمة التي نشرها المرجع في هذا المجال سنة 2026، وهي تعرضها على الشاشة بدل أن توهم بأفضل منها.
كتابة ملف أيقونة ICO انطلاقا من لوحة رسمnonono
لا متصفح يعرف كتابة ملف ICO: يجب تركيب الحاوية يدويا حول صور PNG. وقبول PNG داخل ICO قائم منذ Windows Vista ومنذ Firefox 9؛ أما Chrome وEdge وSafari فلم نجد لها إلا أدلة استعمال، لا مصدرا هندسيا. ينبغي معرفة ذلك قبل الوعد بمولّد أيقونات.
حساب CRC-32، وهو إلزامي داخل ملف zipnonono
لا يوفر المتصفح إلا بصمات تعمية (SHA-1 وSHA-2). أما CRC-32 الذي يشترطه ملف zip في كل ترويساته فيجب كتابته يدويا، بجافاسكريبت عادية. وهذا ممكن في نحو ثلاثين سطرا، وهو اللبنة الوحيدة الناقصة لصناعة ملف zip بلا مكتبة.

حدود الذاكرة، تلك التي تُسقط التبويب فعلا

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

Chrome، EdgeFirefoxSafari (macOS، iOS)
أقصى مساحة للوحة الرسمyesyespartly
على iPhone وiPad، ظلت مساحة لوحة الرسم زمنا طويلا محدودة بـ16.7 مليون بكسل (أي 4096 في 4096)؛ ثم رفعها iOS 18 إلى 67.1 مليونا. وصورة بخمسين ميغابكسل ما تزال تتجاوز الحد القديم: فالأداة التي تعيد رسم الصورة يجب أن تصغّرها قبل ذلك، أو أن تقول لا.
مجموع الذاكرة الممكن تخصيصها للوحات الرسمyesyespartly
يضع Safari على iOS سقفا لمجموع لوحات الرسم في التبويب الواحد، في حدود بضع مئات من الميغابايتات بحسب الجهاز. لذلك يجب على المعالجة بالدفعة أن تحرّر كل صورة قبل الانتقال إلى التالية، لا في النهاية فقط.

ملف PDF داخل المتصفح، والحالة الحقيقية للمكتبات

لا يعرف المتصفح أن يفعل شيئا بملف PDF سوى عرضه. وأي تعديل يتطلب شيفرة مدمجة، وهذا هو الاستثناء الوحيد الذي يسمح به مذهب هذا الموقع. وهذا ما أثبته تحقق 30 يوليو 2026، ولماذا ينتظر ركن PDF قرارا بدل أن يُفتح على نصفه.

Chrome، EdgeFirefoxSafari (macOS، iOS)
دمج ملف PDF أو تقطيعه أو تعديله من دون أي مكتبةnonono
لا شيء في المتصفح يقرأ بنية ملف PDF. والعرض ليس قراءة: العارض المدمج لا يعير أيا من قدراته لصفحة ويب.
مكتبة التعديل التي كانت بطاقة المشروع قد قررتهاpartlypartlypartly
واقعة جديدة، وهي تغيّر القرار. هذه المكتبة تحت رخصة MIT وتعرف أشياء كثيرة: الدمج، والتقطيع، والتدوير، والرسم، وتعبئة الاستمارات، وكتابة البيانات الوصفية. لكن آخر إصدار منشور منها يعود إلى نوفمبر 2021، ومؤلفها غير قابل للاتصال منذ مايو 2024: فالشيفرة التي كان المشروع يحسب دمجها لم تتلق أي تصحيح منذ أكثر من أربع سنوات. وهي لا تعرف تشفير ملف PDF ولا فك تشفيره، تماما كما تقول وثائقها هي.
وضع كلمة مرور على ملف PDF أو نزعهاpartlypartlypartly
ممكن تقنيا محليا، وهذا ما لم نكن نظنه. فثمة امتداد مُصان لهذه المكتبة، تحت رخصة MIT هو أيضا، ينفّذ تشفير ملف PDF حتى AES-256 ويعرف فتح مستند محمي. فلم تعد المسألة استحالة تقنية: صارت قرارا، هو دمج امتداد فتيّ بدل الشيفرة المسماة في المذهب، وجعله الارتباط الوحيد لهذا الموقع لسنوات. وهذا القرار يخص الجمعية، لا الورشة.
تحويل صفحات ملف PDF إلى صورpartlypartlypartly
مستحيل بمكتبة تعديل، فهي ليست محرك عرض. يلزم دمج محرك عارض Firefox، أي نحو 1.7 ميغابايت من الشيفرة قبل الضغط، من أجل أداة واحدة: وزن موقع كامل. يُعاد النظر فيه على حدة، ولن يكون ذلك في الخفاء.
تخفيف ملف PDF تخفيفا حقيقياpartlypartlypartly
تستطيع مكتبة تعديل أن تجمّع الكائنات الداخلية لمستند، وهذا يربح قليلا على ملف PDF غني بالاستمارات. لكنها لا تعيد ضغط الصور ولا الخطوط، وهي التي تشكل الأغلبية الساحقة من وزن ملف PDF عادي. فعلى مستند ممسوح ضوئيا، لا شيء يُربح تقريبا، والأداة التي تعد بعكس ذلك ستكذب.
تنظيف البيانات الوصفية لملف PDF تنظيفا حقيقياpartlypartlypartly
فخّان لا تكشفهما إلا قراءة الشيفرة. أولا، تعيد المكتبة من تلقاء نفسها كتابة منتِج وتاريخ تعديل عند كل فتح، حتى حين لا يطلب ذلك أحد. وثانيا، هي لا تمس أبدا كتلة البيانات الوصفية الحديثة في ملف PDF، تلك التي قد تحتوي العنوان نفسه والمؤلف نفسه: فالتنظيف الذي يقف عند الأولى سيكون زائفا، ويجب إثبات ذلك بإعادة قراءة الملف المنتَج.
رسم صفحة PDF على شكل صورة (النقطنة) بالمكتبة المدمجةnonono
مكتبة ركن PDF تصنع ملفات PDF، وهي لا تلوّن صفحاتها: واجهتها العامة لا تصدّر أي رمز للعرض. والنقطنة تتطلب محركا ثانيا، وزنه الحقيقي مقيسا على ملفاته المنشورة 1.72 ميغابايت مصغَّرا (454669 بايت للواجهة، و1262398 بايت للعامل)، أي نحو 502 كيلوبايت مضغوطا. لذلك استُبعد «من PDF إلى صور» وكُتب ذلك.
تشفير ملف PDF بـAES-256 داخل المتصفح، وفتحهyesyesyes
ممكن بالمكتبة المدمجة، لكن في المراجعة 5 وحدها (امتداد Adobe لسنة 2008)، لا في المراجعة 6 من مواصفة PDF 2.0. المراجعة 5 تتحقق من كلمة المرور بمرور واحد من SHA-256؛ أما 6 فتستعمل تلبيدا مكرَّرا، والقياسات العامة لأدوات الهجوم تعطي فارقا بين أربع وخمس مراتب في سرعة المحاولة. والمراجعة 5 هي الوحيدة التي تعدّها مواصفة PDF 2.0 مهجورة. والخوارزمية تتوقف على ترويسة الملف: بالقياس، سلسلة «1.7ext3» وحدها هي التي تُطلق AES-256، وبغيرها نحصل على RC4 أو AES-128.
فتح ملف PDF مشفّر بـAES-256 مراجعة 5 في القارئ المدمج بالمتصفحyesyespartly
تم التحقق في الشيفرة المصدرية للمحركات: PDFium (في Chrome وEdge) يعالج المراجعة 5 منذ تحققه من كلمة المرور، وpdf.js (في Firefox) يحمل صنفا مخصصا للمراجعة 5 متميزا عن صنف المراجعة 6. وAdobe Acrobat يفتحه منذ الإصدار 9. أما تطبيق «المعاينة» في macOS وiOS، وقُرّاء أندرويد، فلم يُعثر لها على أي مصدر أول: لذلك يبقى عمود Safari «جزئيا»، والموقع لا يؤكد أكثر من ذلك.
كتابة نص مشكول أو غير لاتيني في ملف PDF من دون دمج محرك خطوطpartlypartlypartly
من دون محرك الخطوط الذي تطلبه المكتبة لأي خط مخصص (ونحن لا ندمجه)، لا توجد إلا خطوط PDF الأربعة عشر القياسية، بترميز Windows-1252: أي نحو 218 محرفا لاتينيا. والمحرف الخارج عن هذه المجموعة لا يرفع خطأ في النسخة المسلَّمة: الشيفرة تلتقط الاستثناء وتكتب علامة استفهام. لذلك يجب على الأداة التي تكتب نصا أن تتحقق من المدخل وأن تسمّي ما لا تعرف كتابته.
المنع الفعلي لطباعة ملف PDF أو نسخهnonono
تتيح الصيغة كتابة هذه الممنوعات داخل الملف، لكنها ليست إلا طلبات مرفوعة إلى القارئ: المحتوى يُفك تشفيره بمجرد الفتح، والقارئ الذي يتجاهل الطلب يطبع رغم ذلك. ولا أداة، محلية كانت أو بعيدة، تستطيع أفضل من ذلك. لذلك لا يعرض الموقع هذه الخانات.

ما استبعدناه، ولماذا

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

  • التعرف على النص داخل صورة، وقراءة صور HEIC الخاصة بأجهزة iPhone: المحركات اللازمة تزن بين عشرة وخمسة عشر ميغابايت. وعلى اتصال ضعيف، تنزيل خمسة عشر ميغابايت لقراءة نص صفقة خاسرة. سنعيد النظر، ولن يكون ذلك في الخفاء.
  • الفيديو بكل أشكاله: محركات تحويل الفيديو داخل المتصفح تزن نحو ثلاثين ميغابايت. لا.
  • إزالة الخلفية بالذكاء الاصطناعي: تتطلب تنزيل نموذج، والنموذج ملف ثقيل ومعتم. لا.
  • كل ما يقتضي الشبكة بطبيعته: اختصار رابط، أو بسط رابط قصير، أو الاستعلام عن مالك نطاق، أو عرض معاينة لصفحة بعيدة. هذه الأدوات لا يمكن أن تكون محلية، فليست هنا. وهذا ليس نقصا، بل هو تعريف المشروع نفسه.
  • عرض خريطة لتحديد موضع صورة: سيكون ذلك الطلب الخارج الوحيد في الموقع، وسينقل أخطر معلومة في الملف. الإحداثيات تُعرض بوضوح، ولكم أنتم أن تقرروا ما تفعلون بها.
  • تحويل ملف PDF إلى صور: يقتضي ذلك رسم الصفحات، ورسم ملف PDF مهنة كاملة (خطوط، ومتجهات، وشفافيات، وفضاءات لونية). والمكتبة التي ندمجها تعرف صناعة ملف PDF، لا تلوين صفحة منه. أما محرك العرض الجاد الوحيد على الويب فيزن، بقياس الملفات التي ينشرها، 1.72 ميغابايت مصغَّرا لهذا الاستعمال وحده. أما الاتجاه الآخر، من الصور إلى PDF، فموضوع ويعمل.
  • توقيع ملف PDF: للسبب نفسه، وهذا أكثر ما يثير الحسرة. من دون محرك عرض لا يمكن إظهار الصفحة؛ ومن دون إظهارها لا يمكن ترك أحد يضع توقيعه حيث يريد. والتوقيع الموضوع على العمياء عند إحداثيات ثابتة أسوأ من عديم النفع. ونحن نفضّل موضعا فارغا على أداة تُتلف مستندا.
  • قراءة رمز QR: الوظيفة التي تتيحها المتصفحات تستند إلى نظام التشغيل. فهي لا توجد إلا في جزء من Chromium، على macOS وChromeOS وأندرويد؛ وهي غائبة عن ويندوز ولينكس، ولم يطبّقها Firefox يوما، والنسخة التجريبية في Safari معطلة منذ iOS 18. الأداة التي تستند إليها لن تعمل عند أغلبية زوار الحواسيب المكتبية. أما صناعة رمز QR فتبقى في المخطط: هي ممكنة يدويا، والمعيار حر الاستعمال.
  • منع طباعة ملف PDF أو نسخه: الصيغة تتيح ذلك، وأدوات كثيرة تعرض هذه الخانات لأنها تطمئن الناس. لكنها ليست إلا طلبات مرفوعة إلى القارئ: المحتوى يُفك تشفيره بمجرد الفتح، والقارئ الذي يتجاهل الطلب يطبع رغم ذلك. وبيع قفل هو في الحقيقة ملصق يكون بالضبط نوع الكذب الذي وُجد هذا الموقع كي لا يمارسه.
  • التسجيل بالميكروفون، وهو نصف «المسجّلة» في الموضع 34: بنية صفحة الأداة في هذا الموقع تتيح مدخلا واحدا لكل أداة، ملفا أو نصا أو لا شيء، وكل شريط ثقة يتحدث عن ذلك المدخل بعينه. والميكروفون سيكون مدخلا رابعا، بوعده الخاص الذي يجب أن يُكتب. والأهم أن الآلة التي تفحص هذا الموقع قبل كل نشر لا ميكروفون لها: فلن نستطيع إذن إثبات أن التسجيل لا يخرج، ونحن لا ننشر وعدا لا نعرف اختباره. لذلك صار الموضع 34 «قص تسجيل صوتي»، ويبقى جهازكم يقوم بالعمل الذي يتقنه أصلا.
  • شاشة العرض العملاقة لجهاز العرض في مؤقّت الصف: أكبر محرف في دليلنا الرسومي هو محرف كتل العدّادات، ولم يُرسم كي يُقرأ من آخر القاعة. وشاشة عرض عملاقة ستكون مكوّنا رسوميا جديدا، والدليل مجمَّد، والنقص يُدوَّن بدل أن يُخترع في أثناء صنع أداة. وضع ملء الشاشة موجود ويشغل الشاشة كلها، لكنه لا يكبّر الأرقام، والصفحة تقول ذلك مرتين. هذا طلب، وقد دُوّن، ولم يُدفن.
  • العجلة المتحركة في القرعة، للسبب نفسه: هي مكوّن لا يملكه الدليل. والعجلة لا تجعل القرعة أعدل، بل تجعلها مشهدا. الذي يجعل القرعة عادلة هو مولّد العشوائية المستعمل وغياب التحيز، والأداة تعرض الاثنين مع حسابهما: احتمال واحد من أصل n، وn مضروبا من الترتيبات الممكنة.
  • التقويم القابل للنقر في حاسبة التواريخ: دليلنا لا يملك حقل تاريخ مرسوما، وحقل التاريخ الأصلي في المتصفح سيأتي بحدوده وارتفاعه الخاصين، خارج الدليل. لذلك تُكتب التواريخ بالصيغة الدولية، ولهذا فائدة حقيقية: «03/04» تعني 3 أبريل في نصف العالم و4 مارس في نصفه الآخر.
  • أيام العطل الرسمية في حاسبة التواريخ: تختلف من بلد إلى بلد، وأحيانا من منطقة إلى أخرى في البلد الواحد، وتواريخها تتحرك كل سنة، والعطلة التي تقع في نهاية الأسبوع تُعوَّض غالبا بيوم بديل يُقرر حالة بحالة. القائمة الجامدة ستصير خاطئة خلال اثني عشر شهرا، وهذا المشروع يخاطب جمهورا عالميا. لذلك تُحسب أيام العمل من الاثنين إلى الجمعة، بلا استثناء، وهذا مكتوب في الصفحة.
  • النقطة الطباعية «ديدو» في محوّل الوحدات، وهي أكثر الفروق دلالة: لا هيئة قياس واحدة تعرّفها، والمراجع التي تذكرها تعطي أربع قيم مختلفة. وحين تتناقض أربعة مصادر ثانوية ولا يوجد أي مصدر أول، فلا شيء يُنسخ. أما نقطة الويب فتساوي بالضبط جزءا من اثنين وسبعين من البوصة، وهذا مكتوب صراحة في مواصفة.
  • الحماية بكلمة مرور لأرشيف ZIP، في الاتجاهين: التشفير التاريخي لهذه الصيغة مكسور منذ 1994 بهجوم منشور، أما التشفير الحديث فهو امتداد مملوك بعدة صيغ. سننجز عملا ثقيلا كي نقدم حماية لا نستطيع أن نقول بصدق إنها متينة. وأداة التشفير في ركن الأمان تحل المشكلة الحقيقية، وهي تعرض طريقتها كاملة.

قرارات ركن PDF، وعلى أي بيّنة

ثلاثة قرارات اتُّخذت كي يُفتح ركن PDF، ولكل واحد منها ثمن. وهذه هي، مع ما أثبته التحقق فعلا. القرار الذي لا يقول على أي شيء يستند ليس قرارا، بل رأيا.

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

وتحققنا من أمر آخر، آليا: هذا الملف لا يحتوي على أي استدعاء شبكي، ولا واحد، وقفل المحتوى يعيد التحقق من ذلك عند كل بناء، على الملف الخام، من دون حتى نزع التعليقات. المكتبة المدمجة تُراقَب مثل أداة، بل أشد.

القرار الثاني: النسخة. المكتبة التي سمّاها المذهب الأصلي لم تتلق أي تصحيح منذ نوفمبر 2021 ومؤلفها غير قابل للاتصال منذ مايو 2024: فأخذنا الامتداد المُصان، تحت الرخصة الحرة نفسها. وبين نسختين من هذا الامتداد، لم نأخذ الأهدأ بل الأحدث، لسبب دقيق: النسخة السابقة كانت تصنع المعرّف الداخلي لمستند محمي انطلاقا من ساعة الحفظ، مُلبَّدة. ومثل هذا المعرّف يُستعاد بالقوة الغاشمة، فكان سيؤرّخ كل ملف مشفّر بدقة الميلي ثانية. وعلى موقع وعده أن لا شيء يتسرب، كان ذلك مُسقِطا. أما النسخة المختارة فتسحب هذا المعرّف عشوائيا.

القرار الثالث، وهو الأغلى ثمنا: كلمة مرور ملف PDF ليست في أعلى مستوى تعرفه المواصفة، ونحن نعرض ذلك قبل الفعل. يعرف PDF طريقتين لتطبيق AES-256: المراجعة 5، التي نشرتها Adobe سنة 2008، والمراجعة 6 في مواصفة PDF 2.0. خوارزمية التشفير واحدة؛ والذي يتغير هو التحقق من كلمة المرور. المراجعة 5 تفعل ذلك بحساب واحد، والمراجعة 6 تبطّئه عمدا، والقياسات المنشورة لأدوات الهجوم تعطي فارقا يتراوح بين أربع وخمس مراتب في سرعة المحاولة. والمكتبة لا تكتب إلا المراجعة 5، وهي أيضا الوحيدة التي تعدّها مواصفة PDF 2.0 مهجورة.

كان بوسعنا أن نكتب «AES-256» ونصمت، مثلما تفعل أغلب المواقع التي تعرض هذه الحركة. وقد اخترنا أن نعرض المراجعة، وطول المفتاح، وطريقة صناعة المفتاح قبل أن يُنقر الزر، وأن نحيل إلى صناعة عبارة مرور حقيقية. بكلمة قصيرة، لا تحمي هذه الأداة شيئا؛ وبعبارة من عدة كلمات مسحوبة عشوائيا، تحمي فعلا. الفارق في أيديكم، شرط أن يكون قد قيل لكم.

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

المكتبات المدمجة

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

@cantoo/pdf-lib 2.8.1

le coin PDF · Licence MIT · 661.4 كيلوبايت

Écrire un PDF à la main est déraisonnable : c'est un format d'objets indirects, de tables de références croisées et de flux compressés, et une erreur d'un octet rend le fichier illisible. C'est l'exception que la doctrine autorise, et c'est la seule. Cette bibliothèque est le prolongement MAINTENU de pdf-lib, dont la dernière version date de novembre 2021 : nous avons choisi le code vivant. La version est figée dans le nom du fichier, la licence MIT est servie à côté, et le code est là, chez nous : les pages du coin PDF le chargent depuis ce site, jamais depuis ailleurs. Nous avons vérifié une chose de plus, à la machine : ce fichier ne contient AUCUN appel réseau, pas un seul, et le verrou du contenu le re-vérifie à chaque build.

https://github.com/cantoo-scribe/pdf-lib

مصادر الجدول

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