USB Raw Gadget, μια ενότητα για τον πυρήνα που επιτρέπει την εξομοίωση συσκευών USB

Gadget USB Raw

Ήδη σε μερικές περιπτώσεις εδώ στο blog έχουμε μιλήσει για τη δουλειά που έκανε ο Andrey Konovalov (προγραμματιστής Google) στο Linux, από την εργασία του στον έγκαιρο εντοπισμό βλαβών στα προγράμματα οδήγησης USB του πυρήνα Linux και επίσης σε συσκευές Wifi.

Τώρα εργάζεται επί του παρόντος την ανάπτυξη μιας νέας λειτουργικής μονάδας για το Linux Kernel που έχει ονομάσει "USB Raw Gadget" που περιγράφει ως βοηθητικό πρόγραμμα που επιτρέπει την εξομοίωση συσκευών USB στο χώρο του χρήστη.

εκτός αυτού αναφέρει ότι μια εφαρμογή εξετάζεται για τη συμπερίληψη αυτής της λειτουργικής μονάδας στον κύριο πυρήνα Linux. Το Google Raw Gadget χρησιμοποιείται ήδη από την Google για την απλοποίηση των ασαφών δοκιμών της στοίβας πυρήνα USB με το κιτ εργαλείων syzkaller.

Αρχικά χρησιμοποιούσα το GadgetFS (μαζί με τη μονάδα Dummy HCD / UDC) για να μιμηθώ συσκευές USB για fuzzing, αλλά μετά μεταφέρθηκα σε μια προσαρμοσμένη γραπτή διεπαφή

Το κίνητρο για την εφαρμογή μιας διαφορετικής διεπαφής ήταν να παρέχει άμεση και κάπως ακατέργαστη πρόσβαση στο επίπεδο Gadget USB για χώρο χρήστη, όπου κάθε αίτημα USB μεταβιβάζεται στον χώρο χρήστη για απάντηση.

Σχετικά με το USB Raw Gadget

Η ενότητα φροντίζει να προσθέσει μια νέα διεπαφή προγραμματισμός στο υποσύστημα του πυρήνα ονομάζεται "USB Gadget" και το οποίο αναπτύσσεται ως εναλλακτική λύση για το GadgetFS.

Η δημιουργία ενός νέου API οφείλεται στην ανάγκη για άμεση και χαμηλού επιπέδου πρόσβαση στο υποσύστημα Gadget USB από το χώρο χρήστη, επιτρέποντας την επεξεργασία όλων των πιθανών αιτημάτων USB (το GadgetFS επεξεργάζεται από μόνα του ορισμένα αιτήματα, χωρίς να το μεταφέρει στο χώρο χρήστη).

Το USB Raw Gadget ελέγχεται μέσω της συσκευής / dev / raw-gadget κατ 'αναλογία με / dev / gadget στο GadgetFS, αλλά χρησιμοποιείται μια διεπαφή που βασίζεται σε ioctl (), αντί για ψευδο-FS, για την αλληλεπίδραση.

Εκτός από την άμεση επεξεργασία όλων των αιτημάτων USB από μια διαδικασία στο χώρο του χρήστη, η νέα διεπαφή έχει επίσης τη δυνατότητα να επιστρέφει οποιαδήποτε δεδομένα ως απόκριση σε ένα αίτημα USB (το GadgetFS ελέγχει την ορθότητα των περιγραφών USB και φιλτράρει ορισμένες αποκρίσεις, οι οποίες παρεμβαίνουν εντοπισμός σφαλμάτων κατά τη δοκιμή εκκαθάρισης στοίβας USB).

Το USB Raw Gadget σάς επιτρέπει επίσης να επιλέξετε μια συγκεκριμένη συσκευή UDC (Πρόγραμμα οδήγησης συσκευής USB) και ένα πρόγραμμα οδήγησης για σύνδεση, ενώ το GadgetFS συνδέεται με την πρώτη διαθέσιμη συσκευή UDC.

Για διαφορετικά UDC, τα προβλέψιμα ονόματα τελικών σημείων αντιστοιχίζονται σε διαφορετικούς τύπους ξεχωριστών καναλιών επικοινωνίας σε μία μόνο συσκευή.

Τέλος, εάν θέλετε να μάθετε περισσότερα σχετικά με αυτό, μπορείτε να ελέγξετε τις λεπτομέρειες, καθώς και το αρχείο καταγραφής των αλλαγών που πραγματοποιήθηκαν στο USB Raw Gadget Στον ακόλουθο σύνδεσμο.

Πώς να εγκαταστήσετε τη μονάδα Raw Gadget USB στο Linux;

Για όσους ενδιαφέρονται να δοκιμάσουν αυτήν την ενότητα στο σύστημά τους, μπορούν να το κάνουν ακολουθώντας τις οδηγίες που περιγράφονται εδώ.

Για Dummy HCD / UDC (μια μονάδα που διαμορφώνει εικονικές συσκευές USB και ελεγκτές κεντρικού υπολογιστή που είναι συνδεδεμένες μεταξύ τους εντός του πυρήνα). Πρέπει να ανοίξουμε ένα τερματικό και σε αυτό θα πληκτρολογήσουμε την ακόλουθη εντολή:

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

Με αυτό θα αποκτήσουμε το φάκελο με τις ενότητες που πρόκειται να μεταγλωττίσουμε εκτελώντας την ακόλουθη εντολή στο τερματικό:

cd dummy_hcd

make

Και προχωράμε στην εγκατάσταση με:

./insmod.sh

Σε περίπτωση που θέλουμε να ενημερώσουμε την ενότητα, το κάνουμε με:

./update.sh

Τώρα για όσους θέλουν να εγκαταστήσουν τη μονάδα πυρήνα. Σε ένα τερματικό θα λάβουμε τα απαραίτητα αρχεία για αυτό εκτελώντας την ακόλουθη εντολή:

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

Με αυτό θα αποκτήσουμε το φάκελο με τις ενότητες που πρόκειται να μεταγλωττίσουμε εκτελώντας την ακόλουθη εντολή στο τερματικό:

cd dummy_hcd

make

Και προχωράμε στην εγκατάσταση με:

./insmod.sh

Σε περίπτωση που θέλουμε να ενημερώσουμε την ενότητα, το κάνουμε με:

./update.sh

Μπορείτε να ελέγξετε την εργασία τον ακόλουθο σύνδεσμο. 


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: AB Internet Networks 2008 SL
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.