بيت - استعادة
الطب الشرعي لنظام التشغيل Linux في شكل تتبع سجل اتصال أجهزة USB. الطب الشرعي لنظام Linux في شكل تتبع سجل اتصال أجهزة USB المتصلة بأجهزة USB Linux

USB - الناقل التسلسلي العالمي الناقل التسلسلي) تم تطويره من قبل مجموعة من الشركات بهدف توفير ناقل واحد بسيط لتوصيل الأجهزة الطرفية.

يتيح تصميم USB للأجهزة الاتصال بسرعة باستخدام مقابس قياسية للاتصال. تشتمل أجهزة USB على: لوحات المفاتيح، وأجهزة الماوس، والطابعات، والماسحات الضوئية، الأقراص الصلبةومحركات الأقراص المحمولة والكاميرات وأجهزة المودم، محولات الشبكةوالأعمدة، وقائمتهم تتزايد باستمرار.

يعد دعم Linux لأجهزة USB شاملاً تمامًا، ولكن بعض الأجهزة تتطلب برامج تشغيل خاصة، والبعض الآخر، وخاصة الطابعات والماسحات الضوئية، قد لا يكون مدعومًا أو مدعومًا جزئيًا فقط.

قد تحتوي أنظمة الكمبيوتر على وحدة تحكم أو لوحات وصل واحدة أو أكثر مصممة لتوصيل أجهزة USB أو لوحة وصل (خارجية) أخرى. يمكن أن يدعم المحور ما يصل إلى 7 أجهزة، والتي بدورها يمكن أن تحتوي على محاور إضافية. المحور بالداخل وحدة النظاميسمى مركز الجذر. يمكن لكل هيكل نجمي أن يدعم ما يصل إلى 127 محورًا أو جهازًا.

عندما نقول منفذ USB، فإننا نعني دعم USB للكمبيوتر ومنفذ الاتصال، وليس عنوان المنفذ الداخلي الذي يستخدمه الجهاز.

تسمح طبقات نظام USB للمضيف بتحديد خصائص جهاز USB، بما في ذلك الفئة واسم الشركة المصنعة واسم الجهاز ومتطلبات الجهد والسرعة ومستوى دعم USB والوظائف الأخرى.

وحدة دعم جهاز Linux USB

أجهزة USB مدعومة حاليًا بشكل كامل على نظام التشغيل Linux. ظهرت معظم التغييرات في فرع النواة 2.6، على الرغم من وجود بعض الدعم حتى في النواة 2.2. يدعم Linux كلاً من USB 2.0 والمواصفات السابقة. نظرًا لطبيعة التوصيل السريع لـ USB، يتم الدعم عادةً من خلال وحدات kernel التي يمكن تحميلها أو تفريغها حسب الحاجة.

يسمح لك الأمر lspci بعرض أجهزة USB:

Root@localhost:~:# lspci | grep -i usb 00:03.0 وحدة تحكم USB: أنظمة متكاملة من السيليكون وحدة تحكم USB 1.1 (rev 0f) 00:03.1 وحدة تحكم USB: أنظمة متكاملة من السيليكون وحدة تحكم USB 1.1 (rev 0f) 00:03.3 وحدة تحكم USB: وحدة تحكم USB 2.0 للأنظمة المتكاملة من السيليكون

يوضح إخراج الأمر وجود 3 وحدات تحكم USB في النظام.

باستخدام الأمر lsmod، يمكنك عرض وحدات USB المحملة:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Module" حجم الوحدة المستخدمة بواسطة hid_microsoft 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse 41644 0 ssb 38464 1 ohci_hcd eh ci_hcd 3 4152 0

عرض أجهزة USB المتصلة

يوجد ملخص لأجهزة USB المتصلة حاليًا في الملف /proc/bus/usb/devices. يمكنك عرضه باستخدام الأمر التالي:

Root@localhost:~:# cat /proc/bus/usb/devices T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 0/900 us (0%)، #Int= 0، #Iso= 0 D: Ver= 1.10 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: الشركة المصنعة=Linux 2.6.29.6 ohci_hcd S: المنتج=وحدة التحكم المضيف OHCI S: الرقم التسلسلي=0000:00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt = 0 #EPs= 1 Cls=09(hub) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 28/900 us (3%)، #Int= 2، #Iso= 0 D: Ver= 1.10 Cls=09( hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: البائع=1d6b ProdID=0001 Rev= 2.06 S: الشركة المصنعة=Linux 2.6.29.6 ohci_hcd S: المنتج=وحدة تحكم مضيف OHCI S: الرقم التسلسلي=0000:00: 03.0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub) Sub=00 Prot=00 Driver=hub E: Ad =81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: البائع=045e ProdID=00db Rev= 1.73 S: الشركة المصنعة=Microsoft S: المنتج=Natural � لوحة مفاتيح مريحة 4000 C:* #Ifs = 2 Cfg#= 1 Atr=a0 MxPwr=100mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=01 Driver=usbhid E: Ad=81(I) Atr =03(Int.) MxPS= 8 Ivl=10ms I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID) Sub=00 Prot=00 Driver=usbhid E: Ad=82(I) Atr =03(Int.) MxPS= 8 Ivl=10ms T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: تخصيص= 0/800 us (0% ), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 2.06 S: الشركة المصنعة= Linux 2.6.29.6 ehci_hcd S: Product=EHCI Host Controller S: SerialNumber=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls=09(hub) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

في القائمة Spd=480 يتوافق مع حافلة USB 2.0، وSpd=12 - لأجهزة USB 1.1. علاوة على ذلك، يمكنك أن ترى في القائمة أنه يوجد حاليًا جهاز USB واحد متصل بالنظام - Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).

بطبيعة الحال، أكتب هذا النص على لوحة المفاتيح هذه.

يمكن رؤية التسلسل الهرمي لاتصالات أجهزة USB باستخدام الأمر lsusb مع الخيار -t:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 البائع 0x1d6b المنتج 0x0001 الناقل # 2 `-Dev# 1 البائع 0x1d6b المنتج 0x0001 `-Dev# 2 البائع 0x045e المنتج 0x00db الناقل # 1 `-Dev# 1 بائع 0x1d6b المنتج 0x0002

يمكن الحصول على معلومات حول جهاز USB محدد باستخدام الأمر التالي:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Bus 002 الجهاز 002: ID 045e:00db Microsoft Corp. لوحة المفاتيح الطبيعية المريحة 4000 V1.0 واصف الجهاز: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (محدد على مستوى الواجهة) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x045e Microsoft Corp. idProduct 0x00db لوحة المفاتيح الطبيعية المريحة 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 لوحة المفاتيح الطبيعية المريحة 4000 iSerial 0 bNumConfigurations 1 واصف التكوين: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationV alue 1 iConfiguration 0 bmAttributes 0xa0 (يعمل بالحافلة) Remote Wakeup MaxPower 100mA واصف الواجهة: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 جهاز الواجهة البشرية bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 ** غير معروف: 09 21 11 01 00 01 22 3c 00 Endpoint Descript أو: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 نوع النقل المقاطعة نوع المزامنة لا شيء نوع الاستخدام البيانات wMaxPacketSize 0x0008 1x 8 بايت bInterval 10 واصف الواجهة: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 جهاز الواجهة البشرية bInterfaceSubClass 0 لا فئة فرعية bInterfaceProto col 0 لا يوجد iInterface 0 ** غير معروف: 09 21 11 01 00 01 22 56 00 واصف نقطة النهاية: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 نوع النقل المقاطعة نوع المزامنة لا شيء نوع الاستخدام البيانات wMaxPacketSize 0x0008 1x 8 بايت bInterval 10 حالة الجهاز: 0x0000 (يعمل بالحافلة )

توصيل جهاز USB بسرعة

تتمتع الأنظمة الجديدة بدعم لتوصيل أجهزة USB بسرعة (التوصيل السريع)، وهو ما يعني توصيل الجهاز بنظام التشغيل، والذي يجب أن:

  • تحديد نوع جهاز USB، والعثور على برنامج التشغيل وتشغيله؛
  • ربط السائق بالجهاز؛
  • إخطار الأنظمة الفرعية الأخرى حول جهاز USB.

كجزء من انغماسي في أحد التخصصات (أثناء دراستي لتخصص أمن الكمبيوتر)، عملت على مشروع ترفيهي واحد لا أريد أن أدفنه ببساطة في أعماق مجلد "Univer" على قرص صلب خارجي.

هذا المشروع يسمى usbripوهي أداة مساعدة صغيرة مفتوحة المصدر لوحدة التحكم في الطب الشرعي لنظام التشغيل Linux، وهي مخصصة للعمل مع سجل اتصالات أجهزة USB. البرنامج مكتوب بلغة Python 3 النقية (باستخدام بعض الوحدات النمطية التابعة لجهات خارجية) ولا يتطلب تبعيات بخلاف مترجم Python 3.x وسطرين من المتطلبات.txt، تم حلها في سطر واحد باستخدام النقطة.

سأصف في هذا المنشور بعض إمكانيات هذا البرنامج وأترك ​​دليلًا قصيرًا يحتوي على رابط لمصدر التنزيل.

يقطع! (...أعني قطع!)

ملحوظة. الوظيفة الموضحة في المقالة ذات صلة بإصدار الأداة المساعدة. خلف احدث اصدارمع الكثير من الأشياء الجيدة الجديدة، أقترح الذهاب إلى المستودع.

لقطات الشاشة

الحصول على سجل الاتصال لأجهزة USB القابلة للإزالة:


البحث عن معلومات إضافية حول جهاز USB بواسطة معرف الطراز (PID):

وصف

كما تعلم، أنظمة التشغيل المبنية على GNU/Linux حساسة جدًا لتسجيل أنواع مختلفة من الأحداث، وتوصيل/فصل أجهزة USB ليس استثناءً. بالاشتراك مع إحدى فلسفة UNIX "تدفقات النص كواجهات عالمية" يمكن العثور على معلومات حول نتائج مثل هذه الأحداث (بدرجات متفاوتة من التفاصيل) اعتمادًا على التوزيع في واحد أو أكثر من الملفات النصية التالية:
  • /var/log/kern.log*;
  • /فار/سجل/سجل النظام*;
  • /فار/سجل/رسائل*;
  • /فار/سجل/dmesg*;
  • /var/log/daemon.log*.
يبين لنا دليل الطب الشرعي هذه الصورة في هذا الشأن (غير مكتملة بعض الشيء، ولكن لا يهم):

من أجل عمله، يعثر usbrip على ملفات سجل عالمية لجميع إصدارات Linux المستندة إلى Debian (Ubuntu، وLinux Mint، وما إلى ذلك) وRPM (CentOS، وFedora، وopenSUSE، وما إلى ذلك)، وهي: /var/log/syslog* أو /var/log/messages* ، يقوم بتحليلها للبحث عنها معلومات ضروريةويحول الآثار التي تم العثور عليها لاتصالات جهاز USB إلى لوحات جميلة (أو قوائم - كل ما تريد).

يمكن لـ USBrip أيضًا:

  • إنشاء قوائم بالأجهزة المعتمدة (الموثوقة) في شكل ملفات JSON؛
  • ابحث عن "الأحداث المخالفة" استنادًا إلى قائمة الأجهزة الموثوقة: الأحداث (اتصال/قطع اتصال USB) التي تتضمن أجهزة USB لم يتم وضع علامة "موثوق بها" عليها؛
  • يبحث معلومات إضافيةحول جهاز USB بواسطة VID (معرف البائع) و/أو PID (معرف المنتج).

مرجع

احصل على قائمة بالوحدات المتاحة:

$ python3 usbrip.py -h
احصل على قائمة بالوحدات الفرعية المتاحة لوحدة معينة:

$python3 usbrip.py<модуль>-ح
احصل على قائمة بالخيارات المتاحة لوحدة فرعية محددة:

$python3 usbrip.py<модуль> <подмодуль>-ح

بناء الجملة

$ python3 usbrip.pybanner يعرض شعار الأداة المساعدة على الشاشة. تاريخ أحداث $ python3 usbrip.py [-q] [-t | -l] [-e] [-n عدد الأحداث] [-d التاريخ [التاريخ...]] [-c عمود [عمود...]] [-f ملف السجل [ملف السجل...]] عرض اتصال USB التاريخ. أحداث $ python3 usbrip.py gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a SIGN [SIGN...]] [-q] [-e] [-n NUMBER_EVENTS] [-d DATE [DATE...]] [-f LOG_FILE [LOG_FILE...]] تشكيل القائمة من أجهزة USB المعتمدة (الموثوقة). $ python3 usbrip.py انتهاكات الأحداث<ВХОДНОЙ_ФАЙЛ.JSON>[-حرف [الشحن...]] [-q] [-t | -l] [-e] [-n عدد الأحداث] [-d التاريخ [التاريخ...]] [-c عمود [عمود...]] [-f ملف السجل [ملف السجل...]] البحث عن " الأحداث المخالفة" " بناءً على قائمة الأجهزة الموثوقة. البحث عن معرفات $ python3 usbrip.py [-q] [ --فيد فيد] [--معرف المنتج] [--غير متصل] ابحث عن معلومات إضافية حول الجهاز من خلال VID و/أو PID الخاص به في قاعدة بيانات المعرفات. تنزيل معرفات $ python3 usbrip.py [-q] تحديث (تنزيل) قاعدة بيانات معرف جهاز USB المحلي.

خيارات

الخيارات المدعومة من قبل الوحدات الفرعية "سجل الأحداث"، و"events gen_auth"، و"انتهاكات الأحداث"، و"بحث معرفات الهوية"، و"تنزيل معرفات التعريفات": -q، --quiet احذف عرض الشعارات ورسائل المعلومات (الخضراء)، وقم بتنفيذ الأمر عدم طرح الأسئلة أثناء التنفيذ ######################################################################### ## ############################### الخيارات التي يدعمها "سجل الأحداث"، " الأحداث gen_auth" الوحدات الفرعية "، "انتهاكات الأحداث": -e، --البحث الخارجي فقط عن أجهزة USB القابلة للإزالة (التي تحتوي على معلومات قطع الاتصال) -n عدد الأحداث، --number عدد الأحداث عدد الأحداث الأخيرة حسب التاريخ التي سيتم سيتم عرض -d DATE [DATE..], --date DATE [DATE...] قائمة التواريخ التي سيتم من خلالها تصفية الأحداث عند البحث -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] قائمة ملفات السجل (إذا لم يتم تحديدها، فسيتم البحث في سجل الأحداث باستخدام ملفات السجل الافتراضية: /var/log/syslog* أو /var/log/messages* اعتمادًا على إصدار نظام التشغيل) ##### ######## ############################################################################################### ######## ###################### الخيارات المدعومة بواسطة الوحدات الفرعية "سجل الأحداث"، "انتهاكات الأحداث": -t، -- ينشئ الجدول مخرجات في شكل جدول (إذا كان حجم النافذة الطرفية غير كافٍ لعرض الجدول بشكل صحيح، فسيتم إنشاء المخرجات تلقائيًا في شكل قائمة؛ عند تحديد العلامة -t، سيتم إنشاء الإخراج في شكل جدول قسريًا) -l، --list إنشاء الإخراج كقائمة -c COLUMN [COLUMN...]، --column COLUMN [COLUMN.. .] قائمة الأعمدة التي سيتم استخدامها عند إنشاء جدول (يكون لها تأثير فقط عند إنشاء مخرجات على شكل جدول)؛ المفاتيح المسموح بها: "conn"، "user"، "vid"، "pid"، "prod"، "manufact"، "serial"، "port"، "disconn". ##################################################################################################### ############################# الخيارات المدعومة بواسطة الوحدات الفرعية "events gen_auth"، "انتهاكات الأحداث": - علامة [SIGN...]، --attribute SIGN [SIGN...] قائمة السمات التي سيتم استخدامها عند إنشاء قائمة بالأجهزة المعتمدة (وكذلك عند البحث عن "أحداث مخالفة" في حالة الوحدة الفرعية "انتهاكات الأحداث")؛ المفاتيح المسموح بها: "vid"، "pid"، "prod"، "manufact"، "serial". ##################################################################################################### ## طلب -معرف بائع VID أو معرف الشركة المصنعة لجهاز USB (عادةً 4 أرقام سداسية عشرية) --معرف منتج PID أو معرف طراز جهاز USB (عادةً 4 أرقام سداسية عشرية) - غير متصل إذا تم تحديده، ابحث عن معلومات إضافية حول جهاز USB في قاعدة البيانات سيتم إنتاج بيانات التعريف دون تحديثها أولاً (قاعدة البيانات)

أمثلة على الاستخدام

إظهار سجل الاتصال لجميع أجهزة USB، مع حذف اللافتة والرسائل الإعلامية (الخضراء)، وأيضًا دون طرح أسئلة أثناء التنفيذ (-q، --quite)، وإنشاء الإخراج في شكل قائمة (-l، -- القائمة)، بما في ذلك الذي يحتوي على أحدث 100 حدث تم العثور عليه (-n عدد الأحداث، --number عدد الأحداث):
سجل أحداث $ python3 usbrip.py -ql -n 100
إظهار سجل الاتصال لأجهزة USB القابلة للإزالة (-e، -external)، وإنشاء الإخراج في شكل جدول يحتوي على حقول (أعمدة) "متصل" و"VID" و"PID" و"غير متصل" و"الرقم التسلسلي" "(-c COLUMN [COLUMN...]، --column COLUMN [COLUMN...])، تصفية البحث حسب التواريخ (-d DATE [DATE...]، --date DATE [DATE...] )، وأخذ المعلومات من ملفات السجل الخارجية (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py تاريخ الأحداث -et -c conn معرف المنتج disconn serial -d "9 ديسمبر" "10 ديسمبر" -f /var/log/syslog.1 /var/log/syslog.2.gz
قم بإنشاء جدول لسجل الاتصال لجميع أجهزة USB وأعد توجيه الإخراج إلى ملف لمزيد من التحليل. في حالة أن دفق الإخراج ليس قياسيًا ("|" أو ">" على سبيل المثال)، فلن تكون الدفقات الخاصة موجودة في بيانات الإخراج. الأحرف المسؤولة عن لون الخط في الوحدة الطرفية، لذلك لن يكون الملف النصي ممتلئًا بأحرف غير قابلة للقراءة. تجدر الإشارة أيضًا إلى أن usbrip يستخدم بعض ثوابت UNICODE، لذا سيكون من الجيد تحويل الترميز على الفور الملف الذي تم إنشاؤهفي UTF-8 لعرضها بشكل صحيح (على سبيل المثال، باستخدام encov)، وكذلك استخدام الأحرف خط جديدبأسلوب Windows لسهولة النقل (على سبيل المثال باستخدام awk):
أحداث تاريخ $ python3 usbrip.py -t | awk "( sub("$", "\r"); طباعة )" > usbrip.txt && enconv -x UTF8 usbrip.txt
ملحوظة:تخلص من خاص من الممكن أيضًا استخدام الأحرف المسؤولة عن اللون إذا تم إرسال الإخراج بالفعل إلى stdout. للقيام بذلك، تحتاج إلى نسخ البيانات المستلمة إلى ملف usbrip.txt جديد وإضافة تعليمات awk أخرى:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); طباعة )" usbrip.txt && enconv -x UTF8 usbrip.txt
أنشئ قائمة بالأجهزة الموثوقة على شكل ملف JSON (trusted/auth.json) يحتوي على الحقلين "VID" و"PID" للأول ثلاثةالأجهزة المتصلة في 26 سبتمبر:
أحداث $ python3 usbrip.py gen_auth Trust/auth.json -a vid pid -n 3 -d "26 سبتمبر"
ابحث عن "أحداث المخالف" بين محفوظات اتصالات أجهزة USB القابلة للإزالة استنادًا إلى قائمة الأجهزة الموثوقة (trusted/auth.json) باستخدام حقل "PID" وقم بإنشاء الإخراج في شكل جدول مع "متصل"، الحقول "VID" و"PID":
$ python3 usbrip.py أحداث الانتهاكات Trust/auth.json -a pid -et -c conn vid pid
ابحث عن معلومات إضافية حول جهاز USB استنادًا إلى VID وPID الخاص به:
البحث عن معرفات $ python3 usbrip.py --vid 0781 --pid 5580
تنزيل/تحديث قاعدة بيانات معرف جهاز USB (المصدر):
تنزيل معرفات $ python3 usbrip.py

الروابط والتذييل

يمكنك الحصول على الأداة المساعدة من Github، حيث يتم إدراج جميع التبعيات الخاصة بالتشغيل والتشغيل الصحيح المتطلبات.txt.

أشكر لك إهتمامك!

ملاحظة.نعم، أسلوب راية و رسائل المعلوماتمستوحاة من المشروع com.sqlmap (*^.^*)

محدث 06/13/2018.كان هناك تحقيق في قضية حقيقية (؟) تتعلق بفائدتي من شخص لديه Codeby (أشعر بالصدمة، لأكون صادقًا).

كجزء من انغماسي في أحد التخصصات (أثناء دراستي في تخصص كومبيزا)، عملت على مشروع واحد مثير للاهتمام لا أريد أن أدفنه ببساطة في أعماق مجلد "Univer" على قرص صلب خارجي يقود.

هذا المشروع يسمى

usbrip

وهي أداة مساعدة صغيرة مفتوحة المصدر لوحدة التحكم في الطب الشرعي لنظام التشغيل Linux، وهي مخصصة للعمل مع سجل اتصالات أجهزة USB. البرنامج مكتوب بلغة Python 3 النقية (باستخدام بعض الوحدات النمطية التابعة لجهات خارجية) ولا يتطلب تبعيات بخلاف مترجم Python 3.x وبضعة أسطر من

المتطلبات.txt

تم حلها في سطر واحد باستخدام pip3.

سأصف في هذا المنشور بعض إمكانيات هذا البرنامج وأترك ​​دليلًا قصيرًا يحتوي على رابط لمصدر التنزيل.

تنزيل معرفات $ python3 usbrip.py

الروابط والتذييل

يمكنك الحصول على الأداة المساعدة من

جيثب

تم إدراج جميع التبعيات الخاصة بالتشغيل والتشغيل الصحيح في

المتطلبات.txt

أشكر لك إهتمامك!

ملاحظة.

نعم، أسلوب اللافتة والرسائل الإعلامية مستوحى من المشروع

com.sqlmap

لقد قمت بتوصيل محرك أقراص USB محمول أو لوحة مفاتيح أو ماوس بجهاز الكمبيوتر الذي يعمل بنظام التشغيل Linux. ولكن لا شيء يحدث.

ماذا جرى؟ لماذا لا يكتشف جهاز الكمبيوتر الذي يعمل بنظام التشغيل Linux الجهاز؟ هل هو Linux أم أن جهاز USB الخاص بك توقف عن العمل؟

USB لا يعمل في أوبونتو؟

محركات الأقراص وقارئات بطاقات الذاكرة والهواتف ومشغلات الوسائط و الأجهزة الطرفيةالوسائط المتعددة... كلها مفيدة، ولكن إذا كانت هناك مشكلة في منفذ USB أو برامج تشغيل النظام الخاص بك، فلن تعمل. قد يكون هذا محبطًا بشكل خاص إذا كنت تستخدم لوحة مفاتيح أو ماوس Bluetooth (مع دونجل USB)، لأنه يعني البحث عن بدائل USB سلكية.

ومع ذلك، قد لا يكون ميناء ميتا. قد يكون جهاز USB الذي تستخدمه معيبًا ولا يمكن اكتشافه.

قد يكون حل مشكلات USB أمرًا صعبًا، ولكن ليس من المستحيل تشخيص هذه المشكلات وإجراء الإصلاحات اللازمة.

هناك خمس خطوات لإصلاح مشكلات USB على نظام Linux:

  1. تأكد من اكتشاف منفذ USB
  2. القيام بأعمال الإصلاح اللازمة بالميناء
  3. إصلاح أو إصلاح أجهزة USB
  4. اعادة التشغيل نظام التشغيللينكس
  5. تأكد من توفر برامج تشغيل الأجهزة

دعونا نلقي نظرة على كل واحد منهم على حدة ونتعلم كيفية العمل مع أجهزة USB الصعبة في Linux.

1. هل اكتشف نظام التشغيل Linux جهازك؟

أول شيء يجب التحقق منه عند إدخال جهاز USB في جهاز الكمبيوتر الذي يعمل بنظام التشغيل Linux هو ما إذا كان قد تم اكتشافه أم لا. عادةً ما يكون اكتشاف جهاز USB غير لفظي أو مسموع (في Linux Deepin ليس كذلك) كما هو الحال في Windows أو macOS، مما يعني أنه يتعين عليك غالبًا التحقق من أن الجهاز قد تم التقاطه بواسطة نظام التشغيل.

لحسن الحظ، الأمر بسيط.

أولاً، افصل أجهزة USB التي تطلبها. ثم افتح نافذة طرفية وأدخل الأمر »قائمة USB:

سيقوم الأمر dmesg بإدراج أجهزة USB المتصلة على نظامك. وسيتضمن أيضًا أجهزة غير USB وسيوفر للأسف كمية هائلة من المعلومات. ولمواجهة ذلك يمكنك تجربة:

يبدو هذا وكأنه تقاطع بين الأمرين dmesg وlsusb، حيث يدرج أجهزة USB المتصلة مع معلومات كافية للتعرف عليها.

إذًا، هل USB الذي قمت بتوصيله مدرج هنا؟ إذا لم يكن الأمر كذلك، فقد يكون المنفذ تالفًا أو أن هناك مشكلة في الجهاز. وبالمثل، قد لا يكون الجهاز متوافقًا مع نظام التشغيل Linux.

2. كيفية التحقق من منفذ USB

إذا لم يتم عرض جهاز USB، فقد يكون ذلك بسبب مشكلة في منفذ USB.

أفضل طريقة لاختبار ذلك هي ببساطة استخدام منفذ USB مختلف على جهاز الكمبيوتر الخاص بك. إذا تم الآن اكتشاف جهاز USB، فأنت تعلم أن لديك مشكلة في أحد منافذ USB.

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

للحصول على أفضل النتائج، التزم بالأجهزة المتوافقة مع Linux كلما أمكن ذلك عند استكشاف أخطاء أجهزة USB وإصلاحها.

3. إصلاح أجهزة USB التالفة

إذا كان جهاز USB الخاص بك معيبًا، فلديك خياران: إصلاحه أو إعادته.

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

الاختيار البدني معدات يو اس بي- فكره جيده. يجب أن تكون الكابلات قوية، دون أي فواصل، ويجب تثبيت الجزء المعدني بشكل آمن.

وفي الوقت نفسه، يجب اختبار منافذ USB مع إيقاف تشغيل الكمبيوتر وفصله. تأكد من أن المنافذ آمنة ومتذبذبة منافذ يو اس بيهي علامة على تآكل المعدات.

إذا أصبح منفذ USB مفكوكًا، فيمكنك لحامه مرة أخرى في مكانه. بالطبع، يجب أن تعرف بالفعل كيفية اللحام، ولا تحاول أبدًا القيام بعمل DIY دون خبرة سابقة.

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

هل يمكنك إرجاع جهاز USB الخاص بك؟ إذا كان جديدا، فمن المرجح. تكمن المشكلة في أنه ما لم يتم وضع علامة واضحة على أنه يعمل بنظام التشغيل Linux، فمن غير المرجح أن يقبل المتجر المرتجعات.

4. أعد تشغيل Linux لإصلاح منفذ USB

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

ذلك ما يمكن أن تفعله؟

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

والخطوة التالية هي التأكد من عدم حدوث ذلك مرة أخرى. الحيل القادمة سطر الأوامرمخصصة لنظام التشغيل Ubuntu 18.10، لذا تحقق من الإجراء الصحيح على توزيعة Linux المفضلة لديك.

افتح نافذة طرفية واكتب:

cat /sys/module/usbcore/parameters/autosuspend

انظر هنا:

GRUB_CMDLINE_LINUX_DEFAULT = "بداية هادئة"

GRUB_CMDLINE_LINUX_DEFAULT = "بداية هادئة"

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

لكي نتمكن من تقييم الموقف، دعونا نلقي نظرة على كيفية تنفيذ دعم USB وأين تبحث عن معلومات حول الأجهزة المتصلة، على الرغم من أن كل ما يقال عنه ينطبق جزئيًا على USB. تنفيذ دعم USB في لينكس لينكس يو اس بيالمشروع (www.linux-usb.org) هو المكان الذي يجب أن تذهب إليه للحصول على المعلومات. في أجهزة الكمبيوتر اليوم، يمكنك العثور على ثلاثة أنواع من وحدات التحكم، تختلف في واجهة التفاعل مع الأجهزة. هذه هي OHCI (واجهة تحكم المضيف المفتوحة) وUHCI (واجهة تحكم المضيف العالمية) وEHCI (واجهة تحكم المضيف المحسنة). يدعم الأولان إصدار USB 1.1، بينما يوفر الإصدار 2.0 الأخير سرعات نقل تصل إلى 480 ميجابت/ثانية. تعتبر وحدات تحكم UHCI أبسط وأرخص إلى حد ما، ولكنها تتطلب برامج تشغيل معقدة وتضع حملاً أكبر على المعالج. لا يزال اكتشاف نوع وحدة التحكم الخاصة بك أمرًا بسيطًا للغاية:

$lspci -v
00:02.0 وحدة تحكم USB: وحدة تحكم USB لشركة nVidia Corporation MCP55 (rev a1) (prog-if 10)

الأعلام: الناقل الرئيسي، 66 ميجا هرتز، التطوير السريع، الكمون 0، IRQ 11
الذاكرة عند fe02f000 (32 بت، غير قابلة للجلب المسبق)
قدرات:

00:02.1 وحدة تحكم USB: وحدة تحكم USB nVidia Corporation MCP55 (rev a2) (prog-if 20)
النظام الفرعي: Biostar Microtech Int'l Corp جهاز غير معروف 3405
الأعلام: الناقل الرئيسي، 66 ميجا هرتز، التطوير السريع، الكمون 0، IRQ 5
الذاكرة عند fe02e000 (32 بت، غير قابلة للجلب المسبق)
قدرات:

كما ترون، لدي كلا النوعين من وحدات التحكم: OHCI وEHCI. إذا كنت تستخدم نواة ذاتية التجميع، فقم بتمكينها السائق المطلوبفي عنصر "برامج تشغيل وحدة تحكم مضيف USB". لن أثقل كاهلك بجميع الخيارات، فكل المعلمات المتوفرة في النواة يمكن عرضها بكتابة "cat /usr/src/linux/.config | grep -i USB".

يجب أن تتذكر أيضًا أن العمل باستخدام USB يتم عن طريق محاكاة SCSI، لذلك تحتاج إلى تنشيط المعلمات المتعلقة بدعم SCSI.
للعمل مباشرة مع أجهزة USB، يتم إنشاء الدليل /proc/bus/usb في نظام الملفات الظاهري /proc، والذي تم تثبيته عبر /etc/fstab:

لا شيء /proc/bus/usb usbfs noauto 0 0
إذا لم يكن هناك مثل هذا السطر في ملفك، فقد يعني ذلك أن المطورين قد أنقذوك من الأفكار غير الضرورية ويقومون بتثبيت ملفات usbfs في البرامج النصية لبدء التشغيل. في أي برنامج نصي محدد يتم ذلك، ستكتشف ذلك عن طريق إدخال " Sudo grep -iR "usbfs" /etc/*". على سبيل المثال، في KUbuntu يكون البرنامج النصي مسؤولاً عن تركيب USB /etc/init.d/mountdevsubfs.sh. يمكنك تثبيت نظام الملفات يدويًا لـ USB على /proc/bus/usb مثل هذا:

$ sudo mount -t usbdevfs none /proc/bus/usb

بعد هذا الأمر " جبل | grep usbfs"يجب أن يُظهر وجود السطر:

procbususb على /proc/bus/usb من النوع usbfs (rw)

والخاتمة " com.lsmod» وحدات محملة com.usbcoreوحدة السائق ohci_hcd, ehci_hcd, uhci_hcs، بالإضافة إلى الوحدة النمطية المقابلة لبرنامج تشغيل الجهاز المتصل مثل scan.o، الطابعة.o، usb_storage.
معلومات حول اتصال USBيمكن الحصول على الأجهزة من /var/log/dmesgومباشرة من /proc. إذا كان الدليل /proc/bus/usbفارغ وهذا يعني أن الملف الظاهري نظام يو اس بيغير مثبت. يجب أن يكون داخل الدليل عدة ملفات بأسماء مثل 001، 002 حسب عدد وحدات التحكم وملف الأجهزة الذي "يعرف" عن جميع الأجهزة:

$ cat /proc/bus/usb/devices

T: الناقل=02 Lev=00 Prnt=00 المنفذ=00 Cnt=00 Dev#= 1 Spd=480 MxCh=10
ب: التخصيص= 0/800 لنا (0%)، #Int= 0، #Iso= 0
D: Ver= 2.00 Cls=09(hub) Sub=00 Prot=01 MxPS=64 #Cfgs= 1

S: الشركة المصنعة=Linux 2.6.20-15-generic ehci_hcd
S: المنتج = وحدة التحكم المضيفة EHCI
S: الرقم التسلسلي = 0000:00:02.1


E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: الناقل=01 Lev=00 Prnt=00 المنفذ=00 Cnt=00 Dev#= 1 Spd=12 MxCh=10
ب: التخصيص= 0/900 لنا (0%)، #Int= 0، #Iso= 0
D: Ver= 1.10 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: البائع = 0000 معرف المنتج = 0000 Rev = 2.06
S: الشركة المصنعة=Linux 2.6.20-15-generic ohci_hcd
S: المنتج = جهاز التحكم المضيف OHCI
S: الرقم التسلسلي=0000:00:02.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: إذا #= 0 Alt= 0 #EPs= 1 Cls=09(hub) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms

T: الناقل=01 Lev=01 Prnt=01 المنفذ=07 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: البائع = 1307 معرف المنتج = 0163 القس = 1.00
S: الشركة المصنعة=؟؟؟؟؟؟؟؟
S: المنتج=جهاز تخزين USB كبير السعة
S: الرقم التسلسلي = 9fe1ad57805553
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 80mA
I: إذا #= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: الإعلان=01(O) Atr=02(مجمع) MxPS= 512 Ivl=125us
E: الإعلان=82(I) Atr=02(مجمع) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=16ms

من السهل فك تشفير المخرجات والبحث عن التفاصيل في الوثائق ( /usr/src//الوثائق/usb/proc_usb_info.txt). اسمحوا لي فقط أن أقول أن الرسالة تيشير إلى طوبولوجيا، حافلةو مستوىإظهار الناقل الذي يتصل به الجهاز والمستوى، ويظهر Spd السرعة، مكستش- كم عدد الأجهزة الأخرى التي يمكن توصيلها به، سائق- سائق. على سبيل المثال، يوضح Driver=hub أن هذا هو محور، وأن Driver=usb-storage هو جهاز USB لتخزين المعلومات.
يمكنك العثور في مستودع KUbuntu على العديد من الأدوات المساعدة التي ستساعدك على فهم USB. لذا، باستخدام lsusb، ستحصل على المزيد من المعلومات حول أجهزة USB، وإذا لم تعجبك وحدة التحكم، فاستخدم usbview.

هذا كل ما أردت قوله بشكل أساسي حول توصيل الأجهزة الساخنة بجهاز كمبيوتر يعمل بنظام Linux، وآمل ألا تواجه مشكلات في هذا الأمر اعتبارًا من اليوم.



 


يقرأ:



تصنيف أفضل سماعات الرأس اللاسلكية

تصنيف أفضل سماعات الرأس اللاسلكية

هل من الممكن شراء آذان عالمية بسعر رخيص؟ 3000 روبل - هل من الممكن شراء سماعات رأس عالية الجودة مقابل هذا المبلغ من المال؟ كما اتضح، نعم. والكلام...

توجد الكاميرا الرئيسية للجهاز المحمول عادةً في الجزء الخلفي من الجسم وتستخدم لالتقاط الصور ومقاطع الفيديو

توجد الكاميرا الرئيسية للجهاز المحمول عادةً في الجزء الخلفي من الجسم وتستخدم لالتقاط الصور ومقاطع الفيديو

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

كيفية التبديل إلى مشغل آخر مع الاحتفاظ برقمك

كيفية التبديل إلى مشغل آخر مع الاحتفاظ برقمك

دخل قانون الاحتفاظ برقم الهاتف عندما يتحول المشترك إلى مشغل هاتف محمول آخر حيز التنفيذ في روسيا في الأول من ديسمبر. ومع ذلك، اتضح أن ...

مراجعة الفابلت، باهظة الثمن، ولكنها مختصة للغاية

مراجعة الفابلت، باهظة الثمن، ولكنها مختصة للغاية

مراجعة جهاز فابلت، باهظ الثمن، لكنه كفء للغاية 20/03/2015 أنا صانع الأحذية الوحيد في العالم بدون أحذية، ومراجع الهواتف الذكية بدون هاتفي الذكي....

صورة تغذية آر إس إس