Historien om usb-anslutningar i linux. Linux forensics i form av att spåra anslutningshistoriken för USB-enheter. Starta om Linux för att fixa USB-porten

Som en del av min fördjupning i en av disciplinerna (under mina studier i Compeza-specialiteten) arbetade jag med ett intressant projekt som jag inte bara skulle vilja begrava i djupet av mappen "Univer" på en extern hårddisk. kör.

Detta projekt kallas

usbrip

och är ett litet konsolverktyg med öppen källkod för Linux-kriminalteknik, nämligen för att arbeta med historien om USB-enhetsanslutningar. Programmet är skrivet i ren Python 3 (med vissa tredjepartsmoduler) och kräver inga andra beroenden än Python 3.x-tolken och några rader från

krav.txt

Löst på en rad med pip3.

I det här inlägget kommer jag att beskriva några av funktionerna i denna programvara och lämna en kort manual med en länk till nedladdningskällan.

$ python3 usbrip.py id nedladdning

Länkar och efterskrift

Du kan hämta verktyget från

GitHub

Alla beroenden för start och korrekt drift listas i

krav.txt

Tack för uppmärksamheten!

P.S.

ja, stilen på bannern och informationsmeddelanden är inspirerad av projektet

sqlmap

Som en del av min fördjupning i en av disciplinerna (medan jag studerade för specialiteten datorsäkerhet), arbetade jag på ett underhållande projekt som jag inte bara skulle vilja begrava i djupet av mappen "Univer" på en extern hårddisk.

Detta projekt kallas usbrip och är ett litet konsolverktyg med öppen källkod för Linux-kriminalteknik, nämligen för att arbeta med historien om USB-enhetsanslutningar. Programmet är skrivet i ren Python 3 (med vissa tredjepartsmoduler) och kräver inga andra beroenden än en Python 3.x-tolk och ett par rader från krav.txt, löst i en rad med hjälp av pip.

I det här inlägget kommer jag att beskriva några av funktionerna i denna programvara och lämna en kort manual med en länk till nedladdningskällan.

Skära! (...jag menar Cut!)

Notera. Funktionen som beskrivs i artikeln är relevant för versionen av verktyget. Bakom senaste versionen Med många nya godsaker föreslår jag att du går till förvaret.

Skärmdumpar

Hämta anslutningshistorik för flyttbara USB-enheter:


Sök ytterligare information om en USB-enhet med modellidentifierare (PID):

Beskrivning

Som ni vet är operativsystem baserade på GNU/Linux mycket känsliga för att logga olika typer av händelser, och att ansluta/koppla från USB-enheter är inget undantag. I kombination med en av UNIX-filosofins "textströmmar som universella gränssnitt" kan information om artefakter av sådana händelser (i varierande detaljeringsgrad) beroende på distributionen hittas i en eller flera av följande textfiler:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/meddelanden*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
FORENSIC-PROOF visar oss till och med den här bilden om denna fråga (lite ofullständig, men oavsett):

För sitt arbete hittar usbrip universella sådana för alla Linux-byggen baserade på Debian (Ubuntu, Linux Mint etc.) och RPM (CentOS, Fedora, openSUSE, etc.), loggfiler, nämligen: /var/log/syslog* eller /var/log/messages* , analyserar dem på jakt efter den nödvändiga informationen och avslöjar spåren som hittats anslutningar av USB-enheter till vackra plattor (eller listor - vad du vill).

USBrip kan också:

  • skapa listor över auktoriserade (betrodda) enheter i form av JSON-filer;
  • sök efter "stötande händelser" baserat på listan över betrodda enheter: händelser (USB-anslutning/-bortkoppling) som involverade USB-enheter som inte var markerade som betrodda;
  • leta efter ytterligare information om en USB-enhet genom dess VID (leverantörs-ID) och/eller PID (produkt-ID).

Referens

Få en lista över tillgängliga moduler:

$ python3 usbrip.py -h
Få en lista över tillgängliga undermoduler för en specifik modul:

$python3 usbrip.py<модуль>-h
Få lista tillgängliga val för en specifik undermodul:

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

Syntax

$ python3 usbrip.py banner Visar verktygsbannern på skärmen. $ python3 usbrip.py händelsehistorik [-q] [-t | -l] [-e] [-n ANTAL HÄNDELSER] [-d DATUM [DATUM...]] [-c KOLUMN [KOLUMN...]] [-f LOGGFIL [LOGGFIL...]] Visa USB-anslutning historia. $ python3 usbrip.py händelser gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a TECKN [TECKN...]] [-q] [-e] [-n ANTAL_HÄNDELSER] [-d DATUM [DATUM...]] [-f LOG_FIL [LOGG_FIL...]] Bildande av en lista av auktoriserade (pålitliga) USB-enheter. $ python3 usbrip.py händelseöverträdelser<ВХОДНОЙ_ФАЙЛ.JSON>[-a KARAKTER [CHARGET...]] [-q] [-t | -l] [-e] [-n ANTAL HÄNDELSER] [-d DATUM [DATUM...]] [-c KOLUMN [KOLUMN...]] [-f LOGGFIL [LOGGFIL...]] Sök efter " stötande händelser" " baserat på en lista över betrodda enheter. $ python3 usbrip.py ids-sökning [-q] [ --vid VID] [--pid PID] [--offline] Sök efter ytterligare information om en enhet genom dess VID och/eller PID i identifierardatabasen. $ python3 usbrip.py ids-nedladdning [-q] Uppdatera (ladda ner) den lokala USB-enhetsidentifieringsdatabasen.

alternativ

Alternativ som stöds av undermodulerna "event history", "events gen_auth", "event violations", "ids search", "ids download": -q, --quiet utelämna visning av banners, information (gröna) meddelanden och gör ställ inte frågor under körningen ############################################ ## ##################################### Alternativ som stöds av "händelsehistorik", " händelser gen_auth" submodules ", "event violations": -e, --extern sökning endast efter flyttbara USB-enheter (som har frånkopplingsinformation) -n ANTAL HÄNDELSER, --antal ANTAL HÄNDELSER antalet senaste händelser efter datum som kommer visas -d DATUM [DATUM...], --datum DATUM [DATUM...] lista över datum som händelser kommer att filtreras efter vid sökning -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] lista över loggfiler (om det inte anges, kommer händelsehistoriken att sökas igenom med standardloggfilerna: /var/log/syslog* eller /var/log/messages* beroende på OS-version) ##### ######## ######################################## ######## ##################### Alternativ som stöds av undermodulerna "event history", "event violations": -t, -- tabell generera utdata i form av en tabell (om storleken på terminalfönstret inte räcker för att visa tabellen korrekt, kommer utdata att genereras automatiskt i form av en lista; när flaggan -t specificeras, kommer utdata att genereras i form av en tabell med tvång) -l, --list generera utdata som en lista -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] lista över kolumner som kommer att användas när man bygger en tabell (har effekt endast när man genererar utdata i form av en tabell); tillåtna nycklar: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################### ################################# Alternativ som stöds av undermodulerna "events gen_auth", "event violations": - a SIGN [SIGN...], --attribut SIGN [SIGN...] en lista med attribut som kommer att användas när en lista över auktoriserade enheter skapas (liksom när man söker efter "överträdande händelser" i fallet med "händelser överträdelser" undermodul); tillåtna nycklar: "vid", "pid", "prod", "manufact", "seriell". ############################################### ################################# Alternativ som stöds av "ids-sökning", "ids-nedladdning" undermoduler: - -vid VID-leverantörs-ID eller USB-enhetstillverkare-ID (vanligtvis 4 hexadecimala siffror) --vid PID-produkt-ID eller USB-enhetsmodell-ID (vanligtvis 4 hexadecimala siffror) --offline om angivet, sök efter ytterligare information om USB-enheten i databasen identifierardata kommer att produceras utan att först uppdatera den (databasen)

Exempel på användning

Visa anslutningshistoriken för alla USB-enheter, utelämna bannern, informativa (gröna) meddelanden och även utan att ställa frågor under körning (-q, --quite), generera utdata i form av en lista (-l, -- lista), inklusive i den innehåller de 100 senast hittade händelserna (-n ANTAL HÄNDELSER, --antal ANTAL HÄNDELSER):
$ python3 usbrip.py händelsehistorik -ql -n 100
Visa anslutningshistoriken för flyttbara USB-enheter (-e, --external), generera utdata i form av en tabell med fält (kolumner) "Connected", "VID", "PID", "Disconnected" och "Serial Number" ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrerar sökningen efter datum (-d DATUM [DATUM...], --datum DATUM [DATUM...] ), tar informationen från externa loggfiler (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py händelsehistorik -et -c conn vid pid disconn seriell -d "9 dec" "10 dec" -f /var/log/syslog.1 /var/log/syslog.2.gz
Bygg en tabell över anslutningshistoriken för alla USB-enheter och omdirigera utdata till en fil för vidare analys. I händelse av att utgångsströmmen inte är standard stdout ("|" eller ">" till exempel), kommer speciella inte att finnas i utgångsdatan. tecken som ansvarar för teckensnittsfärgen i terminalen, så textfil kommer inte att fyllas med oläsbara tecken. Det bör också noteras att usbrip använder vissa UNICODE-konstanter, så det skulle vara en bra idé att omedelbart konvertera kodningen skapad fil i UTF-8 för att visa dem korrekt (till exempel genom att använda encov), och även använda tecken ny linje i Windows-stil för bättre portabilitet (till exempel med awk):
$ python3 usbrip.py historia händelser -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Notera: bli av med speciella tecken som ansvarar för färg är också möjliga om resultatet redan har skickats till stdout. För att göra detta måste du kopiera mottagna data till en ny fil usbrip.txt och lägga till ytterligare en awk-instruktion:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Skapa en lista över betrodda enheter i form av en JSON-fil (trusted/auth.json) som innehåller fälten "VID" och "PID" för den första tre enheter anslutna den 26 september:
$ python3 usbrip.py händelser gen_auth trusted/auth.json -a vid pid -n 3 -d "26 sep"
Hitta "brottslingshändelser" bland anslutningshistoriken för flyttbara USB-enheter baserat på listan över betrodda enheter (trusted/auth.json) med hjälp av "PID"-fältet och generera utdata i form av en tabell med "Connected", " VID” och “PID” fält:
$ python3 usbrip.py händelseöverträdelser trusted/auth.json -a pid -et -c conn vid pid
Hitta ytterligare information om en USB-enhet baserat på dess VID och PID:
$ python3 usbrip.py ids sök --vid 0781 --pid 5580
Ladda ner/uppdatera USB-enhets-ID-databas (källa):
$ python3 usbrip.py id nedladdning

Länkar och efterskrift

Du kan få verktyget från Github, alla beroenden för start och korrekt drift listas i krav.txt.

Tack för uppmärksamheten!

P.S. ja, stilen på bannern och informationsmeddelanden är inspirerad av projektet sqlmap (*^.^*)

UPD 2018-06-13. Det gjordes en utredning av ett verkligt (?) fall som involverade mitt verktyg från en person med Codeby (jag är chockad, om jag ska vara ärlig).

USB - Universal Serial Bus utvecklades av ett konsortium av företag med målet att tillhandahålla en enda enkel buss för anslutning av kringutrustning.

USB-design gör att enheter kan anslutas i farten med standarduttag för anslutning. USB-enheter inkluderar: tangentbord, möss, skrivare, skannrar, hårddiskar, flash-enheter, kameror, modem, nätverkskort och kolumner, och deras lista växer ständigt.

Linux-stöd för USB-enheter är ganska omfattande, men vissa enheter kräver speciella drivrutiner, och andra, främst skrivare och skannrar, kanske inte stöds eller bara delvis.

Datorsystem kan innehålla en eller flera kontroller eller hubbar som är utformade för att ansluta USB-enheter eller annan (extern) hub. Hubben kan stödja upp till 7 enheter, som i sin tur kan ha ytterligare hubbar. Nav inuti systemenhet kallas rotnav. Varje stjärntopologi kan stödja upp till 127 hubbar eller enheter.

När vi säger USB-port menar vi datorns USB-stöd och port för anslutning, inte den interna portadressen som används av enheten.

USB-systemets skiktning låter värden bestämma egenskaperna för en USB-enhet, inklusive klass, tillverkarnamn, enhetsnamn, spänningskrav, hastighet, USB-stödnivå och andra funktioner.

Linux USB-enhetssupportmodul

USB-enheter stöds för närvarande fullt ut på Linux. De flesta av ändringarna dök upp i 2.6-kärngrenen, även om det fanns visst stöd även i 2.2-kärnorna. Linux stöder både USB 2.0 och tidigare specifikationer. På grund av USBs hot-plug-karaktär sker support vanligtvis genom kärnmoduler som kan laddas eller avlastas efter behov.

Kommandot lspci låter dig visa USB-enheter:

Root@localhost:~:# lspci | grep -i usb 00:03.0 USB Controller: 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 2.0

Kommandoutgången visar att det finns 3 USB-kontroller i systemet.

Med kommandot lsmod kan du visa laddade USB-moduler:

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Module" Modulstorlek Används av hid_microsoft 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse 04_444 41644 41644 cihd 3 cd 34152 0

Visar anslutna USB-enheter

En sammanfattning av för närvarande anslutna USB-enheter finns i filen /proc/bus/usb/devices. Du kan visa det med följande 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: Leverantör=1d6b ProdID=0001 Rev= 2.06 S: Tillverkare=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI Host Controller 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( nav) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Leverantör=1d6b ProdID=0001 Rev= 2.06 S: Tillverkare=Linux 2.6.29.6 ohci_hcd S: Produkt=OHCI-värdstyrenhet 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: Leverantör=045e ProdID=00db Rev= 1.73 S: Tillverkare=Microsoft S: Produkt=Naturligt� Ergonomiskt tangentbord 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: Leverantör=1d6b ProdID=0002 Rev= 2.06 S: Tillverkare= 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 listan motsvarar Spd=480 USB 2.0-bussen och Spd=12 motsvarar USB 1.1-enheter. Längre i listan kan du se att det för närvarande finns 1 USB-enhet ansluten till systemet - Microsoft Natural Ergonomic Keyboard 400 (Spd=1,5).

Naturligtvis skriver jag den här texten på det här tangentbordet.

Hierarkin för USB-enhetsanslutningar kan ses med kommandot lsusb med alternativet -t:

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

Visar information om en viss USB-enhet kan erhållas med följande kommando:

Root@localhost:~:# lsusb -vd 0x045e:0x00db Bus 002 Enhet 002: ID 045e:00db Microsoft Corp. Naturligt ergonomiskt tangentbord 4000 V1.0 Enhetsbeskrivning: längd 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (definierad på gränssnittsnivå) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 0.0Vendor Microsoft Corp.Size0 .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 Konfigurationsbeskrivning: bLength 9 bDescriptorTo9Typue bLength 9 bDescriptorTo9TypV 1 iConfiguration 0 bmAttributes 0xa0 (bussdriven) Remote Wakeup MaxPower 100mA Interface Beskrivning: längd 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Tangentbord iInterface 0 ** UNRECOGN 0901c 02c 00 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttribut 3 Överföringstyp Avbrott Synktyp Ingen Användningstyp Data wMaxPacketSize 0x0008 1x 8 byte bIntervall 10 Gränssnittsbeskrivning: längd 9 bDescriptorTyp 4 bGränssnittNumber 1 bAlternateSetting 0 bNumEndpointS 1 bInterfaceC Dec. klass bInterfaceProtocol 0 Inget iInterface 0 ** OKÄNNET : 09 21 11 01 00 01 22 56 00 Endpoint Descriptor: BLength 7 bDescriptorType 5 BendpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Användningstyp Data wMaxInterval 008 DeviceSize by x0x DeviceSize 1 bmAttribut 0000 (bussdriven)

Ansluta en USB-enhet i farten

Nya system har stöd för att ansluta USB-enheter i farten (hot plugging), vilket innebär att enheten ansluts till ett körande system, vilket måste:

  • bestämma typen av USB-enhet, hitta drivrutinen och kör den;
  • associera föraren med enheten;
  • meddela andra delsystem om USB-enheten.



Som en del av min fördjupning i en av disciplinerna (under mina studier i Compeza-specialiteten) arbetade jag med ett intressant projekt som jag inte bara skulle vilja begrava i djupet av mappen "Univer" på en extern hårddisk. kör.

Detta projekt kallas usbrip och är ett litet konsolverktyg med öppen källkod för Linux-kriminalteknik, nämligen för att arbeta med historien om USB-enhetsanslutningar. Programmet är skrivet i ren Python 3 (med vissa tredjepartsmoduler) och kräver inga andra beroenden än Python 3.x-tolken och några rader från krav.txt, löst i en rad med pip3.

I det här inlägget kommer jag att beskriva några av funktionerna i denna programvara och lämna en kort manual med en länk till nedladdningskällan.

Skära! (...jag menar Cut!)

Skärmdumpar

Hämta anslutningshistorik för flyttbara USB-enheter:


Hitta ytterligare information om en USB-enhet genom modellidentifierare (PID):

Beskrivning

Som ni vet är operativsystem baserade på GNU/Linux mycket känsliga för att logga olika typer av händelser, och att ansluta/koppla från USB-enheter är inget undantag. I kombination med en av UNIX-filosofins "textströmmar som universella gränssnitt" kan information om artefakter av sådana händelser (i varierande detaljeringsgrad) beroende på distributionen hittas i en eller flera av följande filer:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/meddelanden* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
FORENSIC-PROOF visar oss till och med den här bilden om denna fråga (lite ofullständig, men oavsett):

För sitt arbete hittar usbrip loggfiler som är universella för alla Linux-byggen baserade på Debian (Ubuntu, Linux Mint, etc.) och RPM (CentOS, Fedora, openSUSE, etc.), nämligen: /var/log/syslog* eller /var/log/messages* , analyserar dem på jakt efter den nödvändiga informationen och förvandlar de hittade spåren av USB-enhetsanslutningar till vackra plattor (eller listor - vad du vill).

USBrip kan också:

  • skapa listor över auktoriserade (betrodda) enheter i form av JSON-filer;
  • sök efter "stötande händelser" baserat på listan över betrodda enheter: händelser (USB-anslutning/-bortkoppling) som involverade USB-enheter som inte var markerade som betrodda;
  • leta efter ytterligare information om en USB-enhet genom dess VID (leverantörs-ID) och/eller PID (produkt-ID).

Referens

Få en lista över tillgängliga moduler:

$ python3 usbrip.py -h
Få en lista över tillgängliga undermoduler för en specifik modul:

$python3 usbrip.py<модуль>-h
Få en lista över tillgängliga alternativ för en specifik undermodul:

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

Syntax

$ python3 usbrip.py banner $ python3 usbrip.py händelsehistorik [-q] [-t | -l] [-e] [-n ANTAL HÄNDELSER] [-d DATUM [DATUM...]] [-c KOLUMN [KOLUMN...]] [-f LOGGFIL [LOGGFIL...]] $ python3 usbrip .py-händelser gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n ANTAL HÄNDELSER] [-d DATUM [DATUM...]] [-f LOGGFIL [LOGGFIL...]] $ python3 usbrip.py händelseöverträdelser<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n ANTAL HÄNDELSER] [-d DATUM [DATUM...]] [-c KOLUMN [KOLUMN...]] [-f LOGGFIL [LOGGFIL...]] $ python3 usbrip .py id-sökning [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids nedladdning [-q]

alternativ

Alternativ som stöds av undermodulerna "event history", "events gen_auth", "event violations", "ids search", "ids download": -q, --quiet utelämna visning av banners, information (gröna) meddelanden och gör ställ inte frågor under körningen ############################################ ## ##################################### Alternativ som stöds av "händelsehistorik", " händelser gen_auth" submodules ", "event violations": -e, --extern sökning endast efter flyttbara USB-enheter (som har frånkopplingsinformation) -n ANTAL HÄNDELSER, --antal ANTAL HÄNDELSER antalet senaste händelser efter datum som kommer visas -d DATUM [DATUM...], --datum DATUM [DATUM...] lista över datum som händelser kommer att filtreras efter vid sökning -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] lista över loggfiler (om det inte anges, kommer händelsehistoriken att sökas igenom med standardloggfilerna: /var/log/syslog* eller /var/log/messages* beroende på OS-version) ##### ######## ######################################## ######## ##################### Alternativ som stöds av undermodulerna "event history", "event violations": -t, -- tabell generera utdata i form av en tabell (om storleken på terminalfönstret inte räcker för att visa tabellen korrekt, kommer utdata att genereras automatiskt i form av en lista; när flaggan -t specificeras, kommer utdata att genereras i form av en tabell med tvång) -l, --list generera utdata som en lista -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] lista över kolumner som kommer att användas när man bygger en tabell (har effekt endast när man genererar utdata i form av en tabell); tillåtna nycklar: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################### ################################# Alternativ som stöds av "ids-sökning", "ids-nedladdning" undermoduler: - -vid VID-leverantörs-ID eller USB-enhetstillverkare-ID (vanligtvis 4 hexadecimala siffror) --vid PID-produkt-ID eller USB-enhetsmodell-ID (vanligtvis 4 hexadecimala siffror) --offline om angivet, sök efter ytterligare information om USB-enheten i databasen identifierardata kommer att produceras utan att först uppdatera den (databasen)

Exempel på användning

Visa anslutningshistoriken för alla USB-enheter, utelämna bannern, informativa (gröna) meddelanden och även utan att ställa frågor under körning (-q, --quite), generera utdata i form av en lista (-l, -- lista), inklusive i den innehåller de 100 senast hittade händelserna (-n ANTAL HÄNDELSER, --antal ANTAL HÄNDELSER):
$ python3 usbrip.py händelsehistorik -ql -n 100
Visa anslutningshistoriken för flyttbara USB-enheter (-e, --external), generera utdata i form av en tabell med fält (kolumner) "Connected", "VID", "PID", "Disconnected" och "Serial Number" ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), filtrerar sökningen efter datum (-d DATUM [DATUM...], --datum DATUM [DATUM...] ), tar informationen från externa loggfiler (-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...]):
$ python3 usbrip.py händelsehistorik -et -c conn vid pid disconn seriell -d "9 dec" "10 dec" -f /var/log/syslog.1 /var/log/syslog.2.gz
Bygg en tabell över anslutningshistoriken för alla USB-enheter och omdirigera utdata till en fil för vidare analys. I händelse av att utgångsströmmen inte är standard stdout ("|" eller ">" till exempel), kommer speciella inte att finnas i utgångsdatan. tecken som är ansvariga för teckensnittsfärgen i terminalen, så textfilen kommer inte att fyllas med oläsbara tecken. Det bör också noteras att usbrip använder vissa UNICODE-konstanter, så det skulle vara en bra idé att omedelbart konvertera kodningen av den skapade filen till UTF-8 för att visa dem korrekt (till exempel med encov), och även använda Windows-stil nyradstecken för bättre portabilitet (till exempel med awk):
$ python3 usbrip.py historia händelser -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
Notera: bli av med speciella tecken som ansvarar för färg är också möjliga om resultatet redan har skickats till stdout. För att göra detta måste du kopiera mottagna data till en ny fil usbrip.txt och lägga till ytterligare en awk-instruktion:
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); print )" usbrip.txt && enconv -x UTF8 usbrip.txt
Skapa en lista över betrodda enheter i form av en JSON-fil (trusted/auth.json) som innehåller den första tre enheter anslutna den 26 september:
$ python3 usbrip.py händelser gen_auth trusted/auth.json -n 3 -d "26 sep"
Sök efter "överträdande händelser" bland anslutningshistoriken för flyttbara USB-enheter baserat på listan över betrodda enheter (trusted/auth.json) och generera utdata i form av en tabell med "Connected", "VID" och "PID" " fält:
$ python3 usbrip.py händelseöverträdelser trusted/auth.json -et -c conn vid pid
Hitta ytterligare information om en USB-enhet baserat på dess VID och PID:
$ python3 usbrip.py ids sök --vid 0781 --pid 5580
Ladda ner/uppdatera USB Device ID Database (källa

Du har anslutit ett USB-minne eller ett tangentbord eller en mus till din Linux-dator. Men ingenting händer.

Vad är problemet? Varför upptäcker inte din Linux-dator enheten? Är det Linux eller har din USB-enhet slutat fungera?

USB fungerar inte i Ubuntu?

Diskenheter, minneskortläsare, telefoner, mediaspelare och kringutrustning multimedia...de är alla användbara, men om det finns ett problem med USB-porten eller ditt systems drivrutiner kommer de inte att fungera. Detta kan vara särskilt frustrerande om du använder ett Bluetooth-tangentbord eller en Bluetooth-mus (med en USB-dongel), eftersom det innebär att du måste gräva fram trådbundna USB-alternativ.

Det kanske inte är en död port. USB-enheten du använder kan vara felaktig och kan inte upptäckas.

Att lösa USB-problem kan vara utmanande, men dessa problem är inte omöjliga att diagnostisera och göra de nödvändiga korrigeringarna.

För eliminering USB-problem På Linux finns det fem steg att följa:

  1. Se till att USB-porten identifieras
  2. Producera det nödvändiga renoveringsarbete till hamnen
  3. Fixa eller reparera USB-enheter
  4. Starta om operativ system Linux
  5. Bekräfta tillgängligheten för enhetsdrivrutiner

Låt oss titta på var och en av dem i tur och ordning och lära oss hur man arbetar med knepiga USB-enheter i Linux.

1. Upptäcks din enhet av Linux?

Det första du ska kontrollera när du sätter in din USB-enhet i din Linux-dator är om den upptäcks. Detektering av USB-enheter är vanligtvis inte verbal eller hörbar (i Linux Deepin är det inte) som i Windows eller macOS, vilket innebär att du ofta måste verifiera att enheten har fångats av operativsystemet.

Lyckligtvis är det enkelt.

Koppla först ur USB-enheterna du efterfrågar. Öppna sedan ett terminalfönster och ange kommandot » lista USB:

Kommandot dmesg kommer att lista de anslutna USB-enheterna på ditt system. Den kommer även att inkludera icke-USB hårdvara och ger tyvärr en enorm mängd information. För att motverka detta kan du prova:

Detta ser ut som en korsning mellan kommandona dmesg och lsusb, som listar ansluten USB-hårdvara med tillräckligt med information för att identifiera dem.

Så, är USB-enheten du anslutit listad här? Om inte, kan porten vara skadad eller det finns ett problem med enheten. På samma sätt kanske enheten inte är kompatibel med Linux.

2. Hur man kontrollerar USB-porten

Om USB-enheten inte visas kan det bero på ett problem med USB-porten.

Det bästa sättet att testa detta är att helt enkelt använda en annan USB-port på din dator. Om USB-hårdvaran nu upptäcks vet du att du har ett problem med en av USB-portarna.

Om en annan USB-port inte är tillgänglig måste du prova USB-enheten på en annan PC eller bärbar dator. Detta kanske inte är det idealiskt alternativ, eftersom du alternativt kan använda en Windows- eller macOS-dator och i det här fallet kan vissa USB-enheter inte användas i Linux. Så det blir svårt att avgöra exakt vad som orsakar problemet, om det är USB-enheten eller USB-porten.

För bästa resultat, håll dig till Linux-kompatibel hårdvara när det är möjligt vid felsökning av USB-enheter.

3. Åtgärda skadad USB-hårdvara

Om din USB-hårdvara är felaktig har du två alternativ: fixa den eller returnera den.

Fixningen innebär vanligtvis kontroll USB uttag, samt enheter som för närvarande inte fungerar. Korrigeringar kommer nästan alltid att centreras runt USB-kabel och port på din dator. USB-kablar kan vanligtvis bytas ut, men USB-portar kan repareras.

Att fysiskt kontrollera USB-hårdvaran är en bra idé. Kablarna måste vara starka, utan avbrott, och metallsektionen måste vara ordentligt fastsatt.

USB-portar bör under tiden testas med datorn avstängd och urkopplad. Kontrollera att portarna är säkra, vingliga USB-portarär ett tecken på utrustningsslitage.

Om USB-porten lossnar kan du löda tillbaka den på plats. Naturligtvis bör du redan veta hur man löder, försök aldrig göra ett gör-det-själv-jobb utan tidigare erfarenhet.

Kontrollera även USB-portarna för damm och smuts, särskilt på baksidan av datorn, där damm regelbundet samlas. Damm är en PCs fiende, så det är värt att hålla ditt system i en dammfri miljö. Damm kan leta sig in i din dator via USB-portar, ta dig tid att hålla dessa portar rena. Använd tryckluft för att skingra damm och smuts.

Kan du lämna tillbaka din USB-enhet? Om det är nytt är det troligt. Problemet är att om det inte är tydligt markerat som kör Linux, är det osannolikt att butiken accepterar returer.

4. Starta om Linux för att fixa USB-porten

I vissa fall – till exempel om du använder en bärbar dator – kan strömproblem påverka dess förmåga att upptäcka USB-enheter. Alternativet autosuspend är avsett att minska strömförbrukningen på bärbara Linux-datorer, men det kan vara kontraproduktivt.

Så vad kan du göra?

Kontrollera först om autosuspend orsakar problemet. Du kan göra detta genom att starta om din dator. Om USB-enheten är igång får den USB-porten ström.

Nästa steg är att se till att detta inte händer igen. Nästa knep kommandoradär för Ubuntu 18.10, så kontrollera korrekt procedur på din föredragna Linux-distribution.

Öppna ett terminalfönster och skriv:

cat /sys/module/usbcore/parameters/autosuspend

Titta här:

GRUB_CMDLINE_LINUX_DEFAULT="tyst plask"

GRUB_CMDLINE_LINUX_DEFAULT = "tyst plask"