USB savienojumu vēsture Linux sistēmā. Linux kriminālistika USB ierīču savienojuma vēstures izsekošanas veidā. Pārstartējiet Linux, lai labotu USB portu

Iedziļinoties kādā no disciplīnām (studiju laikā Compeza specialitātē), es strādāju pie viena interesanta projekta, kuru es negribētu vienkārši aprakt mapes “Univer” dziļumos uz ārējā cietā. braukt.

Šo projektu sauc

usbrip

un ir neliela atvērtā pirmkoda konsoles utilīta Linux kriminālistikai, proti, darbam ar USB ierīču savienojumu vēsturi. Programma ir uzrakstīta tīrā Python 3 versijā (izmantojot dažus trešo pušu moduļus), un tai nav nepieciešamas citas atkarības, izņemot Python 3.x tulku un dažas rindiņas no

prasības.txt

Atrisināts vienā rindā, izmantojot pip3.

Šajā ziņojumā es aprakstīšu dažas šīs programmatūras iespējas un atstāšu īsu rokasgrāmatu ar saiti uz lejupielādes avotu.

$ python3 usbrip.py ID lejupielāde

Saites un postscript

Jūs varat iegūt lietderību no

GitHub

Visas palaišanas un pareizas darbības atkarības ir uzskaitītas

prasības.txt

Paldies par uzmanību!

P.S.

jā, banera un informatīvo ziņojumu stils ir iedvesmots no projekta

sqlmap

Iedziļinoties kādā no disciplīnām (studējot datordrošības specialitātē), strādāju pie viena izklaidējoša projekta, kuru negribētu vienkārši aprakt ārējā cietā diska mapes “Univer” dzīlēs.

Šo projektu sauc usbrip un ir neliela atvērtā pirmkoda konsoles utilīta Linux kriminālistikai, proti, darbam ar USB ierīču savienojumu vēsturi. Programma ir uzrakstīta tīrā Python 3 versijā (izmantojot dažus trešo pušu moduļus), un tai nav nepieciešamas citas atkarības, izņemot Python 3.x tulku un pāris rindiņas no prasības.txt, atrisināts vienā rindā, izmantojot pip.

Šajā ziņojumā es aprakstīšu dažas šīs programmatūras iespējas un atstāšu īsu rokasgrāmatu ar saiti uz lejupielādes avotu.

Griezt! (...es domāju Izgriezt!)

Piezīme. Rakstā aprakstītā funkcionalitāte attiecas uz utilītas versiju. Aiz muguras jaunākā versija Ar daudziem jauniem labumiem iesaku doties uz krātuvi.

Ekrānuzņēmumi

Noņemamo USB ierīču savienojuma vēstures iegūšana:


Meklēt Papildus informācija par USB ierīci pēc modeļa identifikatora (PID):

Apraksts

Kā zināms, operētājsistēmas, kuru pamatā ir GNU/Linux, ir ļoti jutīgas pret dažāda veida notikumu reģistrēšanu, un USB ierīču pievienošana/atvienošana nav izņēmums. Apvienojumā ar vienu no UNIX filozofijas "teksta straumēm kā universālām saskarnēm" informāciju par šādu notikumu artefaktiem (dažādās detalizācijas pakāpēs) atkarībā no izplatīšanas var atrast vienā vai vairākos no šiem teksta failiem:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/messages*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
KRITISIKAS PIERĀDĪJUMS pat parāda mums šo attēlu par šo lietu (nedaudz nepilnīgu, bet vienalga):

Savam darbam usbrip atrod universālas visām Linux versijām, kuru pamatā ir Debian (Ubuntu, Linux Mint utt.) un RPM (CentOS, Fedora, openSUSE u.c.), žurnālfailus, proti: /var/log/syslog* vai /var/log/messages* , parsē tos, meklējot nepieciešamo informāciju un atklāj atrastās pēdas. USB ierīču savienojumi skaistās plāksnēs (vai sarakstos - kā vien vēlaties).

USBrip var arī:

  • izveidot autorizēto (uzticamo) ierīču sarakstus JSON failu veidā;
  • meklējiet “apvainojošus notikumus”, pamatojoties uz uzticamo ierīču sarakstu: notikumi (USB savienojums/atvienošanās), kuros bija iesaistītas USB ierīces, kas nebija atzīmētas kā uzticamas;
  • meklējiet papildu informāciju par USB ierīci pēc tās VID (Vendor ID) un/vai PID (Produkta ID).

Atsauce

Iegūstiet pieejamo moduļu sarakstu:

$ python3 usbrip.py -h
Iegūstiet konkrētam modulim pieejamo apakšmoduļu sarakstu:

$python3 usbrip.py<модуль>-h
Iegūstiet sarakstu pieejamās iespējas konkrētam apakšmodulim:

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

Sintakse

$ python3 usbrip.py reklāmkarogs Ekrānā parāda utilīta reklāmkarogu. $ python3 usbrip.py notikumu vēsture [-q] [-t | -l] [-e] [-n PASĀKUMU SKAITS] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] Skatīt USB savienojumu vēsture . $ python3 usbrip.py notikumu gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a ZĪME [PARAKSTĪT...]] [-q] [-e] [-n NUMBER_PASĀKUMI] [-d DATUMS [DATE...]] [-f LOG_FILE [LOG_FILE...]] Saraksta veidošana no autorizētām (uzticamām) USB ierīcēm. $ python3 usbrip.py notikumu pārkāpumi<ВХОДНОЙ_ФАЙЛ.JSON>[-a CHARACTER [CHARGET...]] [-q] [-t | -l] [-e] [-n PASĀKUMU SKAITS] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] Meklēt " aizskaroši notikumi" ", pamatojoties uz uzticamo ierīču sarakstu. $ python3 usbrip.py ID meklēšana [-q] [ --vid VID] [--pid PID] [--offline] Meklējiet papildu informāciju par ierīci pēc tās VID un/vai PID identifikatoru datu bāzē. $ python3 usbrip.py ID lejupielāde [-q] Atjauniniet (lejupielādējiet) vietējo USB ierīču identifikatoru datu bāzi.

Iespējas

Opcijas, ko atbalsta apakšmoduļi "notikumu vēsture", "notikumu gen_auth", "notikumu pārkāpumi", "ids meklēšana", "ids lejupielāde": -q, --quiet izlaist reklāmkarogu, informatīvo (zaļo) ziņojumu rādīšanu un darīt. izpildes laikā neuzdod jautājumus ########################################### ## ###################################### Opcijas, ko atbalsta "notikumu vēsture", " notikumi gen_auth" apakšmodules ", "notikumu pārkāpumi": -e, --ārēja meklēšana tikai noņemamām USB ierīcēm (kurām ir atvienošanas informācija) -n PASĀKUMU SKAITS, -numurs PASĀKUMU SKAITS pēdējo notikumu skaits pēc datuma, kas tiks jārāda -d DATE [DATE. ..], --date DATE [DATE...] datumu saraksts, pēc kuriem notikumi tiks filtrēti, meklējot -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] žurnālfailu saraksts (ja tas nav norādīts, notikumu vēsture tiks meklēta, izmantojot noklusējuma žurnālfailus: /var/log/syslog* vai /var/log/messages* atkarībā no OS versijas) ##### ######## ######################################### ######## ###################### Opcijas, ko atbalsta apakšmoduļi "Notikumu vēsture", "Notikumu pārkāpumi": -t, -- tabula ģenerē izvadi tabulas veidā (ja termināļa loga izmērs nav pietiekams, lai pareizi parādītu tabulu, izvade tiks automātiski ģenerēta saraksta veidā; norādot karogu -t, izvade tiks ģenerēta tabulas formā piespiedu kārtā) -l, --list ģenerē izvadi kā sarakstu -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] kolonnu saraksts, kuras tiks izmantotas, veidojot tabulu (ietekmē tikai ģenerējot izvadi tabulas veidā); atļautās atslēgas: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ################################################# ################################### Opcijas, ko atbalsta apakšmoduļi "events gen_auth", "notikumu pārkāpumi": - a SIGN [SIGN...], --attribute SIGN [SIGN...] atribūtu saraksts, kas tiks izmantots, veidojot autorizēto ierīču sarakstu (kā arī meklējot “pārkāpjošos notikumus” apakšmodulis “Notikumu pārkāpumi”); atļautās atslēgas: "vid", "pid", "prod", "manufact", "serial". ################################################# ################################### Opcijas, ko atbalsta "ID meklēšanas", "ID lejupielādes" apakšmoduļi: - -vid VID pārdevēja ID vai USB ierīces ražotāja ID (parasti 4 heksadecimālie cipari) - vid PID produkta ID vai USB ierīces modeļa ID (parasti 4 heksadecimālie cipari) - bezsaistē, ja norādīts, meklējiet datu bāzē papildu informāciju par USB ierīci identifikatora dati tiks izveidoti, iepriekš tos neatjauninot (datubāze)

Lietošanas piemēri

Rādīt visu USB ierīču savienojumu vēsturi, izlaižot reklāmkarogu, informatīvos (zaļos) ziņojumus, kā arī neuzdodot jautājumus izpildes laikā (-q, --quite), ģenerējot izvadi saraksta veidā (-l, -- saraksts), tostarp tajā ir 100 pēdējie atrastie notikumi (-n PASĀKUMU SKAITS, --numurs PASĀKUMU SKAITS):
$ python3 usbrip.py notikumu vēsture -ql -n 100
Rādīt noņemamo USB ierīču (-e, --ārējo) savienojumu vēsturi, ģenerējot izvadi tabulas veidā ar laukiem (kolonnām) “Savienots”, “VID”, “PID”, “Atvienots” un “Sērijas numurs”. ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrējot meklēšanu pēc datumiem (-d DATE [DATE...], --date DATE [DATE...] ), ņemot informāciju no ārējiem žurnālfailiem (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py notikumu vēsture -et -c conn vid pid disconn serial -d "9. decembris" "10. decembris" -f /var/log/syslog.1 /var/log/syslog.2.gz
Izveidojiet visu USB ierīču savienojumu vēstures tabulu un novirziet izvadi uz failu turpmākai analīzei. Gadījumā, ja izvades straume nav standarta stdout (piemēram, "|" vai ">", izvades datos nebūs iekļautas īpašas). rakstzīmes, kas atbild par fonta krāsu terminālī, tāpēc teksta fails nebūs piebāzts ar nelasāmām rakstzīmēm. Jāņem vērā arī tas, ka usbrip izmanto dažas UNICODE konstantes, tāpēc būtu ieteicams nekavējoties konvertēt kodējumu izveidots fails UTF-8, lai tās pareizi parādītu (piemēram, izmantojot encov), kā arī izmantojiet rakstzīmes jauna līnija Windows stilā labākai pārnesamībai (piemēram, izmantojot awk):
$ python3 usbrip.py vēstures notikumi -t | awk "( sub("$", "\r"; print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Piezīme: atbrīvoties no īpašām ir iespējamas arī par krāsu atbildīgās rakstzīmes, ja izvade jau ir nosūtīta uz stdout. Lai to izdarītu, jums ir jākopē saņemtie dati jaunā failā usbrip.txt un jāpievieno vēl viena awk instrukcija:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Izveidojiet uzticamo ierīču sarakstu JSON faila formā (trusted/auth.json), kas satur pirmā lauka laukus “VID” un “PID”. trīs 26. septembrī pievienotās ierīces:
$ python3 usbrip.py notikumi gen_auth trusted/auth.json -a vid pid -n 3 -d "26. septembris"
Atrodiet “likumpārkāpēja notikumus” noņemamo USB ierīču savienojumu vēsturē, pamatojoties uz uzticamo ierīču sarakstu (trusted/auth.json), izmantojot lauku “PID”, un ģenerējiet izvadi tabulas veidā ar “Connected”, Lauki “VID” un “PID”:
$ python3 usbrip.py notikumu pārkāpumi trusted/auth.json -a pid -et -c conn vid pid
Atrodiet papildu informāciju par USB ierīci, pamatojoties uz tās VID un PID:
$ python3 usbrip.py ids meklēšana --vid 0781 --pid 5580
Lejupielādēt/atjaunināt USB ierīces ID datu bāzi (avots):
$ python3 usbrip.py ID lejupielāde

Saites un postscript

Jūs varat iegūt utilītu no Github, visas palaišanas un pareizas darbības atkarības ir uzskaitītas prasības.txt.

Paldies par uzmanību!

P.S. jā, banera un informatīvo ziņojumu stils ir iedvesmots no projekta sqlmap (*^.^*)

UPD 13.06.2018. Tika veikta izmeklēšana par reālu (?) lietu, kas saistīta ar manu pakalpojumu, no personas ar Codeby (es esmu šokēts, godīgi sakot).

USB — universālo seriālo kopni izstrādāja uzņēmumu konsorcijs ar mērķi nodrošināt vienu vienkāršu kopni perifērijas ierīču savienošanai.

USB dizains ļauj ierīcēm pievienoties lidojuma laikā, izmantojot standarta ligzdas savienojumam. USB ierīcēs ietilpst: tastatūras, peles, printeri, skeneri, cietie diski, zibatmiņas diski, kameras, modemi, tīkla adapteri un kolonnas, un to saraksts nepārtraukti pieaug.

Linux atbalsts USB ierīcēm ir diezgan visaptverošs, taču dažām ierīcēm ir nepieciešami īpaši draiveri, savukārt citas, galvenokārt printeri un skeneri, var netikt atbalstītas vai atbalstītas tikai daļēji.

Datorsistēmās var būt viens vai vairāki kontrolleri vai centrmezgli, kas paredzēti USB ierīču vai cita (ārēja) centrmezgla pievienošanai. Centrmezgls var atbalstīt līdz 7 ierīcēm, kurām savukārt var būt papildu centrmezgli. Centrs iekšā sistēmas bloks sauc par saknes centru. Katra zvaigžņu topoloģija var atbalstīt līdz 127 centrmezgliem vai ierīcēm.

Kad mēs sakām USB portu, mēs domājam datora USB atbalstu un savienojuma portu, nevis ierīces izmantoto iekšējā porta adresi.

USB sistēmas slāņojums ļauj saimniekdatoram noteikt USB ierīces raksturlielumus, tostarp klasi, ražotāja nosaukumu, ierīces nosaukumu, sprieguma prasības, ātrumu, USB atbalsta līmeni un citas funkcijas.

Linux USB ierīču atbalsta modulis

USB ierīces pašlaik pilnībā tiek atbalstītas operētājsistēmā Linux. Lielākā daļa izmaiņu parādījās 2.6 kodola filiālē, lai gan bija zināms atbalsts pat 2.2 kodolos. Linux atbalsta gan USB 2.0, gan iepriekšējās specifikācijas. Tā kā USB ir karsts spraudnis, atbalsts parasti tiek nodrošināts, izmantojot kodola moduļus, kurus pēc vajadzības var ielādēt vai izlādēt.

Komanda lspci ļauj parādīt USB ierīces:

Root@localhost:~:# lspci | grep -i usb 00:03.0 USB kontrolieris: Silicon Integrated Systems USB 1.1 Controller (rev 0f) 00:03.1 USB Controller: Silicon Integrated Systems USB 1.1 Controller (rev 0f) 00:03.3 USB Controller: Silicon Integrated Systems Controller USB 20.

Komandas izvade parāda, ka sistēmā ir 3 USB kontrolleri.

Izmantojot komandu lsmod, varat parādīt ielādētos USB moduļus:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Module" Moduļa lielums Izmanto hid_microsoft 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse hci_hcd04sshc1 41644 34152 0

Tiek rādītas pievienotās USB ierīces

Pašlaik pievienoto USB ierīču kopsavilkums ir ietverts /proc/bus/usb/devices failā. To var parādīt ar šādu komandu:

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 ASV (0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(centrmezgls) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Pārdevējs=1d6b ProdID=0001 Rev= 2.06 S: ražotājs=Linux 2.6.29.6 ohci_hcd S: Produkts=OHCI resursdatora kontrolleris S: SerialNumber=0000:00:03.1 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA Al:* If#= 0 = 0 #EPs= 1 Cls=09(centrmezgls) Apakš=00 Prot=00 Draiveris=centrmezgls E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Kopne=02 Lev=00 Prnt=00 Ports=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( centrmezgls) Apakš=00 Prot=00 MxPS=64 #Cfgs= 1 P: Pārdevējs=1d6b ProdID=0001 Rev= 2.06 S: Ražotājs=Linux 2.6.29.6 ohci_hcd S: Produkts=OHCI Host Controller S: SerialNumber=0:00:0=0:0 03,0 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(centrmezgls) Apakš=00 Prot=00 Draiveris=centrmezgls E: Reklāma =81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: Kopne=02 Lev=01 Prnt=01 Ports=00 Cnt=01 Dev#= 2 Spd=1,5 MxCh= 0 D: Ver= 2,00 Cls=00(>ifc) Apakš=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Pārdevējs=045e ProdID=00db Rev= 1.73 S: Ražotājs=Microsoft S: Product=Natural� Ergonomic Keyboard 4000 C:* #Ifs = 2 Cfg#= 1 Atr=a0 MxPwr=100mA I:* Ja#= 0 Alt= 0 #EPs= 1 Cls=03(HID) Sub=01 Prot=01 Draiveris=usbhid E: Ad=81(I) Atr =03(Int.) MxPS= 8 Ivl=10ms I:* Ja#= 1 Alt= 0 #EPs= 1 Cls=03(HID) Sub=00 Prot=00 Draiveris=usbhid E: Ad=82(I) Atr =03(Int.) MxPS= 8 Ivl=10ms T: Kopne=01 Lev=00 Prnt=00 Ports=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(centrmezgls) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Pārdevējs=1d6b ProdID=0002 Rev= 2.06 S: Ražotājs= Linux 2.6.29.6 ehci_hcd S: Produkts=EHCI resursdatora kontrolleris S: SerialNumber=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls=09(centrmezgls) Apakš=00 Prot=00 Draiveris=centrmezgls E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

Sarakstā Spd=480 atbilst USB 2.0 kopnei un Spd=12 atbilst USB 1.1 ierīcēm. Tālāk sarakstā var redzēt, ka šobrīd sistēmai ir pievienota 1 USB ierīce - Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).

Protams, es ierakstu šo tekstu uz šīs tastatūras.

USB ierīču savienojumu hierarhiju var redzēt, izmantojot komandu lsusb ar opciju -t:

Root@localhost:~:# lsusb -t Bus# 3 `-Izstrādātājs# 1 Pārdevējs 0x1d6b Produkts 0x0001 Bus# 2 `-Izstrādātājs# 1 Pārdevējs 0x1d6b Produkts 0x0001 `-Izstrādātājs# 2 Pārdevējs 0x045e `b Bus 0xev#01d 1 Pārdevējs 0x1d6b produkts 0x0002

Parāda informāciju par konkrētu USB ierīce var iegūt ar šādu komandu:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Kopne 002 Ierīce 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 Ierīces deskriptors: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (definēts interfeisa līmenī) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSizedore 8 Corxp4endoree Microsoft Corxp4endore. idProduct 0x00db Natural Ergonomic Keyboard 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 Natural Ergonomic Keyboard 4000 iSerial 0 bNumConfigurations 1 Konfigurācijas deskriptors: bLengthTotals 9 b2Configure figurationValue 1 iConfiguration 0 bmAtribūti 0xa0 (Bus Powered) Remote Wakeup MaxPower 100mA interfeiss Deskriptors: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Ierīce bInterfaceSubClass 1 Sāknēšanas interfeisa apakšklase bInterfaceProtocol 1 Tastatūra iInterface 0 bInterfaceProtocol 1 2 3c 00 Galapunkta deskriptors: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAtribūti 3 Pārsūtīšanas veids Pārtraukt Sinhronizācijas veids Nav Lietošanas veids Dati wMaxPacketSize 0x0008 1x 8 baiti bIntervāls 10 Interfeisa deskriptors: bLength 9 bDescriptorType 4 bInterfaceNumber 1 b AlternateSetting 0 b.blass 0 Nav apakšklases bInterfaceProtocol 0 Nav iInterface 0 ** NEATZINĀTS : 09 21 11 01 00 01 22 56 00 Galapunkta deskriptors: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAtribūti 3 Pārsūtīšanas veids Pārtraukums Sinhronizācijas veids Nav Lietojuma veids Dati wMaxPacketSize 8 bx1x0 0 x 0 xxx 0 0000 (ar autobusu)

USB ierīces pievienošana lidojuma laikā

Jaunās sistēmas atbalsta USB ierīču pievienošanu lidojuma laikā (karsto pievienošanu), kas nozīmē ierīces pievienošanu strādājošai sistēmai, kurai:

  • noteikt USB ierīces veidu, atrast draiveri un palaist to;
  • saistīt vadītāju ar ierīci;
  • paziņot citām apakšsistēmām par USB ierīci.



Iedziļinoties kādā no disciplīnām (studiju laikā Compeza specialitātē), es strādāju pie viena interesanta projekta, kuru es negribētu vienkārši aprakt mapes “Univer” dziļumos uz ārējā cietā. braukt.

Šo projektu sauc usbrip un ir neliela atvērtā pirmkoda konsoles utilīta Linux kriminālistikai, proti, darbam ar USB ierīču savienojumu vēsturi. Programma ir uzrakstīta tīrā Python 3 versijā (izmantojot dažus trešo pušu moduļus), un tai nav nepieciešamas citas atkarības, izņemot Python 3.x tulku un dažas rindiņas no prasības.txt, atrisināts vienā rindā, izmantojot pip3.

Šajā ziņojumā es aprakstīšu dažas šīs programmatūras iespējas un atstāšu īsu rokasgrāmatu ar saiti uz lejupielādes avotu.

Griezt! (...es domāju Izgriezt!)

Ekrānuzņēmumi

Noņemamo USB ierīču savienojuma vēstures iegūšana:


Papildinformācijas atrašana par USB ierīci pēc modeļa identifikatora (PID):

Apraksts

Kā zināms, operētājsistēmas, kuru pamatā ir GNU/Linux, ir ļoti jutīgas pret dažāda veida notikumu reģistrēšanu, un USB ierīču pievienošana/atvienošana nav izņēmums. Apvienojumā ar vienu no UNIX filozofijas "teksta straumēm kā universālām saskarnēm" informāciju par šādu notikumu artefaktiem (dažādās detalizācijas pakāpēs) atkarībā no izplatīšanas var atrast vienā vai vairākos no šiem failiem:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/messages* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
KRITISIKAS PIERĀDĪJUMS pat parāda mums šo attēlu par šo lietu (nedaudz nepilnīgu, bet vienalga):

Savam darbam usbrip atrod žurnālfailus, kas ir universāli visām Linux versijām, kuru pamatā ir Debian (Ubuntu, Linux Mint utt.) un RPM (CentOS, Fedora, openSUSE utt.), proti: /var/log/syslog* vai /var/log/messages* , parsē tos, meklējot nepieciešamo informāciju un pārvērš atrastās USB ierīču savienojumu pēdas skaistās plāksnēs (vai sarakstos - kā vien vēlaties).

USBrip var arī:

  • izveidot autorizēto (uzticamo) ierīču sarakstus JSON failu veidā;
  • meklējiet “apvainojošus notikumus”, pamatojoties uz uzticamo ierīču sarakstu: notikumi (USB savienojums/atvienošanās), kuros bija iesaistītas USB ierīces, kas nebija atzīmētas kā uzticamas;
  • meklējiet papildu informāciju par USB ierīci pēc tās VID (Vendor ID) un/vai PID (Produkta ID).

Atsauce

Iegūstiet pieejamo moduļu sarakstu:

$ python3 usbrip.py -h
Iegūstiet konkrētam modulim pieejamo apakšmoduļu sarakstu:

$python3 usbrip.py<модуль>-h
Iegūstiet konkrētam apakšmodulim pieejamo opciju sarakstu:

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

Sintakse

$ python3 usbrip.py reklāmkarogs $ python3 usbrip.py notikumu vēsture [-q] [-t | -l] [-e] [-n PASĀKUMU SKAITS] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py notikumu gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n PASĀKUMU SKAITS] [-d DATE [DATE...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip.py notikumu pārkāpumi<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n PASĀKUMU SKAITS] [-d DATE [DATE...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py ids meklēšana [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids lejupielāde [-q]

Iespējas

Opcijas, ko atbalsta apakšmoduļi "notikumu vēsture", "notikumu gen_auth", "notikumu pārkāpumi", "ids meklēšana", "ids lejupielāde": -q, --quiet izlaist reklāmkarogu, informatīvo (zaļo) ziņojumu rādīšanu un darīt. izpildes laikā neuzdod jautājumus ########################################### ## ###################################### Opcijas, ko atbalsta "notikumu vēsture", " notikumi gen_auth" apakšmodules ", "notikumu pārkāpumi": -e, --ārēja meklēšana tikai noņemamām USB ierīcēm (kurām ir atvienošanas informācija) -n PASĀKUMU SKAITS, -numurs PASĀKUMU SKAITS pēdējo notikumu skaits pēc datuma, kas tiks jārāda -d DATE [DATE. ..], --date DATE [DATE...] datumu saraksts, pēc kuriem notikumi tiks filtrēti, meklējot -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] žurnālfailu saraksts (ja tas nav norādīts, notikumu vēsture tiks meklēta, izmantojot noklusējuma žurnālfailus: /var/log/syslog* vai /var/log/messages* atkarībā no OS versijas) ##### ######## ######################################### ######## ###################### Opcijas, ko atbalsta apakšmoduļi "Notikumu vēsture", "Notikumu pārkāpumi": -t, -- tabula ģenerē izvadi tabulas veidā (ja termināļa loga izmērs nav pietiekams, lai pareizi parādītu tabulu, izvade tiks automātiski ģenerēta saraksta veidā; norādot karogu -t, izvade tiks ģenerēta tabulas formā piespiedu kārtā) -l, --list ģenerē izvadi kā sarakstu -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] kolonnu saraksts, kuras tiks izmantotas, veidojot tabulu (ietekmē tikai ģenerējot izvadi tabulas veidā); atļautās atslēgas: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ################################################# ################################### Opcijas, ko atbalsta "ID meklēšanas", "ID lejupielādes" apakšmoduļi: - -vid VID pārdevēja ID vai USB ierīces ražotāja ID (parasti 4 heksadecimālie cipari) - vid PID produkta ID vai USB ierīces modeļa ID (parasti 4 heksadecimālie cipari) - bezsaistē, ja norādīts, meklējiet datu bāzē papildu informāciju par USB ierīci identifikatora dati tiks izveidoti, iepriekš tos neatjauninot (datubāze)

Lietošanas piemēri

Rādīt visu USB ierīču savienojumu vēsturi, izlaižot reklāmkarogu, informatīvos (zaļos) ziņojumus, kā arī neuzdodot jautājumus izpildes laikā (-q, --quite), ģenerējot izvadi saraksta veidā (-l, -- saraksts), tostarp tajā ir 100 pēdējie atrastie notikumi (-n PASĀKUMU SKAITS, --numurs PASĀKUMU SKAITS):
$ python3 usbrip.py notikumu vēsture -ql -n 100
Rādīt noņemamo USB ierīču (-e, --ārējo) savienojumu vēsturi, ģenerējot izvadi tabulas veidā ar laukiem (kolonnām) “Savienots”, “VID”, “PID”, “Atvienots” un “Sērijas numurs”. ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrējot meklēšanu pēc datumiem (-d DATE [DATE...], --date DATE [DATE...] ), ņemot informāciju no ārējiem žurnālfailiem (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py notikumu vēsture -et -c conn vid pid disconn serial -d "9. decembris" "10. decembris" -f /var/log/syslog.1 /var/log/syslog.2.gz
Izveidojiet visu USB ierīču savienojumu vēstures tabulu un novirziet izvadi uz failu turpmākai analīzei. Gadījumā, ja izvades straume nav standarta stdout (piemēram, "|" vai ">", izvades datos nebūs iekļautas īpašas). rakstzīmes, kas ir atbildīgas par fonta krāsu terminālī, tāpēc teksta fails nebūs piebāzts ar nelasāmām rakstzīmēm. Jāņem vērā arī tas, ka usbrip izmanto dažas UNICODE konstantes, tāpēc būtu ieteicams izveidotā faila kodējumu nekavējoties konvertēt uz UTF-8, lai tās pareizi parādītu (piemēram, izmantojot encov), kā arī izmantot Windows stilu. jaunrindas rakstzīmes labākai pārnesamībai (piemēram, izmantojot awk):
$ python3 usbrip.py vēstures notikumi -t | awk "( sub("$", "\r"; print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Piezīme: atbrīvoties no īpašām ir iespējamas arī par krāsu atbildīgās rakstzīmes, ja izvade jau ir nosūtīta uz stdout. Lai to izdarītu, jums ir jākopē saņemtie dati jaunā failā usbrip.txt un jāpievieno vēl viena awk instrukcija:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Izveidojiet uzticamo ierīču sarakstu JSON faila formā (trusted/auth.json), kurā ir pirmais trīs 26. septembrī pievienotās ierīces:
$ python3 usbrip.py notikumi gen_auth trusted/auth.json -n 3 -d "26. septembris"
Noņemamo USB ierīču savienojuma vēsturē meklējiet “pārkāpuma notikumus”, pamatojoties uz uzticamo ierīču sarakstu (trusted/auth.json), un ģenerējiet izvadi tabulas veidā ar “Connected”, “VID” un “PID”. ” lauki:
$ python3 usbrip.py notikumu pārkāpumi trusted/auth.json -et -c conn vid pid
Papildinformācijas atrašana par USB ierīci, pamatojoties uz tās VID un PID:
$ python3 usbrip.py ids meklēšana --vid 0781 --pid 5580
Lejupielādēt/atjaunināt USB ierīces ID datu bāzi (avots

Jūs esat pievienojis USB zibatmiņas disku vai tastatūru vai peli savam Linux datoram. Bet nekas nenotiek.

Kas noticis? Kāpēc jūsu Linux dators neatpazīst ierīci? Vai tas ir Linux, vai arī jūsu USB ierīce ir pārstājusi darboties?

USB nedarbojas Ubuntu?

Disku diskdziņi, atmiņas karšu lasītāji, tālruņi, multivides atskaņotāji un perifērijas ierīces multivide...tie visi ir noderīgi, bet, ja ir problēmas ar USB portu vai sistēmas draiveriem, tie nedarbosies. Tas var būt īpaši apgrūtinoši, ja izmantojat Bluetooth tastatūru vai peli (ar USB sargspraudni), jo tas nozīmē vadu USB alternatīvu meklēšanu.

Tomēr tā var nebūt nedzīva osta. Iespējams, ka izmantotā USB ierīce ir bojāta, un to nevar noteikt.

USB problēmu risināšana var būt sarežģīta, taču šīs problēmas nav neiespējami diagnosticēt un veikt nepieciešamos labojumus.

Likvidēšanai USB problēmas Operētājsistēmā Linux ir jāveic piecas darbības:

  1. Pārliecinieties, vai ir atrasts USB ports
  2. Ražo nepieciešamo renovācijas darbi uz ostu
  3. Labojiet vai labojiet USB ierīces
  4. Reboot operētājsistēma Linux
  5. Apstipriniet ierīču draiveru pieejamību

Apskatīsim katru no tām pēc kārtas un uzzināsim, kā strādāt ar viltīgām USB ierīcēm operētājsistēmā Linux.

1. Vai jūsu ierīci nosaka Linux?

Pirmā lieta, kas jāpārbauda, ​​ievietojot USB ierīci Linux datorā, ir, vai tā ir noteikta. USB ierīces noteikšana parasti nav verbāla vai dzirdama (operētājsistēmā Linux Deepin tā nav), kā tas ir operētājsistēmā Windows vai macOS, kas nozīmē, ka jums bieži ir jāpārbauda, ​​vai operētājsistēma ir tvērusi ierīci.

Par laimi, tas ir vienkārši.

Vispirms atvienojiet pieprasītās USB ierīces. Pēc tam atveriet termināļa logu un ievadiet komandu » list USB:

Komanda dmesg parādīs jūsu sistēmā pievienotās USB ierīces. Tas ietvers arī ne-USB aparatūru un diemžēl sniedz milzīgu informācijas daudzumu. Lai to novērstu, varat mēģināt:

Tas izskatās kā dmesg un lsusb komandu krustojums, norādot pievienoto USB aparatūru ar pietiekami daudz informācijas, lai tās identificētu.

Tātad, vai pievienotais USB ir norādīts šeit? Ja nē, iespējams, ir bojāts ports vai ir radusies problēma ar ierīci. Tāpat ierīce var nebūt saderīga ar Linux.

2. Kā pārbaudīt USB portu

Ja USB ierīce netiek parādīta, tas var būt saistīts ar problēmu ar USB portu.

Labākais veids, kā to pārbaudīt, ir vienkārši izmantot citu datora USB portu. Ja USB aparatūra tagad ir noteikta, jūs zināt, ka jums ir problēma ar kādu no USB portiem.

Ja cits USB ports nav pieejams, jums ir jāizmēģina USB ierīce citā datorā vai klēpjdatorā. Tomēr tas var nebūt ideāls variants, jo alternatīvi varat izmantot Windows vai macOS datoru, un šajā gadījumā dažas USB ierīces nevar izmantot operētājsistēmā Linux. Tāpēc būs grūti noteikt, kas tieši izraisa problēmu, neatkarīgi no tā, vai tā ir USB ierīce vai USB ports.

Lai iegūtu labākos rezultātus, kad vien iespējams, veicot USB ierīču problēmu novēršanu, izmantojiet ar Linux saderīgu aparatūru.

3. Bojātas USB aparatūras labošana

Ja jūsu USB aparatūra ir bojāta, jums ir divas iespējas: salabot vai atgriezt.

Labojums parasti ietver pārbaudi USB ports, kā arī ierīces, kas pašlaik nedarbojas. Labojumi gandrīz vienmēr būs centrā USB kabelis un portu datorā. USB kabeļus parasti var nomainīt, bet USB portus var salabot.

Fiziska USB aparatūras pārbaude ir laba ideja. Kabeļiem jābūt izturīgiem, bez pārtraukumiem, un metāla daļai jābūt droši nostiprinātai.

Tikmēr USB porti jāpārbauda, ​​kad dators ir izslēgts un atvienots. Pārbaudiet, vai porti ir droši, nestabili USB porti ir aprīkojuma nolietojuma pazīme.

Ja USB ports kļūst vaļīgs, varat to pielodēt atpakaļ vietā. Protams, jums jau vajadzētu zināt, kā lodēt, nekad nemēģiniet veikt DIY darbu bez iepriekšējas pieredzes.

Pārbaudiet arī, vai USB pieslēgvietās nav putekļu un netīrumu, īpaši datora aizmugurē, kur regulāri krājas putekļi. Putekļi ir personālā datora ienaidnieks, tāpēc ieteicams savu sistēmu glabāt vidē, kurā nav putekļu. Putekļi var nokļūt jūsu datorā, izmantojot USB portus. Veltiet laiku, lai šie porti būtu tīri. Izmantojiet saspiestu gaisu, lai izkliedētu putekļus un netīrumus.

Vai varat atgriezt savu USB ierīci? Ja tas ir jauns, visticamāk. Problēma ir tāda, ka, ja vien tas nav skaidri atzīmēts kā darbojas Linux, veikals, visticamāk, nepieņems atgriešanas.

4. Pārstartējiet Linux, lai salabotu USB portu

Dažos gadījumos, piemēram, ja izmantojat klēpjdatoru, strāvas problēmas var ietekmēt tā spēju noteikt USB ierīces. Automātiskās apturēšanas opcija ir paredzēta, lai samazinātu enerģijas patēriņu Linux klēpjdatoros, taču tā var būt neproduktīva.

Tātad, ko jūs varat darīt?

Vispirms pārbaudiet, vai problēmu rada automātiskā apturēšana. To var izdarīt, restartējot datoru. Ja USB ierīce darbojas, šis USB ports saņem strāvu.

Nākamais solis ir nodrošināt, lai tas vairs neatkārtotos. Nākamie triki komandrinda ir paredzēti Ubuntu 18.10, tāpēc pārbaudiet pareizo procedūru vēlamajā Linux izplatīšanā.

Atveriet termināļa logu un ierakstiet:

cat /sys/module/usbcore/parameters/autosuspend

Apskatīt šeit:

GRUB_CMDLINE_LINUX_DEFAULT = "kluss slampāt"

GRUB_CMDLINE_LINUX_DEFAULT = "kluss šļakatas"