Rom sur USB

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From French to

Threaded View
Bonjour,

Je voudrais fabriquer un circuit qui permettrait E0% un PC de lire
quelques dizaines d'octets sur un de ses ports USB. Donc, par exemple,
une ROM ou les octets de ram Flash ou Rom interne d'un PIC, c'est E0%
voir. Ces octets peuvent EA%tre dE9%finitifs, ils n'ont pas a EA%tre chang=
E9%s
ultE9%rieurement.

Quelqu'un connaitrait-il un montage qui fait cela ?

Michel.




Re: Rom sur USB
michel :

Quoted text here. Click to load it

Un exemple de montage E0% uC basE9% sur un 18F2455,
il suffit de connecter ta mE9%moire sur les I/O libres.
Ensuite il faut (bien sFB%r) E9%crire le firmware uC
et un soft PC pour la com USB ...

http://cjoint.com/data/0AgvQ74zWE2_USB232.GIF

Re: Rom sur USB
Quoted text here. Click to load it

Merci. J'ai vu le PIC18F14K50, E0% priori il pourrait aussi faire
l'affaire (non ? et il est un peu moins couteux) et il a aussi 256
bytes de ROM interne, cela me suffit, donc pas de mE9%moire E0% mettre E0%
l'extE9%rieur si je ne me trompe pas.

Par contre maintenant il faudrait mettre du code dans le PIC et savoir
comment E9%crire le soft qui lira les octets, je programme en Delphi je
ne sais pas si c'est possible.

Help ...

Michel



Re: Rom sur USB
On 6 jan, 22:06, michel

| http://cjoint.com/data/0AgvQ74zWE2_USB232.GIF

Quoted text here. Click to load it

Ok, je pensais que ta mE9%moire E9%tait externe.
Effectivement ca simplifie (un peu)
C'est pour faire quoi ? Un dongle ?

Quoted text here. Click to load it

Une fois que tu as choisi un modE8%le de PIC,
ratisse le site de Microchip qui fournit souvent
du code (driver USB asm ou C) pour interfacer le hard.
Exemple (entre autres)
http://tinyurl.com/7flmdvb

Quoted text here. Click to load it

Je compatis ... ;o)

Quoted text here. Click to load it

Embarcadero fournit sFB%rement des librairies, non ?
Il en existe bien pour interfacer du RS232 ...
(bien qu'on le fasse aussi avec des fonctions natives)

Re: Rom sur USB
Le 06/01/2012 22:28, Jean-Christophe a écrit :
Quoted text here. Click to load it


Lazarus, c'est bien aussi....

en fait, tu as 2 possibilités simples:

1) dialoguer par un "pseudo" rs232 avec le pic, facile à programmer en
pascal, c'est du bête port série.

2) dialoguer directement en USB HID et tu peux faire qq chose de plus
custom, mais c'est plus dur à programmer...

JJ

Re: Rom sur USB
snipped-for-privacy@free.fr :

[...]

Quoted text here. Click to load it

Je ne parviens pas à comprendre ce qui disqualifie l'utilisation de
simples clés USB (flash RAM), sans doute parce que la problématique
globale m'échappe.
Bien sûr, vous ne pouvez pas mapper le contenu de la clé dans l'espace
mémoire du PC, mais cette limitation est la même avec un
microcontroleur puisque venant de l'interface USB.
Ça fait plusieurs années que je n'ai plus touché à Delphi, mais les
solutions me semblent simples, sachant qu'il faudra lire sur la clé un
/array of bytes/. Google semble bien réactif sur le sujet.
Puisque 256 octets vous suffisent, vous pouvez formatter vos clés en
FAT et lire un secteur, comme s'il s'agissait d'un lecteur de
disquettes.
Vous pouvez placer sur votre clé une DLL (de resource ?) compilée par
Delphi ou une autre toolchain, contenant vos données sous la forme de
données initialisées, d'une string, d'une image.
Vous pouvez regarder les solutions de sérialisation d'objets
habituelles en Delphi.
Vous pouvez écrire en quelque lignes votre propre sérialisation, vers
un fichier texte par exemple, en allant de l'explicatif à l'obfusqué
selon vos besoins. Ce sera dans tous les cas très simple, et il n'y a
aucune contrainte à utiliser le même outil à l'écriture et à la
lecture.
Mais je le répète, sans doute un truc m'échappe dans le cahier des
charges...

--
Pierre Maurette



Re: Rom sur USB


Merci E0% tous pour vos rE9%ponses. Il s'agit de faire un dongle, un
logiciel ne doit pouvoir fonctionner que si ce dongle est branchE9% sur
un port USB d'un PC. Le dongle contient, dans mon idE9%e, du code que
l'application protE9%gE9% utilise pour fonctionner : elle ne fonctionne
pas sans ces donnE9%es. Les octets en question ne sont lisibles qu'en
appliquant un protocole connu par l'application et diffE9%rent du
protocole habituel des clE9% USB : l'exploreur de fichier ou tout autre
E9%diteur de fichier lambda ne peut pas lire ces donnE9%es. L'ensemble est
simple: Il ne faut que quelques centaines d'octets, la vitesse de
lecture n'a aucune importance, il suffit (E0% priori) d'un processeur ou
d'une mE9%moire morte accessible en sE9%rie par le port USB (mais lE0%
j'avoue mon incompE9%tence, j'ai appris qu'il existe des processeurs qui
sont accessibles directement par l'USB, pic ou atmel, mais je me
demande si de simple ROM ne le seraient pas aussi).

J'E9%tudie vos rE9%ponses, et merci encore pour le temps que vous avez
pris pour les faire.

Michel.





Quoted text here. Click to load it

Re: Rom sur USB
On 7 jan, 10:24, michel

Quoted text here. Click to load it

Je m'en doutais !  Lire une mE9%moire si petite ne
pouvait pas vraiment avoir d'autres applications.

Le port USB d'un PC est soumis E0% certains formats
et protocoles, tu ne peux pas les contourner comme
tu le ferais avec un port sE9%rie RS232 ou parallE8%le.
Il est donc possible, par soft ou avec une carte E9%lectronique,
d'enregistrer les messages USB qui transitent entre
ton soft et le uC, puis ensuite les AB% rejouer BB%
pour que ton soft croie que le dongle est branchE9%.
( ou pour E9%tudier et casser le protocole )

A mon sens l'USB ne permet pas une protection solide.

( sans parler d'une attaque directe sur l'exE9%cutable
de ton logiciel PC, en shuntant la partie de ton code
qui rE9%cupE9%re les donnE9%es provenant de ta carte E0% uC )


Re: Rom sur USB
Quoted text here. Click to load it


Oui tout E0% fait, de toutes faE7%ons, d'une maniE8%re ou d'une autre une
protection est cassable. Ce qui est dE9%terminant, E0% mon sens, est le
ratio QuantitE9% de travail E0% fournir pour casser la protection /
intE9%rEA%t du logiciel. Dans mon cas, cette protection par dongle
donnerait un
rapport que je juge adaptE9%.

Quoted text here. Click to load it

Ca je pensais l'E9%viter en mettant dans ces octets des donnE9%es
indispensable au fonctionnement du logiciel. Autrement dit, shunter
cela reviendrait, pour le shunteur, E0% devoir comprendre le logiciel
et E0% en rE9%E9crire la partie manquante. Mais cette idE9%e n'est peut-=
EA%tre
pas bonne.




Re: Rom sur USB
On 7 jan, 20:34, michel

| (...)
Quoted text here. Click to load it

Un autre point est le temps minimal nE9%cE9%ssaire
pour casser la protection. Si ca prend 3 minutes
pour enregistrer les E9%changes USB et cloner le dongle,
c'est pas le top ... il reste la possibilitE9% de crypter
la com avec des clE9%s diffE9%rentes E0% chaque transaction.

| (...)
Quoted text here. Click to load it

Des donnE9%es, ou du code ?

Quoted text here. Click to load it

Au contraire, je trouve l'idE9%e intE9%rE9%ssante ...
(E0% condition de blinder la protection anti-clonage)
Et tu peux loger ca dans 256 octets ?
C'est quel genre de soft que tu E9%cris ?


Re: Rom sur USB
Quoted text here. Click to load it

Les octets codent des appels de procE9%dures/fonctions, quelques donnE9%es
et des pointeurs sur des variables du programme. La suite d'octet code
donc une suite d'appels de procE9%dures/functions avec certaines donnE9%es
et certaines variables , le tout fabriquant une portion du programme
nE9%cessaire E0% son fonctionnement. Sans  ces donnE9%es le programmes est
incomplet, il ne fonctionne plus. Il faut le comprendre et rE9%E9crire la
partie manquante pour qu'il fonctionne E0% nouveau. Ce code stockE9% sur
la clE9% est en fait une sorte de bytecode.



Re: Rom sur USB
On 8 jan, 13:56, michel :

Quoted text here. Click to load it

C'est intE9%rE9%ssant et original comme approche.

Lors de son lancement, le programme PC pouvant EA%tre
chargE9% n'importe oF9% dans la RAM du PC, les adresses
de ses fonctions ne sont pas fixes :  ton dongle se
comportant comme une ROM, je vois mal comment on peut
y coder AB% en dur BB%  des pointeurs sur du code relogeable ?

( E0% moins qu'il ne s'agisse pas de pointeurs,
mais d'index dans une table d'appels de fonctions )

Re: Rom sur USB
Quoted text here. Click to load it

VoilE0%. Tout est en relatif. L'octet numE9%ro 120, situE9% sur la clE9%,
index
le pointeur numE9%ro 120 situE9% dans une table initialisE9%e dans la
procE9%dure d'initialisation du programme. Table qui contient des
pointeurs sur des procE9%dures ou des variables.



Re: Rom sur USB
On 8 jan, 17:10, michel :

| E0% moins qu'il ne s'agisse pas de pointeurs,
| mais d'index dans une table d'appels de fonctions

Quoted text here. Click to load it

Ok.

Sinon, j'ai l'impression que tu cherches un truc
tout fait, pourtant avec les liens donnE9%s tu as dE9%ja
un schE9%ma PIC et toutes les couches USB bas niveau
disponibles : il te reste juste E0% implE9%menter ton appli.
CF4%tE9% uC pas grand-chose puisque c'est de la lecture seule,
et cF4%tE9% PC les exemples d'implE9%mentation USB sous Delphi.
----

ImplE9%mentation USB pour uC PIC avec code et schE9%ma :
http://www.jacquet80.eu/blog/post/2006/04/29/26-carte-de-test-pic18f-usb

La doc Microchip du firmware USB :
http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB_FW_UG_51679...

Le firmware USB de Microchip :
http://ww1.microchip.com/downloads/en/DeviceDoc/MCHPFSUSB.ZIP

Pour le code PC sous Delphi :
http://www.delphifr.com/codes/USB-ENTREES-16-SORTIES-AVEC-PIC18F4550 -...

Chez Intel :
http://www.intel.com/intelpress/usb/examples/zipfiles/delphi_hid.htm


Re: Rom sur USB
Quoted text here. Click to load it



Ok merci E0% tous je vais essayer de me dE9%brouiller.

Michel.

Quoted text here. Click to load it


Re: Rom sur USB
snipped-for-privacy@free.fr a écrit :
Quoted text here. Click to load it

Je te conseille de jeter un oeil (juste un oeil) sur la spé de l'USB
(www.usb.org, de tete)
Tu vas y voir que le dialogue host (PC) <-> function  (le dongle) est
bien plus compliqué qu'une simple liaison série : il y a échange de
transactions pour négocier la puissance d'alim demandée par le dongle,
pour identifier le dongle (classe = mémoire/disque/interface etc...)

En fait il y a trois couches de protocole :
la couche liaison (en gros la liaison série)
la couche USB (le protocole USB)
la couche application (ici la récupération des octets)

Tout ça passe tres tres largement au dessus d'une simple ROM !!!
il faut obligatoirement un µP avec certes l'interface physique
(liaison) mais aussi tout ce qu'il faut comme niveau 2 et 3 en
firmware et en bibliothèque de programme pour le µP.
Noter que la couche application *dans le host* (PC) est faite par un
driver spécifique à l'application. Certes, il y en a des "standard"
(implantés par défaut dans Windows) mais si tu veux une appli non
standard (qui ne soit pas vue de Windows comme une simple mémoire)
tu vas devoir écrire ton propre *driver* pour XP/Vista/Seven (on ne
parle plus des autres vieux machins), sans parler des drivers pour Mac
et pour Linux.

Il te faut impérativement (pour éviter du développement monstrueux)
"récupérer" des applis standard auxquelles tu rajoutes simplement une
couche "cryptographique" : le dongle ne renvoyant jamais son contenu
tel quel, identique d'une fois sur l'autre, car sinon il serait trop
facilement copiable.

Mais tout dépend du coût du logiciel que tu veux ainsi protéger !!!
(le coût de développement de la partie "protection dongle" n'étant
pas négligeable !)

Cordialement.

--
Philippe C., mail : chephip, with domain  free.fr



Re: Rom sur USB
Quoted text here. Click to load it

La solution la plus simple, et qui de plus permet d'éviter de devoir
programmer un driver coté PC, est d'utiliser le mode HID (human
interface device).

Il existe une librairie tout faite très simple à utiliser pour AVR
(Atmel) qui fonctionne avec presque toute la gamme de µC en mode low-speed :
http://www.obdev.at/products/vusb/index.html

Il y a pas mal d'exemples sur le site.

v.

Re: Rom sur USB
On 7 jan, 02:29, vic

Quoted text here. Click to load it

Idem chez Microchip, et sans doute aussi chez Freescale, etc ...


Re: Rom sur USB
Quoted text here. Click to load it

Tu peux développer ? Quel est l'équivalent pour PIC ?

Re: Rom sur USB
On 8 jan, 04:34, vic

Quoted text here. Click to load it

| Idem chez Microchip, et sans doute aussi chez Freescale, etc ...

Quoted text here. Click to load it

C'est le but  :o)

Quoted text here. Click to load it

Le 6 j'ai postE9% une URL Microchip pour downloader
des sources de frameworks USB pour 18F/24F/32.

Mais c'est dit sans privilE9%gier aucune marque puisque
tous mettent E0% disposition des dE9%veloppeurs du code
pour les couches basses, et des exemples et dE9%mos
pour l'exploitation de ces couches basses.
( qu'il s'agisse d'USB sous plusieurs classes (HID, etc)
mais aussi d'Ethernet (IP/UDP/TCP etc) et autres )

Ce que je voulais souligner est que si une personne
pose une question relative au choix d'un uC, la facilitE9%
d'implE9%mentation des couches basses (que ce soit USB,
Ethernet, etc) n'est plus vraiment un critE8%re dE9%cisif
puisqu'aujourd'hui tous les boEE%tes sE9%rieuses fournissent
ce code pour accE9%lE9%rer l'implE9%mentation de l'appli client.
AprE9%s tout c'est bien leur intE9%rEA%t qu'un client
puisse rapidement mettre au point son prototype.

Site Timeline