
تصوّر تسلسلات البايت المتكررة في الملفات الثنائية لكشف البنية المخفية، مما يدعم الهندسة العكسية واكتشاف الأنماط دون توقيعات محددة مسبقًا.

hexcymatix هو مشروع بحثي استكشافي، يُتصوَّر بشكل فضفاض كأداة هندسة عكسية للثنائيات لاستخراج معلومات بنيوية من أنماط البايتات المتكررة في الملفات الثنائية.
لم تتجسد الفكرة في أداة قابلة للاستخدام، لكنها ما زالت تنتج بعض التمثيلات المذهلة للتناظر الذاتي اللافت في البيانات اليومية.
أحيانًا في الهندسة العكسية يكون لديك مثال لبعض البيانات — جدول، أو كتلة مضغوطة، أو حمولة بروتوكول — وتريد العثور على بيانات مشابهة في مكان آخر داخل ملف، دون أن تكون قادرًا بعد على كتابة قاعدة أو محلل يصفها. تريد تشابهًا دون تحديد.
يفترض hexcymatix أن سلاسل البايتات المتكررة توحي بوجود بنية أو علاقة، حتى لو لم نكن نعرف ماهية تلك البنية. من خلال تصوير التكرارات، يمكننا إبراز بيانات مترابطة دون أن نعرف بالضبط ما الذي نبحث عنه.
على سبيل المثال، يحتوي مقطع Pensées أدناه على عدة تسلسلات متكررة ذاتيًا (' incapable of ', ' which he ', 'ing either ') — يفرش hexcymatix الملف على سطرين ويربط أي تسلسلات بايتات متكررة يبلغ طولها 8 بايتات على الأقل:

الروابط التي تظهر عندئذٍ تلمّح إلى بنية وعلاقات كامنة في البيانات.
عند تكرار هذه العملية على ملف ثنائي يومي، تبدأ تلقائيًا في إبراز تشابه ذاتي وروابط وبنية غير متوقعة. كمثال، إليك الملف التنفيذي للبحث عن الأخطاء في تثبيت Windows قياسي:

أهم جزء في العملية هو إضافة أقواس بين اتصالات الأجزاء لجعل المخرجات تبدو رائعة:

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

python hexcymatix.py [options] file [file ...]
# Circular visualization of an executable
python hexcymatix.py --circular guidgen.exe
# Linear visualization, top 500 fragments only
python hexcymatix.py --linear --top 500 guidgen.exe
# Batch, 4K output
python hexcymatix.py --circular --resolution 4k *.exe






























pip install pycairo numpy pillow
يُبنى pycairo مقابل مكتبة cairo الأصلية، التي يجب أن تكون موجودة أولاً — brew install cairo pkg-config على macOS، أو apt install libcairo2-dev pkg-config على Debian/Ubuntu.
طُوّرت الأداة كوسيلة مساعدة في الهندسة العكسية: عند توفر مثال واحد معروف لبعض البيانات — هيكل، أو كتلة مضغوطة، أو حمولة بروتوكول — اعثر على حالات أخرى لها في الملف دون الحاجة إلى هندسة عكسية إضافية. كان الأمل أن تتجمّع المناطق التي تتشارك في تتابعات متكررة كثيرة مع المثال المعروف في مرشّحات تستحق مزيدًا من التحقيق.
في النهاية، بدت الفكرة هشّة وحالة الاستخدام ضيقة، لذا لم تُطوَّر التقنية أبدًا إلى النوع السلس من الإضافات الذي كانت تحتاجه لأبحاث مفيدة. يُشارك هذا العمل هنا حتى لا يضيع في العدم، على أمل أن يتمكن شخص آخر من البناء عليه.
كُتب هذا المشروع في الأصل يدويًا بلغة C#. وقد نُقل إلى Python باستخدام نماذج لغوية كبيرة (LLMs)، مع قدر قليل من الإشراف أو المراجعة.
hexcymatix هو جهد بحثي من Christopher Domas (@xoreaxeaxeax).

| الخيار | الوصف |
|---|
--circular | تخطيط دائري: إزاحات البايتات تقابل زوايا على حلقة (الافتراضي) |
--linear | تخطيط أشرطة متوازية: شريطان أفقيان متصلان بمعينات متقاطعة |
--top N [N ...] | الاحتفاظ بأطول N جزء فقط قبل العرض؛ مرّر عدة قيم لعرض صورة واحدة لكل حد قطع |
--no-arcs | رسم الأوتار فقط، مع تخطي الأقواس (أسرع بكثير، وضوضاء بصرية أقل) |
--resolution RES | دقة الإخراج بصيغة WxH أو إعداد مسبق: 480p, 720p, 1080p, 1440p, 4k, uwfhd (2560x1080), suwfhd (3840x1080) (الافتراضي: 1080p) |
--ultra | اختصار لـ --resolution 4000x4000 |
--circle-fill F | جزء من قطر اللوحة تشغله الدائرة (الافتراضي: 0.25، أو 0.50 للإعدادات المسبقة فائقة الاتساع) |
--jpg | كتابة ملف JPEG بجودة 80% أيضًا بجانب كل PNG |
--output-dir DIR | دليل ملفات الإخراج (الافتراضي: output) |