Bonjour les Arduinonautes
Est ce qu'il y'a moyen de cacher le contenu du fichier ino généré par Arduino, a part le fait de le compiler sous format HEX ? Merci
Bonjour les Arduinonautes
Est ce qu'il y'a moyen de cacher le contenu du fichier ino généré par Arduino, a part le fait de le compiler sous format HEX ? Merci
Bonjour,
Rien compris à ta question.
Le fichier .ino n'est pas généré par l'Arduino, mais écrit par toi. Si tu veux le cacher tu l'efface du disque, tu le crype ...
dans un compilateur classique, tu ecris ton programme en C, puis tu le compile, et il va transcrire ton programme en language machine, ensuite tu peux l'envoyer dans la puce.
Dans un compilateur classique, tu peux choisir ensuite, en general dans fichier, enregistrer sous .hex.
dans l'IDE arduino tu vas
Sketch menu, select Export compiled Binary, then Show Sketch Folder
il devrait transformer le .ino en .hex. Mais en aucun cas ca va crypter ton programme source.
au pire, si sur windows, tu peux cacher le dossier ou se trouve ton programme.
Le but c'est de fournir le programme au client pour qu'il puisse le charger sur d'autres cartes.. mais une variable doit être changée chaque fois sur le programme c'est pour ça que je ne peux pas fournir le fichier .HEX, mon but est de fournir le programme (crypté) avec un fichier à modifier pour changer la variable.
N'appelez pas ça de l'accaparement mais c'est un secret que je dois garder pour mon produit
on en a deja parler il y a 1 semaine ou 2, ( fonction recherche)
Il y a moins de rendre illisible la relecture d'une puce
Il suffit de mettre la variable en question dans l'EEPROM. Ainsi le programme est le même pour tout le monde.
On peut programmer l'EEPROM avec avrdude indépendamment de la programmation du code exécutable.
hazerty565:
on en a deja parler il y a 1 semaine ou 2, ( fonction recherche)
Il y a moins de rendre illisible la relecture d'une puceProtection du code source contre le download - Français - Arduino Forum
Toujours pas de solution présente sur le topic, on discute le droit de rendre son projet privé..
fdufnews:
Il suffit de mettre la variable en question dans l'EEPROM. Ainsi le programme est le même pour tout le monde.
On peut programmer l'EEPROM avec avrdude indépendamment de la programmation du code exécutable.
Je ne vois pas comment, as-tu un tuto à m'envoyer ? merci
@pepe : Tu es allé fort sur ce coup.. je ne veux pas aller sur cette voie mais je vais te répondre quand même, JE NE TIRE AUCUN PROFIT, et je suis là pour apprendre pas pour discuter les banalités, et si tu n'es pas prêt à aider, éviter les commentaires agressant les gens serait un beau cadeau.
Je retourne pour éclaircir le besoin : je veux changer une variable sans avoir accès au code source, et celà et faisable si on peut modifier directement la mémoire EEPROM mais comment ? merci
Toi aussi tu y vas un peu fort.
D'abord ouverture d'un sujet avec une question incompréhensible
Et là tu demandes comment on fait pour écrire dans l'eeprom : 1 minute de recherche par toi-même et tu auras la réponse
mon soucis n'est pas de savoir comment écrire sur l'EEPROM .. EEPROM.write(x, y)...
C'est comment écrire une donnée sur l'Arduino sans avoir accès au code source !
Tu peux fournir 2 programmes à tes "clients" :
un programme d'initialisation, avec son code source, qui ne fait qu'écrire une valeur en eeprom (valeur codée en dur dans le source modifiable)
un programme d'exploitation, livré seulement sous forme de fichier hex
Plus élégant : le programme d'exploitation embarque une fonction de lecture de valeur par saisie clavier sur le terminal série, et la réécrit en eeprom.
Merci à vous et au temps que vous avez consacré pour ce sujet
Le mode d'emploi d'AVRDUDE
Un exemple pratique
L'exemple est donné avec le mode terminal (en interactif) mais on peut aussi le faire par la ligne de commande.
moi je t'ai répondu sur le premier post, comme je ne savais pas de quoi tu parlais, je t'ai répondu a l'aproximation, pendant que tu rédiger ta deuxieme question. Donc oui ma réponse est " hors sujet" par rapport a ta deuxieme question...
D'un point de vu eeprom c'est possible,
il y a un certain temps j'ai eu fait ce genre de tache.
On modifié les fichier hex( avec un editor hex) c'etait pour une adresse mac ( obligation de changer pour chaque carte)
donc on changer au bon endroit dans le fichier hex, avec une valeur d'adresse mac puis on transferer le programme sur le pic, si on se trompe d'endroit, c'est tres embetant, si on se trompe de valeur d'adresse mac, ce qui arrivait de temps en temps, ( 9D au lieu de 9F par exemple, on avait moyen de remodifier par la suite).
c'est exactement le même truc hazerty565, c'est l'adresse mac qui doit être changée ! merci
kjnr:
c'est exactement le même truc hazerty565, c'est l'adresse mac qui doit être changée ! merci
Si l'adresse MAC est placée en EEPROM tu peux l'y écrire une bonne fois pour toute lors de la première programmation de la carte et il n'y aura pas besoin de la reprogrammer lors des mises à jour de l'application puisqu'elle ne sera pas écrasée par le nouveau code.
ouhaaa on s'approche, si tu ne dis pas tout, comment tu veux qu'on t'aide.....
+1 avec fdufnews, a moins qu'il y ai une erreur de reproduction dans l'adresse mac ( si ecrit a la main)
Si scanné a la douchette ( aucun soucis
)
fdufnews:
Si l'adresse MAC est placée en EEPROM tu peux l'y écrire une bonne fois pour toute lors de la première programmation de la carte et il n'y aura pas besoin de la reprogrammer lors des mises à jour de l'application puisqu'elle ne sera pas écrasée par le nouveau code.
oui mais en cas d'ajout d'une nouvelle carte elle doit avoir une adresse mac réseau unique sur le réseau, du coup elle doit être entrée avec le programme par l'utilisateur qui ne doit pas avoir accès au code. Vous voyez la complexité elle est où ?
faut creer un petit soft special, relié un ordinateur autorisant a changer l'adresse mac seulement.
normalement une carte avec une adresse mac, ne change pas et ne doit pas changer ca reste unique a vie.
Donc en aucun cas, il y aura besoin de changer l'adresse mac des anciennes carte, mais des nouvelles.
Au pire, si il y a conflit, faut prendre l'adresse mac des carte HS.
si tu as une carte avec une adresse mac (FF:FF:FF:FF:FF:00) en ben ta nouvelle carte doit etre FF:FF:FF:FF:FF:01, si nouvelle FF:FF:FF:FF:FF:02 jusqu'a FF...
pour avoir une adresse mac, faut faire une demande, 802.1D adresse mac. tu peux pas mettre une au pif.
et les premier digit d'une adresse mac determine " le vendeur" du produit.
par exemple tous les produits apple auront 00:0A:27 chaque debut d'adresse mac.
kjnr:
oui mais en cas d'ajout d'une nouvelle carte elle doit avoir une adresse mac réseau unique sur le réseau, du coup elle doit être entrée avec le programme par l'utilisateur qui ne doit pas avoir accès au code. Vous voyez la complexité elle est où ?
Non, l'adresse MAC n'est entrée qu'une fois en production et l'utilisateur n'a pas besoin d'y toucher. Il suffit qu'en production tu programmes tes cartes avec une adresse MAC unique.
Avec AVRDUDE, la programmation du code et la programmation de l'EEPROM peuvent être 2 actions distinctes.
Et puis la protection du code est relativement illusoire dans la mesure ou tu livres le .HEX qui peut être décompilé ou même utilisé tel quel pour faire d'autres cartes.