Povijest USB veza u linuxu. Linux forenzika u obliku praćenja povijesti povezivanja USB uređaja. Ponovno pokrenite Linux da popravite USB priključak

Kao dio mog poniranja u jednu od disciplina (tijekom studija na specijalnosti Compeza), radio sam na jednom zanimljivom projektu koji ne bih želio jednostavno zakopati u dubini mape “Univer” na vanjskom hardu. voziti.

Ovaj projekt se zove

usbrip

i mali je konzolni uslužni program otvorenog koda za forenziku Linuxa, naime za rad s poviješću povezivanja USB uređaja. Program je napisan u čistom Python 3 (koristeći neke module trećih strana) i ne zahtijeva ovisnosti osim tumača Python 3.x i nekoliko redaka iz

zahtjevi.txt

Riješeno u jednom retku pomoću pip3.

U ovom ću postu opisati neke od mogućnosti ovog softvera i ostaviti kratki priručnik s vezom na izvor preuzimanja.

$ python3 usbrip.py ids preuzimanje

Linkovi i postscript

Uslužni program možete dobiti od

GitHub

Sve ovisnosti za pokretanje i ispravan rad navedene su u

zahtjevi.txt

Hvala na pažnji!

p.s.

da, stil bannera i informativnih poruka inspiriran je projektom

sqlmap

Kao dio mog poniranja u jednu od disciplina (dok sam studirao za specijalnost računalne sigurnosti), radio sam na jednom zabavnom projektu koji ne bih želio jednostavno zakopati u dubinama mape “Univer” na vanjskom tvrdom disku.

Ovaj projekt se zove usbrip i mali je konzolni uslužni program otvorenog koda za forenziku Linuxa, naime za rad s poviješću povezivanja USB uređaja. Program je napisan u čistom Python 3 (koristeći neke module trećih strana) i ne zahtijeva ovisnosti osim tumača Python 3.x i nekoliko redaka iz zahtjevi.txt, riješen u jednom retku pomoću pip-a.

U ovom ću postu opisati neke od mogućnosti ovog softvera i ostaviti kratki priručnik s vezom na izvor preuzimanja.

Izrezati! (...Mislim Cut!)

Bilješka. Funkcionalnost opisana u članku relevantna je za verziju uslužnog programa. Iza Najnovija verzija S puno novih dobara, predlažem odlazak u spremište.

Snimke zaslona

Dohvaćanje povijesti povezivanja izmjenjivih USB uređaja:


traži dodatne informacije o USB uređaju prema identifikatoru modela (PID):

Opis

Kao što znate, operativni sustavi temeljeni na GNU/Linuxu vrlo su osjetljivi na bilježenje raznih vrsta događaja, a spajanje/isključivanje USB uređaja nije iznimka. U kombinaciji s jednim od "tekstualnih tokova kao univerzalnih sučelja" filozofije UNIX-a, informacije o artefaktima takvih događaja (u različitim stupnjevima detalja) ovisno o distribuciji mogu se pronaći u jednoj ili više sljedećih tekstualnih datoteka:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/messages*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
FORENZIČKI DOKAZ nam čak pokazuje ovu sliku o ovom pitanju (malo nepotpunu, ali nema veze):

Usbrip za svoj rad pronalazi univerzalne za sve verzije Linuxa temeljene na Debianu (Ubuntu, Linux Mint itd.) i RPM (CentOS, Fedora, openSUSE itd.), log datoteke, naime: /var/log/syslog* ili /var/log/messages* , analizira ih u potrazi za potrebnim informacijama i otkriva pronađene tragove spajanje USB uređaja u prekrasne ploče (ili popise - što god želite).

USBrip također može:

  • kreirati popise ovlaštenih (pouzdanih) uređaja u obliku JSON datoteka;
  • traženje "uvredljivih događaja" na temelju popisa pouzdanih uređaja: događaji (USB veza/prekid veze) koji uključuju USB uređaje koji nisu označeni kao pouzdani;
  • potražite dodatne informacije o USB uređaju prema njegovom VID-u (ID dobavljača) i/ili PID-u (ID proizvoda).

Referenca

Dobijte popis dostupnih modula:

$ python3 usbrip.py -h
Dobijte popis dostupnih podmodula za određeni modul:

$python3 usbrip.py<модуль>-h
Dobiti popis dostupne opcije za određeni podmodul:

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

Sintaksa

$ python3 usbrip.py banner Prikazuje banner uslužnog programa na ekranu. $ python3 usbrip.py povijest događaja [-q] [-t | -l] [-e] [-n BROJ DOGAĐAJA] [-d DATUM [DATUM...]] [-c KOLON [KOLON...]] [-f DNEVNIK [DNEVNIK...]] Prikaz USB veze povijest . $ python3 usbrip.py događaji gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a SIGN [SIGN...]] [-q] [-e] [-n BROJ_DOGAĐAJA] [-d DATUM [DATUM...]] [-f LOG_FILE [LOG_FILE...]] Formiranje popisa ovlaštenih (pouzdanih) USB uređaja. $ python3 usbrip.py kršenja događaja<ВХОДНОЙ_ФАЙЛ.JSON>[-a ZNAK [NAPLATA...]] [-q] [-t | -l] [-e] [-n BROJ DOGAĐAJA] [-d DATUM [DATUM...]] [-c KOLON [KOLON...]] [-f DNEVNIK [DNEVNIK...]] Traži " uvredljivi događaji" " na temelju popisa pouzdanih uređaja. $ python3 usbrip.py ids pretraživanje [-q] [ --vid VID] [--pid PID] [--offline] Traži dodatne informacije o uređaju prema njegovom VID-u i/ili PID-u u bazi podataka identifikatora. $ python3 usbrip.py ids preuzimanje [-q] Ažuriranje (preuzimanje) lokalne baze podataka identifikatora USB uređaja.

Mogućnosti

Opcije koje podržavaju podmoduli "povijest događaja", "događaji gen_auth", "kršenja događaja", "pretraživanje idova", "preuzimanje idova": -q, --quiet izostaviti prikaz bannera, informativnih (zelenih) poruka i učiniti ne postavljati pitanja tijekom izvršenja ############################################### ## ######################################### Opcije koje podržava "povijest događaja", " događaji gen_auth" podmoduli ", "kršenja događaja": -e, --eksterna pretraga samo za prijenosne USB uređaje (koji imaju informacije o odspajanju) -n BROJ DOGAĐAJA, --broj BROJ DOGAĐAJA broj najnovijih događaja po datumu koji će biti prikazan -d DATUM [DATUM. ..], --date DATUM [DATUM...] popis datuma prema kojima će se događaji filtrirati prilikom pretraživanja -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] popis datoteka dnevnika (ako nije navedeno, povijest događaja će se pretraživati ​​pomoću zadanih datoteka dnevnika: /var/log/syslog* ili /var/log/messages* ovisno o verziji OS-a) ##### ######## ############################################ ######## ####################### Opcije koje podržavaju podmoduli "povijest događaja", "kršenja događaja": -t, -- tablica generirati izlaz u obliku tablice (ako veličina prozora terminala nije dovoljna za ispravan prikaz tablice, izlaz će se automatski generirati u obliku liste; kada navedete zastavu -t, izlaz će se prisilno generirati u obliku tablice) -l, --list generirati izlaz kao popis -c STUPAC [STUPAC...], --stupac STUPAC [STUPAC.. .] popis stupaca koji će se koristiti pri izgradnji tablice (ima učinka samo pri generiranju izlaza u obliku tablice); dozvoljeni ključevi: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ##################################################### ##################################### Opcije koje podržavaju podmoduli "envents gen_auth", "events conversions": - a SIGN [SIGN...], --attribute SIGN [SIGN...] popis atributa koji će se koristiti pri izradi popisa ovlaštenih uređaja (kao i pri traženju "događaja koji krše" u slučaju podmodul “kršenja događaja”); dozvoljeni ključevi: "vid", "pid", "prod", "manufact", "serial". ##################################################### ##################################### Opcije podržane podmodulima "ids search", "ids download": - -vid VID ID dobavljača ili ID proizvođača USB uređaja (obično 4 heksadecimalne znamenke) --vid PID ID proizvoda ili ID modela USB uređaja (obično 4 heksadecimalne znamenke) --offline ako je navedeno, potražite dodatne informacije o USB uređaju u bazi podataka podaci identifikatora bit će proizvedeni bez prethodnog ažuriranja (baze podataka)

Primjeri korištenja

Prikaži povijest povezivanja svih USB uređaja, izostavljajući banner, informativne (zelene) poruke, a također i bez postavljanja pitanja tijekom izvođenja (-q, --quite), generirajući izlaz u obliku popisa (-l, -- popis), uključujući u njemu sadrži 100 posljednjih pronađenih događaja (-n BROJ DOGAĐAJA, --broj BROJ DOGAĐAJA):
$ python3 usbrip.py povijest događaja -ql -n 100
Prikaži povijest povezivanja izmjenjivih USB uređaja (-e, --external), generirajući izlaz u obliku tablice s poljima (stupcima) "Povezano", "VID", "PID", "Isključeno" i "Serijski broj" ” (-c KOLUMNA [KOLUMNA...], --column KOLUMNA [KOLUMNA...]), filtriranje pretraživanja po datumima (-d DATUM [DATUM...], --date DATUM [DATUM...] ), uzimajući informacije iz vanjskih datoteka dnevnika (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py povijest događaja -et -c conn vid pid disconn serial -d "9. prosinca" "10. prosinca" -f /var/log/syslog.1 /var/log/syslog.2.gz
Izgradite tablicu povijesti povezivanja svih USB uređaja i preusmjerite izlaz u datoteku za daljnju analizu. U slučaju da izlazni tok nije standardni stdout ("|" ili ">" na primjer), posebni neće biti prisutni u izlaznim podacima. znakovi odgovorni za boju fonta u terminalu, tako tekstualna datoteka neće biti zatrpan nečitljivim znakovima. Također treba napomenuti da usbrip koristi neke UNICODE konstante, pa bi bilo dobro odmah pretvoriti kodiranje stvorena datoteka u UTF-8 da biste ih ispravno prikazali (na primjer, koristeći encov), a također koristite znakove nova linija u Windows stilu za bolju prenosivost (na primjer pomoću awk):
$ python3 usbrip.py događaji povijesti -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Bilješka: osloboditi se posebnih znakovi odgovorni za boju također su mogući ako je izlaz već poslan na stdout. Da biste to učinili, morate kopirati primljene podatke u novu datoteku usbrip.txt i dodati još jednu awk instrukciju:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Napravite popis pouzdanih uređaja u obliku JSON datoteke (trusted/auth.json) koja sadrži polja "VID" i "PID" prvog tri uređaji povezani 26. rujna:
$ python3 usbrip.py događaji gen_auth trusted/auth.json -a vid pid -n 3 -d "26. rujna"
Pronađite "događaje prijestupnika" u povijesti povezivanja izmjenjivih USB uređaja na temelju popisa pouzdanih uređaja (trusted/auth.json) pomoću polja "PID" i generirajte izlaz u obliku tablice s "Povezano", " VID” i “PID” polja:
$ python3 usbrip.py kršenja događaja trusted/auth.json -a pid -et -c conn vid pid
Pronađite dodatne informacije o USB uređaju na temelju njegovog VID-a i PID-a:
$ python3 usbrip.py ids search --vid 0781 --pid 5580
Preuzmite/ažurirajte bazu podataka ID-a USB uređaja (izvor):
$ python3 usbrip.py ids preuzimanje

Linkovi i postscript

Uslužni program možete preuzeti s Githuba, sve ovisnosti za pokretanje i ispravan rad navedene su u zahtjevi.txt.

Hvala na pažnji!

p.s. da, stil bannera i informativnih poruka inspiriran je projektom sqlmap (*^.^*)

UPD 13.06.2018. Postojala je istraga o stvarnom (?) slučaju koji je uključivao moju pomoć od osobe s Codebyjem (da budem iskren, šokiran sam).

USB - Universal Serial Bus razvio je konzorcij tvrtki s ciljem pružanja jedne, jednostavne sabirnice za povezivanje perifernih uređaja.

USB dizajn omogućuje povezivanje uređaja u hodu koristeći standardne priključke za povezivanje. USB uređaji uključuju: tipkovnice, miševe, pisače, skenere, tvrdih diskova, flash diskovi, kamere, modemi, mrežni adapteri i kolumne, a njihov popis stalno raste.

Linux podrška za USB uređaje prilično je sveobuhvatna, ali neki uređaji zahtijevaju posebne upravljačke programe, a drugi, uglavnom pisači i skeneri, možda neće biti podržani ili će biti samo djelomično podržani.

Računalni sustavi mogu sadržavati jedan ili više kontrolera ili čvorišta dizajniranih za povezivanje USB uređaja ili drugog (vanjskog) čvorišta. Hub može podržati do 7 uređaja, koji zauzvrat mogu imati dodatne hubove. Hub unutra jedinica sustava zvano korijensko središte. Svaka zvjezdasta topologija može podržati do 127 čvorišta ili uređaja.

Kad kažemo USB priključak, mislimo na USB podršku računala i priključak za povezivanje, a ne internu adresu priključka koju koristi uređaj.

Slojeviti USB sustav omogućuje glavnom računalu da odredi karakteristike USB uređaja, uključujući klasu, naziv proizvođača, naziv uređaja, zahtjeve napona, brzinu, razinu USB podrške i druge funkcije.

Linux USB modul za podršku uređaja

USB uređaji trenutno su u potpunosti podržani na Linuxu. Većina promjena se pojavila u ogranku kernela 2.6, iako je bilo neke podrške čak iu kernelima 2.2. Linux podržava i USB 2.0 i ranije specifikacije. Zbog hot-plug prirode USB-a, podrška se obično vrši putem modula kernela koji se po potrebi mogu učitati ili isprazniti.

Naredba lspci omogućuje vam prikaz USB uređaja:

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

Izlaz naredbe pokazuje da u sustavu postoje 3 USB kontrolera.

Pomoću naredbe lsmod možete prikazati učitane USB module:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Module" Veličina modula koju koristi 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_ h cd 34152 0

Prikaz spojenih USB uređaja

Sažetak trenutno povezanih USB uređaja nalazi se u datoteci /proc/bus/usb/devices. Možete ga prikazati sljedećom naredbom:

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: Dobavljač=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 Alt = 0 #EPs= 1 Cls=09(hub) Sub=00 Prot=00 Vozač=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: Vendor=1d6b ProdID=0001 Rev= 2.06 S: Proizvođač=Linux 2.6.29.6 ohci_hcd S: Proizvod=OHCI Host Controller S: SerialNumber=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: Vendor=045e ProdID=00db Rev= 1.73 S: Manufacturer=Microsoft S: Product=Natural� Ergonomic Keyboard 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: Dobavljač=1d6b ProdID=0002 Rev= 2.06 S: Proizvođač= 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

U popisu Spd=480 odgovara USB 2.0 sabirnici, a Spd=12 odgovara USB 1.1 uređajima. Dalje na popisu možete vidjeti da je trenutno 1 USB uređaj spojen na sustav - Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).

Naravno, ovaj tekst tipkam na ovoj tipkovnici.

Hijerarhija povezivanja USB uređaja može se vidjeti pomoću naredbe lsusb s opcijom -t:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 Dobavljač 0x1d6b Proizvod 0x0001 Bus# 2 `-Dev# 1 Dobavljač 0x1d6b Proizvod 0x0001 `-Dev# 2 Dobavljač 0x045e Proizvod 0x00db Bus# 1 `-Dev# 1 Dobavljač 0x1d6b Proizvod 0x0002

Prikaz informacija o određenom USB uređaj može se dobiti sljedećom naredbom:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Bus 002 Uređaj 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 Deskriptor uređaja: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Definirano na razini sučelja) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x045e Microsoft Corp. idProduct 0x00db Natural Ergonomic Keyboard 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 Natural Ergonomic Keyboard 4000 iSerial 0 bNumConfigurations 1 Deskriptor konfiguracije: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (napajanje sabirnice) Remote Wakeup MaxPower 100mA sučelje Deskriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Tipkovnica iInterface 0 ** NEPREPOZNATO: 09 21 11 01 00 01 22 3 c 00 Deskriptor krajnje točke: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 Interface Deskriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 Nema podklase bInterfaceProtocol 0 Ništa iInterface 0 ** NEPREPOZNATO : 09 21 11 01 00 01 22 56 00 Deskriptor krajnje točke: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Tip prijenosa Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 10 Status uređaja: 0 x0000 (napajanje autobusom)

Spajanje USB uređaja u hodu

Novi sustavi imaju podršku za spajanje USB uređaja u hodu (hot plugging), što znači povezivanje uređaja s pokrenutim sustavom koji mora:

  • odredite vrstu USB uređaja, pronađite upravljački program i pokrenite ga;
  • povezati vozača s uređajem;
  • obavijestiti druge podsustave o USB uređaju.



Kao dio mog poniranja u jednu od disciplina (tijekom studija na specijalnosti Compeza), radio sam na jednom zanimljivom projektu koji ne bih želio jednostavno zakopati u dubini mape “Univer” na vanjskom hardu. voziti.

Ovaj projekt se zove usbrip i mali je konzolni uslužni program otvorenog koda za forenziku Linuxa, naime za rad s poviješću povezivanja USB uređaja. Program je napisan u čistom Python 3 (koristeći neke module trećih strana) i ne zahtijeva ovisnosti osim tumača Python 3.x i nekoliko redaka iz zahtjevi.txt, riješeno u jednom retku pomoću pip3.

U ovom ću postu opisati neke od mogućnosti ovog softvera i ostaviti kratki priručnik s vezom na izvor preuzimanja.

Izrezati! (...Mislim Cut!)

Snimke zaslona

Dohvaćanje povijesti povezivanja izmjenjivih USB uređaja:


Pronalaženje dodatnih informacija o USB uređaju prema identifikatoru modela (PID):

Opis

Kao što znate, operativni sustavi temeljeni na GNU/Linuxu vrlo su osjetljivi na bilježenje raznih vrsta događaja, a spajanje/isključivanje USB uređaja nije iznimka. U kombinaciji s jednim od "tekstualnih tokova kao univerzalnih sučelja" filozofije UNIX-a, informacije o artefaktima takvih događaja (u različitim stupnjevima detalja) ovisno o distribuciji mogu se pronaći u jednoj ili više sljedećih datoteka:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/messages* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
FORENZIČKI DOKAZ nam čak pokazuje ovu sliku o ovom pitanju (malo nepotpunu, ali nema veze):

Usbrip za svoj rad pronalazi datoteke dnevnika koje su univerzalne za sve verzije Linuxa temeljene na Debianu (Ubuntu, Linux Mint itd.) i RPM (CentOS, Fedora, openSUSE itd.), naime: /var/log/syslog* ili /var/log/messages* , analizira ih u potrazi za potrebnim informacijama i pretvara pronađene tragove povezivanja USB uređaja u prekrasne ploče (ili popise - kako god želite).

USBrip također može:

  • kreirati popise ovlaštenih (pouzdanih) uređaja u obliku JSON datoteka;
  • traženje "uvredljivih događaja" na temelju popisa pouzdanih uređaja: događaji (USB veza/prekid veze) koji uključuju USB uređaje koji nisu označeni kao pouzdani;
  • potražite dodatne informacije o USB uređaju prema njegovom VID-u (ID dobavljača) i/ili PID-u (ID proizvoda).

Referenca

Dobijte popis dostupnih modula:

$ python3 usbrip.py -h
Dobijte popis dostupnih podmodula za određeni modul:

$python3 usbrip.py<модуль>-h
Dobijte popis dostupnih opcija za određeni podmodul:

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

Sintaksa

$ python3 usbrip.py banner $ python3 usbrip.py povijest događaja [-q] [-t | -l] [-e] [-n BROJ DOGAĐAJA] [-d DATUM [DATUM...]] [-c KOLON [KOLON...]] [-f DNEVNIK [DNEVNIK...]] $ python3 usbrip .py događaji gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n BROJ DOGAĐAJA] [-d DATUM [DATUM...]] [-f LOG FILE [LOG FILE...]] $ python3 usbrip.py kršenja događaja<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n BROJ DOGAĐAJA] [-d DATUM [DATUM...]] [-c KOLON [KOLON...]] [-f DNEVNIK [DNEVNIK...]] $ python3 usbrip .py ids pretraživanje [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids preuzimanje [-q]

Mogućnosti

Opcije koje podržavaju podmoduli "povijest događaja", "događaji gen_auth", "kršenja događaja", "pretraživanje idova", "preuzimanje idova": -q, --quiet izostaviti prikaz bannera, informativnih (zelenih) poruka i učiniti ne postavljati pitanja tijekom izvršenja ############################################### ## ######################################### Opcije koje podržava "povijest događaja", " događaji gen_auth" podmoduli ", "kršenja događaja": -e, --eksterna pretraga samo za prijenosne USB uređaje (koji imaju informacije o odspajanju) -n BROJ DOGAĐAJA, --broj BROJ DOGAĐAJA broj najnovijih događaja po datumu koji će biti prikazan -d DATUM [DATUM. ..], --date DATUM [DATUM...] popis datuma prema kojima će se događaji filtrirati prilikom pretraživanja -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] popis datoteka dnevnika (ako nije navedeno, povijest događaja će se pretraživati ​​pomoću zadanih datoteka dnevnika: /var/log/syslog* ili /var/log/messages* ovisno o verziji OS-a) ##### ######## ############################################ ######## ####################### Opcije koje podržavaju podmoduli "povijest događaja", "kršenja događaja": -t, -- tablica generirati izlaz u obliku tablice (ako veličina prozora terminala nije dovoljna za ispravan prikaz tablice, izlaz će se automatski generirati u obliku liste; kada navedete zastavu -t, izlaz će se prisilno generirati u obliku tablice) -l, --list generirati izlaz kao popis -c STUPAC [STUPAC...], --stupac STUPAC [STUPAC.. .] popis stupaca koji će se koristiti pri izgradnji tablice (ima učinka samo pri generiranju izlaza u obliku tablice); dozvoljeni ključevi: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ##################################################### ##################################### Opcije podržane podmodulima "ids search", "ids download": - -vid VID ID dobavljača ili ID proizvođača USB uređaja (obično 4 heksadecimalne znamenke) --vid PID ID proizvoda ili ID modela USB uređaja (obično 4 heksadecimalne znamenke) --offline ako je navedeno, potražite dodatne informacije o USB uređaju u bazi podataka podaci identifikatora bit će proizvedeni bez prethodnog ažuriranja (baze podataka)

Primjeri korištenja

Prikaži povijest povezivanja svih USB uređaja, izostavljajući banner, informativne (zelene) poruke, a također i bez postavljanja pitanja tijekom izvođenja (-q, --quite), generirajući izlaz u obliku popisa (-l, -- popis), uključujući u njemu sadrži 100 posljednjih pronađenih događaja (-n BROJ DOGAĐAJA, --broj BROJ DOGAĐAJA):
$ python3 usbrip.py povijest događaja -ql -n 100
Prikaži povijest povezivanja izmjenjivih USB uređaja (-e, --external), generirajući izlaz u obliku tablice s poljima (stupcima) "Povezano", "VID", "PID", "Isključeno" i "Serijski broj" ” (-c KOLUMNA [KOLUMNA...], --column KOLUMNA [KOLUMNA...]), filtriranje pretraživanja po datumima (-d DATUM [DATUM...], --date DATUM [DATUM...] ), uzimajući informacije iz vanjskih datoteka dnevnika (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py povijest događaja -et -c conn vid pid disconn serial -d "9. prosinca" "10. prosinca" -f /var/log/syslog.1 /var/log/syslog.2.gz
Izgradite tablicu povijesti povezivanja svih USB uređaja i preusmjerite izlaz u datoteku za daljnju analizu. U slučaju da izlazni tok nije standardni stdout ("|" ili ">" na primjer), posebni neće biti prisutni u izlaznim podacima. znakova odgovornih za boju fonta u terminalu, tako da tekstualna datoteka neće biti pretrpana nečitljivim znakovima. Također treba napomenuti da usbrip koristi neke UNICODE konstante, pa bi bilo dobro odmah pretvoriti kodiranje kreirane datoteke u UTF-8 kako bi se ispravno prikazale (na primjer, pomoću encov), a također koristiti Windows stil znakovi za novi red za bolju prenosivost (na primjer pomoću awk):
$ python3 usbrip.py događaji povijesti -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Bilješka: osloboditi se posebnih znakovi odgovorni za boju također su mogući ako je izlaz već poslan na stdout. Da biste to učinili, morate kopirati primljene podatke u novu datoteku usbrip.txt i dodati još jednu awk instrukciju:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Napravite popis pouzdanih uređaja u obliku JSON datoteke (trusted/auth.json) koja sadrži prvi tri uređaji povezani 26. rujna:
$ python3 usbrip.py događaji gen_auth trusted/auth.json -n 3 -d "26. rujna"
Potražite "događaje koji krše" u povijesti povezivanja izmjenjivih USB uređaja na temelju popisa pouzdanih uređaja (trusted/auth.json) i generirajte izlaz u obliku tablice s "Povezano", "VID" i "PID ” polja:
$ python3 usbrip.py kršenja događaja trusted/auth.json -et -c conn vid pid
Pronalaženje dodatnih informacija o USB uređaju na temelju njegovog VID-a i PID-a:
$ python3 usbrip.py ids search --vid 0781 --pid 5580
Preuzmite/ažurirajte bazu podataka ID-a USB uređaja (izvor

Spojili ste USB flash pogon ili tipkovnicu ili miša na svoje Linux računalo. Ali ništa se ne događa.

Što je bilo? Zašto vaše Linux računalo ne otkriva uređaj? Je li u pitanju Linux ili je vaš USB uređaj prestao raditi?

USB ne radi u Ubuntuu?

Diskovi, čitači memorijskih kartica, telefoni, media playeri i periferije multimedija... svi su korisni, ali ako postoji problem s USB priključkom ili upravljačkim programima vašeg sustava, neće raditi. To može biti posebno frustrirajuće ako koristite Bluetooth tipkovnicu ili miš (s USB ključem), jer to znači iskopavanje žičnih USB alternativa.

Međutim, to možda nije mrtva luka. USB uređaj koji koristite možda je neispravan i ne može se otkriti.

Rješavanje problema s USB-om može biti izazovno, ali te probleme nije nemoguće dijagnosticirati i napraviti potrebne popravke.

Za eliminaciju Problemi s USB-om Na Linuxu postoji pet koraka koje treba slijediti:

  1. Provjerite je li USB priključak otkriven
  2. Proizvoditi potrebno radovi na obnovi do luke
  3. Popravite ili popravite USB uređaje
  4. Ponovno podizanje sustava operacijski sustav Linux
  5. Potvrdite dostupnost upravljačkih programa uređaja

Pogledajmo redom svaki od njih i naučimo kako raditi s lukavim USB uređajima u Linuxu.

1. Otkriva li Linux vaš uređaj?

Prva stvar koju trebate provjeriti kada umetnete USB uređaj u svoje Linux računalo je da li je detektiran. Detekcija USB uređaja obično nije verbalna ili zvučna (u Linux Deepinu nije) kao u Windowsima ili macOS-u, što znači da često morate provjeriti je li uređaj uhvatio operativni sustav.

Srećom, jednostavno je.

Prvo odspojite USB uređaje koje tražite. Zatim otvorite prozor terminala i unesite naredbu » list USB:

Naredba dmesg izlistat će spojene USB uređaje na vašem sustavu. Također će uključivati ​​hardver koji nije USB i nažalost pruža veliku količinu informacija. Kako biste se tome suprotstavili, možete pokušati:

Ovo izgleda kao križanac između dmesg i lsusb naredbi, ispisuje povezani USB hardver s dovoljno informacija za njihovu identifikaciju.

Dakle, je li USB koji ste spojili naveden ovdje? Ako nije, port je možda oštećen ili postoji problem s uređajem. Isto tako, uređaj možda nije kompatibilan s Linuxom.

2. Kako provjeriti USB priključak

Ako se USB uređaj ne prikazuje, to može biti zbog problema s USB priključkom.

Najbolji način da ovo testirate je da jednostavno upotrijebite drugi USB priključak na računalu. Ako je USB hardver sada otkriven, onda znate da imate problem s jednim od USB priključaka.

Ako drugi USB priključak nije dostupan, trebate isprobati USB uređaj na drugom računalu ili prijenosnom računalu. Međutim, to možda nije tako idealna opcija, jer alternativno možete koristiti Windows ili macOS računalo i u ovom slučaju, neki USB uređaji ne mogu se koristiti u Linuxu. Stoga će biti teško utvrditi što točno uzrokuje problem, bilo da je to USB uređaj ili USB priključak.

Za najbolje rezultate, držite se hardvera kompatibilnog s Linuxom kad god je to moguće prilikom rješavanja problema s USB uređajima.

3. Popravljanje oštećenog USB hardvera

Ako je vaš USB hardver neispravan, imate dvije mogućnosti: popraviti ga ili vratiti.

Popravak obično uključuje provjeru USB priključak, kao i uređaji koji trenutno ne rade. Ispravci će se gotovo uvijek usredotočiti okolo USB kabl i priključak na vašem računalu. USB kabeli se obično mogu zamijeniti, ali USB priključci se mogu popraviti.

Dobra je ideja fizička provjera USB hardvera. Kabeli moraju biti čvrsti, bez ikakvih prekida, a metalni dio mora biti čvrsto pričvršćen.

U međuvremenu, USB priključke treba testirati dok je računalo isključeno i odspojeno. Provjerite jesu li priključci sigurni, klimavi USB priključci su znak istrošenosti opreme.

Ako se USB priključak olabavi, možete ga zalemiti natrag na mjesto. Naravno, trebali biste već znati lemiti, nikada nemojte pokušavati raditi sam posao bez prethodnog iskustva.

Također provjerite ima li na USB priključcima prašine i prljavštine, posebno na stražnjoj strani računala, gdje se prašina redovito skuplja. Prašina je neprijatelj osobnog računala, stoga je vrijedno držati vaš sustav u okruženju bez prašine. Prašina može pronaći svoj put do vašeg računala kroz USB priključke, odvojite vrijeme da ove priključke održavate čistima. Koristite komprimirani zrak za raspršivanje prašine i prljavštine.

Možete li vratiti svoj USB uređaj? Ako je novo, vjerojatno je. Problem je u tome što trgovina vjerojatno neće prihvatiti povrat, osim ako nije jasno označeno da koristi Linux.

4. Ponovno pokrenite Linux da popravite USB priključak

U nekim slučajevima - na primjer, ako koristite prijenosno računalo - problemi s napajanjem mogu utjecati na njegovu sposobnost otkrivanja USB uređaja. Opcija autosuspendiranja namijenjena je smanjenju potrošnje energije na prijenosnim računalima s Linuxom, ali može biti kontraproduktivna.

Dakle, što možete učiniti?

Prvo provjerite uzrokuje li autosuspend problem. To možete učiniti ponovnim pokretanjem računala. Ako USB uređaj radi, taj USB priključak prima napajanje.

Sljedeći korak je osigurati da se to više ne dogodi. Sljedeći trikovi naredbeni redak su za Ubuntu 18.10, stoga provjerite ispravan postupak na vašoj preferiranoj distribuciji Linuxa.

Otvorite prozor terminala i upišite:

cat /sys/module/usbcore/parameters/autosuspend

Pogledaj ovdje:

GRUB_CMDLINE_LINUX_DEFAULT="tiho prskanje"

GRUB_CMDLINE_LINUX_DEFAULT = "tiho prskanje"