
كشف نشاط USB أثناء التشغيل

[!NOTE] USBvalve الإصدار 1.0.0
تمت إعادة كتابة التطبيق بالكامل:
- تم الابتعاد عن بيئة Arduino IDE، والآن الكود مكتوب لـ Pi Pico SDK
- تم تقليل الاعتماد على المكتبات الخارجية بشكل كبير
- أصبح دعم مضيف USB لأجهزة السرعة المنخفضة أكثر قوة (ATTiny85، EvilCrow، إلخ)
- العتاد والوظائف لم تتغير تقريبًا، راجع الملاحظات أدناه للحصول على التفاصيل
أنا متأكد من أنه، مثلي، طُلب منك وضع محرك USB الخاص بك في جهاز غير معروف... ثم يأتي الشك:
ماذا حدث لمحرك USB المسكين الخاص بي، خلف الكواليس؟ هل يسرق ملفاتي؟ هل يشفرها؟ أم فقط يثبّت برمجية خبيثة؟ مع USBvalve يمكنك اكتشاف ذلك في ثوانٍ: مبني على عتاد رخيص جدًا متوفر تجاريًا، يمكنك بسرعة اختبار أي نشاط لنظام ملفات USB وفهم ما يحدث قبل فوات الأوان!
مع USBvalve يمكنك الحصول على تغذية راجعة فورية حول ما يحدث للمحرك؛ ستعرض لك الشاشة ما إذا كان نظام الملفات المزيف المبني على الجهاز يتم الوصول إليه أو قراءته أو الكتابة عليه:
وابتداءً من الإصدار 0.8.0 يمكنك أيضًا استخدامه كمضيف USB لاكتشاف أجهزة BADUSB:
هذا مثال على مصحح BADUSB المتاح على المنفذ التسلسلي:
إذا كنت تفضل الفيديوهات، يمكنك أيضًا إلقاء نظرة على عرضي في Insomni'hack
ابتداءً من الإصدار 0.15.0 يتم دعم إصدار Pi Pico Watch الجديد. لتجميع الإصدار الجديد يجب عليك إلغاء التعليق عن السطر #define PIWATCH في بداية الكود. العتاد عبارة عن شاشة TFT مقاس 1.28 بوصة ولوحة ساعة مبنية على RP2040. يمكنك العثور على مزيد من المعلومات هنا.
هذا متوافق أيضًا بشكل كامل مع Waveshare RP2040-LCD-1.28.
docs: توثيق حول المشروع، مع عرض تقديمي يمكنك من خلاله الاطلاع على جميع الميزات
firmware: برامج ثابتة مبنية مسبقًا لـ Raspberry Pi Pico. يمكنك فقط استخدامها وحرقها على اللوحة. لدينا عدة إصدارات مختلفة، لشاشات OLED بـ 32 أو 64 سطرًا، لـ Pico 1 أو Pico2، Pi Pico Watch، إلخ
PCB: ملف Gerber إذا كنت تريد طباعة لوحة PCB المخصصة. ليس إلزاميًا، يمكنك استخدام لوحتك الخاصة أو بنائها على لوحة تجارب
src و data: المصادر، إذا كنت تريد تعديل وبناء البرنامج الثابت بنفسك
utils: بعض الأدوات التي قد تستخدمها لبناء نظام ملفات مخصص
pictures: الصور والموارد المستخدمة في هذا التوثيق
STL: ملفات STL للغلاف. في مجلدات 1.1 و 1.2 توجد أغلفة كاملة (شكرًا لـ WhistleMaster). في مجلدات 1.2_64 و 1.2_64_simple توجد أغلفة لشاشة 128x64 (شكرًا لـ rtmq0227). إذا كنت تريد شيئًا أخف لحماية شاشة LCD يمكنك استخدام USBvalve_sliding_cover.stl.
إذا كنت تريد بناء نسختك الخاصة، فأنت بحاجة إلى:
في إصدارات 0.x.x، كان BOOTSEL يُستخدم لإعادة تعيين الجهاز أو طباعة عدد أحداث HID (اضغط > ثانيتين).
كان استقصاء BOOTSEL يسبب بعض المشاكل في اكتشاف BADUSB لذلك تمت إزالته من الإصدار 1.0.0 واستبداله بالخيارين التاليين:
GP0 و GND (الوسادات 1 و 3، انظر الصورة أدناه لمشاهدة مثال) للحصول على نفس الوظائفr (إعادة تعيين) و h (أحداث HID) من مراقب المنفذ التسلسلي
في PCB ستجد أيضًا إصدار 1.3 من اللوحة، مع بعض الثقوب على الوسادات 1 و 3 لتسهيل تركيب الزر. لكن كما ترى، يمكنك أيضًا استخدام نسختك القديمة.
إذا كنت لا تستخدم وظائف BADUSB أو إذا كنت تفضل الحصول على تغطية أقل في الاكتشاف مع الحفاظ على استخدام BOOTSEL، فأنا أوفر أيضًا برنامجًا ثابتًا تم إنشاؤه مع تمكين bootsel (انظر المجلد والإصدارات).
شكرًا لـ Tz1rf لدينا أيضًا فيديوهان رائعان: أحدهما يشرح عملية البناء خطوة بخطوة، والآخر يوضح كيفية رفع البرنامج الثابت واستخدام الأداة.
تقريبًا كل العمل يتم مباشرة على اللوحة بواسطة البرنامج، لذلك تحتاج فقط إلى ترتيب الاتصال مع شاشة OLED للإخراج.
ابتداءً من الإصدار 0.8.0 من البرنامج الثابت، يمكن لـ USBvalve اكتشاف أجهزة HID (المستخدمة لاكتشاف BADUSB). هذا يتطلب منفذ USB إضافي يعمل كمضيف. إذا لم تكن مهتمًا بهذا، يمكنك استخدام التعليمات القديمة في مجلد docs واستخدام إصدار PCB 1.1. وإلا فتابع مع إصدار PCB 1.2 (لدينا إصدار لـ USB-A أو USB-B، انظر المجلد).
USBH. هذا للإصدار A، لكن هناك إصدار لـ USB Micro-B أيضًا إذا كنت تفضل ذلكبعض شاشات OLED لديها أطراف GND و VCC متبادلة، لذلك بنيت لوحة PCB لتكون متوافقة مع كلا الإصدارين:
على سبيل المثال إذا كانت شاشتك OLED لديها GND على الطرف PIN1 و VCC على الطرف PIN2 مثل هذا:
يجب عليك وضع قطعة من اللحام على هاتين الوسادتين على الجزء الخلفي من لوحة PCB:
وإلا فيجب عليك العكس ووضع اللحام على الوسادات الأخرى:
إذا كنت تستخدم لوحة تجارب أو مجرد توصيلات، كل ما عليك فعله هو التأكد من توصيل الأطراف الصحيحة بشاشة OLED ومنفذ USB المضيف.
التخطيط كالتالي: