Historien om usb-tilkoblinger i linux. Linux etterforskning i form av sporing av tilkoblingshistorikken til USB-enheter. Start Linux på nytt for å fikse USB-porten

Som en del av min fordypning i en av disiplinene (i løpet av studiene i Compeza-spesialiteten), jobbet jeg med et interessant prosjekt som jeg ikke ville ønske å bare begrave i dypet av "Univer"-mappen på en ekstern harddisk kjøre.

Dette prosjektet heter

usbrip

og er et lite åpen kildekode-konsollverktøy for Linux etterforskning, nemlig for å jobbe med historien til USB-enhetstilkoblinger. Programmet er skrevet i ren Python 3 (ved hjelp av noen tredjepartsmoduler) og krever ikke andre avhengigheter enn Python 3.x-tolken og noen få linjer fra

krav.txt

Løst på én linje ved hjelp av pip3.

I dette innlegget vil jeg beskrive noen av egenskapene til denne programvaren og legge igjen en kort manual med en lenke til nedlastingskilden.

$ python3 usbrip.py ids nedlasting

Lenker og etterskrift

Du kan få verktøyet fra

GitHub

Alle avhengigheter for oppstart og korrekt drift er oppført i

krav.txt

Takk for din oppmerksomhet!

P.S.

ja, stilen på banneret og informasjonsmeldingene er inspirert av prosjektet

sqlmap

Som en del av min fordypning i en av disiplinene (mens jeg studerte for spesialiteten datasikkerhet), jobbet jeg med et underholdende prosjekt som jeg ikke ville ønske å bare begrave i dypet av "Univer"-mappen på en ekstern harddisk.

Dette prosjektet heter usbrip og er et lite åpen kildekode-konsollverktøy for Linux etterforskning, nemlig for å jobbe med historien til USB-enhetstilkoblinger. Programmet er skrevet i ren Python 3 (ved hjelp av noen tredjepartsmoduler) og krever ikke andre avhengigheter enn en Python 3.x-tolk og et par linjer fra krav.txt, løst i én linje ved hjelp av pip.

I dette innlegget vil jeg beskrive noen av egenskapene til denne programvaren og legge igjen en kort manual med en lenke til nedlastingskilden.

Kutte opp! (...jeg mener Cut!)

Merk. Funksjonaliteten beskrevet i artikkelen er relevant for versjonen av verktøyet. Bak siste versjon Med mange nye godbiter foreslår jeg at du går til depotet.

Skjermbilder

Få tilkoblingshistorikk for flyttbare USB-enheter:


Søk tilleggsinformasjon om en USB-enhet etter modellidentifikator (PID):

Beskrivelse

Som du vet er operativsystemer basert på GNU/Linux svært følsomme for logging av ulike typer hendelser, og tilkobling/frakobling av USB-enheter er intet unntak. Kombinert med en av UNIX-filosofiens "tekststrømmer som universelle grensesnitt" kan informasjon om artefakter av slike hendelser (i varierende detaljeringsgrad) avhengig av distribusjonen finnes i en eller flere av følgende tekstfiler:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/messages*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
FORENSIC-PROOF viser oss til og med dette bildet om denne saken (litt ufullstendig, men uansett):

For sitt arbeid finner usbrip universelle for alle Linux-bygg basert på Debian (Ubuntu, Linux Mint etc.) og RPM (CentOS, Fedora, openSUSE, etc.), loggfiler, nemlig: /var/log/syslog* eller /var/log/messages* , analyserer dem på jakt etter nødvendig informasjon og avslører sporene som er funnet tilkoblinger av USB-enheter til vakre plater (eller lister - hva du vil).

USBrip kan også:

  • lage lister over autoriserte (klarerte) enheter i form av JSON-filer;
  • søk etter "fornærmende hendelser" basert på listen over pålitelige enheter: hendelser (USB-tilkobling/-frakobling) som involverte USB-enheter som ikke ble merket som klarert;
  • se etter tilleggsinformasjon om en USB-enhet etter VID (leverandør-ID) og/eller PID (produkt-ID).

Henvisning

Få en liste over tilgjengelige moduler:

$ python3 usbrip.py -h
Få en liste over tilgjengelige undermoduler for en bestemt modul:

$python3 usbrip.py<модуль>-h
Få liste tilgjengelige alternativer for en spesifikk undermodul:

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

Syntaks

$ python3 usbrip.py banner Viser verktøybanneret på skjermen. $ python3 usbrip.py hendelseshistorikk [-q] [-t | -l] [-e] [-n ANTALL HENDELSER] [-d DATO [DATO...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] Se USB-tilkobling historie. $ python3 usbrip.py hendelser gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a SIGN [SIGN...]] [-q] [-e] [-n NUMBER_EVENTS] [-d DATO [DATE...]] [-f LOG_FILE [LOG_FILE...]] Dannelse av en liste av autoriserte (klarerte) USB-enheter. $ python3 usbrip.py hendelser brudd<ВХОДНОЙ_ФАЙЛ.JSON>[-a KARAKTER [CHARGET...]] [-q] [-t | -l] [-e] [-n ANTALL HENDELSER] [-d DATO [DATO...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] Søk etter " krenkende hendelser" " basert på en liste over pålitelige enheter. $ python3 usbrip.py ids-søk [-q] [ --vid VID] [--pid PID] [--offline] Søk etter tilleggsinformasjon om en enhet ved hjelp av VID og/eller PID i identifikatordatabasen. $ python3 usbrip.py ids-nedlasting [-q] Oppdater (last ned) den lokale USB-enhetsidentifikatordatabasen.

Alternativer

Alternativer som støttes av "hendelseshistorikk", "hendelser gen_auth", "hendelsesbrudd", "ID-søk", "ID-nedlasting" undermodulene: -q, --quiet utelater visning av bannere, informasjon (grønne) meldinger, og gjør ikke stille spørsmål under utførelse ########################################### ## ##################################### Alternativer støttet av "hendelseshistorikk", " events gen_auth" submodules ", "events violations": -e, --eksternt søk kun etter flyttbare USB-enheter (som har frakoblingsinformasjon) -n ANTALL HENDELSER, --antall ANTALL HENDELSER antall siste hendelser etter dato som vil vises -d DATO [DATO...], --dato DATO [DATO...] liste over datoer som hendelser vil bli filtrert etter når du søker -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] liste over loggfiler (hvis det ikke er spesifisert, vil hendelseshistorikken søkes ved hjelp av standardloggfilene: /var/log/syslog* eller /var/log/messages* avhengig av OS-versjonen) ##### ######## ######################################## ######## ##################### Alternativer som støttes av undermodulene "hendelseshistorikk", "brudd på hendelser": -t, -- tabell generere utdata i form av en tabell (hvis størrelsen på terminalvinduet ikke er nok til å vise tabellen riktig, vil utgangen automatisk genereres i form av en liste; når du spesifiserer -t-flagget, vil utdata bli generert i form av en tabell med makt) -l, --list generere utdata som en liste -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] liste over kolonner som vil bli brukt når du bygger en tabell (har effekt bare når du genererer utdata i form av en tabell); tillatte nøkler: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################### ################################# Alternativer støttet av "events gen_auth", "events violations" undermoduler: - a SIGN [SIGN...], --attribute SIGN [SIGN...] en liste over attributter som vil bli brukt når du konstruerer en liste over autoriserte enheter (så vel som når du søker etter "krenkende hendelser" i tilfelle av "hendelsesbrudd" undermodul); tillatte nøkler: "vid", "pid", "prod", "manufact", "serial". ############################################### ################################# Alternativer støttet av "ids-søk", "ids-nedlasting"-undermoduler: - -vid VID-leverandør-ID eller USB-enhetsprodusent-ID (vanligvis 4 heksadesimale sifre) --vid PID-produkt-ID eller USB-enhetsmodell-ID (vanligvis 4 heksadesimale sifre) --frakoblet hvis spesifisert, søk etter tilleggsinformasjon om USB-enheten i databasen identifikasjonsdata vil bli produsert uten først å oppdatere dem (databasen)

Eksempler på bruk

Vis tilkoblingshistorikken til alle USB-enheter, utelat banneret, informative (grønne) meldinger, og også uten å stille spørsmål under utførelse (-q, --quite), generer utdata i form av en liste (-l, -- listen), inkludert i den inneholder de 100 sist funnet hendelsene (-n ANTALL HENDELSER, --antall ANTALL HENDELSER):
$ python3 usbrip.py hendelseshistorikk -ql -n 100
Vis tilkoblingshistorikken til flyttbare USB-enheter (-e, --external), generer utgangen i form av en tabell med felt (kolonner) "Tilkoblet", "VID", "PID", "Frakoblet" og "Serienummer ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrerer søket etter datoer (-d DATO [DATO...], --dato DATO [DATO...] ), tar informasjonen fra eksterne loggfiler (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py hendelseshistorikk -et -c conn vid pid disconn serial -d "9. desember" "10. desember" -f /var/log/syslog.1 /var/log/syslog.2.gz
Bygg en tabell over tilkoblingshistorikken til alle USB-enheter og omdiriger utdataene til en fil for videre analyse. I tilfelle utdatastrømmen ikke er standard stdout ("|" eller ">" for eksempel), vil spesielle ikke være til stede i utdataene. tegn som er ansvarlige for skriftfargen i terminalen, så tekstfil vil ikke være strødd med uleselige tegn. Det bør også bemerkes at usbrip bruker noen UNICODE-konstanter, så det vil være en god idé å umiddelbart konvertere kodingen opprettet fil i UTF-8 for å vise dem riktig (for eksempel ved å bruke encov), og også bruke tegn ny linje i Windows-stil for bedre portabilitet (for eksempel ved å bruke awk):
$ python3 usbrip.py historiehendelser -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Merk: bli kvitt spesielle tegn som er ansvarlige for farge er også mulig hvis utdata allerede er sendt til stdout. For å gjøre dette må du kopiere de mottatte dataene til en ny fil usbrip.txt og legge til en annen awk-instruksjon:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Lag en liste over pålitelige enheter i form av en JSON-fil (trusted/auth.json) som inneholder feltene "VID" og "PID" for den første tre enheter koblet til 26. september:
$ python3 usbrip.py hendelser gen_auth trusted/auth.json -a vid pid -n 3 -d "26. september"
Finn "overtrederhendelser" i historien om tilkoblinger til flyttbare USB-enheter basert på listen over pålitelige enheter (trusted/auth.json) ved å bruke "PID"-feltet og generer utdata i form av en tabell med "Connected", "VID" og "PID" felt:
$ python3 usbrip.py brudd på hendelser trusted/auth.json -a pid -et -c conn vid pid
Finn ytterligere informasjon om en USB-enhet basert på dens VID og PID:
$ python3 usbrip.py ids-søk --vid 0781 --pid 5580
Last ned/oppdater USB-enhets-ID-database (kilde):
$ python3 usbrip.py ids nedlasting

Lenker og etterskrift

Du kan få verktøyet fra Github, alle avhengigheter for oppstart og korrekt operasjon er oppført i krav.txt.

Takk for din oppmerksomhet!

P.S. ja, stilen på banneret og informasjonsmeldingene er inspirert av prosjektet sqlmap (*^.^*)

UPD 13.06.2018. Det var en etterforskning av en ekte (?) sak som involverte verktøyet mitt fra en person med Codeby (jeg er sjokkert, for å være ærlig).

USB - Universal Serial Bus ble utviklet av et konsortium av selskaper med mål om å tilby en enkelt, enkel buss for tilkobling av eksterne enheter.

USB-design gjør at enheter kan kobles til på farten ved hjelp av standardkontakter for tilkobling. USB-enheter inkluderer: tastaturer, mus, skrivere, skannere, harddisker, flash-stasjoner, kameraer, modemer, nettverksadaptere og kolonner, og listen deres vokser stadig.

Linux-støtte for USB-enheter er ganske omfattende, men noen enheter krever spesielle drivere, og andre, hovedsakelig skrivere og skannere, støttes kanskje ikke eller bare delvis.

Datasystemer kan inneholde en eller flere kontrollere eller huber designet for å koble til USB-enheter eller andre (eksterne) huber. Huben kan støtte opptil 7 enheter, som igjen kan ha flere huber. Nav inne systemenhet kalt rotnav. Hver stjernetopologi kan støtte opptil 127 huber eller enheter.

Når vi sier USB-port, mener vi datamaskinens USB-støtte og port for tilkobling, ikke den interne portadressen som brukes av enheten.

USB-systemets lagdeling lar verten bestemme egenskapene til en USB-enhet, inkludert klasse, produsentnavn, enhetsnavn, spenningskrav, hastighet, USB-støttenivå og andre funksjoner.

Linux USB-enhetsstøttemodul

USB-enheter støttes for øyeblikket fullt ut på Linux. De fleste endringene dukket opp i 2.6-kjernegrenen, selv om det var noe støtte selv i 2.2-kjernene. Linux støtter både USB 2.0 og tidligere spesifikasjoner. På grunn av hot-plugg-naturen til USB, gjøres støtte vanligvis gjennom kjernemoduler som kan lastes eller losses etter behov.

Med lspci-kommandoen kan du vise USB-enheter:

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

Kommandoutgangen viser at det er 3 USB-kontrollere i systemet.

Ved å bruke lsmod-kommandoen kan du vise innlastede USB-moduler:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mus|Module" Modulstørrelse Brukt av hid_microsoft 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse 0 4_444 41644 hcih 8 cih 8 cd 34152 0

Viser tilkoblede USB-enheter

Et sammendrag av tilkoblede USB-enheter finnes i filen /proc/bus/usb/devices. Du kan vise den med følgende kommando:

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: Leverandør=1d6b ProdID=0001 Rev= 2.06 S: Produsent=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI vertskontroller S: Serienummer=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: Leverandør=1d6b ProdID=0001 Rev= 2.06 S: Produsent=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI vertskontroller S: Serienummer=0:0000 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: Leverandør=045e ProdID=00db Rev= 1.73 S: Produsent=Microsoft S: Produkt=Naturlig� Ergonomisk tastatur 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: Leverandør=1d6b ProdID=0002 Rev= 2.06 S: Produsent= 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

I listen tilsvarer Spd=480 USB 2.0-bussen, og Spd=12 tilsvarer USB 1.1-enheter. Lenger i listen kan du se at det for øyeblikket er 1 USB-enhet koblet til systemet - Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5).

Naturligvis skriver jeg denne teksten på dette tastaturet.

Hierarkiet av USB-enhetstilkoblinger kan sees ved å bruke lsusb-kommandoen med -t-alternativet:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 Leverandør 0x1d6b Produkt 0x0001 Bus# 2 `-Dev# 1 Leverandør 0x1d6b Produkt 0x0001 `-Dev# 2 Leverandør 0x045e Produkt 0x00db Dev-# 1 Leverandør 0x1d6b Produkt 0x0002

Vise informasjon om en bestemt USB-enhet kan fås med følgende kommando:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Buss 002 Enhet 002: ID 045e:00db Microsoft Corp. Naturlig ergonomisk tastatur 4000 V1.0 Enhetsbeskrivelse: lengde 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (definert på grensesnittnivå) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8.0Vendor Microsoft Corp.0Vendor idProduct 0x00db Natural Ergonomic Keyboard 4000 V1.0 bcdDevice 1.73 iManufacturer 1 Microsoft iProduct 2 Natural Ergonomic Keyboard 4000 iSerial 0 bNumConfigurations 1 Konfigurasjonsbeskrivelse: bLength 9 bLength 9 bDescriptorTo9Typue 1 iConfiguration 0 bmAttributes 0xa0 (bussdrevet) Remote Wakeup MaxPower 100mA grensesnitt Deskriptor: lengde 9 bDeskriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 ** UNRECOGN 1021 0 ** 0901 0 1 0 1 0 1 0 1 3 00 Endpoint Descriptor: lengde 7 bDescriptorType 5 benEndpointAddress 0x81 EP b klasse bInterfaceProtocol 0 Ingen iInterface 0 ** UGENKJENT : 09 21 11 01 00 01 22 56 00 Endpoint Descriptor: Length 7 bDescriptorType 5 BendpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxInterval 0008 DeviceSize 1 bmAttributes. 0000 (bussdrevet)

Koble til en USB-enhet på farten

Nye systemer har støtte for å koble til USB-enheter på farten (hot plugging), som betyr å koble enheten til et kjørende system, som må:

  • bestemme typen USB-enhet, finn driveren og kjør den;
  • knytte driveren til enheten;
  • varsle andre undersystemer om USB-enheten.



Som en del av min fordypning i en av disiplinene (i løpet av studiene i Compeza-spesialiteten), jobbet jeg med et interessant prosjekt som jeg ikke ville ønske å bare begrave i dypet av "Univer"-mappen på en ekstern harddisk kjøre.

Dette prosjektet heter usbrip og er et lite åpen kildekode-konsollverktøy for Linux etterforskning, nemlig for å jobbe med historien til USB-enhetstilkoblinger. Programmet er skrevet i ren Python 3 (ved hjelp av noen tredjepartsmoduler) og krever ikke andre avhengigheter enn Python 3.x-tolken og noen få linjer fra krav.txt, løst på én linje ved hjelp av pip3.

I dette innlegget vil jeg beskrive noen av egenskapene til denne programvaren og legge igjen en kort manual med en lenke til nedlastingskilden.

Kutte opp! (...jeg mener Cut!)

Skjermbilder

Få tilkoblingshistorikk for flyttbare USB-enheter:


Finne tilleggsinformasjon om en USB-enhet etter modellidentifikator (PID):

Beskrivelse

Som du vet er operativsystemer basert på GNU/Linux svært følsomme for logging av ulike typer hendelser, og tilkobling/frakobling av USB-enheter er intet unntak. Kombinert med en av UNIX-filosofiens "tekststrømmer som universelle grensesnitt" kan informasjon om artefakter av slike hendelser (i varierende detaljeringsgrad) avhengig av distribusjonen finnes i en eller flere av følgende filer:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/meldinger* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
FORENSIC-PROOF viser oss til og med dette bildet om denne saken (litt ufullstendig, men uansett):

For sitt arbeid finner usbrip loggfiler som er universelle for alle Linux-bygg basert på Debian (Ubuntu, Linux Mint, etc.) og RPM (CentOS, Fedora, openSUSE, etc.), nemlig: /var/log/syslog* eller /var/log/messages* , analyserer dem på jakt etter nødvendig informasjon og gjør sporene etter USB-enhetstilkoblinger til vakre plater (eller lister - hva du enn liker).

USBrip kan også:

  • lage lister over autoriserte (klarerte) enheter i form av JSON-filer;
  • søk etter "fornærmende hendelser" basert på listen over pålitelige enheter: hendelser (USB-tilkobling/-frakobling) som involverte USB-enheter som ikke ble merket som klarert;
  • se etter tilleggsinformasjon om en USB-enhet etter VID (leverandør-ID) og/eller PID (produkt-ID).

Henvisning

Få en liste over tilgjengelige moduler:

$ python3 usbrip.py -h
Få en liste over tilgjengelige undermoduler for en bestemt modul:

$python3 usbrip.py<модуль>-h
Få en liste over tilgjengelige alternativer for en bestemt undermodul:

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

Syntaks

$ python3 usbrip.py banner $ python3 usbrip.py hendelseshistorikk [-q] [-t | -l] [-e] [-n ANTALL HENDELSER] [-d DATO [DATO...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py-hendelser gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n ANTALL HENDELSER] [-d DATO [DATO...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip.py hendelser brudd<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n ANTALL HENDELSER] [-d DATO [DATO...]] [-c COLUMN [COLUMN...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py ids-søk [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids nedlasting [-q]

Alternativer

Alternativer som støttes av "hendelseshistorikk", "hendelser gen_auth", "hendelsesbrudd", "ID-søk", "ID-nedlasting" undermodulene: -q, --quiet utelater visning av bannere, informasjon (grønne) meldinger, og gjør ikke stille spørsmål under utførelse ########################################### ## ##################################### Alternativer støttet av "hendelseshistorikk", " events gen_auth" submodules ", "events violations": -e, --eksternt søk kun etter flyttbare USB-enheter (som har frakoblingsinformasjon) -n ANTALL HENDELSER, --antall ANTALL HENDELSER antall siste hendelser etter dato som vil vises -d DATO [DATO...], --dato DATO [DATO...] liste over datoer som hendelser vil bli filtrert etter når du søker -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] liste over loggfiler (hvis det ikke er spesifisert, vil hendelseshistorikken søkes ved hjelp av standardloggfilene: /var/log/syslog* eller /var/log/messages* avhengig av OS-versjonen) ##### ######## ######################################## ######## ##################### Alternativer som støttes av undermodulene "hendelseshistorikk", "brudd på hendelser": -t, -- tabell generere utdata i form av en tabell (hvis størrelsen på terminalvinduet ikke er nok til å vise tabellen riktig, vil utgangen automatisk genereres i form av en liste; når du spesifiserer -t-flagget, vil utdata bli generert i form av en tabell med makt) -l, --list generere utdata som en liste -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] liste over kolonner som vil bli brukt når du bygger en tabell (har effekt bare når du genererer utdata i form av en tabell); tillatte nøkler: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################### ################################# Alternativer støttet av "ids-søk", "ids-nedlasting"-undermoduler: - -vid VID-leverandør-ID eller USB-enhetsprodusent-ID (vanligvis 4 heksadesimale sifre) --vid PID-produkt-ID eller USB-enhetsmodell-ID (vanligvis 4 heksadesimale sifre) --frakoblet hvis spesifisert, søk etter tilleggsinformasjon om USB-enheten i databasen identifikasjonsdata vil bli produsert uten først å oppdatere dem (databasen)

Eksempler på bruk

Vis tilkoblingshistorikken til alle USB-enheter, utelat banneret, informative (grønne) meldinger, og også uten å stille spørsmål under utførelse (-q, --quite), generer utdata i form av en liste (-l, -- listen), inkludert i den inneholder de 100 sist funnet hendelsene (-n ANTALL HENDELSER, --antall ANTALL HENDELSER):
$ python3 usbrip.py hendelseshistorikk -ql -n 100
Vis tilkoblingshistorikken til flyttbare USB-enheter (-e, --external), generer utgangen i form av en tabell med felt (kolonner) "Tilkoblet", "VID", "PID", "Frakoblet" og "Serienummer ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrerer søket etter datoer (-d DATO [DATO...], --dato DATO [DATO...] ), tar informasjonen fra eksterne loggfiler (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py hendelseshistorikk -et -c conn vid pid disconn serial -d "9. desember" "10. desember" -f /var/log/syslog.1 /var/log/syslog.2.gz
Bygg en tabell over tilkoblingshistorikken til alle USB-enheter og omdiriger utdataene til en fil for videre analyse. I tilfelle utdatastrømmen ikke er standard stdout ("|" eller ">" for eksempel), vil spesielle ikke være til stede i utdataene. tegn som er ansvarlige for skriftfargen i terminalen, slik at tekstfilen ikke vil bli overfylt med uleselige tegn. Det bør også bemerkes at usbrip bruker noen UNICODE-konstanter, så det vil være en god idé å umiddelbart konvertere kodingen av den opprettede filen til UTF-8 for å vise dem riktig (for eksempel ved å bruke encov), og også bruke Windows-stil nylinjetegn for bedre portabilitet (for eksempel ved å bruke awk):
$ python3 usbrip.py historiehendelser -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Merk: bli kvitt spesielle tegn som er ansvarlige for farge er også mulig hvis utdata allerede er sendt til stdout. For å gjøre dette må du kopiere de mottatte dataene til en ny fil usbrip.txt og legge til en annen awk-instruksjon:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Opprett en liste over pålitelige enheter i form av en JSON-fil (trusted/auth.json) som inneholder den første tre enheter koblet til 26. september:
$ python3 usbrip.py hendelser gen_auth trusted/auth.json -n 3 -d "26. september"
Søk etter "krenkende hendelser" blant tilkoblingshistorikken til flyttbare USB-enheter basert på listen over pålitelige enheter (trusted/auth.json) og generer utdata i form av en tabell med "Connected", "VID" og "PID" " Enger:
$ python3 usbrip.py brudd på hendelser trusted/auth.json -et -c conn vid pid
Finne tilleggsinformasjon om en USB-enhet basert på dens VID og PID:
$ python3 usbrip.py ids-søk --vid 0781 --pid 5580
Last ned/oppdater USB-enhets-ID-database (kilde

Du har koblet en USB-flash-stasjon eller et tastatur eller en mus til din Linux-PC. Men ingenting skjer.

Hva er i veien? Hvorfor oppdager ikke din Linux-PC enheten? Er det Linux, eller har USB-enheten din sluttet å fungere?

USB fungerer ikke i Ubuntu?

Diskstasjoner, minnekortlesere, telefoner, mediespillere og periferiutstyr multimedia ... de er alle nyttige, men hvis det er et problem med USB-porten eller systemets drivere, vil de ikke fungere. Dette kan være spesielt frustrerende hvis du bruker et Bluetooth-tastatur eller -mus (med en USB-dongle), siden det betyr å grave ut kablede USB-alternativer.

Det kan imidlertid ikke være en død port. USB-enheten du bruker kan være defekt og kan ikke oppdages.

Å løse USB-problemer kan være utfordrende, men disse problemene er ikke umulige å diagnostisere og foreta de nødvendige rettelsene.

For eliminering USB-problemer På Linux er det fem trinn å følge:

  1. Kontroller at USB-porten er oppdaget
  2. Produser det nødvendige renoveringsarbeid til havnen
  3. Reparer eller reparer USB-enheter
  4. Start på nytt operativsystem Linux
  5. Bekreft tilgjengeligheten av enhetsdrivere

La oss se på hver av dem etter tur og lære hvordan du jobber med vanskelige USB-enheter i Linux.

1. Blir enheten oppdaget av Linux?

Det første du må sjekke når du setter inn USB-enheten din i Linux-datamaskinen, er om den blir oppdaget. USB-enhetsdeteksjon er vanligvis ikke verbal eller hørbar (i Linux Deepin er det ikke det) som i Windows eller macOS, noe som betyr at du ofte må bekrefte at enheten har blitt fanget opp av operativsystemet.

Heldigvis er det enkelt.

Koble først fra USB-enhetene du ber om. Åpne deretter et terminalvindu og skriv inn kommandoen » list USB:

Kommandoen dmesg vil vise de tilkoblede USB-enhetene på systemet ditt. Den vil også inkludere ikke-USB-maskinvare og gir dessverre en enorm mengde informasjon. For å motvirke dette kan du prøve:

Dette ser ut som en krysning mellom dmesg- og lsusb-kommandoene, og viser tilkoblet USB-maskinvare med nok informasjon til å identifisere dem.

Så, er USB-en du koblet til oppført her? Hvis ikke, kan porten være skadet eller det er et problem med enheten. På samme måte kan det hende at enheten ikke er kompatibel med Linux.

2. Hvordan sjekke USB-porten

Hvis USB-enheten ikke vises, kan det skyldes et problem med USB-porten.

Den beste måten å teste dette på er å bruke en annen USB-port på datamaskinen. Hvis USB-maskinvaren nå oppdages, vet du at du har et problem med en av USB-portene.

Hvis en annen USB-port ikke er tilgjengelig, må du prøve USB-enheten på en annen PC eller bærbar PC. Dette er imidlertid kanskje ikke det ideelt alternativ, fordi du alternativt kan bruke en Windows- eller macOS-datamaskin, og i dette tilfellet kan noen USB-enheter ikke brukes i Linux. Så det vil være vanskelig å finne ut hva som er årsaken til problemet, enten det er USB-enheten eller USB-porten.

For best resultat, hold deg til Linux-kompatibel maskinvare når det er mulig når du feilsøker USB-enheter.

3. Retting av skadet USB-maskinvare

Hvis USB-maskinvaren din er defekt, har du to alternativer: fikse den eller returnere den.

Løsningen innebærer vanligvis å sjekke USB-port, samt enheter som for øyeblikket ikke fungerer. Korreksjoner vil nesten alltid sentreres rundt USB-kabel og port på datamaskinen. USB-kabler kan vanligvis byttes ut, men USB-porter kan repareres.

Det er en god idé å fysisk sjekke USB-maskinvaren. Kablene skal være sterke, uten brudd, og metalldelen skal være godt festet.

USB-porter bør i mellomtiden testes med PC-en slått av og koblet fra. Sjekk at portene er sikre, vinglete USB-porter er et tegn på utstyrsslitasje.

Hvis USB-porten blir løs, kan du lodde den på plass igjen. Selvfølgelig bør du allerede vite hvordan du skal lodde, aldri prøv en DIY-jobb uten tidligere erfaring.

Sjekk også USB-portene for støv og skitt, spesielt på baksiden av datamaskinen, hvor det regelmessig samler seg støv. Støv er fienden til en PC, så det er en god idé å holde systemet i et støvfritt miljø. Støv kan finne veien inn til PC-en din via USB-porter, ta deg tid til å holde disse portene rene. Bruk trykkluft for å spre støv og skitt.

Kan du returnere USB-enheten din? Hvis det er nytt, er det sannsynlig. Problemet er at med mindre det er tydelig merket som kjører Linux, er det usannsynlig at butikken godtar returer.

4. Start Linux på nytt for å fikse USB-porten

I noen tilfeller – for eksempel hvis du bruker en bærbar datamaskin – kan strømproblemer påvirke evnen til å oppdage USB-enheter. Autosuspend-alternativet er ment å redusere strømforbruket på bærbare Linux-maskiner, men det kan virke mot sin hensikt.

Så hva kan du gjøre?

Sjekk først om autosuspendering forårsaker problemet. Du kan gjøre dette ved å starte datamaskinen på nytt. Hvis USB-enheten kjører, mottar den USB-porten strøm.

Det neste trinnet er å sørge for at dette ikke skjer igjen. Neste triks kommandolinje er for Ubuntu 18.10, så sjekk riktig prosedyre på din foretrukne Linux-distribusjon.

Åpne et terminalvindu og skriv inn:

cat /sys/module/usbcore/parameters/autosuspend

Se her:

GRUB_CMDLINE_LINUX_DEFAULT="stille plask"

GRUB_CMDLINE_LINUX_DEFAULT = "stille plask"