ประวัติการเชื่อมต่อ usb ใน linux นิติวิทยาศาสตร์ Linux ในรูปแบบของการติดตามประวัติการเชื่อมต่อของอุปกรณ์ USB รีบูต Linux เพื่อแก้ไขพอร์ต USB

ในฐานะที่เป็นส่วนหนึ่งของการหมกมุ่นอยู่กับสาขาวิชาใดสาขาวิชาหนึ่ง (ระหว่างการศึกษาในสาขาพิเศษของ Compeza) ฉันได้ทำงานในโครงการที่น่าสนใจสิ่งหนึ่งที่ฉันไม่ต้องการฝังไว้ในส่วนลึกของโฟลเดอร์ "Univer" บนฮาร์ดภายนอก ขับ.

โครงการนี้มีชื่อว่า

ยูเอสบีริป

และเป็นยูทิลิตี้คอนโซลโอเพ่นซอร์สขนาดเล็กสำหรับนิติวิทยาศาสตร์ Linux สำหรับการทำงานกับประวัติการเชื่อมต่ออุปกรณ์ USB โปรแกรมนี้เขียนด้วย Python 3 ล้วนๆ (โดยใช้โมดูลของบุคคลที่สาม) และไม่ต้องการการขึ้นต่อกันอื่นนอกเหนือจากล่าม Python 3.x และสองสามบรรทัดจาก

ข้อกำหนด.txt

แก้ไขได้ในบรรทัดเดียวโดยใช้ pip3

ในโพสต์นี้ ผมจะอธิบายความสามารถบางอย่างของซอฟต์แวร์นี้ และทิ้งคู่มือสั้นๆ พร้อมลิงก์ไปยังแหล่งดาวน์โหลด

ดาวน์โหลดรหัส $ python3 usbrip.py

ลิงค์และคำลงท้าย

คุณสามารถรับยูทิลิตี้ได้จาก

GitHub

การขึ้นต่อกันทั้งหมดสำหรับการเปิดตัวและการดำเนินการที่ถูกต้องแสดงอยู่ในรายการ

ข้อกำหนด.txt

ขอบคุณสำหรับความสนใจ!

ป.ล.

ใช่ รูปแบบของแบนเนอร์และข้อความข้อมูลได้รับแรงบันดาลใจจากโครงการ

sqlmap

ในฐานะที่เป็นส่วนหนึ่งของการหมกมุ่นอยู่กับสาขาวิชาใดสาขาวิชาหนึ่ง (ในขณะที่เรียนด้านความปลอดภัยคอมพิวเตอร์โดยเฉพาะ) ฉันได้ทำงานในโครงการความบันเทิงชิ้นหนึ่งที่ฉันไม่ต้องการฝังไว้ในส่วนลึกของโฟลเดอร์ "Univer" ในฮาร์ดไดรฟ์ภายนอก

โครงการนี้มีชื่อว่า ยูเอสบีริปและเป็นยูทิลิตี้คอนโซลโอเพ่นซอร์สขนาดเล็กสำหรับนิติวิทยาศาสตร์ Linux สำหรับการทำงานกับประวัติการเชื่อมต่ออุปกรณ์ USB โปรแกรมนี้เขียนด้วย Python 3 ล้วนๆ (ใช้โมดูลของบุคคลที่สาม) และไม่ต้องการการพึ่งพาอื่นใดนอกจากล่าม Python 3.x และสองสามบรรทัดจาก ข้อกำหนด.txtแก้ไขในบรรทัดเดียวโดยใช้ pip

ในโพสต์นี้ ผมจะอธิบายความสามารถบางอย่างของซอฟต์แวร์นี้ และทิ้งคู่มือสั้นๆ พร้อมลิงก์ไปยังแหล่งดาวน์โหลด

ตัด! (...ฉันหมายถึงคัต!)

บันทึก. ฟังก์ชั่นที่อธิบายไว้ในบทความเกี่ยวข้องกับเวอร์ชันของยูทิลิตี้ ด้านหลัง รุ่นล่าสุดด้วยสารพัดใหม่ๆ มากมาย ฉันแนะนำให้ไปที่คลัง

ภาพหน้าจอ

การรับประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้:


ค้นหา ข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตามตัวระบุรุ่น (PID):

คำอธิบาย

ดังที่คุณทราบ ระบบปฏิบัติการที่ใช้ GNU/Linux นั้นไวต่อการบันทึกเหตุการณ์ประเภทต่างๆ มากและการเชื่อมต่อ/ยกเลิกการเชื่อมต่ออุปกรณ์ USB ก็ไม่มีข้อยกเว้น เมื่อรวมกับข้อมูล "สตรีมข้อความเป็นอินเทอร์เฟซสากล" ของปรัชญา UNIX เกี่ยวกับสิ่งประดิษฐ์ของเหตุการณ์ดังกล่าว (ในระดับรายละเอียดที่แตกต่างกัน) ขึ้นอยู่กับการกระจายสามารถพบได้ในไฟล์ข้อความต่อไปนี้หนึ่งไฟล์ขึ้นไป:
  • /var/log/kern.log*;
  • /var/log/syslog*;
  • /var/log/ข้อความ*;
  • /var/log/dmesg*;
  • /var/log/daemon.log*.
หลักฐานทางนิติวิทยาศาสตร์ยังแสดงให้เราเห็นภาพนี้ในเรื่องนี้ (ไม่สมบูรณ์เล็กน้อย แต่ก็ไม่สำคัญ):

สำหรับการใช้งาน usbrip จะค้นหาสิ่งสากลสำหรับ Linux ทุกรุ่นที่ใช้ Debian (Ubuntu, ลินุกซ์มิ้นท์ฯลฯ) และ RPM (CentOS, Fedora, openSUSE ฯลฯ ) ไฟล์บันทึก ได้แก่ /var/log/syslog* หรือ /var/log/messages* แยกวิเคราะห์เพื่อค้นหาข้อมูลที่จำเป็นและเปิดเผยร่องรอยที่พบ การเชื่อมต่ออุปกรณ์ USB เข้ากับเพลทที่สวยงาม (หรือรายการ - อะไรก็ได้ที่คุณต้องการ)

USBrip ยังสามารถ:

  • สร้างรายการอุปกรณ์ที่ได้รับอนุญาต (เชื่อถือได้) ในรูปแบบของไฟล์ JSON
  • ค้นหา "เหตุการณ์ที่ละเมิด" ตามรายการอุปกรณ์ที่เชื่อถือได้: เหตุการณ์ (การเชื่อมต่อ USB/การตัดการเชื่อมต่อ) ที่เกี่ยวข้องกับอุปกรณ์ USB ที่ไม่ได้ทำเครื่องหมายว่าเชื่อถือได้
  • ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตาม VID (รหัสผู้จำหน่าย) และ/หรือ PID (รหัสผลิตภัณฑ์)

อ้างอิง

รับรายการโมดูลที่มีอยู่:

$ python3 usbrip.py -h
รับรายการโมดูลย่อยที่มีอยู่สำหรับโมดูลเฉพาะ:

$python3 usbrip.py<модуль>-ชม
รับรายชื่อ ตัวเลือกที่ใช้ได้สำหรับโมดูลย่อยเฉพาะ:

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

ไวยากรณ์

$ python3 usbrip.py แบนเนอร์ แสดงแบนเนอร์ยูทิลิตี้บนหน้าจอ $ python3 usbrip.py ประวัติเหตุการณ์ [-q] [-t | -l] [-e] [-n จำนวนเหตุการณ์] [-d วันที่ [วันที่...]] [-c คอลัมน์ [คอลัมน์...]] [-f LOGFILE [LOGFILE...]] ดูการเชื่อมต่อ 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 ตัวละคร [ชาร์จ...]] [-q] [-t | -l] [-e] [-n จำนวนเหตุการณ์] [-d วันที่ [วันที่...]] [-c คอลัมน์ [คอลัมน์...]] [-f LOGFILE [LOGFILE...]] ค้นหา " เหตุการณ์ที่กระทำผิด" " ตามรายการอุปกรณ์ที่เชื่อถือได้ $ python3 usbrip.py ค้นหารหัส [-q] [ --วิด วิด] [--pid PID] [--ออฟไลน์] ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ด้วย VID และ/หรือ PID ในฐานข้อมูลตัวระบุ $ python3 usbrip.py ids ดาวน์โหลด [-q] อัปเดต (ดาวน์โหลด) ฐานข้อมูลตัวระบุอุปกรณ์ USB ในเครื่อง

ตัวเลือก

ตัวเลือกที่รองรับโดยโมดูลย่อย "ประวัติเหตุการณ์", "เหตุการณ์ gen_auth", "การละเมิดเหตุการณ์", "การค้นหารหัส", "การดาวน์โหลดรหัส": -q, --quiet ละเว้นการแสดงแบนเนอร์ ข้อความข้อมูล (สีเขียว) และทำ ไม่ถามคำถามระหว่างดำเนินการ ############################################# ## ############################################################### ตัวเลือกที่สนับสนุนโดย "ประวัติเหตุการณ์", " events gen_auth" submodules ", "การละเมิดเหตุการณ์": -e, --ค้นหาภายนอกเฉพาะอุปกรณ์ 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. ..] รายการไฟล์บันทึก (หากไม่ได้ระบุ ประวัติเหตุการณ์จะถูกค้นหาโดยใช้ไฟล์บันทึกเริ่มต้น: /var/log/syslog* หรือ /var/log/messages* ขึ้นอยู่กับเวอร์ชันของระบบปฏิบัติการ) ##### ######## ########################################### ######## ##################### ตัวเลือกที่สนับสนุนโดยโมดูลย่อย "ประวัติเหตุการณ์", "การละเมิดเหตุการณ์": -t, -- table สร้างเอาต์พุตในรูปแบบของตาราง (หากขนาดหน้าต่างเทอร์มินัลไม่เพียงพอที่จะแสดงตารางได้อย่างถูกต้อง ผลลัพธ์จะถูกสร้างขึ้นโดยอัตโนมัติในรูปแบบของรายการ เมื่อระบุแฟล็ก -t เอาต์พุตจะถูกสร้างขึ้นในรูปแบบของตารางโดยบังคับ) -l, --list สร้างเอาต์พุตเป็นรายการ -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] รายการคอลัมน์ที่จะใช้เมื่อสร้างตาราง (มีผลเฉพาะเมื่อสร้างเอาต์พุตในรูปแบบของตาราง) คีย์ที่อนุญาต: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn" ################################################### ################################## ตัวเลือกที่สนับสนุนโดยโมดูลย่อย "events gen_auth", "การละเมิดเหตุการณ์": - SIGN [SIGN...], --attribute SIGN [SIGN...] รายการคุณลักษณะที่จะใช้ในการสร้างรายการอุปกรณ์ที่ได้รับอนุญาต (รวมถึงเมื่อค้นหา "เหตุการณ์ที่ละเมิด" ในกรณีของ โมดูลย่อย "การละเมิดเหตุการณ์"); คีย์ที่อนุญาต: "vid", "pid", "prod", "manufact", "serial" ################################################### ################################### ตัวเลือกที่รองรับโดยโมดูลย่อย "ids search", "ids download": - -vid รหัสผู้จำหน่าย VID หรือรหัสผู้ผลิตอุปกรณ์ USB (ปกติจะเป็นเลขฐานสิบหก 4 หลัก) --รหัสผลิตภัณฑ์ PID หรือรหัสรุ่นอุปกรณ์ USB (ปกติจะเป็นเลขฐานสิบหก 4 หลัก) --ออฟไลน์ หากระบุ ให้ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ในฐานข้อมูล ข้อมูลตัวระบุจะถูกสร้างโดยไม่ต้องอัพเดตก่อน (ฐานข้อมูล)

ตัวอย่างการใช้งาน

แสดงประวัติการเชื่อมต่อของอุปกรณ์ USB ทั้งหมด ละเว้นแบนเนอร์ ข้อความที่ให้ข้อมูล (สีเขียว) และไม่ต้องถามคำถามระหว่างดำเนินการ (-q, --quite) สร้างเอาต์พุตในรูปแบบของรายการ (-l, -- รายการ) รวมถึงในนั้นประกอบด้วย 100 เหตุการณ์ที่พบล่าสุด (-n จำนวนเหตุการณ์, --number จำนวนเหตุการณ์):
$ python3 usbrip.py ประวัติเหตุการณ์ -ql -n 100
แสดงประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้ (-e, --ภายนอก) สร้างเอาต์พุตในรูปแบบของตารางที่มีฟิลด์ (คอลัมน์) “เชื่อมต่อแล้ว”, “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 "9 ธันวาคม" "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 "( ย่อย ("$", "\r"); พิมพ์ )" > 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) ที่มีฟิลด์ “VID” และ “PID” ของรายการแรก สามอุปกรณ์ที่เชื่อมต่อในวันที่ 26 กันยายน:
$ python3 usbrip.py เหตุการณ์ gen_auth trusted/auth.json -a vid pid -n 3 -d "26 กันยายน"
ค้นหา "เหตุการณ์ผู้กระทำผิด" ในประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้ตามรายการอุปกรณ์ที่เชื่อถือได้ (ที่เชื่อถือได้/auth.json) โดยใช้ช่อง "PID" และสร้างเอาต์พุตในรูปแบบของตารางด้วย "เชื่อมต่อ", " ช่อง VID” และ “PID”:
$ python3 usbrip.py เหตุการณ์การละเมิด trusted/auth.json -a pid -et -c conn vid pid
ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตาม VID และ PID:
$ python3 usbrip.py ค้นหารหัส --vid 0781 --pid 5580
ดาวน์โหลด/อัพเดตฐานข้อมูลรหัสอุปกรณ์ USB (ที่มา):
ดาวน์โหลดรหัส $ python3 usbrip.py

ลิงค์และคำลงท้าย

คุณสามารถรับยูทิลิตี้ได้จาก Github การขึ้นต่อกันทั้งหมดสำหรับการเปิดใช้งานและการดำเนินการที่ถูกต้องจะแสดงอยู่ในรายการ ข้อกำหนด.txt.

ขอบคุณสำหรับความสนใจ!

ป.ล.ใช่ รูปแบบของแบนเนอร์และข้อความข้อมูลได้รับแรงบันดาลใจจากโครงการ sqlmap (*^.^*)

อัปเดต 13/06/2018มีการสอบสวนคดีจริง (?) ที่เกี่ยวข้องกับยูทิลิตี้ของฉันจากบุคคลที่มี Codeby (พูดตามตรงฉันรู้สึกตกใจมาก)

USB - Universal Serial Bus ได้รับการพัฒนาโดยกลุ่มบริษัทต่างๆ โดยมีเป้าหมายในการจัดหาบัสเดี่ยวที่เรียบง่ายสำหรับเชื่อมต่ออุปกรณ์ต่อพ่วง

การออกแบบ USB ช่วยให้อุปกรณ์เชื่อมต่อได้ทันทีโดยใช้แจ็คมาตรฐานสำหรับการเชื่อมต่อ อุปกรณ์ USB ได้แก่ คีย์บอร์ด เมาส์ เครื่องพิมพ์ สแกนเนอร์ ฮาร์ดดิสก์, แฟลชไดรฟ์, กล้อง, โมเด็ม, อะแดปเตอร์เครือข่ายและคอลัมน์ต่างๆ และรายการก็มีเพิ่มขึ้นอย่างต่อเนื่อง

การรองรับ Linux สำหรับอุปกรณ์ USB นั้นค่อนข้างครอบคลุม แต่อุปกรณ์บางอย่างจำเป็นต้องมีไดรเวอร์พิเศษ และอุปกรณ์อื่นๆ ซึ่งส่วนใหญ่เป็นเครื่องพิมพ์และสแกนเนอร์ อาจไม่รองรับหรือรองรับเพียงบางส่วนเท่านั้น

ระบบคอมพิวเตอร์อาจมีตัวควบคุมหรือฮับตั้งแต่หนึ่งตัวขึ้นไปที่ออกแบบมาเพื่อเชื่อมต่ออุปกรณ์ USB หรือฮับอื่น (ภายนอก) ฮับสามารถรองรับอุปกรณ์ได้สูงสุด 7 เครื่อง ซึ่งในทางกลับกันก็สามารถมีฮับเพิ่มเติมได้ ฮับภายใน หน่วยระบบเรียกว่ารูทฮับ โทโพโลยีแบบดาวแต่ละอันสามารถรองรับฮับหรืออุปกรณ์ได้มากถึง 127 รายการ

เมื่อเราพูดว่าพอร์ต USB เราหมายถึงการรองรับ USB ของคอมพิวเตอร์และพอร์ตสำหรับการเชื่อมต่อ ไม่ใช่ที่อยู่พอร์ตภายในที่อุปกรณ์ใช้

การแบ่งชั้นของระบบ USB ช่วยให้โฮสต์สามารถกำหนดคุณลักษณะของอุปกรณ์ USB รวมถึงคลาส ชื่อผู้ผลิต ชื่ออุปกรณ์ ข้อกำหนดแรงดันไฟฟ้า ความเร็ว ระดับการสนับสนุน USB และฟังก์ชันอื่นๆ

โมดูลสนับสนุนอุปกรณ์ Linux USB

ปัจจุบันอุปกรณ์ USB ได้รับการสนับสนุนอย่างสมบูรณ์บน Linux การเปลี่ยนแปลงส่วนใหญ่ปรากฏในสาขาเคอร์เนล 2.6 แม้ว่าจะมีการรองรับบางอย่างแม้แต่ในเคอร์เนล 2.2 ก็ตาม Linux รองรับทั้ง USB 2.0 และข้อกำหนดก่อนหน้า เนื่องจากลักษณะของ USB แบบ hot-plug โดยทั่วไปการสนับสนุนจะดำเนินการผ่านโมดูลเคอร์เนลที่สามารถโหลดหรือยกเลิกการโหลดได้ตามต้องการ

คำสั่ง lspci อนุญาตให้คุณแสดงอุปกรณ์ USB:

Root@localhost:~:# lspci | grep -i usb 00:03.0 คอนโทรลเลอร์ USB: คอนโทรลเลอร์ USB 1.1 ของ Silicon Integrated Systems (rev 0f) 00:03.1 คอนโทรลเลอร์ USB: คอนโทรลเลอร์ USB 1.1 ของ Silicon Integrated Systems (rev 0f) 00:03.3 คอนโทรลเลอร์ USB: คอนโทรลเลอร์ USB 2.0 ของ Silicon Integrated Systems

เอาต์พุตคำสั่งแสดงว่ามีคอนโทรลเลอร์ USB 3 ตัวในระบบ

การใช้คำสั่ง 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 เรา (0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(ฮับ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: ผู้ขาย=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(ฮับ) ย่อย=00 Prot=00 ไดรเวอร์=ฮับ E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms T: บัส=02 Lev=00 Prnt=00 พอร์ต=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 3 B: จัดสรร= 28/900 us (3%), #Int= 2, #Iso= 0 D: Ver= 1.10 Cls=09( ฮับ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: ผู้ขาย=1d6b ProdID=0001 Rev= 2.06 S: ผู้ผลิต=Linux 2.6.29.6 ohci_hcd S: ผลิตภัณฑ์=โฮสต์คอนโทรลเลอร์ 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(ฮับ) Sub=00 Prot=00 ไดรเวอร์=ฮับ E: โฆษณา =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: ผู้ขาย=045e ProdID=00db Rev= 1.73 S: ผู้ผลิต=Microsoft S: ผลิตภัณฑ์=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 ไดรเวอร์=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 ไดรเวอร์=usbhid E: Ad=82(I) Atr =03(Int.) MxPS= 8 Ivl=10ms T: Bus=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(ฮับ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: ผู้ขาย=1d6b ProdID=0002 Rev= 2.06 S: ผู้ผลิต= Linux 2.6.29.6 ehci_hcd S: ผลิตภัณฑ์=ตัวควบคุมโฮสต์ EHCI S: หมายเลขซีเรียล=0000:00:03.3 C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA I:* If#= 0 Alt= 0 #EPs = 1 Cls=09(ฮับ) ย่อย=00 Prot=00 ไดรเวอร์=ฮับ E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

ในรายการ Spd=480 สอดคล้องกับบัส USB 2.0 และ Spd=12 สอดคล้องกับอุปกรณ์ USB 1.1 นอกจากนี้ ในรายการ คุณจะเห็นว่าขณะนี้มีอุปกรณ์ USB 1 เครื่องเชื่อมต่อกับระบบ - Microsoft Natural Ergonomic Keyboard 400 (Spd=1.5)

โดยปกติแล้วฉันพิมพ์ข้อความนี้บนแป้นพิมพ์นี้

ลำดับชั้นของการเชื่อมต่ออุปกรณ์ USB สามารถดูได้โดยใช้คำสั่ง lsusb พร้อมด้วยตัวเลือก -t:

Root@localhost:~:# lsusb -t Bus# 3 `-Dev# 1 ผู้ขาย 0x1d6b ผลิตภัณฑ์ 0x0001 Bus# 2 `-Dev# 1 ผู้ขาย 0x1d6b ผลิตภัณฑ์ 0x0001 `-Dev# 2 ผู้ขาย 0x045e ผลิตภัณฑ์ 0x00db Bus# 1 `-Dev# ผู้ขาย 1 ราย 0x1d6b ผลิตภัณฑ์ 0x0002

การแสดงข้อมูลเกี่ยวกับเฉพาะ อุปกรณ์ยูเอสบีสามารถรับได้ด้วยคำสั่งต่อไปนี้:

Root@localhost:~:# lsusb -vd 0x045e:0x00db อุปกรณ์บัส 002 002: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0 Device Descriptor: 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 bmAttribute s 0xa0 (ขับเคลื่อนด้วยบัส) อินเทอร์เฟซ MaxPower 100mA การปลุกระยะไกล ตัวอธิบาย: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 0 ** ไม่รู้จัก: 09 21 11 01 00 01 22 3c 00 Endpoint Descriptor: bLength 7 bDe scriptorType 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 ** UN ได้รับการยอมรับ : 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" บนฮาร์ดภายนอก ขับ.

โครงการนี้มีชื่อว่า ยูเอสบีริปและเป็นยูทิลิตี้คอนโซลโอเพ่นซอร์สขนาดเล็กสำหรับนิติวิทยาศาสตร์ Linux สำหรับการทำงานกับประวัติการเชื่อมต่ออุปกรณ์ USB โปรแกรมนี้เขียนด้วย Python 3 ล้วนๆ (โดยใช้โมดูลของบุคคลที่สาม) และไม่ต้องการการขึ้นต่อกันอื่นนอกเหนือจากล่าม Python 3.x และสองสามบรรทัดจาก ข้อกำหนด.txtแก้ไขในบรรทัดเดียวโดยใช้ pip3

ในโพสต์นี้ ผมจะอธิบายความสามารถบางอย่างของซอฟต์แวร์นี้ และทิ้งคู่มือสั้นๆ พร้อมลิงก์ไปยังแหล่งดาวน์โหลด

ตัด! (...ฉันหมายถึงคัต!)

ภาพหน้าจอ

การรับประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้:


การค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตามตัวระบุรุ่น (PID):

คำอธิบาย

ดังที่คุณทราบ ระบบปฏิบัติการที่ใช้ GNU/Linux นั้นไวต่อการบันทึกเหตุการณ์ประเภทต่างๆ มากและการเชื่อมต่อ/ยกเลิกการเชื่อมต่ออุปกรณ์ USB ก็ไม่มีข้อยกเว้น เมื่อรวมกับหนึ่งในข้อมูล "สตรีมข้อความเป็นอินเทอร์เฟซสากล" ของปรัชญา UNIX เกี่ยวกับสิ่งประดิษฐ์ของเหตุการณ์ดังกล่าว (ในระดับรายละเอียดที่แตกต่างกัน) ขึ้นอยู่กับการแจกจ่าย สามารถพบได้ในไฟล์ต่อไปนี้หนึ่งไฟล์ขึ้นไป:
  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/ข้อความ* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .
หลักฐานทางนิติวิทยาศาสตร์ยังแสดงให้เราเห็นภาพนี้ในเรื่องนี้ (ไม่สมบูรณ์เล็กน้อย แต่ก็ไม่สำคัญ):

ในการทำงาน usbrip ค้นหาไฟล์บันทึกที่เป็นสากลสำหรับ Linux ทุกรุ่นที่ใช้ Debian (Ubuntu, Linux Mint ฯลฯ) และ RPM (CentOS, Fedora, openSUSE ฯลฯ) กล่าวคือ: /var/log/syslog* หรือ /var/log/messages* แยกวิเคราะห์เพื่อค้นหาข้อมูลที่จำเป็นและเปลี่ยนร่องรอยการเชื่อมต่ออุปกรณ์ USB ที่พบให้เป็นแผ่นที่สวยงาม (หรือรายการ - อะไรก็ได้ที่คุณต้องการ)

USBrip ยังสามารถ:

  • สร้างรายการอุปกรณ์ที่ได้รับอนุญาต (เชื่อถือได้) ในรูปแบบของไฟล์ JSON
  • ค้นหา "เหตุการณ์ที่ละเมิด" ตามรายการอุปกรณ์ที่เชื่อถือได้: เหตุการณ์ (การเชื่อมต่อ USB/การตัดการเชื่อมต่อ) ที่เกี่ยวข้องกับอุปกรณ์ USB ที่ไม่ได้ทำเครื่องหมายว่าเชื่อถือได้
  • ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตาม VID (รหัสผู้จำหน่าย) และ/หรือ PID (รหัสผลิตภัณฑ์)

อ้างอิง

รับรายการโมดูลที่มีอยู่:

$ python3 usbrip.py -h
รับรายการโมดูลย่อยที่มีอยู่สำหรับโมดูลเฉพาะ:

$python3 usbrip.py<модуль>-ชม
รับรายการตัวเลือกที่ใช้ได้สำหรับโมดูลย่อยเฉพาะ:

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

ไวยากรณ์

$ python3 usbrip.py แบนเนอร์ $ python3 usbrip.py ประวัติเหตุการณ์ [-q] [-t | -l] [-e] [-n จำนวนเหตุการณ์] [-d วันที่ [วันที่ ...]] [-c คอลัมน์ [คอลัมน์ ...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py เหตุการณ์ gen_auth<ВЫХОДНОЙ_ФАЙЛ.JSON>[-q] [-e] [-n จำนวนเหตุการณ์] [-d วันที่ [วันที่ ...]] [-f LOGFILE [LOGFILE...]] การละเมิดเหตุการณ์ $ python3 usbrip.py<ВХОДНОЙ_ФАЙЛ.JSON>[-q] [-t | -l] [-e] [-n จำนวนเหตุการณ์] [-d วันที่ [วันที่ ...]] [-c คอลัมน์ [คอลัมน์ ...]] [-f LOGFILE [LOGFILE...]] $ python3 usbrip .py ids ค้นหา [-q] [--vid VID] [--pid PID] [--ออฟไลน์] $ python3 usbrip.py ids ดาวน์โหลด [-q]

ตัวเลือก

ตัวเลือกที่รองรับโดยโมดูลย่อย "ประวัติเหตุการณ์", "เหตุการณ์ gen_auth", "การละเมิดเหตุการณ์", "การค้นหารหัส", "การดาวน์โหลดรหัส": -q, --quiet ละเว้นการแสดงแบนเนอร์ ข้อความข้อมูล (สีเขียว) และทำ ไม่ถามคำถามระหว่างดำเนินการ ############################################# ## ############################################################### ตัวเลือกที่สนับสนุนโดย "ประวัติเหตุการณ์", " events gen_auth" submodules ", "การละเมิดเหตุการณ์": -e, --ค้นหาภายนอกเฉพาะอุปกรณ์ 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. ..] รายการไฟล์บันทึก (หากไม่ได้ระบุ ประวัติเหตุการณ์จะถูกค้นหาโดยใช้ไฟล์บันทึกเริ่มต้น: /var/log/syslog* หรือ /var/log/messages* ขึ้นอยู่กับเวอร์ชันของระบบปฏิบัติการ) ##### ######## ########################################### ######## ##################### ตัวเลือกที่สนับสนุนโดยโมดูลย่อย "ประวัติเหตุการณ์", "การละเมิดเหตุการณ์": -t, -- table สร้างเอาต์พุตในรูปแบบของตาราง (หากขนาดหน้าต่างเทอร์มินัลไม่เพียงพอที่จะแสดงตารางได้อย่างถูกต้อง ผลลัพธ์จะถูกสร้างขึ้นโดยอัตโนมัติในรูปแบบของรายการ เมื่อระบุแฟล็ก -t เอาต์พุตจะถูกสร้างขึ้นในรูปแบบของตารางโดยบังคับ) -l, --list สร้างเอาต์พุตเป็นรายการ -c COLUMN [COLUMN...], --column COLUMN [COLUMN.. .] รายการคอลัมน์ที่จะใช้เมื่อสร้างตาราง (มีผลเฉพาะเมื่อสร้างเอาต์พุตในรูปแบบของตาราง) คีย์ที่อนุญาต: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn" ################################################### ################################### ตัวเลือกที่รองรับโดยโมดูลย่อย "ids search", "ids download": - -vid รหัสผู้จำหน่าย VID หรือรหัสผู้ผลิตอุปกรณ์ USB (ปกติจะเป็นเลขฐานสิบหก 4 หลัก) --รหัสผลิตภัณฑ์ PID หรือรหัสรุ่นอุปกรณ์ USB (ปกติจะเป็นเลขฐานสิบหก 4 หลัก) --ออฟไลน์ หากระบุ ให้ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ในฐานข้อมูล ข้อมูลตัวระบุจะถูกสร้างโดยไม่ต้องอัพเดตก่อน (ฐานข้อมูล)

ตัวอย่างการใช้งาน

แสดงประวัติการเชื่อมต่อของอุปกรณ์ USB ทั้งหมด ละเว้นแบนเนอร์ ข้อความที่ให้ข้อมูล (สีเขียว) และไม่ต้องถามคำถามระหว่างดำเนินการ (-q, --quite) สร้างเอาต์พุตในรูปแบบของรายการ (-l, -- รายการ) รวมถึงในนั้นประกอบด้วย 100 เหตุการณ์ที่พบล่าสุด (-n จำนวนเหตุการณ์, --number จำนวนเหตุการณ์):
$ python3 usbrip.py ประวัติเหตุการณ์ -ql -n 100
แสดงประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้ (-e, --ภายนอก) สร้างเอาต์พุตในรูปแบบของตารางที่มีฟิลด์ (คอลัมน์) “เชื่อมต่อแล้ว”, “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 "9 ธันวาคม" "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 "( ย่อย ("$", "\r"); พิมพ์ )" > 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) ที่มีอุปกรณ์แรก สามอุปกรณ์ที่เชื่อมต่อในวันที่ 26 กันยายน:
$ python3 usbrip.py เหตุการณ์ gen_auth trusted/auth.json -n 3 -d "26 กันยายน"
ค้นหา "เหตุการณ์ที่ละเมิด" ในประวัติการเชื่อมต่อของอุปกรณ์ USB แบบถอดได้ตามรายการอุปกรณ์ที่เชื่อถือได้ (trusted/auth.json) และสร้างเอาต์พุตในรูปแบบของตารางด้วย "Connected", "VID" และ "PID" ” ฟิลด์:
$ python3 usbrip.py เหตุการณ์การละเมิด trusted/auth.json -et -c conn vid pid
การค้นหาข้อมูลเพิ่มเติมเกี่ยวกับอุปกรณ์ USB ตาม VID และ PID:
$ python3 usbrip.py ค้นหารหัส --vid 0781 --pid 5580
ดาวน์โหลด/อัพเดตฐานข้อมูลรหัสอุปกรณ์ USB (ที่มา

คุณได้เชื่อมต่อแฟลชไดรฟ์ USB หรือแป้นพิมพ์หรือเมาส์เข้ากับ Linux PC ของคุณ แต่ไม่มีอะไรเกิดขึ้น

เกิดอะไรขึ้น? เหตุใด Linux PC ของคุณตรวจไม่พบอุปกรณ์ เป็น Linux หรืออุปกรณ์ USB ของคุณหยุดทำงานหรือไม่

USB ไม่ทำงานใน Ubuntu?

ดิสก์ไดรฟ์ เครื่องอ่านการ์ดหน่วยความจำ โทรศัพท์ เครื่องเล่นมีเดีย และ อุปกรณ์ต่อพ่วงมัลติมีเดีย...พวกมันมีประโยชน์ทั้งหมด แต่ถ้ามีปัญหากับพอร์ต USB หรือไดรเวอร์ของระบบ มันก็จะไม่ทำงาน สิ่งนี้อาจทำให้คุณหงุดหงิดเป็นพิเศษหากคุณใช้แป้นพิมพ์หรือเมาส์ Bluetooth (ที่มีดองเกิล USB) เนื่องจากคุณต้องหาทางเลือกอื่นสำหรับ USB แบบมีสาย

อย่างไรก็ตาม มันอาจไม่ใช่ท่าเรือที่ตายแล้ว อุปกรณ์ USB ที่คุณใช้อยู่อาจมีข้อผิดพลาดและตรวจไม่พบ

การแก้ไขปัญหา USB อาจเป็นเรื่องที่ท้าทาย แต่ปัญหาเหล่านี้ไม่ใช่ปัญหาที่เป็นไปไม่ได้ที่จะวินิจฉัยและทำการแก้ไขที่จำเป็น

สำหรับการกำจัด ปัญหาเกี่ยวกับยูเอสบีบน Linux มีห้าขั้นตอนที่ต้องปฏิบัติตาม:

  1. ตรวจสอบให้แน่ใจว่าตรวจพบพอร์ต USB
  2. ผลิตสิ่งที่จำเป็น งานปรับปรุงไปยังท่าเรือ
  3. แก้ไขหรือซ่อมแซมอุปกรณ์ USB
  4. รีบูต ระบบปฏิบัติการลินุกซ์
  5. ยืนยันความพร้อมใช้งานของไดรเวอร์อุปกรณ์

มาดูกันทีละอย่างและเรียนรู้วิธีการทำงานกับอุปกรณ์ USB ที่ยุ่งยากใน Linux

1. อุปกรณ์ของคุณตรวจพบโดย Linux หรือไม่?

สิ่งแรกที่ต้องตรวจสอบเมื่อเสียบอุปกรณ์ USB เข้ากับคอมพิวเตอร์ Linux คือตรวจพบหรือไม่ การตรวจจับอุปกรณ์ USB มักจะไม่ใช่ด้วยวาจาหรือเสียง (ใน Linux Deepin ไม่ใช่) เช่นเดียวกับใน Windows หรือ macOS ซึ่งหมายความว่าคุณมักจะต้องตรวจสอบว่าอุปกรณ์นั้นถูกจับโดยระบบปฏิบัติการหรือไม่

โชคดีที่มันง่าย

ขั้นแรก ถอดปลั๊กอุปกรณ์ USB ที่คุณต้องการ จากนั้นเปิดหน้าต่างเทอร์มินัลแล้วป้อนคำสั่ง » รายการ USB:

คำสั่ง dmesg จะแสดงรายการอุปกรณ์ USB ที่เชื่อมต่ออยู่ในระบบของคุณ นอกจากนี้ยังจะรวมถึงฮาร์ดแวร์ที่ไม่ใช่ USB และน่าเสียดายที่ให้ข้อมูลจำนวนมาก เพื่อตอบโต้สิ่งนี้ คุณสามารถลอง:

ดูเหมือนว่าจะเป็นการผสมผสานระหว่างคำสั่ง dmesg และ lsusb โดยแสดงรายการฮาร์ดแวร์ USB ที่เชื่อมต่อซึ่งมีข้อมูลที่เพียงพอที่จะระบุได้

USB ที่คุณเชื่อมต่ออยู่ในรายการที่นี่หรือไม่ ถ้าไม่เช่นนั้นพอร์ตอาจเสียหายหรือมีปัญหากับอุปกรณ์ ในทำนองเดียวกัน อุปกรณ์อาจเข้ากันไม่ได้กับ Linux

2. วิธีตรวจสอบพอร์ต USB

หากอุปกรณ์ USB ไม่ปรากฏขึ้น อาจเป็นเพราะปัญหากับพอร์ต USB

วิธีที่ดีที่สุดในการทดสอบคือใช้พอร์ต USB อื่นบนคอมพิวเตอร์ของคุณ หากตรวจพบฮาร์ดแวร์ USB แสดงว่าคุณมีปัญหากับพอร์ต USB พอร์ตใดพอร์ตหนึ่ง

หากไม่มีพอร์ต USB อื่น คุณต้องลองใช้อุปกรณ์ USB บนพีซีหรือแล็ปท็อปเครื่องอื่น อย่างไรก็ตามสิ่งนี้อาจไม่เป็นเช่นนั้น ตัวเลือกที่เหมาะเนื่องจากอีกวิธีหนึ่งคือคุณสามารถใช้คอมพิวเตอร์ Windows หรือ macOS ได้ และในกรณีนี้ อุปกรณ์ USB บางตัวไม่สามารถใช้ใน Linux ได้ ดังนั้นจึงเป็นการยากที่จะระบุได้ว่าอะไรเป็นสาเหตุของปัญหา ไม่ว่าจะเป็นอุปกรณ์ USB หรือพอร์ต USB

เพื่อผลลัพธ์ที่ดีที่สุด ให้ใช้ฮาร์ดแวร์ที่เข้ากันได้กับ Linux ทุกครั้งที่ทำได้เมื่อแก้ไขปัญหาอุปกรณ์ USB

3. แก้ไขฮาร์ดแวร์ USB ที่เสียหาย

หากฮาร์ดแวร์ USB ของคุณเสีย คุณมีสองทางเลือก: แก้ไขหรือส่งคืน

การแก้ไขมักเกี่ยวข้องกับการตรวจสอบ ช่องเสียบยูเอสบีรวมถึงอุปกรณ์ที่ใช้งานไม่ได้ในปัจจุบัน การแก้ไขจะเน้นไปที่จุดศูนย์กลางเสมอ สายยูเอสบีและพอร์ตบนคอมพิวเตอร์ของคุณ โดยปกติสามารถเปลี่ยนสาย USB ได้ แต่สามารถซ่อมแซมพอร์ต USB ได้

การตรวจสอบฮาร์ดแวร์ USB ทางกายภาพเป็นความคิดที่ดี สายเคเบิลต้องแข็งแรงไม่มีขาด และส่วนโลหะต้องยึดให้แน่น

ในขณะเดียวกัน ควรทดสอบพอร์ต USB โดยปิดและถอดปลั๊กพีซี ตรวจสอบว่าพอร์ตมีความปลอดภัยและสั่นคลอน พอร์ต USBเป็นสัญญาณบ่งบอกถึงการสึกหรอของอุปกรณ์

หากพอร์ต USB หลวม คุณสามารถบัดกรีกลับเข้าที่ได้ แน่นอนว่าคุณควรรู้วิธีบัดกรีอยู่แล้ว อย่าพยายามทำงาน DIY โดยไม่มีประสบการณ์มาก่อน

นอกจากนี้ ให้ตรวจสอบพอร์ต USB ว่ามีฝุ่นและสิ่งสกปรกหรือไม่ โดยเฉพาะที่ด้านหลังของคอมพิวเตอร์ซึ่งมีฝุ่นสะสมเป็นประจำ ฝุ่นเป็นศัตรูตัวฉกาจของพีซี ดังนั้นจึงคุ้มค่าที่จะรักษาระบบของคุณให้อยู่ในสภาพแวดล้อมที่ปราศจากฝุ่น ฝุ่นสามารถเข้าไปในพีซีของคุณผ่านทางพอร์ต USB ใช้เวลาในการรักษาพอร์ตเหล่านี้ให้สะอาด ใช้ลมอัดเพื่อกระจายฝุ่นและสิ่งสกปรก

คุณสามารถคืนอุปกรณ์ USB ของคุณได้หรือไม่? ถ้าเป็นของใหม่ก็น่าจะได้ ปัญหาคือว่าร้านค้าไม่น่าจะยอมรับการคืนสินค้าเว้นแต่จะทำเครื่องหมายไว้อย่างชัดเจนว่าใช้ Linux

4. รีบูต Linux เพื่อแก้ไขพอร์ต USB

ในบางกรณี เช่น หากคุณใช้แล็ปท็อป ปัญหาด้านพลังงานอาจส่งผลต่อความสามารถในการตรวจจับอุปกรณ์ USB ตัวเลือกระงับอัตโนมัติมีจุดมุ่งหมายเพื่อลดการใช้พลังงานบนแล็ปท็อป Linux แต่อาจส่งผลเสียได้

แล้วคุณจะทำอย่างไร?

ตรวจสอบก่อนว่าการระงับอัตโนมัติทำให้เกิดปัญหาหรือไม่ คุณสามารถทำได้โดยการรีสตาร์ทคอมพิวเตอร์ หากอุปกรณ์ USB กำลังทำงานอยู่ พอร์ต USB นั้นจะได้รับพลังงาน

ขั้นตอนต่อไปคือการทำให้แน่ใจว่าสิ่งนี้จะไม่เกิดขึ้นอีก เทคนิคต่อไป บรรทัดคำสั่งมีไว้สำหรับ Ubuntu 18.10 ดังนั้นโปรดตรวจสอบขั้นตอนที่ถูกต้องในการแจกจ่าย Linux ที่คุณต้องการ

เปิดหน้าต่างเทอร์มินัลแล้วพิมพ์:

cat /sys/module/usbcore/parameters/autosuspend

ดูนี่:

GRUB_CMDLINE_LINUX_DEFAULT = "สาดเงียบ"

GRUB_CMDLINE_LINUX_DEFAULT = "สาดเงียบ"