USB hack par Reverse Engineering (7 / 12 étapes)

Étape 7: Quels messages à envoyer ?

Maintenant nous pouvons utiliser Python + LibUSB pour envoyer des paquets de point de terminaison de contrôle avec la commande

ctrl_transfer (bmRequestType, bmRequest, wValue, wIndex, nBytes)

Cette commande peut faire origine et d’accueil en fonction de ce que bmRequestType dit (entrée ou sortie). Pourtant, il y a beaucoup d’options ici. Pour envoyer la commande de droite, vous avez besoin de savoir le RequestType et la droite demande et ther droit valeur ainsi que l’Index et le nombre d’octets à lire ou à écrire.

Si nous étions totalement nous-mêmes, nous commencerions en essayant de lire les données de l’appareil. Cela signifie que nous devons d’abord définir le RequestType

Direction Type destinataire
D7 D6 D5 D4 D3 D2 D1 D0
Pour bmRequestType la valeur passée est très structurée, donc ce n’est pas aussi difficile à deviner. (Voir lvr.com pour plus d’informations)

Bits 2, 3 et 4 sont réserves donc définir sur 0.
La direction passe par bit #7, 0 est un « Ecrire » sorti de l’appareil, 1 est une « lecture » de l’appareil
Le type de message est deux bits, 0 = normal, 1 = classe, 2 = Vendor, 3 = réservé. Pour de nombreux périphériques qui sont non standards, vous voudrez probablement 2 pour le type de fournisseur. Si c’est un type de dispositif, comme une caméra ou un micro, plus standard, essayez 0 ou 1. 3 n’est pas utilisée
Les deux derniers bits sont usd pour déterminer le destinataire du message 0 = périphérique, 1 = Interface, 2 = point de terminaison, 3 = autre. Aller avec 0 pour commencer, vous pouvez essayer 2 s’il existe des autres points de terminaison
La chose la plus sûre à faire est lire les données (pas moyen de remplacer quoi que ce soit ou de configurer) vous pouvez le faire en envoyant des paquets avec 0b11000000 (données de fournisseur de lecture du périphérique) = 0xC0.

Si je devais écrire un fuzzer, je commencerais par la définition d’Index 0 et itération sur toutes les valeurs d’octets (255 valeurs différentes) de bmRequest et les premières centaines wValues peu. Son joli coffre juste lire des données aléatoires à un périphérique USB. Commencez par lire un octet pour voir si quelque chose se présente, puis augmentez la valeur

importation usb.core
importation usb.util
import sys

# trouver notre dispositif
dev = usb.core.find (idVendor = 0x045e, idProduct = 0x02B0)

# a été trouvé ?
Si aucune n’est dev :
générer ValueError ("périphérique non trouvé")

# définir la configuration active. Sans argument, la première
# configuration sera celle active
dev.set_configuration()

# Let's fuzz autour !

# Permet de démarrer en lisant 1 octet de l’appareil à l’aide de requêtes différentes
# bRequest est un octet, donc il y a 255 valeurs différentes
pour bRequest dans range(255) :
Essayez :
RET = dev.ctrl_transfer (0xC0, bRequest, 0, 0, 1)
Print « bRequest », bRequest
imprimer le ret
sauf :
# Impossible d’obtenir des données pour cette demande
Pass

Ressemble à la demande de valeurs 0, 5, 16, 50, 54, 64, 80 et 112 que retournent toutes une sorte de données. Le reste n’a rien à lire

Ensuite, nous allons essayer de lire plus de données en changeant le dernier argument à 100 octets
OK beaucoup de données, mais ce que cela signifie ? C’est où quelques devinettes basées sur l’appareil lui-même me serait utile. Je suis paresseux terriblement bien et si une option pour éviter beaucoup de conjectures, je vais le prendre !

Articles Liés

Construire un chargeur d’USB alimenté par batterie

Construire un chargeur d’USB alimenté par batterie

ce guide vous guidera dans la construction d'un chargeur de batterie pour n'importe quel dispositif qui recharge via une connexion USB standard, par exemple les téléphones portables, iPods, etc..Pièces nécessaires :1. pile 9V2. + 5V (. 7285) fixe le
Serveur NAS de finalement grave Bus (USB) propulsé par Raspberry Pi:)

Serveur NAS de finalement grave Bus (USB) propulsé par Raspberry Pi:)

L'histoire vraie de la vie après la mort d'une jarre à biscuitsÉtape 1: Manger des biscuits, partager le reste avec d'autres:)Etape 2: Couper un grand assez ensemble sur la face arrière, où l'on peuvent sortir de filsMalheureusement, ces boîtes en ét
Clé USB hacked

Clé USB hacked

j'ai eu un nouveau téléphone qui est Samsung Galaxy sur 7 et c'est très moins de mémoire. J'ai donc décidé d'acheter une clé USB OTG qui m'a coûté 500 roupies. Mais j'ai beaucoup de clé USB. Maintenant, ils ne sont pas d'une quelconque utilité. J'ai
USB alimenté par la lumière mystique

USB alimenté par la lumière mystique

cette instructable vous montrera comment créer facilement une Lumière mystique alimenté par USB à l'aide de pièces facilement disponibles et peu coûteux.  Non seulement est-ce facile à faire mais c'est amusant d'expérimenter et de créer des variation
XBOX 360 contrôleur USB Hack

XBOX 360 contrôleur USB Hack

je fais ce hack parce que mon fils était cassé et j'ai ne trouvé aucun fil sur Ebay.Donc j'ai souder un fil USB sur le contrôleur.Tu as besoin de:1 x USB fils1 x tournevis1 x fer à souder1 x à souder1 x colleÉtape 1: Ouvrez le contrôleur Ouvrir le co
USB alimenté par système d’éclairage Frontal vélo

USB alimenté par système d’éclairage Frontal vélo

Salutdans ce Instructable simple, je vais vous montrer comment faire votre propre frontal alimenté par USB, éclairage pour votre vélo, donc éliminer l'utilisation de piles non rechargeables et économisant environ 80€ en n'achetant ne pas une fabriqué
Gambario de rouge cerise (usb) - Acuario para camarones Con luz USB

Gambario de rouge cerise (usb) - Acuario para camarones Con luz USB

El otro día Iba caminando por la vida, cuando de repente me tope con ONU acuario. Tenían un montón de cosas, peces de todos los colores, tortugas, caracoles y algo que me llamo mucho la atención, Camarones rouge cerise.Se veían muy apenas, eran peque
Concentrateur USB, hack de puissance

Concentrateur USB, hack de puissance

pour pouvoir utiliser un disque dur externe avec le Pi vous avez besoin d'alimentation externe. Avec ce hack, vous serez en mesure d'alimenter aussi bien la Pi et le disque dur avec le concentrateur USB.Mise à jour : mise sous tension de votre ancien
Comment faire pour réveiller le PC via le port USB - Hack

Comment faire pour réveiller le PC via le port USB - Hack

La décision de quitter le circuit d'alimentation du port USB activé lorsque le système est ou non (« Dormir » / « Suspend to RAM ») est à gauche jusqu'à la carte mère BIOS/firmware.Il peut même avoir une option du BIOS, vous pouvez configurer à cet e
Haut-parleurs, avec un chargeur usb alimenté par la batterie

Haut-parleurs, avec un chargeur usb alimenté par la batterie

c'est mon premier instructable, si patient avec moi là-dessus. Je voulais construire un système d'enceintes que je serais en mesure de prendre avec moi au travail. Ainsi que ce qui permet la possibilité de charger des périphériques usb (téléphone ou
USB alimenté par Custom Logo Light

USB alimenté par Custom Logo Light

celle-ci est présentée dans le font pour apprendre les concours pour les jeunes, et il m'oblige à ajouter des questions et réponses.Voici les questions :1 - qu'avez-vous fait ?2 - Comment tu l'as fait il ?3 - où tu l'as fait il ?4 - qu'avez-vous appr
USB alimenté par la lumière du clavier

USB alimenté par la lumière du clavier

maintenant je vais vous montrer une lumière de clavier alimenté par USB multi couleur LEDÉtape 1: première Connectez maintenant ampoule LED avec câble USBÉtape 2: finale
Reverse Engineering

Reverse Engineering

beaucoup de membres ici à Instructables poser des questions sur les fiches techniques ou épingle les aboutissants d'un dispositif ou d'affichage dans les réponses, malheureusement vous ne pouvez pas toujours obtenir une feuille de données et de schém
USB alimenté par pompe à Air matelas

USB alimenté par pompe à Air matelas

Tout le monde qui a disparu camping habituellement se heurte à son problème. Vous êtes tous prêt à configurer votre camp, y compris votre tente et matelas pneumatique. Vous mettez en marche votre matelas pneumatique pompe et... Oh non ! Les piles son