logo

 

Utilisation

Fuzzle est une paire périphérique / logiciel que j'ai bricolée avant que l'Infrared toy de Dangerousprototypes n'existe, pour faire du fuzzing par infrarouge, notamment pour tenter de trouver des codes permettant de faire réagir certains afficheurs industriels (voir photo ci-contre, je vous laisse deviner lesquels).

Le système est minimaliste mais permet tout de même d'arriver a des résultats tant qu'on ne s'aventure pas dans des protocoles avec beaucoup de couches (tels que l'IrDA). Il est possible de tester des messages dans des formats courants comme RC5, SIRC..., et de brute-forcer par un scan de l'adresse et/ou de la commande.

L'émetteur communique avec un ordinateur par liaison série 9600bps via un câble FTDI (USB/RS232 TTL).

L'émetteur

Il consiste en un simple microcontroleur ATTiny2313 monté sur une stripboard, avec un quartz 16MHz, un régulateur 5V, une LED de statut et une LED IR 940nm pilotée par un transistor.

La photo montre la première version, alimentée par pile. Plus récemment, j'ai utilisé le 5V fourni par l'USB pour alimenter le tout directement, vu que les ports USB de maintenant fournissent sans problème le courant nécessaire pour la LED IR. Cette LED a aussi été remplacée par un bloc de 4 dirigées de manière a avoir une angle final bien plus large.

Le tout tient dans une boite de punaises avec un couvercle transparent.

Code source pour AVRStudio 4 et fichier hex.

Le protocole pour communiquer avec est le suivant:

Reinitialisation (reset du micro): envoyer minimum 10 caractères '%', puis attendre minimum 500ms. La LED de statut va s'éteindre puis clignoter lentement pour indiquer que le micro est prêt. Un paquet est formé ainsi:

  • N'importe quel caractère (début de paquet)
  • Fréquence de la porteuse sur 16bits (se calcule par (16000000/(2f))-1). De 20kHz a 1MHz.
  • Temps haut (ou module) sur 16bits en dizaines de us.
  • Temps bas sur 16bits en dizaines de us.
  • Flag de modulation (0 ou différent de 0).
  • Pause sur 8bits entre les transmissions en ms.
  • Nombre de répétitions sur 8bits.
  • Nombre de bits formant le message IR (max 96).
  • Le bitstream...

Après avoir reçu le nombre correct de bits, un checksum 16bits est renvoyé ainsi que le caractère "." pour indiquer le début de la transmission IR. Lorsqu'elle est terminée, le caractère "!" est transmit et un nouveau paquet est attendu.

Le logiciel PC

Écrit en VB6 comme de (mauvaise) coutume. La source de la première version n'est plus entre mes mains pour l'instant, la capture d'écran correspond.

La nouvelle version est moins fournie pour cause de flemme de réécrire les "générateurs" Sharp et JVC, mais les paramètres restent les mêmes. Le fuzzer peut logger tout le bitstream ainsi que les paramètres (la relecture et l'affinage par contre, sont pas encore bien gérés).

Source VB6 et exécutable V0.2. Attention, le port COM est hardcodé sur 7.

footer
symbol symbol symbol symbol symbol