1

Salut,
J'ai besoin de faire croire à une API qu'un device USB est branché (sous Windows).
Le protocole est à peu près documenté, le driver officiel existe, il existe un driver libre.
Est-ce que ça vous semble faisable en un temps raisonnable d'émuler un matériel, sachant que les réponses pourraient être tout à fait être codées en dur.
Toutes les pistes sont les bienvenues #triange#
Merci d'avance grin

2

Ça doit être faisable en faisant un driver filtre USB. Je ne sais pas ce qui existe déjà en "tout fait" pour ça.

Autre solution : utiliser un smartphone ou autre matériel qui a un contrôleur USB suffisamment souple pour émuler n'importe quel périph, comme ça avait été fait pour le dongle de la PS3. Là il existe des solutions toutes faites.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

URL pour cette histoire de driver filtre usb ? Je vais me renseigner à ce sujet happy
Merci !

(le but est de n'être pas obligé de brancher le périphérique en question : si on est obligé de brancher un truc, on a aussi vite fait que ce soit le vrai périphérique)

4

avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

5

6

(après, y'a la méthode crade : patcher l'application à la barbare tongue
Mais bon, si c'est dans un contexte pro.... grin)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

7

(grin
Oué, j'y pense aussi, j'étais justement en train de regarder quel désassembleur était le meilleur, perso j'en suis resté à w32dasm triso Mais bon, je ne connais pas l'asm x86 mourn
(IDA a l'air joli grin))

8

Il y a une version ancienne et limitée d'IDA qui est dispo gratuitement, elle est suffisante pour le x86.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

9

Oui j'ai vu, la version 5.0 apparemment. Elle supporte les programmes 64 bits ?

log suite :
http://sourceforge.net/apps/trac/libusb-win32/wiki (déjà entendu parler de cette lib tout à l'heure, à voir)
http://msdn.microsoft.com/en-us/windows/hardware/hh852365

10

Aucune idée, mais il suffit d'essayer smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

11

Oué je verrai demain cheeky
Merci beaucoup en tout cas !

12

ça existe déja, c'est fait par Travis Goodspeed, ça s'appelle le facedancer

http://goodfet.sourceforge.net/hardware/facedancer21/

Unlike the general-purpose GoodFET boards, the only purpose of this board is to allow USB devices to be written in host-side Python, so that one workstation can fuzz-test the USB device drivers of another host.

13

Ben, heu, plus ou moins : c'est sans doute intéressant mais moi je veux surtout éviter d'avoir à brancher quoi que ce soit.
En gros, si c'est pas une solution 100% software ça ne vaut pas trop le coup, hélas.

14

heu ben je vois pas trop comment tu vas faire, sous linux par exemple il te faudrait réimplémenter un driver usb host HCI qui dispose d'une interface d'émulation au lieu de causer au vrai hard, c'est pas gagné du tout grin

usbip me semble l'une des meilleures tentatives.

15

Avec un driver filtre, on voit passer les requêtes USB et je pense qu'on peut les intercepter pour y répondre comme si le hardware était présent. Mais j'ai jamais essayé.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

16

squalyl (./14) :
usbip me semble l'une des meilleures tentatives.
libusb dont je parle plus haut ou c'est un autre truc ?

17

libusb c'est un driver usb *device* générique pour causer usb depuis un programme normal.

18

Ah oui j'avais mal lu, j'ai vu passer le nom usbip hier, oué.
Tu penses que usbip est plus adapté pour mon cas ?

19

libusb a un mode "driver filtre". À voir si ça peut faire ce que tu veux.

Attention à un truc qu'on a pas encore mentionné : sur Windows 64 bits, les drivers doivent être signés, c'est embêtant si c'est un truc que tu as développé toi-même. On peut désactiver manuellement la vérification, mais sur un PC pro c'est embêtant.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

20

usbip est censé permettre la connexion de devices usb à un système via une connexion réseau. Y'a moyen de se greffer dessus pour émuler, non?

21

22

Zerosquare (./19) :
À voir si ça peut faire ce que tu veux.
Oué je suis en train de regarder.zzz

23

(Vraiment, c'est simple tritop)

24

c'est évident voyons, tu captures les URB d'énumération par le socket usbnet et tu les rediriges sur un device block fuse via devpts. Il doit y avoir un entrypoint de bus pour l'EP zéro dans sysfs. Surtout pour les transactions SETUP/IN.

25

Voilà, j'allais le dire. Je pourrai reviewer ton code si tu veux. embarrassed

26

Merci, c'est gentil. Et d'ailleurs, ça va sans doute être vite fait vu la vitesse à laquelle ça avance trioui


squalyl > J'ai lu ces mots ces derniers jours, mais... Ça veut dire quelque chose ta phrase ou c'est juste du random ? (grin)

27

28

Mmm OK, je vois grin

Et sinon, j'ai pu installer un filtre usb avec le wizard de libusb-win32, mais on est censé en faire quoi après ? trifus
Je ne trouve pas de doc ?!

29

Ben le but serait d'intercepter les requêtes USB qui vont vers le périphérique qui n'existe pas, et d'y répondre. Faut aussi intercepter la demande initiale qui énumère les périphériques pour y rajouter celui que tu émules.

Ça c'est le principe, après pour la mise en pratique... tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

30

Oui ça j'avais compris l'idée du filtre, mais en pratique il se trouve qu'il y a un gui permettant d'ajouter des filtres, que ça a l'air de marcher puisqu'à la fin ça dit que c'est bon (tripo), mais que... ça s'arrête là ?! trifus