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

💖 هل يعجبك؟شارك الرابط مع أصدقائك

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

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

في غرفة العمليات نظام لينكسيتم استخدام فلسفة الإدارة الخاصة. تعتبر كافة الكائنات، بما في ذلك الأجهزة، ملفات. عند توصيل جهاز بالنظام، يتم إنشاء ملف له في الدليل /dev/.

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

جميع ملفات الجهاز موجودة في الدليل /dev/. هنا يمكنك العثور على ملفات sda، hda، وهي الأقراص الصلبة، بالإضافة إلى ملفات sda1 أو hda1، والتي تتيح لك الوصول إلى أقسام القرص. لقد ناقشنا كل هذا بالتفصيل في المقالة. يمكنك رؤية قائمة بجميع الأجهزة في الدليل /dev/ باستخدام الأمر:

الآن يبقى أن نفهم أي من ملفات الأجهزة هذه تنتمي إلى أجهزة USB وأي الأجهزة بالضبط.

كيفية عرض أجهزة Linux USB

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

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

يعرض الأمر lsblk قائمة بجميع الأجهزة المحظورة المتصلة بجهاز الكمبيوتر الخاص بك. لا تعرض الأداة حجمها فحسب، بل تعرض أيضًا نوعها (القرص/القسم) بالإضافة إلى أرقام الأجهزة الرئيسية والثانوية. من الأسهل قليلاً العثور على محرك أقراص فلاش، ونرى قرصين، وإذا كان الأول بحجم 698 غيغابايت هو محرك أقراص ثابت، فإن الثاني هو بالتأكيد محرك أقراص فلاش:

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

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

لمعرفة أي من أجهزة sd هي USB، استخدم الأمر التالي:

ليرة سورية -l /dev/disk/by-id/usb*

لقد تم تضمين دعم 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فارغ يعني أن نظام الملفات الظاهري 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، وآمل ألا تواجه مشكلات في هذا الأمر اعتبارًا من اليوم.




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

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

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

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

لقطات الشاشة

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


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

وصف

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

بالنسبة لعمله، يجد usbrip إصدارات عالمية لجميع إصدارات Linux المستندة إلى Debian (Ubuntu، لينكس النعناعوما إلى ذلك) و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 ملف السجل [ملف السجل...]] $ python3 usbrip أحداث .py gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n عدد الأحداث] [-d التاريخ [التاريخ...]] [-f ملف السجل [ملف السجل...]] $ python3 usbrip.py انتهاكات الأحداث<ВХОДНОЙ_ФАЙЛ.JSON>[-ف] [-ر | -l] [-e] [-n عدد الأحداث] [-d التاريخ [التاريخ...]] [-c عمود [عمود...]] [-f ملف السجل [ملف السجل...]] $ python3 usbrip البحث عن معرفات .py [-q] [--vid VID] [--pid PID] [--غير متصل] تنزيل معرفات python3 usbrip.py $ [-q]

خيارات

الخيارات المدعومة من قبل الوحدات الفرعية "سجل الأحداث"، و"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". ##################################################################################################### #################################### Options Supported by "IDS Search" ، "IDS Download" Submodules: - - -معرف بائع 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 vid pid 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) يحتوي على الأول ثلاثةالأجهزة المتصلة في 26 سبتمبر:
أحداث $ python3 usbrip.py gen_auth Trust/auth.json -n 3 -d "26 سبتمبر"
ابحث عن "أحداث الانتهاك" بين سجل الاتصال لأجهزة USB القابلة للإزالة بناءً على قائمة الأجهزة الموثوقة (trusted/auth.json) وقم بإنشاء الإخراج على شكل جدول يحتوي على "Connected" و"VID" و"PID" " مجالات:
أحداث $ python3 usbrip.py انتهاكات Trust/auth.json -et -c conn vid pid
العثور على معلومات إضافية حول جهاز USB استنادًا إلى VID وPID الخاص به:
البحث عن معرفات $ python3 usbrip.py --vid 0781 --pid 5580
تنزيل/تحديث قاعدة بيانات معرف جهاز USB (المصدر

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

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

usbrip

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

المتطلبات.txt

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

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

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

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

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

جيثب

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

المتطلبات.txt

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

ملاحظة.

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

com.sqlmap

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

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

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

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

تكلم منفذ 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 ehci_ hcd 3415 2 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 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (يعمل بالحافلة) واجهة Wakeup MaxPower 100mA عن بعد الواصف: الطول 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 جهاز الواجهة البشرية bInterfaceSubClass 1 فئة فرعية لواجهة التمهيد bInterfaceProtocol 1 Keyboard iInterface 0 ** غير معروف: 09 21 11 01 00 01 22 3c 00 واصف نقطة النهاية: bL ength 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 لا توجد فئة فرعية bInterfaceProtocol 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 حالة الجهاز: 0 x0000 (Bus) مدعوم)

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

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

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


أخبر الأصدقاء