
فكّ الترميز. رمّز. تعرّف. فكّ ترميز ذكي لأي بيانات.
شفّر. فكّ التشفير. حدّد. فكّ تشفير ذكي لأي بيانات.
إصدار ما قبل الإطلاق، وقابل للاستخدام بالفعل. بيئة العمل تعمل، ومحرّك الكشف يفكّ الحمولات متعددة الطبقات، وتقرير التحليل مكتمل.
لا يزال أمامنا: تدقيق إمكانية الوصول ومراجعة التدويل. أداة التفكيك (disassembler) ومحرّك التعرّف الضوئي على الحروف (OCR) خارج النطاق عمداً — فهما مشروعان قائمان بذاتهما، وليسا عمليتين.
يفترض النموذج المعتاد لأداة كهذه أنك تعرف مسبقاً ما هي بياناتك: تختار العمليات، وتُسلسلها، وتكرّر. هذا جيد عندما تتعرّف على الصيغة من النظرة الأولى، وعديم الفائدة عندما لا تفعل — وهو الحال في معظم الأوقات التي ينظر فيها المحلّل إلى شيء جديد.
يبدأ DecodeBox من الطرف الآخر. تلصق، فيكتشف ما يحمله: كل طبقة مفكوكة، وكل مؤشر مستخرج، وكل نتيجة أمنية مشروحة، مع إظهار الدليل على كل ادعاء بدلاً من مجرد تأكيده.
كل شيء يعمل في متصفحك. لا مدخلات، ولا وصفة، ولا ملف يغادر جهازك أبداً — فلا يوجد خادم لإرساله إليه.
حمولة حقيقية من مجموعة الاختبارات: Base64 فوق Base64 فوق gzip فوق JSON، مع محمّل PowerShell في أحد الحقول.
Findings 4 Indicators 7 Layers 8 257 ms
CRITICAL Cloud or service credential CWE-798
Input → Base64 → Base64 → gzip
AKIAIOSFODNN7EXAMPLE
CRITICAL PowerShell download-and-execute CWE-94
Input → Base64 → Base64 → gzip → JSON → Base64 → UTF-16LE
IEX (New-Object Net.WebClient).DownloadString
النتيجة الثانية تقع على عمق ست طبقات، وقد جاءت القفزة الأخيرة من كتلة Base64 داخل حقل JSON واحد. لا شيء يبحث في الكتلة الأصلية باستخدام grep يراها، ولا شيء يفك سلسلة خطية واحدة يصل إليها.
Base64 → Base64 → MD5)، أو عند بقية لا يمكن فكها مثل توقيع JWT، أو عند
اعتراف صريح بأنه تم الوصول إلى حد وقد يكون هناك المزيد تحته.عندما لا يفسر أي شيء معلن المدخلات، تجرب DecodeBox كل مفتاح XOR أحادي البايت وكل دوران وتقيّم كل نتيجة من حيث قابلية القراءة — بدرجة ثقة تقول بوضوح إنها كانت بحثًا وليس مطابقة.
تعالج DecodeBox مدخلات غير موثوقة ومشوّهة عمدًا بحكم التصميم.
connect-src 'none'
وscript-src 'self' بالإضافة إلى hash للسكربت المضمّن الوحيد. تُضمَّن الخطوط بدلًا من
جلبها، ويفشل البناء إذا ظهر أي مرجع CDN في المخرجات.eval وnew Function وأي مسار يعرض المدخلات كـ HTML
محظورة بقواعد lint، وليس بالعرف.يسمح style-src بـ 'unsafe-inline'، لأن React يكتب سمات style المضمّنة؛
أما script-src، حيث يكمن الخطر الحقيقي، فيبقى صارمًا. للإبلاغ عن ثغرة، راجع
SECURITY.md — يُرجى عدم فتح issue عام لتقارير الأمان.
DecodeBox/
├── .github/workflows/ # CI, CodeQL, SBOM, markdown quality, Pages deployment
├── public/ # Bundled fonts, favicon, CNAME
├── src/
│ ├── engine/ # The analysis engine — the only half that knows about data
│ │ ├── index.ts # THE SEAM — the only module the interface imports from
│ │ ├── operations/ # One self-contained module per transformation
│ │ ├── detection/ # Entropy, charset, magic bytes, structural validity
│ │ ├── analysis/ # Recursive exploration, indicators, security findings
│ │ ├── ctf/ # Flag search, cipher key recovery, ranked hints
│ │ ├── core/ # Recipe executor, byte handling, ciphers, codecs
│ │ └── worker/ # The engine off the main thread, past a size threshold
│ ├── components/ # The interface: workspace, report, CTF mode
│ ├── store/ # One zustand store
│ ├── hooks/ # Interaction logic shared across components
│ ├── lib/ # Share links, saved recipes, recipe text format
│ ├── i18n/ # Every user-facing string
│ └── styles/ # Design tokens and themes
├── SECURITY.md
└── LICENSE
تصل الواجهة إلى المحرك عبر واجهة ضيقة واحدة تكشف سبع دوال —
listOperations وbake وdetect وautoDecode وidentify وanalyse وhints. يمكن تطوير
كلا النصفين واختبارهما واستبدالهما بشكل مستقل؛ أُعيد بناء مساحة العمل مرة واحدة من الصفر
دون أن يتغير المحرك بسطر واحد. لا ينبغي أن يتطلب إضافة عملية لمس الواجهة.
يتطلب Node.js 22.12 أو أحدث. تُبنى CI على 22 و24؛ ويثبّت .nvmrc الإصدار 22 للتطوير.
npm install
npm run dev # development server
npm run test # 1,109 tests
npm run build # static site in dist/
مخرجات البناء ثابتة بالكامل — لا وقت تشغيل، ولا خادم، ولا متغيرات بيئة. أي مضيف ثابت سيقدّمها.
يوجد زر Download DecodeBox في ترويسة التطبيق قيد التشغيل. يمنحك
decodebox.html: كل شيء في ملف واحد بحجم 1.2 ميغابايت — الواجهة، وجميع العمليات الـ 504،
والخطوط، والأنماط. انقر عليه نقرًا مزدوجًا وسيعمل. لا خادم، ولا npm، ولا شبكة، ولا شيء لتثبيته،
وهذا هو المقصود على جهاز معزول عن الشبكة حيث يكون إدخال سلسلة أدوات بناء أصعب من
إدخال ملف واحد.
ينتج npm run build هذا الملف إلى جانب الموقع، لذا أي عملية نشر تقدّمه:
dist/index.html the site
dist/decodebox.html the same build, in one file
يجب أن يكون ملفًا واحدًا بدلًا من مجلد. يرفض المتصفح تحميل وحدة ES من عنوان URL بصيغة file:// — لأن الأصل غير شفاف، لذا يفشل الطلب في فحص CORS الخاص به — وهذا يعني أن مجلد dist/ العادي عند فتحه من القرص يظهر فارغًا. كل شيء مضمّن لا يترك أي طلب ليفشل. الشيء الوحيد الذي يتم التخلي عنه هو Web Worker، الذي يحتاج إلى ملف ثانٍ بحكم التعريف، لذا يبقى البناء المستقل على الخيط الرئيسي للمدخلات الكبيرة جدًا ويكون متطابقًا فيما عدا ذلك.