خانه - بهبود
پزشکی قانونی لینوکس در قالب ردیابی تاریخچه اتصال دستگاه های USB. پزشکی قانونی لینوکس در قالب ردیابی تاریخچه اتصال دستگاه های USB دستگاه های USB لینوکس متصل

USB - گذرگاه سریال جهانی اتوبوس سریال) توسط کنسرسیومی از شرکت ها با هدف ارائه یک اتوبوس واحد و ساده برای اتصال وسایل جانبی توسعه داده شد.

طراحی USB به دستگاه‌ها اجازه می‌دهد تا با استفاده از جک‌های استاندارد برای اتصال به یکدیگر متصل شوند. دستگاه های USB عبارتند از: صفحه کلید، موس، چاپگر، اسکنر، هارد دیسک ها، فلش مموری، دوربین، مودم، آداپتورهای شبکهو ستون ها، و لیست آنها به طور مداوم در حال افزایش است.

پشتیبانی لینوکس برای دستگاه‌های USB کاملاً جامع است، اما برخی از دستگاه‌ها به درایورهای خاصی نیاز دارند و برخی دیگر، عمدتاً چاپگرها و اسکنرها، ممکن است پشتیبانی نشوند یا فقط تا حدی پشتیبانی شوند.

سیستم های کامپیوتری ممکن است حاوی یک یا چند کنترلر یا هاب باشند که برای اتصال دستگاه های USB یا هاب (خارجی) دیگر طراحی شده اند. این هاب می تواند تا 7 دستگاه را پشتیبانی کند که به نوبه خود می توانند هاب های اضافی داشته باشند. هاب داخل واحد سیستمریشه هاب نامیده می شود. هر توپولوژی ستاره می تواند تا 127 هاب یا دستگاه را پشتیبانی کند.

وقتی می گوییم پورت USB، منظور پشتیبانی و پورت USB کامپیوتر برای اتصال است، نه آدرس پورت داخلی استفاده شده توسط دستگاه.

لایه بندی سیستم USB به میزبان اجازه می دهد تا ویژگی های یک دستگاه USB، از جمله کلاس، نام سازنده، نام دستگاه، ولتاژ مورد نیاز، سرعت، سطح پشتیبانی USB و سایر عملکردها را تعیین کند.

ماژول پشتیبانی دستگاه USB لینوکس

دستگاه های USB در حال حاضر به طور کامل در لینوکس پشتیبانی می شوند. اکثر تغییرات در شاخه هسته 2.6 ظاهر شد، اگرچه حتی در هسته های 2.2 نیز پشتیبانی وجود داشت. لینوکس از USB 2.0 و مشخصات قبلی پشتیبانی می کند. به دلیل ماهیت اتصال داغ USB، پشتیبانی معمولاً از طریق ماژول‌های هسته انجام می‌شود که می‌توانند در صورت نیاز بارگیری یا تخلیه شوند.

دستور 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 41s_6hd10 cd 34152 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: Manufacturer=Linux 2.6.29.6 ohci_hcd S: Product=OHCI Host Controller S: SerialNumber=0000:00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 = 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( هاب) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: Manufacturer=Linux 2.6.29.6 ohci_hcd S: Product=OHCI Host Controller S:SerialNumber0=0 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: Vendor=045e ProdID=00db Rev= 1.73 S: سازنده=Microsoft S: Product=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: Alloc= 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: Manufacturer= 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. در ادامه لیست می توانید ببینید که در حال حاضر 1 دستگاه USB به سیستم متصل است - صفحه کلید طبیعی ارگونومیک Microsoft 400 (Spd=1.5).

طبیعتا این متن را روی این کیبورد تایپ می کنم.

سلسله مراتب اتصالات دستگاه USB را می توان با استفاده از دستور lsusb با گزینه -t مشاهده کرد:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 Vendor 0x1d6b Product 0x0001 Bus# 2 `-Dev# 1 Vendor 0x1d6b Product 0x0001 `-Dev# 2 Vendor 0x045e Db Product 0x#ev#0 1 فروشنده 0x1d6b محصول 0x0002

اطلاعات مربوط به یک دستگاه USB خاص را می توان با دستور زیر به دست آورد:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Bus 002 Device 002: ID 045e:00db Microsoft Corp. صفحه کلید ارگونومیک طبیعی 4000 V1.0 توصیفگر دستگاه: طول 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (تعریف شده در سطح رابط) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVend. idProduct 0x00db Natural Ergonomic Keyboard 4000 V1.0 bcdDevice 1.73 iManufacturer 1 مایکروسافت iProduct 2 Natural Ergonomic Keyboard 4000 iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLengthorTalTotalyLpeengthNth bConfigurationV alue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA توصیفگر رابط: طول 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 رابط بوت زیرکلاس **bInterfaceProtocol10 صفحه کلید UNGIZ010 1 01 00 01 22 3c 00 نقطه پایانی شرح یا: طول 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 نوع انتقال وقفه نوع همگام‌سازی هیچکدام نوع استفاده داده‌ها wMaxPacketSize 0x0008 1x 8 بایت bInterval 10 توصیف‌گر رابط: طول 9 bDescriptorنوع 4 bInterfaceNumberNumberS1ndE 3 دستگاه رابط انسانی bInterfaceSubClass 0 بدون زیر کلاس bInterfaceProto col 0 هیچ iInterface 0 ** شناسایی نشده: 09 21 11 01 00 01 22 56 00 توصیفگر نقطه پایانی: طول 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 نوع انتقال وقفه نوع همگام سازی 0 U0xs وضعیت دستگاه bInterval 10: 0x0000 (Bus Powered )

اتصال یک دستگاه USB در حال پرواز

سیستم‌های جدید از اتصال دستگاه‌های USB در حال پرواز پشتیبانی می‌کنند (اتصال داغ)، که به معنای اتصال دستگاه به یک سیستم در حال اجرا است، که باید:

  • نوع دستگاه USB را تعیین کنید، درایور را پیدا کنید و آن را اجرا کنید.
  • درایور را با دستگاه مرتبط کنید.
  • سایر زیرسیستم ها را در مورد دستگاه USB مطلع کنید.

به عنوان بخشی از غوطه ور شدن در یکی از رشته ها (در حین تحصیل برای تخصص امنیت کامپیوتر)، روی یک پروژه سرگرم کننده کار کردم که نمی خواهم آن را به سادگی در اعماق پوشه "یونیور" روی هارد اکسترنال دفن کنم.

این پروژه نام دارد usbripو یک ابزار کنسول منبع باز کوچک برای پزشکی قانونی لینوکس است، یعنی برای کار با تاریخچه اتصالات دستگاه USB. این برنامه با پایتون 3 خالص (با استفاده از برخی از ماژول های شخص ثالث) نوشته شده است و به وابستگی های دیگری به جز مفسر Python 3.x و چند خط از الزامات. txt، در یک خط با استفاده از پیپ حل شد.

در این پست به شرح برخی از قابلیت های این نرم افزار می پردازم و راهنمای کوتاهی با لینک منبع دانلود می گذارم.

برش! (...منظورم کات است!)

توجه داشته باشید. عملکرد توضیح داده شده در مقاله مربوط به نسخه ابزار است. پشت آخرین نسخهبا بسیاری از چیزهای جدید، پیشنهاد می کنم به مخزن بروید.

اسکرین شات ها

دریافت تاریخچه اتصال دستگاه های USB قابل جابجایی:


یافتن اطلاعات اضافی در مورد یک دستگاه USB بر اساس شناسه مدل (PID):

شرح

همانطور که می دانید سیستم عامل های مبتنی بر گنو/لینوکس نسبت به ثبت انواع مختلف رویدادها بسیار حساس هستند و اتصال/قطع دستگاه های USB نیز از این قاعده مستثنی نیست. همراه با یکی از «جریان‌های متنی به‌عنوان رابط‌های جهانی» در فلسفه یونیکس، اطلاعات مربوط به مصنوعات چنین رویدادهایی (با درجات متفاوتی از جزئیات) بسته به توزیع، در یک یا چند فایل متنی زیر یافت می‌شود:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/messages*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
FORENSIC- PROOF حتی این تصویر را در این مورد به ما نشان می دهد (کمی ناقص، اما مهم نیست):

usbrip برای کار خود، فایل‌های log را پیدا می‌کند که برای همه بیلدهای لینوکس مبتنی بر 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<модуль>-h
لیستی از گزینه های موجود برای یک زیر ماژول خاص را دریافت کنید:

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

نحو

بنر $ python3 usbrip.py بنر ابزار کاربردی را روی صفحه نمایش می دهد. تاریخچه رویدادهای $ python3 usbrip.py [-q] [-t | -l] [-e] [-n تعداد رویدادها] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] مشاهده اتصال 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>[-a CHARACTER [شارژ...]] [-q] [-t | -l] [-e] [-n تعداد رویدادها] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] جستجو برای " رویدادهای توهین آمیز" " بر اساس لیستی از دستگاه های قابل اعتماد. $ python3 usbrip.py جستجوی شناسه [-q] [ --vid VID] [--pid PID] [--آفلاین] اطلاعات اضافی در مورد یک دستگاه را با استفاده از VID و/یا PID آن در پایگاه داده شناسه جستجو کنید. $ python3 usbrip.py IDs دانلود [-q] پایگاه داده شناسه دستگاه USB محلی را به روز کنید (دانلود کنید).

گزینه ها

گزینه‌های پشتیبانی شده توسط زیرماژول‌های "تاریخچه رویدادها"، "رویدادها gen_auth"، "تخلفات رویدادها"، "جستجوی ID"، "دانلود ID": -q، --quiet نمایش بنرها، پیام‌های اطلاعاتی (سبز) را حذف کنید و انجام دهید. در حین اجرا سوال نپرسید ########################################## ## ###################################### گزینه های پشتیبانی شده توسط "تاریخچه رویدادها"، " رویدادهای gen_auth" submodules "، "events نقض": -e، --جستجوی خارجی فقط برای دستگاه‌های USB قابل جابجایی (که اطلاعات قطع ارتباط دارند) -n تعداد رویدادها، --number NUMBER OF EVENTS تعداد آخرین رویدادها بر اساس تاریخ نمایش داده می شود -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"، "events نقض": - a SIGN [SIGN...]، --ویژگی SIGN [SIGN...] فهرستی از ویژگی هایی که هنگام ساخت فهرستی از دستگاه های مجاز (و همچنین هنگام جستجوی «رویدادهای نقض کننده» در مورد زیر ماژول "نقض رویدادها")؛ کلیدهای مجاز: "vid"، "pid"، "prod"، "manufact"، "serial". ############################################### ################################### گزینه های پشتیبانی شده توسط زیرماژول های "ids search"، "ids download": - -شناسه فروشنده vid VID یا شناسه سازنده دستگاه USB (معمولاً 4 رقم هگزادسیمال) -- شناسه محصول vid PID یا شناسه مدل دستگاه USB (معمولاً 4 رقم هگزادسیمال) -- در صورت مشخص بودن آفلاین، اطلاعات اضافی درباره دستگاه USB را در پایگاه داده جستجو کنید داده های شناسه بدون به روز رسانی اولیه تولید می شوند (پایگاه داده)

نمونه هایی از استفاده

نمایش تاریخچه اتصال همه دستگاه‌های USB، حذف بنر، پیام‌های اطلاعاتی (سبز) و همچنین بدون پرسیدن سوال در حین اجرا (-q, --quite) و تولید خروجی در قالب یک لیست (-l, -- لیست)، از جمله در آن شامل 100 رویداد اخیراً یافت شده است (-n NUMBER OF EVENTS, --number NUMBER OF EVENTS):
تاریخچه رویدادهای $ python3 usbrip.py -ql -n 100
نمایش تاریخچه اتصال دستگاه های USB قابل جابجایی (-e، --external)، تولید خروجی به شکل جدول با فیلدهای (ستون ها) "Connected"، "VID"، "PID"، "Disconnected" و "Serial Number" ” (-c COLUMN [COLUMN...]، --column COLUMN [COLUMN...])، فیلتر کردن جستجو بر اساس تاریخ (-d DATE [DATE...]، --date DATE [DATE...] ، گرفتن اطلاعات از فایل های گزارش خارجی (-f LOG_FILE [LOG_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 بسازید و خروجی را برای تجزیه و تحلیل بیشتر به یک فایل هدایت کنید. در صورتی که جریان خروجی استاندارد stdout نباشد (مثلاً «|» یا «>»)، موارد خاص در داده‌های خروجی وجود نخواهد داشت. کاراکترهایی که مسئول رنگ فونت در ترمینال هستند، بنابراین فایل متنی پر از کاراکترهای ناخوانا نخواهد بود. همچنین لازم به ذکر است که usbrip از برخی از ثابت های یونیکد استفاده می کند، بنابراین ایده خوبی است که بلافاصله رمزگذاری را تبدیل کنید. فایل ایجاد شدهدر UTF-8 برای نمایش صحیح آنها (مثلاً با استفاده از encov) و همچنین از کاراکترها استفاده کنید خط جدیدبه سبک ویندوز برای حمل بهتر (به عنوان مثال استفاده از awk):
رویدادهای تاریخچه $ python3 usbrip.py -t | awk "( sub("$"، "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
توجه داشته باشید:خلاص شدن از شر خاص اگر خروجی قبلاً به stdout ارسال شده باشد، کاراکترهای مسئول رنگ نیز ممکن است. برای انجام این کار، باید داده های دریافتی را در یک فایل جدید usbrip.txt کپی کنید و یک دستورالعمل awk دیگر اضافه کنید:
$ awk "( sub("$"، "\r"); gsub("\\x1B\\[*[ -/]*[@-~]"، ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
فهرستی از دستگاه‌های مورد اعتماد را در قالب یک فایل JSON (trusted/auth.json) حاوی فیلدهای "VID" و "PID" اولین فایل ایجاد کنید. سهدستگاه‌های متصل در 26 سپتامبر:
رویدادهای $ python3 usbrip.py gen_auth trusted/auth.json -a vid pid -n 3 -d "26 سپتامبر"
"رویدادهای متخلف" را در بین تاریخچه اتصالات دستگاه های USB قابل جابجایی بر اساس لیست دستگاه های قابل اعتماد (trusted/auth.json) با استفاده از فیلد "PID" پیدا کنید و خروجی را به شکل جدول با "Connected" تولید کنید. فیلدهای "VID" و "PID":
$ python3 usbrip.py نقض رویدادها trusted/auth.json -a pid -et -c conn vid pid
اطلاعات اضافی درباره دستگاه USB بر اساس VID و PID آن پیدا کنید:
$ python3 usbrip.py جستجوی شناسه --vid 0781 --pid 5580
دانلود/به‌روزرسانی پایگاه داده شناسه دستگاه USB (منبع):
دانلود ID python3 usbrip.py $

پیوندها و پست اسکریپت

می‌توانید این ابزار را از Github دریافت کنید، همه وابستگی‌ها برای راه‌اندازی و عملکرد صحیح در آن فهرست شده‌اند الزامات. txt.

از توجه شما متشکرم

P.S.بله، سبک بنر و پیام های اطلاعاتیبا الهام از پروژه sqlmap (*^.^*)

UPD 2018/06/13.تحقیقاتی در مورد یک پرونده واقعی (؟) مربوط به ابزار من از طرف شخصی با Codeby انجام شد (راستش را بخواهید من شوکه شده ام).

به عنوان بخشی از غوطه ور شدن در یکی از رشته ها (در طول دوره تحصیلم در تخصص Compeza)، من روی یک پروژه جالب کار کردم که نمی خواهم به سادگی آن را در اعماق پوشه "یونیور" روی یک سخت خارجی دفن کنم. راندن.

این پروژه نام دارد

usbrip

و یک ابزار کنسول منبع باز کوچک برای پزشکی قانونی لینوکس است، یعنی برای کار با تاریخچه اتصالات دستگاه USB. این برنامه با پایتون 3 خالص (با استفاده از برخی از ماژول های شخص ثالث) نوشته شده است و به وابستگی های دیگری غیر از مفسر Python 3.x و چند خط از

الزامات. txt

با استفاده از pip3 در یک خط حل شد.

در این پست به شرح برخی از قابلیت های این نرم افزار می پردازم و راهنمای کوتاهی با لینک منبع دانلود می گذارم.

دانلود ID python3 usbrip.py $

پیوندها و پست اسکریپت

شما می توانید ابزار مفید را از

GitHub

همه وابستگی ها برای راه اندازی و عملکرد صحیح در فهرست شده اند

الزامات. txt

از توجه شما متشکرم

P.S.

بله، سبک بنر و پیام های اطلاعاتی از پروژه الهام گرفته شده است

sqlmap

شما یک درایو فلش USB یا یک صفحه کلید یا ماوس را به رایانه لینوکس خود وصل کرده اید. اما هیچ اتفاقی نمی افتد.

موضوع چیه؟ چرا رایانه لینوکس شما دستگاه را شناسایی نمی کند؟ آیا لینوکس است یا دستگاه USB شما کار نمی کند؟

USB در اوبونتو کار نمی کند؟

درایوهای دیسک، کارت‌خوان‌های کارت حافظه، تلفن‌ها، پخش‌کننده‌های رسانه و لوازم جانبیچند رسانه ای...همه مفید هستند اما اگر مشکلی در پورت USB یا درایورهای سیستم شما باشد کار نمی کنند. اگر از صفحه‌کلید یا ماوس بلوتوث (با دانگل USB) استفاده می‌کنید، این می‌تواند ناامیدکننده باشد، زیرا به معنای پیدا کردن جایگزین‌های USB سیمی است.

با این حال، ممکن است یک بندر مرده نباشد. ممکن است دستگاه USB مورد استفاده شما معیوب باشد و قابل شناسایی نباشد.

حل مشکلات USB می تواند چالش برانگیز باشد، اما تشخیص این مشکلات و انجام اصلاحات لازم غیرممکن نیست.

پنج مرحله برای رفع مشکلات USB در لینوکس وجود دارد:

  1. مطمئن شوید که پورت USB شناسایی شده است
  2. تعمیرات لازم را در بندر انجام دهید
  3. دستگاه های USB را تعمیر یا تعمیر کنید
  4. راه اندازی مجدد سیستم عامللینوکس
  5. در دسترس بودن درایورهای دستگاه را تأیید کنید

بیایید به نوبه خود به هر یک از آنها نگاه کنیم و نحوه کار با دستگاه های USB دشوار در لینوکس را بیاموزیم.

1. آیا دستگاه شما توسط لینوکس شناسایی شده است؟

اولین چیزی که هنگام قرار دادن دستگاه USB خود در رایانه لینوکس خود باید بررسی کنید این است که آیا شناسایی شده است یا خیر. تشخیص دستگاه USB معمولاً شفاهی یا شنیدنی نیست (در لینوکس Deepin اینطور نیست) مانند ویندوز یا macOS، به این معنی که اغلب باید تأیید کنید که دستگاه توسط سیستم عامل ضبط شده است.

خوشبختانه، ساده است.

ابتدا دستگاه های USB مورد نظر را از برق جدا کنید. سپس یک پنجره ترمینال را باز کنید و دستور » لیست USB را وارد کنید:

دستور dmesg دستگاه های USB متصل شده را در سیستم شما لیست می کند. همچنین شامل سخت افزارهای غیر USB خواهد بود و متاسفانه حجم عظیمی از اطلاعات را ارائه می دهد. برای مقابله با این می توانید امتحان کنید:

این به نظر می رسد تلاقی بین دستورات dmesg و lsusb است که سخت افزار USB متصل را با اطلاعات کافی برای شناسایی آنها فهرست می کند.

بنابراین، آیا USBی که وصل کردید در اینجا فهرست شده است؟ در غیر این صورت ممکن است پورت آسیب دیده باشد یا دستگاه مشکل داشته باشد. به همین ترتیب، دستگاه ممکن است با لینوکس سازگار نباشد.

2. نحوه بررسی پورت USB

اگر دستگاه USB نمایش داده نمی شود، ممکن است به دلیل مشکل در پورت USB باشد.

بهترین راه برای آزمایش این است که به سادگی از یک پورت USB متفاوت در رایانه خود استفاده کنید. اگر اکنون سخت افزار USB شناسایی شده است، پس می دانید که با یکی از پورت های USB مشکل دارید.

اگر درگاه USB دیگری در دسترس نیست، باید دستگاه USB را روی رایانه شخصی یا لپ تاپ دیگری امتحان کنید. با این حال، این ممکن است ایده آل نباشد زیرا می توانید به طور متناوب از یک رایانه Windows یا macOS استفاده کنید و در این مورد، برخی از دستگاه های USB نمی توانند در لینوکس استفاده شوند. بنابراین تعیین اینکه دقیقاً چه چیزی باعث این مشکل شده است، دستگاه USB یا پورت USB، دشوار خواهد بود.

برای بهترین نتایج، هنگام عیب‌یابی دستگاه‌های USB، هر زمان که ممکن است از سخت‌افزار سازگار با لینوکس استفاده کنید.

3. تعمیر سخت افزار آسیب دیده USB

اگر سخت افزار USB شما معیوب است، دو گزینه دارید: آن را تعمیر کنید یا آن را برگردانید.

رفع معمولاً شامل بررسی است پورت USBو همچنین دستگاه هایی که در حال حاضر کار نمی کنند. اصلاحات تقریباً همیشه حول محور هستند کابل یو اس بیو بر روی کامپیوتر خود پورت کنید. کابل‌های USB معمولاً قابل تعویض هستند، اما پورت‌های USB قابل تعمیر هستند.

بررسی فیزیکی تجهیزات USB- ایده خوبی است. کابل ها باید محکم و بدون شکستگی باشند و قسمت فلزی باید محکم بسته شود.

در عین حال، پورت‌های USB باید با خاموش و جدا بودن رایانه آزمایش شوند. بررسی کنید که پورت ها ایمن و لرزان باشند پورت های USBنشانه فرسودگی تجهیزات هستند.

اگر پورت USB شل شد، می توانید آن را در جای خود لحیم کنید. البته، شما باید از قبل بدانید که چگونه لحیم کاری کنید، هرگز بدون تجربه قبلی یک کار DIY را امتحان نکنید.

همچنین پورت‌های USB را از نظر گرد و غبار و کثیفی بررسی کنید، مخصوصاً در پشت رایانه، جایی که گرد و غبار مرتباً در آن جمع می‌شود. گرد و غبار دشمن رایانه شخصی است، بنابراین بهتر است سیستم خود را در محیطی عاری از گرد و غبار نگه دارید. گرد و غبار می تواند از طریق درگاه های USB به رایانه شما راه پیدا کند، برای تمیز نگه داشتن این پورت ها وقت بگذارید. از هوای فشرده برای پخش گرد و غبار و کثیفی استفاده کنید.

آیا می توانید دستگاه USB خود را برگردانید؟ اگه جدید باشه احتمالش زیاده مشکل این است که اگر به‌طور واضح به‌عنوان لینوکس در حال اجرا علامت‌گذاری نشده باشد، بعید است که فروشگاه بازگردانی را بپذیرد.

4. برای تعمیر پورت USB، لینوکس را راه اندازی مجدد کنید

در برخی موارد - برای مثال، اگر از لپ‌تاپ استفاده می‌کنید - مشکلات برق می‌تواند بر توانایی آن برای شناسایی دستگاه‌های USB تأثیر بگذارد. گزینه autosuspend برای کاهش مصرف برق در لپ تاپ های لینوکس در نظر گرفته شده است، اما می تواند معکوس باشد.

پس چه کاری می توانید انجام دهید؟

ابتدا بررسی کنید که آیا تعلیق خودکار باعث ایجاد مشکل شده است یا خیر. با راه اندازی مجدد کامپیوتر می توانید این کار را انجام دهید. اگر دستگاه USB در حال اجرا باشد، آن پورت USB برق را دریافت می کند.

قدم بعدی این است که مطمئن شوید این اتفاق دوباره تکرار نمی شود. ترفندهای بعدی خط فرمانبرای اوبونتو 18.10 هستند، بنابراین رویه صحیح را در توزیع لینوکس ترجیحی خود بررسی کنید.

یک پنجره ترمینال را باز کنید و تایپ کنید:

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: nVidia Corporation MCP55 USB Controller (rev a1) (prog-if 10)

پرچم‌ها: گذرگاه اصلی، 66 مگاهرتز، توسعه سریع، تأخیر 0، IRQ 11
حافظه در fe02f000 (32 بیتی، غیرقابل واکشی)
توانایی ها:

00:02.1 کنترلر USB: nVidia Corporation MCP55 USB Controller (rev a2) (prog-if 20)
زیرسیستم: Biostar Microtech Int'l Corp دستگاه ناشناس 3405
پرچم‌ها: bus master، 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
اگر چنین خطی در فایل شما وجود ندارد، این ممکن است به این معنی باشد که توسعه دهندگان شما را از افکار غیر ضروری نجات داده اند و در حال نصب usbf در اسکریپت های راه اندازی هستند. در کدام اسکریپت خاص این کار انجام شده است، با وارد کردن " خواهید فهمید 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)

و نتیجه گیری " lsmod» ماژول های بارگذاری شده usbcore، ماژول درایور ohci_hcd، ehci_hcd، uhci_hcs، و همچنین یک ماژول مربوط به درایور دستگاه متصل مانند scanner.o، printer.o، usb_storage.
اطلاعاتی درباره اتصال USBدستگاه ها را می توان از /var/log/dmesgو مستقیما از /proc. اگر دایرکتوری /proc/bus/usbخالی کردن به این معنی است که فایل مجازی سیستم USBنصب نشده است در داخل دایرکتوری باید چندین فایل با نام‌هایی مانند 001، 002 با توجه به تعداد کنترل‌کننده‌ها و یک فایل دستگاه وجود داشته باشد که در مورد همه دستگاه‌ها اطلاعات داشته باشد:

$ cat /proc/bus/usb/devices

T: Bus=02 Lev=00 Prnt=00 Port=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: Manufacturer=Linux 2.6.20-15-generic ehci_hcd
S: Product=EHCI Host Controller
S: شماره سریال=0000:00:02.1


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

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh=10
ب: تخصیص = 0/900 ما (0%)، #Int= 0، #Iso= 0
D: نسخه= 1.10 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 2.06
S: Manufacturer=Linux 2.6.20-15-generic ohci_hcd
S: Product=OHCI Host Controller
S: Serial Number=0000:00:02.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=01 Lev=01 Prnt=01 Port=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: Vendor=1307 ProdID=0163 Rev= 1.00
س: سازنده=????????y
S: محصول = دستگاه ذخیره سازی انبوه USB
S: SerialNumber=9fe1ad57805553
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 80mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=83(I) Atr=03(Int.) MxPS= 64 Ivl=16ms

رمزگشایی خروجی آسان است، جزئیات را در مستندات جستجو کنید ( /usr/src//Documentation/usb/proc_usb_info.txt). فقط همین نامه را بگویم تیتوپولوژی را نشان می دهد، اتوبوسو مرحلهنشان می دهد که دستگاه به کدام اتوبوس متصل است و سطح، Spd سرعت را نشان می دهد، MxCh- چند دستگاه دیگر را می توان به آن وصل کرد، راننده- راننده. برای مثال Driver=hub نشان می دهد که این یک هاب است و Driver=usb-storage یک دستگاه USB برای ذخیره اطلاعات است.
در مخزن KUbuntu می توانید چندین ابزار کمکی پیدا کنید که به شما در درک USB کمک می کند. بنابراین، با استفاده از lsusb اطلاعات بیشتری در مورد دستگاه های USB دریافت خواهید کرد و اگر کنسول را دوست ندارید، از usbview استفاده کنید.

این اساساً تمام چیزی است که می خواستم در مورد اتصال دستگاه های داغ به رایانه با لینوکس بگویم، امیدوارم از امروز دیگر با این مشکل نخواهید داشت.



 


خواندن:



رتبه بندی بهترین هدفون های بی سیم

رتبه بندی بهترین هدفون های بی سیم

آیا می توان گوش های یونیورسال را با قیمت ارزان خریداری کرد؟ 3000 روبل - آیا می توان برای چنین پولی هدفون های باکیفیت خریداری کرد؟ همانطور که معلوم شد، بله. و گفتار...

دوربین اصلی موبایل معمولاً در پشت بدنه قرار دارد و برای گرفتن عکس و فیلم استفاده می شود

دوربین اصلی موبایل معمولاً در پشت بدنه قرار دارد و برای گرفتن عکس و فیلم استفاده می شود

نسخه به روز شده تبلت با ویژگی های بهبود یافته و استقلال بالا. گوشی های هوشمند ایسر به ندرت بازدید می شوند...

چگونه با حفظ شماره خود به اپراتور دیگری سوئیچ کنید

چگونه با حفظ شماره خود به اپراتور دیگری سوئیچ کنید

قانون حفظ شماره تلفن هنگام تغییر مشترک به اپراتور تلفن همراه دیگر در روسیه از اول دسامبر به اجرا درآمد. با این حال، مشخص شد که ...

بررسی یک فبلت، گران قیمت، اما بسیار شایسته

بررسی یک فبلت، گران قیمت، اما بسیار شایسته

نقد و بررسی یک فبلت گران قیمت اما بسیار شایسته 1394/03/20 من تنها کفاش جهان بدون چکمه، منتقد گوشی هوشمند بدون گوشی هوشمند خودم هستم ....

فید-تصویر RSS