리눅스에서 USB 연결의 역사. USB 장치의 연결 기록을 추적하는 형태의 Linux 포렌식입니다. USB 포트를 수정하려면 Linux를 재부팅하세요.

(Compeza 전문 분야를 공부하는 동안) 한 분야에 몰입하는 과정에서 저는 외장 하드의 "Univer" 폴더 깊숙한 곳에 묻어두고 싶지 않은 흥미로운 프로젝트 하나에 참여했습니다. 운전하다.

이 프로젝트는

usbrip

Linux 포렌식, 즉 USB 장치 연결 기록 작업을 위한 작은 오픈 소스 콘솔 유틸리티입니다. 이 프로그램은 순수 Python 3(일부 타사 모듈 사용)로 작성되었으며 Python 3.x 인터프리터와 다음의 몇 줄 외에는 종속성이 필요하지 않습니다.

요구사항.txt

pip3을 사용하여 한 줄로 해결되었습니다.

이 게시물에서는 이 소프트웨어의 기능 중 일부를 설명하고 다운로드 소스 링크가 포함된 간단한 매뉴얼을 남길 것입니다.

$ python3 usbrip.py ID 다운로드

링크와 포스트스크립트

유틸리티는 다음에서 얻을 수 있습니다.

GitHub

시작 및 올바른 작업에 대한 모든 종속성은 다음 목록에 나열되어 있습니다.

요구사항.txt

관심을 가져주셔서 감사합니다!

추신

예, 배너와 정보 메시지의 스타일은 프로젝트에서 영감을 받았습니다.

sqlmap

컴퓨터 보안 전문 분야를 공부하는 동안 한 분야에 몰입하는 과정에서 외장 하드 드라이브의 "Univer" 폴더 깊숙한 곳에 묻어두고 싶지 않은 재미있는 프로젝트 하나에 참여했습니다.

이 프로젝트는 usbrip Linux 포렌식, 즉 USB 장치 연결 기록 작업을 위한 작은 오픈 소스 콘솔 유틸리티입니다. 이 프로그램은 순수 Python 3(일부 타사 모듈 사용)로 작성되었으며 Python 3.x 인터프리터와 다음의 몇 줄 외에는 종속성이 필요하지 않습니다. 요구사항.txt, pip를 사용하여 한 줄로 해결되었습니다.

이 게시물에서는 이 소프트웨어의 기능 중 일부를 설명하고 다운로드 소스 링크가 포함된 간단한 매뉴얼을 남길 것입니다.

자르다! (...컷이라는 뜻이에요!)

메모. 기사에 설명된 기능은 유틸리티 버전과 관련이 있습니다. 뒤에 최신 버전새로운 상품이 많으면 저장소로 이동하는 것이 좋습니다.

스크린샷

이동식 USB 장치의 연결 기록 가져오기:


찾다 추가 정보모델 식별자(PID)별 USB 장치 정보:

설명

아시다시피 GNU/Linux 기반 운영 체제는 다양한 종류의 이벤트를 기록하는 데 매우 민감하며 USB 장치 연결/연결 해제도 예외는 아닙니다. UNIX 철학의 "범용 인터페이스로서의 텍스트 스트림" 중 하나와 결합하여 배포에 따른 이러한 이벤트의 아티팩트(다양한 세부 수준)에 대한 정보는 다음 텍스트 파일 중 하나 이상에서 찾을 수 있습니다.
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/로그/메시지*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
FORENSIC-PROOF는 이 문제에 대한 다음 그림도 보여줍니다(약간 불완전하지만 중요하지 않음).

작업을 위해 usbrip은 Debian(Ubuntu, 리눅스 민트등) 및 RPM(CentOS, Fedora, openSUSE 등), 로그 파일, 즉 /var/log/syslog* 또는 /var/log/messages* 는 필요한 정보를 검색하여 이를 구문 분석하고 발견된 추적을 표시합니다. USB 장치를 아름다운 플레이트(또는 목록 - 원하는 대로)에 연결합니다.

USBrip은 또한 다음을 수행할 수 있습니다.

  • JSON 파일 형식으로 승인된(신뢰할 수 있는) 장치 목록을 생성합니다.
  • 신뢰할 수 있는 장치 목록을 기반으로 "불쾌한 이벤트"를 검색합니다. 신뢰할 수 있는 것으로 표시되지 않은 USB 장치와 관련된 이벤트(USB 연결/연결 끊김)
  • VID(공급업체 ID) 및/또는 PID(제품 ID)를 통해 USB 장치에 대한 추가 정보를 찾아보세요.

참조

사용 가능한 모듈 목록을 가져옵니다.

$ python3 usbrip.py -h
특정 모듈에 사용 가능한 하위 모듈 목록을 가져옵니다.

$python3 usbrip.py<модуль>-시간
목록 가져오기 사용 가능한 옵션특정 하위 모듈의 경우:

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

통사론

$ python3 usbrip.py 배너 유틸리티 배너를 화면에 표시합니다. $ python3 usbrip.py 이벤트 기록 [-q] [-t | -l] [-e] [-n 이벤트 수] [-d 날짜 [날짜...]] [-c 열 [열...]] [-f 로그파일 [로그파일...]] USB 연결 보기 역사 . $ python3 usbrip.py 이벤트 gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-a SIGN [SIGN...]] [-q] [-e] [-n NUMBER_EVENTS] [-d DATE [DATE...]] [-f LOG_FILE [LOG_FILE...]] 목록 구성 인증된(신뢰할 수 있는) USB 장치. $ python3 usbrip.py 이벤트 위반<ВХОДНОЙ_ФАЙЛ.JSON>[-a CHARACTER [CHARGET...]] [-q] [-t | -l] [-e] [-n 이벤트 수] [-d 날짜 [날짜...]] [-c 열 [열...]] [-f 로그파일 [로그파일...]] " 신뢰할 수 있는 장치 목록을 기반으로 문제가 되는 이벤트''를 표시합니다. $ python3 usbrip.py ID 검색 [-q] [ --vid 영상] [--pid PID] [--offline] 식별자 데이터베이스에서 VID 및/또는 PID로 장치에 대한 추가 정보를 검색합니다. $ python3 usbrip.py ids download [-q] 로컬 USB 장치 식별자 데이터베이스를 업데이트(다운로드)합니다.

옵션

"이벤트 기록", "이벤트 gen_auth", "이벤트 위반", "ids 검색", "ids 다운로드" 하위 모듈에서 지원되는 옵션: -q, --quiet 배너, 정보(녹색) 메시지 표시를 생략하고 수행할 작업 실행 중에 질문하지 않음 ######################################### ## ################################################################### '이벤트 기록'에서 지원되는 옵션," events gen_auth" submodules ", "events 위반": -e, --external (연결 끊김 정보가 있는) 이동식 USB 장치만 검색 -n NUMBER OF EVENTS, --number NUMBER OF EVENTS 날짜별 최신 이벤트 수 -d DATE [DATE...], --date DATE [DATE...] 검색 시 이벤트를 필터링할 날짜 목록 -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] 로그 파일 목록(지정하지 않으면 이벤트 내역은 OS 버전에 따라 기본 로그 파일인 /var/log/syslog* 또는 /var/log/messages*를 사용하여 검색됩니다.) ##### ######## ###################################### ######## ##################### "이벤트 기록", "이벤트 위반" 하위 모듈에서 지원되는 옵션: -t, -- 테이블은 테이블 형식으로 출력을 생성합니다(터미널 창의 크기가 테이블을 올바르게 표시하기에 충분하지 않은 경우 출력은 자동으로 목록 형식으로 생성됩니다. -t 플래그를 지정하면 출력이 강제로 테이블 형식으로 생성됩니다. -l, --list 출력을 목록으로 생성합니다. -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] 테이블을 생성할 때 사용되는 열 목록(테이블 형식으로 출력을 생성할 때만 효과가 있음); 허용되는 키: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################# ################################ "이벤트 gen_auth", "이벤트 위반" 하위 모듈에서 지원되는 옵션: - a SIGN [SIGN...], --attribute SIGN [SIGN...] 승인된 장치 목록을 구성할 때(또한 "위반 이벤트"를 검색할 때 사용되는 속성 목록) "이벤트 위반" 하위 모듈); 허용되는 키: "vid", "pid", "prod", "manufact", "serial". ############################################# ################################# "ID 검색", "ID 다운로드" 하위 모듈에서 지원되는 옵션: - -vid VID 공급업체 ID 또는 USB 장치 제조업체 ID(일반적으로 4자리 16진수) --vid PID 제품 ID 또는 USB 장치 모델 ID(일반적으로 4자리 16진수) --offline(지정된 경우 데이터베이스에서 USB 장치에 대한 추가 정보 검색) 식별자 데이터는 먼저 업데이트하지 않고 생성됩니다(데이터베이스).

사용 예

모든 USB 장치의 연결 기록을 표시하고 배너, 정보(녹색) 메시지를 생략하고 실행 중에 질문하지 않고(-q, --quite) 목록 형식으로 출력을 생성합니다(-l, -- 목록)에는 가장 최근에 발견된 100개의 이벤트가 포함되어 있습니다(-n NUMBER OF EVENTS, --number NUMBER OF EVENTS):
$ python3 usbrip.py 이벤트 기록 -ql -n 100
이동식 USB 장치(-e, --external)의 연결 기록을 표시하여 "연결됨", "VID", "PID", "연결 끊김" 및 "일련 번호" 필드(열)가 있는 테이블 형식으로 출력을 생성합니다. ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), 날짜별로 검색 필터링(-d DATE [DATE...], --date DATE [DATE...] ), 외부 로그 파일(-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...])에서 정보를 가져옵니다.
$ python3 usbrip.py 이벤트 기록 -et -c conn vid pid disconn serial -d "Dec 9" "Dec 10" -f /var/log/syslog.1 /var/log/syslog.2.gz
모든 USB 장치의 연결 기록 테이블을 작성하고 추가 분석을 위해 출력을 파일로 리디렉션합니다. 출력 스트림이 표준 stdout(예: "|" 또는 ">")이 아닌 경우 출력 데이터에 특수 스트림이 표시되지 않습니다. 터미널의 글꼴 색상을 담당하는 문자이므로 텍스트 파일읽을 수 없는 문자로 가득 차 있지 않습니다. 또한 usbrip은 일부 UNICODE 상수를 사용하므로 인코딩을 즉시 변환하는 것이 좋습니다. 생성된 파일 UTF-8로 올바르게 표시하고(예: encov 사용) 문자도 사용합니다. 새 줄더 나은 이식성을 위해 Windows 스타일로(예: awk 사용):
$ python3 usbrip.py 기록 이벤트 -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
메모:특별함을 없애다 출력이 이미 stdout으로 전송된 경우 색상을 담당하는 문자도 가능합니다. 이렇게 하려면 수신된 데이터를 새 파일 usbrip.txt에 복사하고 또 다른 awk 명령을 추가해야 합니다.
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); 인쇄 )" usbrip.txt && enconv -x UTF8 usbrip.txt
첫 번째 필드의 "VID" 및 "PID" 필드를 포함하는 JSON 파일(trusted/auth.json) 형식으로 신뢰할 수 있는 장치 목록을 생성합니다. 9월 26일에 연결된 기기:
$ python3 usbrip.py events gen_authtrusted/auth.json -a vid pid -n 3 -d "9월 26일"
“PID” 필드를 이용하여 신뢰할 수 있는 장치 목록(trusted/auth.json)을 기반으로 이동식 USB 장치의 연결 이력 중 “공격자 이벤트”를 찾아 “Connected”, “ VID' 및 'PID' 필드:
$ python3 usbrip.py 이벤트 위반 trust/auth.json -a pid -et -c conn vid pid
VID 및 PID를 기반으로 USB 장치에 대한 추가 정보를 찾으십시오.
$ python3 usbrip.py ID 검색 --vid 0781 --pid 5580
USB 장치 ID 데이터베이스 다운로드/업데이트(출처):
$ python3 usbrip.py ID 다운로드

링크와 포스트스크립트

Github에서 유틸리티를 얻을 수 있으며, 시작 및 올바른 작업에 대한 모든 종속성은 다음 목록에 나열되어 있습니다. 요구사항.txt.

관심을 가져주셔서 감사합니다!

추신예, 배너와 정보 메시지의 스타일은 프로젝트에서 영감을 받았습니다. sqlmap (*^.^*)

UPD 2018년 6월 13일.코드비에 걸린 사람으로부터 나의 효용과 관련된 실제(?) 사건에 대한 조사가 있었습니다(솔직히 충격적입니다).

USB - 범용 직렬 버스(Universal Serial Bus)는 주변 장치 연결을 위한 간단한 단일 버스 제공을 목표로 기업 컨소시엄에 의해 개발되었습니다.

USB 설계를 통해 연결용 표준 잭을 사용하여 장치를 즉시 연결할 수 있습니다. USB 장치에는 키보드, 마우스, 프린터, 스캐너, 하드 디스크, 플래시 드라이브, 카메라, 모뎀, 네트워크 어댑터및 열이 있으며 해당 목록은 지속적으로 증가하고 있습니다.

USB 장치에 대한 Linux 지원은 매우 포괄적이지만 일부 장치에는 특수 드라이버가 필요하고 주로 프린터 및 스캐너와 같은 다른 장치는 지원되지 않거나 부분적으로만 지원될 수 있습니다.

컴퓨터 시스템에는 USB 장치나 기타 (외부) 허브를 연결하도록 설계된 하나 이상의 컨트롤러나 허브가 포함될 수 있습니다. 허브는 최대 7개의 장치를 지원할 수 있으며, 추가 허브를 가질 수도 있습니다. 허브 내부 시스템 장치루트 허브라고 합니다. 각 스타 토폴로지는 최대 127개의 허브 또는 장치를 지원할 수 있습니다.

USB 포트라고 하면 장치에서 사용하는 내부 포트 주소가 아니라 컴퓨터의 USB 지원 및 연결용 포트를 의미합니다.

USB 시스템의 계층화를 통해 호스트는 클래스, 제조업체 이름, 장치 이름, 전압 요구 사항, 속도, USB 지원 수준 및 기타 기능을 포함하여 USB 장치의 특성을 결정할 수 있습니다.

Linux USB 장치 지원 모듈

USB 장치는 현재 Linux에서 완벽하게 지원됩니다. 2.2 커널에서도 일부 지원이 있었지만 대부분의 변경 사항은 2.6 커널 브랜치에 나타났습니다. Linux는 USB 2.0 및 이전 사양을 모두 지원합니다. USB의 핫플러그 특성으로 인해 지원은 일반적으로 필요에 따라 로드하거나 언로드할 수 있는 커널 모듈을 통해 수행됩니다.

lspci 명령을 사용하면 USB 장치를 표시할 수 있습니다.

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

명령 출력에는 시스템에 3개의 USB 컨트롤러가 있음이 표시됩니다.

lsmod 명령을 사용하면 로드된 USB 모듈을 표시할 수 있습니다.

Root@localhost:~:# lsmod | egrep "usb|hci|hid|mouse|Module" hid_microsoft에서 사용되는 모듈 크기 3232 0 usbhid 32992 0 hid 39040 2 hid_microsoft,usbhid ohci_hcd 24332 0 psmouse 41644 0 ssb 38464 1 ohci_hcd ehci_ hcd 34152 0

연결된 USB 장치 표시

현재 연결된 USB 장치의 요약은 /proc/bus/usb/devices 파일에 포함되어 있습니다. 다음 명령을 사용하여 표시할 수 있습니다.

Root@localhost:~:# cat /proc/bus/usb/devices T: 버스=03 Lev=00 Prnt=00 포트=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 0/900 us(0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: 제조업체=Linux 2.6.29.6 ohci_hcd S: 제품=OHCI 호스트 컨트롤러 S: 일련번호=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 포트=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: Alloc= 28/900 us(3%), #Int= 2, #Iso= 0 D: Ver= 1.10 Cls=09( 허브) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0001 Rev= 2.06 S: Manufacturer=Linux 2.6.29.6 ohci_hcd S: Product=OHCI 호스트 컨트롤러 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: 버스=02 Lev=01 Prnt=01 포트=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� 인체공학적 키보드 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: 버스=01 Lev=00 Prnt=00 포트=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 6 B: Alloc= 0/800 us (0% ), #Int= 0, #Iso= 0 D: Ver= 2.00 Cls=09(hub) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0002 Rev= 2.06 S: Manufacturer= Linux 2.6.29.6 ehci_hcd S: Product=EHCI 호스트 컨트롤러 S: SerialNumber=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls=09(hub) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

목록에서 Spd=480은 USB 2.0 버스에 해당하고 Spd=12는 USB 1.1 장치에 해당합니다. 또한 목록에서 현재 시스템에 1개의 USB 장치(Microsoft Natural Ergonomic Keyboard 400(Spd=1.5))가 연결되어 있음을 확인할 수 있습니다.

당연히 저는 이 키보드로 이 텍스트를 입력합니다.

-t 옵션과 함께 lsusb 명령을 사용하면 USB 장치 연결 계층 구조를 볼 수 있습니다.

Root@localhost:~:# lsusb -t 버스# 3 `-Dev# 1 공급업체 0x1d6b 제품 0x0001 버스# 2 `-Dev# 1 공급업체 0x1d6b 제품 0x0001 `-Dev# 2 공급업체 0x045e 제품 0x00db 버스# 1 `-Dev# 1 공급업체 0x1d6b 제품 0x0002

특정 정보 표시 USB 장치다음 명령으로 얻을 수 있습니다:

Root@localhost:~:# lsusb -vd 0x045e:0x00db 버스 002 장치 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 장치 설명자: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0(인터페이스 수준에서 정의됨) 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 구성 설명자: bLength 9 bDescriptorType 2 wTotalLength 59 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x a0(버스 전원 공급) 원격 웨이크업 MaxPower 100mA 인터페이스 설명자: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 휴먼 인터페이스 장치 bInterfaceSubClass 1 부팅 인터페이스 하위 클래스 bInterfaceProtocol 1 키보드 iInterface 0 ** 인식되지 않음: 09 21 11 01 00 01 22 3c 00 끝점 설명자: bLength 7 bDescript 또는Type 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 전송 유형 인터럽트 동기화 유형 없음 사용 유형 데이터 wMaxPacketSize 0x0008 1x 8바이트 bInterval 10 인터페이스 설명자: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 휴먼 인터페이스 장치 bInterfaceSubClass 0 하위 클래스 없음 bInterfaceProtocol 0 없음 iInterface 0 ** UNRECO 그나이즈드 : 09 21 11 01 00 01 22 56 00 끝점 설명자: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 전송 유형 인터럽트 동기화 유형 없음 사용 유형 데이터 wMaxPacketSize 0x0008 1x 8 바이트 bInterval 10 장치 상태: 0 x0000(버스 전원 사용)

즉시 USB 장치 연결

새로운 시스템은 즉시 USB 장치 연결(핫 플러깅)을 지원합니다. 즉, 실행 중인 시스템에 장치를 연결해야 하며 다음을 수행해야 합니다.

  • USB 장치 유형을 확인하고 드라이버를 찾아 실행합니다.
  • 드라이버를 장치와 연결합니다.
  • USB 장치에 대해 다른 하위 시스템에 알립니다.



(Compeza 전문 분야를 공부하는 동안) 한 분야에 몰입하는 과정에서 저는 외장 하드의 "Univer" 폴더 깊숙한 곳에 묻어두고 싶지 않은 흥미로운 프로젝트 하나에 참여했습니다. 운전하다.

이 프로젝트는 usbrip Linux 포렌식, 즉 USB 장치 연결 기록 작업을 위한 작은 오픈 소스 콘솔 유틸리티입니다. 이 프로그램은 순수 Python 3(일부 타사 모듈 사용)로 작성되었으며 Python 3.x 인터프리터와 다음의 몇 줄 외에는 종속성이 필요하지 않습니다. 요구사항.txt, pip3을 사용하여 한 줄로 해결되었습니다.

이 게시물에서는 이 소프트웨어의 기능 중 일부를 설명하고 다운로드 소스 링크가 포함된 간단한 매뉴얼을 남길 것입니다.

자르다! (...컷이라는 뜻이에요!)

스크린샷

이동식 USB 장치의 연결 기록 가져오기:


모델 식별자(PID)로 USB 장치에 대한 추가 정보 찾기:

설명

아시다시피 GNU/Linux 기반 운영 체제는 다양한 종류의 이벤트를 기록하는 데 매우 민감하며 USB 장치 연결/연결 해제도 예외는 아닙니다. UNIX 철학의 "범용 인터페이스로서의 텍스트 스트림" 중 하나와 결합하여 배포에 따른 이러한 이벤트의 아티팩트(다양한 세부 수준)에 대한 정보는 다음 파일 중 하나 이상에서 찾을 수 있습니다.
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/messages* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
FORENSIC-PROOF는 이 문제에 대한 다음 그림도 보여줍니다(약간 불완전하지만 중요하지 않음).

작업을 위해 usbrip은 Debian(Ubuntu, Linux Mint 등) 및 RPM(CentOS, Fedora, openSUSE 등)을 기반으로 하는 모든 Linux 빌드에 보편적인 로그 파일, 즉 /var/log/syslog* 또는 /var/log/messages* , 필요한 정보를 검색하여 구문 분석하고 발견된 USB 장치 연결 흔적을 아름다운 플레이트(또는 목록 - 원하는 대로)로 바꿉니다.

USBrip은 또한 다음을 수행할 수 있습니다.

  • JSON 파일 형식으로 승인된(신뢰할 수 있는) 장치 목록을 생성합니다.
  • 신뢰할 수 있는 장치 목록을 기반으로 "불쾌한 이벤트"를 검색합니다. 신뢰할 수 있는 것으로 표시되지 않은 USB 장치와 관련된 이벤트(USB 연결/연결 끊김)
  • VID(공급업체 ID) 및/또는 PID(제품 ID)를 통해 USB 장치에 대한 추가 정보를 찾아보세요.

참조

사용 가능한 모듈 목록을 가져옵니다.

$ python3 usbrip.py -h
특정 모듈에 사용 가능한 하위 모듈 목록을 가져옵니다.

$python3 usbrip.py<модуль>-시간
특정 하위 모듈에 사용 가능한 옵션 목록을 가져옵니다.

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

통사론

$ python3 usbrip.py 배너 $ python3 usbrip.py 이벤트 기록 [-q] [-t | -l] [-e] [-n 이벤트 수] [-d 날짜 [날짜...]] [-c 열 [열...]] [-f 로그파일 [로그파일...]] $ python3 usbrip .py 이벤트 gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n 이벤트 수] [-d DATE [날짜...]] [-f 로그파일 [로그파일...]] $ python3 usbrip.py 이벤트 위반<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n 이벤트 수] [-d 날짜 [날짜...]] [-c 열 [열...]] [-f 로그파일 [로그파일...]] $ python3 usbrip .py ids 검색 [-q] [--vid VID] [--pid PID] [--offline] $ python3 usbrip.py ids 다운로드 [-q]

옵션

"이벤트 기록", "이벤트 gen_auth", "이벤트 위반", "ids 검색", "ids 다운로드" 하위 모듈에서 지원되는 옵션: -q, --quiet 배너, 정보(녹색) 메시지 표시를 생략하고 수행할 작업 실행 중에 질문하지 않음 ######################################### ## ################################################################### '이벤트 기록'에서 지원되는 옵션," events gen_auth" submodules ", "events 위반": -e, --external (연결 끊김 정보가 있는) 이동식 USB 장치만 검색 -n NUMBER OF EVENTS, --number NUMBER OF EVENTS 날짜별 최신 이벤트 수 -d DATE [DATE...], --date DATE [DATE...] 검색 시 이벤트를 필터링할 날짜 목록 -f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE. ..] 로그 파일 목록(지정하지 않으면 이벤트 내역은 OS 버전에 따라 기본 로그 파일인 /var/log/syslog* 또는 /var/log/messages*를 사용하여 검색됩니다.) ##### ######## ###################################### ######## ##################### "이벤트 기록", "이벤트 위반" 하위 모듈에서 지원되는 옵션: -t, -- 테이블은 테이블 형식으로 출력을 생성합니다(터미널 창의 크기가 테이블을 올바르게 표시하기에 충분하지 않은 경우 출력은 자동으로 목록 형식으로 생성됩니다. -t 플래그를 지정하면 출력이 강제로 테이블 형식으로 생성됩니다. -l, --list 출력을 목록으로 생성합니다. -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] 테이블을 생성할 때 사용되는 열 목록(테이블 형식으로 출력을 생성할 때만 효과가 있음); 허용되는 키: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ############################################# ################################# "ID 검색", "ID 다운로드" 하위 모듈에서 지원되는 옵션: - -vid VID 공급업체 ID 또는 USB 장치 제조업체 ID(일반적으로 4자리 16진수) --vid PID 제품 ID 또는 USB 장치 모델 ID(일반적으로 4자리 16진수) --offline(지정된 경우 데이터베이스에서 USB 장치에 대한 추가 정보 검색) 식별자 데이터는 먼저 업데이트하지 않고 생성됩니다(데이터베이스).

사용 예

모든 USB 장치의 연결 기록을 표시하고 배너, 정보(녹색) 메시지를 생략하고 실행 중에 질문하지 않고(-q, --quite) 목록 형식으로 출력을 생성합니다(-l, -- 목록)에는 가장 최근에 발견된 100개의 이벤트가 포함되어 있습니다(-n NUMBER OF EVENTS, --number NUMBER OF EVENTS):
$ python3 usbrip.py 이벤트 기록 -ql -n 100
이동식 USB 장치(-e, --external)의 연결 기록을 표시하여 "연결됨", "VID", "PID", "연결 끊김" 및 "일련 번호" 필드(열)가 있는 테이블 형식으로 출력을 생성합니다. ” (-c COLUMN [COLUMN...], --column COLUMN [COLUMN...]), 날짜별로 검색 필터링(-d DATE [DATE...], --date DATE [DATE...] ), 외부 로그 파일(-f LOG_FILE [LOG_FILE...], --file LOG_FILE [LOG_FILE...])에서 정보를 가져옵니다.
$ python3 usbrip.py 이벤트 기록 -et -c conn vid pid disconn serial -d "Dec 9" "Dec 10" -f /var/log/syslog.1 /var/log/syslog.2.gz
모든 USB 장치의 연결 기록 테이블을 작성하고 추가 분석을 위해 출력을 파일로 리디렉션합니다. 출력 스트림이 표준 stdout(예: "|" 또는 ">")이 아닌 경우 출력 데이터에 특수 스트림이 표시되지 않습니다. 터미널의 글꼴 색상을 담당하는 문자이므로 텍스트 파일이 읽을 수 없는 문자로 뒤덮이지 않습니다. 또한 usbrip은 일부 UNICODE 상수를 사용하므로 생성된 파일의 인코딩을 즉시 UTF-8로 변환하여 올바르게 표시하고(예: encov 사용) Windows 스타일도 사용하는 것이 좋습니다. 더 나은 이식성을 위한 개행 문자(예: awk 사용):
$ python3 usbrip.py 기록 이벤트 -t | awk "( sub("$", "\r"); print )" > usbrip.txt && enconv -x UTF8 usbrip.txt
메모:특별함을 없애다 출력이 이미 stdout으로 전송된 경우 색상을 담당하는 문자도 가능합니다. 이렇게 하려면 수신된 데이터를 새 파일 usbrip.txt에 복사하고 또 다른 awk 명령을 추가해야 합니다.
$ awk "( sub("$", "\r"); gsub("\\x1B\\[*[ -/]*[@-~]", ""); 인쇄 )" usbrip.txt && enconv -x UTF8 usbrip.txt
첫 번째 항목을 포함하는 JSON 파일(trusted/auth.json) 형식으로 신뢰할 수 있는 장치 목록을 생성합니다. 9월 26일에 연결된 기기:
$ python3 usbrip.py events gen_auth trust/auth.json -n 3 -d "9월 26일"
신뢰할 수 있는 장치 목록(trusted/auth.json)을 기반으로 이동식 USB 장치의 연결 내역 중 “위반 이벤트”를 검색하고 “Connected”, “VID”, “PID”가 포함된 테이블 형식으로 출력을 생성합니다. " 필드:
$ python3 usbrip.py 이벤트 위반 trust/auth.json -et -c conn vid pid
VID 및 PID를 기반으로 USB 장치에 대한 추가 정보 찾기:
$ python3 usbrip.py ID 검색 --vid 0781 --pid 5580
USB 장치 ID 데이터베이스 다운로드/업데이트(소스

USB 플래시 드라이브, 키보드 또는 마우스를 Linux PC에 연결했습니다. 하지만 아무 일도 일어나지 않습니다.

무슨 일이야? Linux PC가 장치를 감지하지 못하는 이유는 무엇입니까? Linux입니까, 아니면 USB 장치가 작동을 멈췄습니까?

우분투에서는 USB가 작동하지 않나요?

디스크 드라이브, 메모리 카드 리더기, 전화기, 미디어 플레이어 및 주변기기멀티미디어...모두 유용하지만 USB 포트나 시스템 드라이버에 문제가 있으면 작동하지 않습니다. 이는 유선 USB 대안을 모색하는 것을 의미하므로 Bluetooth 키보드나 마우스(USB 동글 포함)를 사용하는 경우 특히 실망스러울 수 있습니다.

그러나 데드 포트가 아닐 수도 있습니다. 사용 중인 USB 장치에 결함이 있어 감지할 수 없습니다.

USB 문제를 해결하는 것은 어려울 수 있지만 이러한 문제를 진단하고 필요한 수정을 하는 것이 불가능한 것은 아닙니다.

제거를 위해 USB 문제 Linux에서는 다음 5가지 단계를 따라야 합니다.

  1. USB 포트가 감지되는지 확인하세요
  2. 필요한 것을 생산하다 개조 작업항구로
  3. USB 장치 수정 또는 수리
  4. 재부팅 운영 체제리눅스
  5. 장치 드라이버의 가용성 확인

각각을 차례로 살펴보고 Linux에서 까다로운 USB 장치를 사용하는 방법을 알아 보겠습니다.

1. Linux에서 장치가 감지됩니까?

USB 장치를 Linux 컴퓨터에 삽입할 때 가장 먼저 확인해야 할 것은 USB 장치가 감지되는지 여부입니다. USB 장치 감지는 일반적으로 Windows 또는 macOS에서와 같이 말로 또는 들을 수 없습니다(Linux Deepin에서는 그렇지 않음). 이는 장치가 운영 체제에 의해 캡처되었는지 확인해야 하는 경우가 많다는 것을 의미합니다.

다행히도 간단합니다.

먼저, 요청하려는 USB 장치를 분리하세요. 그런 다음 터미널 창을 열고 » list USB 명령을 입력합니다.

dmesg 명령은 시스템에 연결된 USB 장치를 나열합니다. USB가 아닌 하드웨어도 포함되며 불행히도 엄청난 양의 정보를 제공합니다. 이에 대응하려면 다음을 시도해 보세요.

이는 연결된 USB 하드웨어를 식별할 수 있는 충분한 정보와 함께 나열하는 dmesg 및 lsusb 명령 사이의 교차처럼 보입니다.

그러면 연결한 USB가 여기에 나열되어 있나요? 그렇지 않은 경우 포트가 손상되었거나 장치에 문제가 있을 수 있습니다. 마찬가지로 장치가 Linux와 호환되지 않을 수 있습니다.

2. USB 포트 확인 방법

USB 장치가 표시되지 않으면 USB 포트에 문제가 있을 수 있습니다.

이를 테스트하는 가장 좋은 방법은 컴퓨터의 다른 USB 포트를 사용하는 것입니다. 이제 USB 하드웨어가 감지되면 USB 포트 중 하나에 문제가 있는 것입니다.

다른 USB 포트를 사용할 수 없는 경우 다른 PC나 노트북에서 USB 장치를 사용해 보아야 합니다. 그러나 이는 그렇지 않을 수도 있습니다. 이상적인 옵션, 대신 Windows 또는 macOS 컴퓨터를 사용할 수 있으며 이 경우 일부 USB 장치는 Linux에서 사용할 수 없습니다. 따라서 USB 장치인지 USB 포트인지 정확히 무엇이 문제의 원인인지 파악하기가 어렵습니다.

최상의 결과를 얻으려면 USB 장치 문제를 해결할 때 가능하면 Linux 호환 하드웨어를 사용하십시오.

3. 손상된 USB 하드웨어 수정

USB 하드웨어에 결함이 있는 경우 수리하거나 반품하는 두 가지 옵션이 있습니다.

수정에는 일반적으로 확인이 포함됩니다. USB 포트, 현재 작동하지 않는 장치도 포함됩니다. 수정 사항은 거의 항상 다음을 중심으로 이루어집니다. USB 케이블그리고 컴퓨터의 포트. USB 케이블은 일반적으로 교체가 가능하지만 USB 포트는 수리가 가능합니다.

USB 하드웨어를 물리적으로 검사하는 것이 좋습니다. 케이블은 끊어짐 없이 튼튼해야 하며, 금속 부분은 단단히 고정되어야 합니다.

한편, USB 포트는 PC를 끄고 플러그를 뽑은 상태에서 테스트해야 합니다. 포트가 안전하고 흔들리는지 확인하세요. USB 포트장비 마모의 징후입니다.

USB 포트가 헐거워지면 다시 납땜하면 됩니다. 물론 납땜 방법을 이미 알고 있어야 하며 사전 경험 없이 DIY 작업을 시도하지 마십시오.

또한 USB 포트에 먼지가 있는지 확인하십시오. 특히 먼지가 정기적으로 모이는 컴퓨터 뒷면의 경우 더욱 그렇습니다. 먼지는 PC의 적이므로 시스템을 먼지가 없는 환경에 유지하는 것이 좋습니다. 먼지는 USB 포트를 통해 PC로 들어갈 수 있으므로 시간을 들여 포트를 깨끗하게 유지하십시오. 압축 공기를 사용하여 먼지와 오물을 분산시키십시오.

USB 장치를 반품할 수 있나요? 새로운 것이라면 그럴 가능성이 높습니다. 문제는 Linux를 실행한다고 명확하게 표시하지 않는 한 매장에서 반품을 수락할 가능성이 낮다는 것입니다.

4. Linux를 재부팅하여 USB 포트를 수정하세요.

일부 경우(예: 노트북을 사용하는 경우) 전원 문제로 인해 USB 장치 감지 기능이 영향을 받을 수 있습니다. 자동 일시 중단 옵션은 Linux 랩톱의 전력 소비를 줄이기 위한 것이지만 역효과를 낳을 수 있습니다.

그럼 당신은 무엇을 할 수 있나요?

먼저 자동 일시 중단으로 인해 문제가 발생하는지 확인하세요. 컴퓨터를 다시 시작하면 됩니다. USB 장치가 실행 중이면 해당 USB 포트에 전원이 공급됩니다.

다음 단계는 이런 일이 다시 발생하지 않도록 하는 것입니다. 다음 트릭 명령줄 Ubuntu 18.10용이므로 선호하는 Linux 배포판에서 올바른 절차를 확인하세요.

터미널 창을 열고 다음을 입력하세요.

고양이 /sys/모듈/usbcore/매개 변수/자동 일시 중단

이봐:

GRUB_CMDLINE_LINUX_DEFAULT="조용한 시작"

GRUB_CMDLINE_LINUX_DEFAULT = "조용한 시작"