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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
USB Spy — يعترض ويحلل حركة مرور أجهزة التخزين الكتلي USB على مستوى الكتلة والملف، ويحاكي أجهزة USB، ويدعم برامج ثابتة مخصصة بلغة بايثون لأبحاث الأمن، والتحليل الجنائي، واختبار ثغرات TOCTOU. | Kitploit
أدوات/GitLabGitLab/christophe.duvernois/usb-spy
تحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةالتحقيق الجنائي الرقميالتحاليل الرقمية الجنائيةاختبار الاختراقأمن الأجهزةالفريق الأحمرتحليل البرامج الثابتة
GitLabchristophe.duvernois/usb-spy

USB Spy

يعترض ويحلل حركة مرور أجهزة التخزين الكتلي USB على مستوى الكتلة والملف، ويحاكي أجهزة USB، ويدعم برامج ثابتة مخصصة بلغة بايثون لأبحاث الأمن، والتحليل الجنائي، واختبار ثغرات TOCTOU.

3296منذ 2 أشهرلم تتم المراجعة بعد
عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

USB SPY

Logo

License: GPL v3 pipeline

usb-spy هو محلل حركة مرور USB Mass Storage مبني حول متحكم دقيق يدعم WiFi أو Ethernet.

يعرض اللوح صورة قرص (FAT أو أي نظام ملفات) كجهاز USB Mass Storage وهمي للنظام المستهدف، بينما يتم توفير بيانات التخزين الفعلية من خادم بعيد عبر WiFi أو Ethernet. يتيح هذا الإعداد لـ usb-spy اعتراض وتحليل كل عملية وصول إلى الكتل يقوم بها النظام المستهدف.

إلى جانب التتبع على مستوى الكتل الخام، يفهم usb-spy أنظمة الملفات ويمكنه ربط كل كتلة تم الوصول إليها بالملف والدليل المقابلين، مما يسهل رؤية الملف الذي يتم قراءته أو كتابته فورًا، بدلاً من مجرد أرقام القطاعات الخام.

بالإضافة إلى ذلك، يمكن لـ usb-spy محاكاة أي جهاز USB من خلال تخصيص خصائص الجهاز مثل معرف البائع، ومعرف المنتج، والرقم التسلسلي، والشركة المصنعة، واسم المنتج عبر ملف إعدادات JSON. يتيح لك ذلك انتحال شخصية أجهزة USB محددة لأغراض الاختبار والتحليل.

الأداة قابلة للتوسعة بسهولة من خلال أكواد Python النصية التي يكتبها المستخدم، مما يتيح لك تنفيذ منطق مخصص للتعامل مع أحداث القراءة/الكتابة USB وعمليات مستوى الكتل.

Design

الوعي بنظام الملفات

عند اكتشاف نظام ملفات مدعوم، يقوم usb-spy بما يلي:

  • تحليل بيانات نظام الملفات الوصفية
  • تحويل عناوين الكتل إلى مسارات ملفات
  • عرض أسماء الملفات والأدلة القابلة للقراءة البشرية لكل عملية وصول

أنظمة الملفات المدعومة حاليًا:

  • FAT32
  • EXT4

سيتم إضافة دعم لأنظمة ملفات إضافية في المستقبل.

إذا لم يكن نظام الملفات مدعومًا، فلا يزال بإمكان usb-spy العمل:

  • يتم التقاط جميع عمليات القراءة/الكتابة USB
  • يتم عرض عمليات الوصول على مستوى الكتل الخام
  • معلومات اسم الملف والدليل غير متاحة

يضمن ذلك بقاء usb-spy مفيدًا حتى مع أنظمة الملفات غير المعروفة أو المخصصة أو الاحتكارية.

حالات الاستخدام النموذجية

  • هندسة عكسية لـ USB Mass Storage
  • تحليل سلوك البرامج الثابتة وأنظمة التشغيل
  • فهم أنماط الوصول إلى الملفات أثناء الإقلاع أو وقت التشغيل
  • البحث الأمني والتحليل الجنائي الرقمي
  • اكتشاف واستغلال ثغرات Time-of-Check Time-of-Use (TOCTOU)

بناء برنامج USB-SPY الثابت للوحات المدعومة

SupportedBoard

تعليمات بناء البرنامج الثابت لكل لوحة مدعومة موصوفة هنا:

  • لوحة Raspberry Pi Pico المبنية على متحكم RP2040
    • Raspberry Pico W
    • W5500-EVB-Pico
    • W6100-EVB-Pico
  • Adafruit Feather M0 (ليست جميع الميزات مدعومة)

بناء أداة خادم USB-SPY

الكود المصدري موجود في دليل src. سيقوم بتحميل صورة FAT، وعرضها عبر منفذ TCP، وتسجيل كل عملية وصول تتم على الصورة. لطباعة معلومات الملفات والأدلة، تعتمد الأداة على مكتبة TheSleuthKit.

للبناء، قم بتشغيل الأمر التالي في الدليل الجذر

جلب جميع الوحدات الفرعية

git submodule update --init --recursive

ثم قم بتشغيل أمر إعداد waf.

./waf configure

إذا كنت تريد البناء بدون دعم تضمين Python، قم بالإعداد باستخدام:

./waf configure --disable-python

سيقوم بالتحقق من وبناء جميع التبعيات التي يحتاجها، ثم لبناء المشروع فعليًا قم بتشغيل

./waf build

سيكون الملف الثنائي في دليل wbuild

عند البناء باستخدام --disable-python، لن تكون خيارات التشغيل --py و --py-args متاحة.

إنشاء صورة FAT32

يمكننا القيام بذلك بسهولة باستخدام حزمة أدوات mtools

إنشاء ملف بحجم 2 ميجابايت

dd if=/dev/zero of=disk.img bs=1M count=2

وضع نظام ملفات FAT عليه (استخدم -F لـ FAT32، وإلا فسيكون تلقائيًا)

mformat -i disk.img ::

إضافة ملف إليه

mcopy -i disk.img example.txt ::

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

mdir -i disk.img ::

استخراج ملف

mcopy -i disk.img ::/example.txt extracted.txt

تشغيل usb-spy

قم بتشغيل أداة التجسس مع الصورة المنشأة حديثًا

./usb-spy -v disk.img

لفرض الوضع الخام وتخطي الاكتشاف التلقائي لنظام الملفات:

./usb-spy --raw disk.img

لتوجيه الوصول مباشرة إلى جهاز كتل حقيقي:

./usb-spy --proxy /dev/sda

قم بتوصيل اللوح بمنفذ USB الخاص بالنظام المستهدف.

محاكاة جهاز USB محدد

لمحاكاة جهاز USB محدد، يمكن تجاوز المعلمات من خلال ملف إعدادات json:

ملف json التالي سيقوم بمحاكاة جهاز Kingston DataTraveler USB:

{
	"vendor_id": 2385,
	"product_id": 5734,
	"bcd_device": 272,
	"product_rev": "3.0",
	"manufacturer": "Kingston",
	"product_name": "DataTraveler",
	"serial": "509C4BBFACCDE742880C026B",
	"language": 1033
}

قم بتشغيل أداة التجسس مع ملف الإعدادات هذا

./usb-spy -c config/kingston.json disk.img

مخرجات dmesg لهذا الجهاز:

usb 1-8: New USB device found, idVendor=0951, idProduct=1666, bcdDevice= 1.10
usb 1-8: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-8: Product: DataTraveler
usb 1-8: Manufacturer: Kingston
usb 1-8: SerialNumber: 509C4BBFACCDE742880C026B
usb-storage 1-8:1.0: USB Mass Storage device detected
scsi host6: usb-storage 1-8:1.0
scsi 6:0:0:0: Direct-Access     Kingston DataTraveler     3.0  PQ: 0 ANSI: 2

تنفيذ سلوكك الخاص

إذا كنت تريد تنفيذ منطقك الخاص لكل حدث قراءة/كتابة، يمكنك القيام بذلك بسهولة في Python.

قم بتنفيذ فئة USBImage في Python مثل هذه الصورة dummy:

class USBImage:
    def __init__(self, *args, **kwargs):
        """
        Initialize the USBImage.
        :param args: should contain:
            - filename: The name of the file to manage.
        :param kwargs: Arbitrary arguments passed from the c++ command line including:
            readOnly: Whether the interface is read-only.
            verbose: Whether to enable verbose logging.
            block: Whether to enable block mode.
        """
        pass

    def getBlockNumber(self):
        """Get block number"""
        return 100

    def getBlockSize(self):
        """Get block size"""
        return 512

    def read(self, lba, buffer, size):
        """Read block"""
        print(f"read block={lba} size={size}")
        for i in range(size):
            buffer[i] = (lba + i) % 256  # Simulate reading data
        return size

    def write(self, lba, buffer, size):
        """Write block"""
        print(f"write block={lba} size={size}")
        print(buffer)
        return size

    def flush(self):
        """Flush block"""
        print("flush data")

وقم بتشغيل أداة التجسس مع وحدة Python الخاصة بك.

./usb-spy --py python/dummy.py disk.img

يمكنك أيضًا تمرير وسائط عشوائية من سطر الأوامر إلى فئة Python الخاصة بك. الوسائط متاحة في kwargs.

./usb-spy --py python/dummy.py --py-args arg1=2 --py-args arg2=Hello disk.img

يمكنك أيضًا البدء من مثال rawimage الذي يوفر تنفيذًا كاملاً (~100 سطر من الكود) لما هو منفذ في ملف usb-spy الثنائي بشكل أصلي.

إخلاء المسؤولية

يتم توفير هذا المشروع "كما هو". لا يوجد ضمان للصحة أو الأمان أو الملاءمة لأي غرض معين.

استخدم الأدوات والبرامج الثابتة على مسؤوليتك الخاصة. المؤلف والمساهمون غير مسؤولين عن أي ضرر أو فقدان بيانات أو عواقب قانونية قد تنشأ عن استخدام هذا البرنامج أو العتاد.

المساهمة

المساهمات مرحب بها! يرجى اتباع الخطوات التالية:

  1. قم بعمل Fork للمستودع.
  2. أنشئ فرعًا جديدًا لميزتك أو إصلاح الخلل.
  3. قدم طلب سحب (Pull Request) مع وصف مفصل.

الترخيص

License: GPL v3

تنزيل الأداة