Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PRET — أداة استغلال الطابعات - الأداة التي جعلت الغوص في القمامة قديمًا. | Kitploit
أدوات/GitHubGitHub/rub-nds/pret
أمان الأنظمة المدمجةتحليل الثغرات الأمنيةالاستغلالجمع المعلوماتالاختبار العشوائياختبار الاختراقأمن الأجهزة
GitHubrub-nds/pret

PRET

أداة استغلال الطابعات - الأداة التي جعلت الغوص في القمامة قديمًا.

عرض المستودع
4.3k651منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
الموقع الإلكتروني

PRET - عدة استغلال الطابعات

هل طابعتك آمنة؟ تحقق قبل أن يفعل ذلك شخص آخر...

PRET هي أداة جديدة لاختبار أمان الطابعات تم تطويرها في إطار رسالة ماجستير في جامعة الرور في بوخوم. تتصل بالجهاز عبر الشبكة أو USB وتستغل ميزات لغة طابعة معينة. حالياً يتم دعم PostScript و PJL و PCL وهي المستخدمة في معظم طابعات الليزر. وهذا يتيح أشياء رائعة مثل التقاط أو التلاعب بمهام الطباعة، والوصول إلى نظام ملفات الطابعة وذاكرتها، أو حتى إلحاق الضرر المادي بالجهاز. جميع الهجمات موثقة بالتفصيل في ويكي هاكينغ الطابعات.

الفكرة الرئيسية لـ PRET هي تسهيل التواصل بين المستخدم النهائي والطابعة. لذلك، بعد إدخال أمر يشبه يونكس، تقوم PRET بترجمته إلى PostScript أو PJL أو PCL، وإرساله إلى الطابعة، وتقييم النتيجة، وترجمتها مرة أخرى إلى تنسيق سهل للمستخدم. تقدم PRET مجموعة كبيرة من الأوامر المفيدة لهجمات الطابعات والاختبارات العشوائية (fuzzing).

PRET design

التثبيت

PRET تتطلب فقط مترجم Python2. ولكن للإخراج الملون ودعم SNMP، يلزم تثبيت وحدات طرف ثالث:

root@kitploit:~
# pip install colorama pysnmp

إذا كنت تعمل على وحدة تحكم ويندوز ولا تظهر أحرف Unicode بشكل صحيح، قم بتثبيت وحدة win_unicode_console:

root@kitploit:~
# pip install win_unicode_console

للطباعة التجريبية 'بدون سائق' (انظر أمر print)، يجب تثبيت ImageMagick و GhostScript:

root@kitploit:~
# apt-get install imagemagick ghostscript

الاستخدام

root@kitploit:~
usage: pret.py [-h] [-s] [-q] [-d] [-i file] [-o file] target {ps,pjl,pcl}

positional arguments:
  target                printer device or hostname
  {ps,pjl,pcl}          printing language to abuse

optional arguments:
  -h, --help            show this help message and exit
  -s, --safe            verify if language is supported
  -q, --quiet           suppress warnings and chit-chat
  -d, --debug           enter debug mode (show traffic)
  -i file, --load file  load and run commands from file
  -o file, --log file   log raw data sent to the target
مثال على الاستخدام:
root@kitploit:~
$ ./pret.py laserjet.lan ps
$ ./pret.py /dev/usb/lp0 pjl
الوسائط الموضعية:

PRET تتطلب هدفاً صالحاً ولغة طابعة كوسائط. يمكن أن يكون الهدف إما عنوان IP/اسم مضيف طابعة شبكة (مع فتح المنفذ 9100/tcp) أو جهاز مثل /dev/usb/lp0 لطابعة USB محلية. لاكتشاف جميع طابعات الشبكة في شبكتك الفرعية بسرعة باستخدام بث SNMP، قم ببساطة بتشغيل PRET بدون وسائط:

root@kitploit:~
./pret.py
No target given, discovering local printers

address          device                       uptime    status                 
───────────────────────────────────────────────────────────────────────────────
192.168.1.5      hp LaserJet 4250             10:21:49   Ready                 
192.168.1.11     HP LaserJet M3027 MFP        13 days    Paper jam             
192.168.1.27     Lexmark X792                 153 days   Ready                 
192.168.1.28     Brother MFC-7860DW           16:31:17   Sleep mode            

لغة الطابعة التي سيتم استغلالها يجب أن تكون واحدة من ps أو pjl أو pcl. ليست كل اللغات مدعومة في كل طابعة، لذا قد ترغب في تبديل اللغات إذا لم تتلق أي ردود. كل لغة طابعة ترتبط بمجموعة مختلفة من أوامر PRET ولها قدرات مختلفة للاستغلال.

الوسائط الاختيارية:

--safe يحاول التحقق عبر IPP و HTTP و SNMP ما إذا كانت لغة الطباعة المحددة (PS/PJL/PCL) مدعومة بالفعل من قبل الجهاز قبل الاتصال. على الطابعات غير المتصلة بالشبكة (USB، كابل متوازي) سيفشل هذا الاختبار.

--quit يقوم بقمع تحديد نموذج الطابعة ورسالة الترحيب وبعض الأحاديث الجانبية الأخرى.

--debug يظهر تدفق البيانات المرسلة فعلياً إلى الجهاز والردود المستلمة. لاحظ أن بيانات الرأس وغيرها من النفقات العامة يتم تصفيتها. لرؤية كل حركة المرور، استخدم wireshark. يمكن أيضاً تشغيل/إيقاف التصحيح داخل جلسة PRET باستخدام الأمر debug.

--load filename يقرأ وينفذ أوامر PRET من ملف نصي. هذا مفيد للأتمتة. يمكن أيضاً استدعاء ملفات الأوامر لاحقاً داخل جلسة PRET عبر الأمر load.

--log filename يكتب نسخة من تدفق البيانات الخام المرسلة إلى الطابعة في ملف. يمكن أن يكون هذا مفيداً لبناء ملف مهمة طباعة ضارة يمكن نشرها على طابعة أخرى لا يمكن الوصول إليها مباشرة، مثلاً بطباعته من محرك أقراص USB.

الأوامر العامة

بعد الاتصال بجهاز طابعة، سترى شاشة PRET ويمكنك تنفيذ أوامر مختلفة:

root@kitploit:~
$ ./pret.py laserjet.lan pjl
      ________________
    _/_______________/|
   /___________/___//||   PRET | Printer Exploitation Toolkit v0.25
  |===        |----| ||    by Jens Mueller <[email protected]>
  |           |   ô| ||
  |___________|   ô| ||
  | ||/.´---.||    | ||        「 cause your device can be
  |-||/_____\||-.  | |´           more fun than paper jams 」
  |_||=L==H==||_|__|/

     (ASCII art by
     Jan Foerster)

Connection to laserjet.lan established
Device:   hp LaserJet 4250

Welcome to the pret shell. Type help or ? to list commands.
laserjet.lan:/> help

Available commands (type help <topic>):
=======================================
append  debug    edit    free  id    ls       open      restart   timeout  
cat     delete   env     fuzz  info  mirror   printenv  selftest  touch    
cd      df       exit    get   load  mkdir    put       set       traversal
chvol   disable  find    help  lock  nvram    pwd       site      unlock   
close   display  format  hold  loop  offline  reset     status    version  

laserjet.lan:/> ls ../../
-      834   .profile
d        -   bin
d        -   dev
d        -   etc
d        -   hp
d        -   hpmnt
-     1276   init
d        -   lib
d        -   pipe
d        -   tmp
laserjet.lan:/> exit

قائمة بأوامر PRET العامة موضحة أدناه:

root@kitploit:~
help      عرض الأوامر المتاحة أو الحصول على مساعدة مفصلة باستخدام 'help cmd'.
debug     الدخول في وضع التصحيح. استخدم 'hex' لعرض hexadecimal:  debug [hex]
load      تشغيل الأوامر من ملف:  load cmd.txt
loop      تشغيل أمر لعدة وسائط:  loop <cmd> <arg1> <arg2> …
open      الاتصال بجهاز بعيد:  open <target>
close     قطع الاتصال بالجهاز.
timeout   تعيين مهلة الاتصال:  timeout <seconds>
discover  اكتشاف أجهزة الطابعة المحلية عبر SNMP.
print     طباعة ملف صورة أو نص خام:  print <file>|"text"
site      تنفيذ أمر مخصص على الطابعة:  site <command>
exit      الخروج من المفسر.

عمليات نظام الملفات العامة مع تنفيذ خاص بلغة PS/PJL/PCL:

root@kitploit:~
┌───────────┬─────┬─────┬─────┬────────────────────────────────────────┐
│ الأمر     │ PS  │ PJL │ PCL │ الوصف                                  │
├───────────┼─────┼─────┼─────┼────────────────────────────────────────┤
│ ls        │  ✓  │  ✓  │  ✓  │ عرض محتويات الدليل البعيد.             │
│ get       │  ✓  │  ✓  │  ✓  │ استلام ملف: get <ملف>                  │
│ put       │  ✓  │  ✓  │  ✓  │ إرسال ملف: put <ملف محلي>              │
│ append    │  ✓  │  ✓  │     │ إلحاق بملف: append <ملف> <نص>          │
│ delete    │  ✓  │  ✓  │  ✓  │ حذف ملف بعيد: delete <ملف>             │
│ rename    │  ✓  │     │     │ إعادة تسمية ملف بعيد: rename <قديم> <جديد> │
│ find      │  ✓  │  ✓  │     │ عرض محتويات الدليل بشكل متكرر.         │
│ mirror    │  ✓  │  ✓  │     │ عكس نظام الملفات البعيد إلى دليل محلي. │
│ cat       │  ✓  │  ✓  │  ✓  │ إخراج الملف البعيد إلى stdout.         │
│ edit      │  ✓  │  ✓  │  ✓  │ تحرير الملفات البعيدة باستخدام vim.    │
│ touch     │  ✓  │  ✓  │     │ تحديث طوابع الملفات الزمنية: touch <ملف> │
│ mkdir     │  ✓  │  ✓  │     │ إنشاء دليل بعيد: mkdir <مسار>          │
├───────────┼─────┼─────┼─────┼────────────────────────────────────────┤
│ cd        │  ✓  │  ✓  │     │ تغيير دليل العمل البعيد.               │
│ pwd       │  ✓  │  ✓  │     │ عرض دليل العمل على الجهاز.             │
│ chvol     │  ✓  │  ✓  │     │ تغيير الحجم البعيد: chvol <حجم>        │
│ traversal │  ✓  │  ✓  │     │ تعيين اجتياز المسار: traversal <مسار>   │
├───────────┼─────┼─────┼─────┼────────────────────────────────────────┤
│ format    │  ✓  │  ✓  │     │ تهيئة نظام ملفات الطابعة.               │
│ fuzz      │  ✓  │  ✓  │     │ اختبار عشوائي لنظام الملفات: fuzz <فئة>│
├─ ─ ─ ─ ─ ─┴─ ─ ─┴─ ─ ─┴─ ─ ─┴─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│   path   - استكشاف هيكل FS باستراتيجيات اجتياز المسار.               │
│   write  - أولاً وضع/إلحاق ملف، ثم التحقق من وجوده.                  │
│   blind  - اختبارات للقراءة فقط للملفات الموجودة مثل /etc/passwd.    │
├───────────┬─────┬─────┬─────┬────────────────────────────────────────┤
│ df        │  ✓  │  ✓  │     │ عرض معلومات الحجم.                     │
│ free      │  ✓  │  ✓  │  ✓  │ عرض الذاكرة المتاحة.                   │
└───────────┴─────┴─────┴─────┴────────────────────────────────────────┘

أوامر في وضع PS

root@kitploit:~
id         عرض معلومات الجهاز.
version    عرض إصدار مفسر PostScript.
devices    عرض أجهزة الإدخال/الإخراج المتاحة.
uptime     عرض وقت تشغيل النظام (قد يكون عشوائياً).
date       عرض تاريخ ووقت نظام الطابعة.
pagecount  عرض عداد صفحات الطابعة.

lock       تعيين كلمة مرور معلمات startjob والنظام.
unlock     إلغاء تعيين كلمة مرور معلمات startjob والنظام.
restart    إعادة تشغيل مفسر PostScript.
reset      إعادة تعيين إعدادات PostScript إلى الإعدادات الافتراضية للمصنع.
disable    تعطيل وظيفة الطباعة.
destroy    التسبب في ضرر مادي لـ NVRAM الطابعة.
hang       تنفيذ حلقة لا نهائية في PostScript.

overlay    وضع ملف eps كتراكب على جميع النسخ المطبوعة:  overlay <ملف.eps>
cross      وضع جرافيتي طابعة على جميع النسخ المطبوعة:  cross <خط> <نص>
replace    استبدال سلسلة في المستندات المراد طباعتها:  replace <قديم> <جديد>
capture    التقاط المزيد من المهام المراد طباعتها على هذا الجهاز.
hold       تمكين الاحتفاظ بالمهام.

set        تعيين مفتاح إلى قيمة في القاموس الأعلى:  set <مفتاح=قيمة>
known      قائمة بعوامل PostScript المدعومة:  known <عامل>
search     البحث في جميع القواميس بواسطة المفتاح:  search <مفتاح>
dicts      إرجاع قائمة بالقواميس وأذوناتها.
resource   قائمة أو تفريغ مورد PostScript:  resource <فئة> [dump]

dump       تفريغ قاموس:  dump <قاموس>
  القواميس: - systemdict - statusdict - userdict 
                - globaldict - serverdict - errordict
                - internaldict - currentsystemparams
                - currentuserparams - currentpagedevice

config     تغيير إعدادات الطابعة:  config <إعداد>
  duplex        - تعيين الطباعة على الوجهين.
  copies #      - تعيين عدد النسخ.
  economode     - تعيين الوضع الاقتصادي.
  negative      - تعيين الطباعة السلبية.
  mirror        - تعيين الانعكاس المرآوي.

ليست كل الأوامر مدعومة في كل طابعة. خاصة أجهزة Brother و Kyocera تستخدم نسخها الخاصة من PostScript – Br-Script و KPDL – بدلاً من ترخيص 'Adobe PostScript' الأصلي. قد لا تكون هذه النكهات من لغة PostScript متوافقة بنسبة 100%، خاصة فيما يتعلق بالميزات الحساسة للأمان مثل التقاط مهام الطباعة. الوصول إلى نظام الملفات مدعوم من قبل معظم الطابعات، لكنه عادة ما يقتصر على دليل محدد ومحمي (sandboxed).

أوامر في وضع PJL

root@kitploit:~
id         عرض معلومات الجهاز.
status     تمكين رسائل الحالة.
version    عرض إصدار البرنامج الثابت أو الرقم التسلسلي (من 'info config').
pagecount  التلاعب بعداد صفحات الطابعة:  pagecount <رقم>
printenv   عرض متغير بيئة الطابعة:  printenv <VAR>
env        عرض متغيرات البيئة (اسم مستعار لـ 'info variables').
set        تعيين متغير بيئة الطابعة:  set <VAR=VALUE>

display    تعيين رسالة عرض الطابعة:  display <رسالة>
offline    إخراج الطابعة من الخدمة وعرض رسالة:  offline <رسالة>
restart    إعادة تشغيل الطابعة.
reset      إعادة تعيين إلى الإعدادات الافتراضية للمصنع.
selftest   إجراء اختبارات ذاتية مختلفة للطابعة.
disable    تعطيل وظيفة الطباعة.
destroy    التسبب في ضرر مادي لـ NVRAM الطابعة.
flood      إغراق إدخال المستخدم، قد يكشف عن تجاوزات سعة المخزن المؤقت.

lock       قفل إعدادات لوحة التحكم والوصول للكتابة على القرص.
unlock     فتح إعدادات لوحة التحكم والوصول للكتابة على القرص.
hold       تمكين الاحتفاظ بالمهام.

nvram      عمليات NVRAM:  nvram <عملية>
  nvram dump [all]           - تفريغ (جميع) NVRAM إلى ملف محلي.
  nvram read addr            - قراءة بايت واحد من عنوان.
  nvram write addr value     - كتابة بايت واحد إلى عنوان.

info       عرض المعلومات:  info <فئة>
  info config      - تقديم معلومات التكوين.
  info filesys     - إرجاع معلومات نظام ملفات PJL.
  info id          - تقديم رقم طراز الطابعة.
  info memory      - تحديد حجم الذاكرة المتاحة.
  info pagecount   - إرجاع عدد الصفحات المطبوعة.
  info status      - تقديم حالة الطابعة الحالية.
  info ustatus     - سرد متغيرات الحالة غير المرغوب فيها.
  info variables   - سرد متغيرات بيئة الطابعة.

بعض الأوامر مدعومة حصرياً من قبل طابعات HP، لأن البائعين الآخرين قاموا فقط بتنفيذ مجموعة فرعية من معيار PJL. هذا ينطبق بشكل خاص على الأوامر المستندة إلى PML مثل restart أو reset. يبدو أن تمكين الاحتفاظ بالمهام على المدى الطويل عبر الأمر hold ممكن فقط لبعض أجهزة Epson. الوصول إلى NVRAM عبر الأمر nvram هو ميزة خاصة بطابعات Brother. الوصول المحدود إلى نظام الملفات مدعوم من قبل العديد من أجهزة HP و OKI و Konica و Xerox و Epson و Ricoh.

أوامر في وضع PCL

root@kitploit:~
selftest   إجراء اختبار ذاتي للطابعة.
info       عرض المعلومات:  info <فئة>
  info fonts      - عرض الخطوط المثبتة.
  info macros     - عرض الماكروهات المثبتة.
  info patterns   - عرض الأنماط المعرفة من قبل المستخدم.
  info symbols    - عرض مجموعات الرموز.
  info extended   - عرض الخطوط الموسعة.

PCL هي لغة وصف صفحات محدودة جداً بدون إمكانية الوصول إلى نظام الملفات. لذلك تستخدم أوامر get/put/ls نظام ملفات افتراضياً يعتمد على ماكروهات PCL، تم تنفيذه بشكل أساسي من أجل القيمة الاختراقية. يوضح هذا المفهوم أنه حتى الجهاز الذي يدعم فقط لغات بسيطة مثل PCL يمكن استخدامه لتخزين ملفات عشوائية مثل مواد مخالفة لحقوق النشر. على الرغم من أن خدمة مشاركة الملفات هذه ليست ثغرة أمنية بحد ذاتها، إلا أنها قد تنطبق كـ 'إساءة استخدام الخدمة' حسب سياسة الشركة.

قائمة الملفات

  • pret.py - البرنامج الرئيسي القابل للتنفيذ
  • capabilities.py - الإجراءات الروتينية للتحقق من دعم لغة الطابعة
  • discovery.py - الإجراءات الروتينية لإدراج الطابعات باستخدام بث SNMP
  • printer.py - كود عام لوصف جهاز طباعة
  • postscript.py - كود خاص بـ PS (يرث من فئة printer)
  • pjl.py - كود خاص بـ PJL (يرث من فئة printer)
  • pcl.py - كود خاص بـ PCL (يرث من فئة printer)
  • helper.py - دوال مساعدة للإخراج والتسجيل والمقابس وغيرها
  • codebook.py - جدول ثابت لرموز الحالة/الخطأ في PJL
  • fuzzer.py - ثوابت لاختبارات fuzzing لنظام الملفات
  • mibs/* - MIBs خاصة بالطابعة لـ SNMP
  • db/* - قاعدة بيانات للنماذج المدعومة

بدء الاستخدام

نظراً للميزات والامتدادات الملكية المتنوعة في لغات الطباعة مثل PostScript و PJL، فإن إجراء اختبار اختراق على الطابعات ليس مهمة تافهة. يمكن لـ PRET المساعدة في تأكيد المشكلات المعروفة في اللغة. بمجرد اللعب بالأداة، قد ترغب في إجراء تحليل أمني منهجي للطابعات. نقطة بداية جيدة هي ورقة الغش لاختبار أمان الطابعات.

استمتع بالاختراق!

تنزيل الأداة
  • lpd/* - نصوص برمجية لاختبار fuzzing لـ LPD