Page 1 sur 2

Obfuscation js

Posté : 01 sept. 2011, 18:10
par kodjo
Bonjour,

Je souhaite commercialiser une extension de cms que j'ai développé.
Je prévois d'obfusquer le code javascript pour protéger une partie de l'application.

Du coup, je me demande si il est facile, et comment désobfusquer du code obfusqué.
Est-ce qu'il suffit d'avoir le bon utilitaire et de cliquer sur un bouton pour casser du code?

J'ai vu qu'il y avait plusieurs logiciels disponibles pour faire ce travail.
La qualité de l'obfuscation varie-t-elle selon les logiciels, ou est-ce sensiblement équivalent?
J'ai cru comprendre que le navigateur n'avait pas de mal à lire un code obfusqué...est-ce que ça veut dire que quelque soit le logiciel, on obtient le même résultat standard?

Et enfin, quel logiciel pourriez-vous me recommander selon vos expériences personnelles, sachant que j'ai peu de sous dans la poche?
J'ai vu stunnix à 800 dollars, c'est beaucoup...

Merci à tous pour vos réponses.

Re: Obfuscation js

Posté : 01 sept. 2011, 22:30
par Berzemus
Juste, est-ce que le CMS lui-même est commercial ?

T'es-tu pleinement renseigné sur la légalité de ta commercialisation ?

Re: Obfuscation js

Posté : 04 sept. 2011, 01:15
par kodjo
j'ai codé de a à z, c'est un plugin pour cms open source.
mais ce n'est pas le sujet. Comme décrit plus haut avec beaucoup d'attention, je cherche des renseignements sur l'obfuscation javascript.

Re: Obfuscation js

Posté : 04 sept. 2011, 13:42
par Cyrano
j'ai codé de a à z, c'est un plugin pour cms open source.
mais ce n'est pas le sujet. Comme décrit plus haut avec beaucoup d'attention, je cherche des renseignements sur l'obfuscation javascript.
Il existe des outils disponibles sur internet pour faire de l'obfuscation, mais tu devrais relire correctement la question qu'à posé Berzemus parce qu'elle est tout à fait pertinente.

Si tu codes toi-même une application, tu fais ce que tu veux avec, mais dans la mesure où il s'agit d'une extension sur une application open-source, tu n'a absolument pas le droit de la distribuer sous une licence différente et encore moins propriétaire en masquant la source, même si tu ne masque que la source de ton extension. Tu devrais lire attentivement la licence du CMS en question et en particulier les paragraphes traitant de la redistribution du logiciel, tu risques fort d'avoir une décevante surprise.

Re: Obfuscation js

Posté : 04 sept. 2011, 16:08
par nhachet
Un outil comme celui-ci pourrait-il te convenir ? http://jscompress.com/

Re: Obfuscation js

Posté : 04 sept. 2011, 17:05
par Cyrano
Pas vraiment. Cet outil-là va compresser le code en supprimant tous les commentaires, tous les espaces surnuméraires et mettre l'ensemble du code sur une ligne unique, réduisant le poids du fichier à un poids notablement inférieur.

Un outil d'obfuscation va analyser le code et renommer l'ensemble des fonctions et des variables, sans pour autant changer la logique du code lui-même. Faire du reverse engeneering dessus devient de ce fait infiniment plus compliqué, quoique pas totalement impossible, mais d'autant plus laborieux que le fichier d'origine est gros et complexe.

Ceci dit, j'insiste encore sur le point soulevé par Berzemus : masquer le code d'une extension sur une application qui à l'origine est Open-Source t'expose à terme à des procès qui pourraient être assez coûteux pour te dissuader par la suite d'approcher un ordinateur à moins de 20km. :-*

Re: Obfuscation js

Posté : 04 sept. 2011, 18:20
par kodjo
Je pense vraiment que ça ne sert à rien de m'expliquer ce que j'ai le droit de faire et de ne pas faire. Je ne dis pas ce que que vous avancez est faux, mais ce n'est pas le sujet qui m'intéresse.

Pouf info, l'extension que j'ai créé est pour Joomla. De nombreuses extensions commerciales pour Joomla ont un code javascript ou php obfusqué. à priori ils n'ont pas été attaqués par Joomla.org qui les distribue. Quand le moment sera venu de parler de licence, je me tournerai certainement vers Joomla.org pour poser les bonnes questions sur les erreurs à ne pas commettre.
Je vous remercie cependant d'avoir soulevé cette question car elle est effectivement importante.

Donc si j'ai bien compris, on ne peux pas rendre illisible du code JS, seulement le rendre difficilement lisible.
J'ai testé un logiciel d'obfuscation gratuit. ça me donne quelquechose comme ceci:
\\%` Q'sByTagName`\"0%` L\"category_id`$\"\"rray`-z#ndUrl=false;for(var i=0;i<`2L';i++`!v#urrListVal=test[i]`\"l&` )#`-0`!)!`2b$` X!ypeof`\"(![i+1]!=\"undefined\"?` .%` n++1` i2:`!{\"if(i=`!S!`!r#-1&&`!h'!=-1||`!;(=` //){`\"o$true;`#3'.push`.P!` H#);}}`$]%`$E-form.a`%E!+=\"&`#{(\"+` #'[0];if(`!/#`-G'` \\2submi`,u\"`&@%`2<'` \"!Name,` %\"`'A!,nDays`(N#oday`1=*expir`1T'if(` L!`27\"||` &#0){` $\"1;}` M\".s`1o#` p!`1z&+3600000*24*`!5\"`);&`!Q\"=`!_&+\"=\"+escap`!w$`!o!)+\";`! \"s=\"+`!)#toGMTString(`-!(Read`\"Q-`*}$e` 4\"=\" \"+`!8+`\"Z!ind=` =%.indexOf(\" \"+`!W*)`&=!nd=`%a!` ?3;` D.}` M&||` 3&==\"\"){`-+\"\"\";}`!D#1` `2,ind+1`!;$1`!;%` C(`)h#`-}$un`#O#` 8&subs`#8\"ind`!^'` T#+2,ind1));}"))
C'est déjà pas mal mais si j'ouvre une extension commerciale Joomla que j'ai acheté..., le code js ressemble à ceci:
a={2M:"2.3.11",68:0,3q:{},$5j:u(b){B(b.$2e||(b.$2e=++$J.68))},3W:u(b){B($J.3q[b]||($J.3q[b]={}))},$F:u(){},$H:u(){B H},1n:u(b){B(1a!=b)},7s:u(b){B!!(b)},1T:u(b){p(!$J.1n(b)){B H}p(b.$1A){B b.$1A}p(!!b.2u){p(1==b.2u){B"4u"}p(3==b.2u){B"5o"}}p(b.1j&&b.4S){B"7x"}p(b.1j&&b.3P){B"18"}p((b 1H N.7p||b 1H N.5c)&&b.2P===$J.2k){B"4A"}p(b 1H N.2A){B"2R"}p(b 1H N.5c){B"u"}p(b 1H N.4V){B"3A"}p($J.v.1q){p($J.1n(b.63)){B"2s"}}T{p(b 1H N.4C||b===N.2s||b.2P==N.7o){B"2s"}}p(b 1H N.6M){B"5A"}p(b 1H N.3C){B"7n"}p(b===N){B"N"}p(b===M){B"M"}B 4y(b)},1e:u(h,g){p(!(h 1H N.2A))
Beaucoup plus dur à lire! Que dois-je en déduire? Qu'il a un logiciel d'obfuscation plus cher que le mien, ou alors qu'il utilise une technique de jedi qui m'échappe encore?

Re: Obfuscation js

Posté : 04 sept. 2011, 18:43
par Cyrano
Je pense vraiment que ça ne sert à rien de m'expliquer ce que j'ai le droit de faire et de ne pas faire.
Pourtant, tu viens sur un forum public orienté Open-Source te faire expliquer gratuitement comment faire pour faire en sorte que ton code (qu'on ne verra jamais) te permette de gagner de l'argent sans aucune contre-partie. Tu as pas l'impression de pousser un peu là ?

Si tu veux faire du payant, sois cohérent et passe en mode payant dans l'autre sens aussi, ça justifiera ta facturation. Il y a des écoles supérieures en informatique qui t'enseigneront très bien tout ça. Ha ben oui, ces écoles ne sont pas gratuites, dommage, mais c'est pas vraiment notre problème. :-*

Re: Obfuscation js

Posté : 04 sept. 2011, 19:25
par kodjo
bon, je crois qu'on s'enflamme là. Je viens pour me renseigner tranquillement sur des techniques que de nombreux informaticiens utilisent, pas pour faire une guerre de religion.
Il y a des gens compétents en informatique qui font des très belles choses. Certains choisissent de vendre, d'autre de donner gratuitement. ça n'en fait pas des gens bons ou mauvais.

Si je suis ton raisonnement jusqu'au bout, je ne devrais pas venir sur le forum parce que je me fais payer pour développer des applications?
C'est complètement insensé. Les créateurs de ce forum pourraient décider de faire payer l'information, je le comprendrais car même en payant, l'info qu'on trouve sur php france est précieuse.

L'audience baisserait fortement mais ceux qui payent en tireraient encore plus de services.

Mais encore une fois ce n'est pas la question. Les créateurs du site ont dit que c'était gratuit, donc je viens comme c'est permis et je ne vais pas me laisser agresser parce que je vends une extension payante tout en profitant de services gratuits. ça veut dire quoi ça? Que quand on se sert de services gratuits, il faut tout donner gratuit? C'est de l'intégrisme pur et simple.

Si quelqu'un vient pêcher une information sur ce forum et va ensuite la mettre dans le prochain site qu'il est payé pour développer, c'est un salopard?

Si tu veux tout savoir, mon extension existera en version gratuite et payante. Ceux qui payent ont un support illimité, du conseil personnalisé, un outil bien plus avancé, et bien d'autres choses.
Il m'a fallu 42 nuits blanches pour faire la version gratuite, près de 90 pour la version payante. Je travaille sur l'ensemble depuis 2 ans.
Et tu viens me dire que je suis un enfoiré parce que je commercialise un logiciel...tu sors d'où toi?

Bon les gars, vraiment désolé que le post prenne cette tournure mais je vois qu'il y en a qui sont très énervés. Je voulais juste me renseigner sur l'obfuscation et malgré l'insistance de certains, je me suis efforcé de focaliser sur le sujet.

Je sais que le monde des informaticiens se divise en 2 catégories. J'ai déjà fait et refait le débat des 10zaines de fois, il y a des 10zaines de posts qui le refont sur php france. Don un de plus ou un de moins...moi ça m'ennuie. Laissons chacun faire ce que bon lui semble. La plupart des développeurs que je connais commercialisent certaines applis et en laissent d'autres libres et ça n'en fait pas des gens infréquentables.

Les deux univers coexistent parfaitement sans se phagocyter et je reste convaincu que la plupart des développeurs passeront leur carrière à passer de l'un à l'autre.

Sinon, si y en a parmis vous qui sont intéressés par la question de l'obfuscation, n'hésitez pas à ramener le débat dans un giron plus raisonnable.
En remerciant bien entendu tous ceux qui ont bien voulu me poster une réponse gratuitement, j'ai vraiment honte.

Re: Obfuscation js

Posté : 04 sept. 2011, 19:44
par Cyrano
bon, je crois qu'on s'enflamme là.
Qui s'enflamme ?? :shock:
Certains choisissent de vendre, d'autre de donner gratuitement. ça n'en fait pas des gens bons ou mauvais.
Tu fais une confusion : le logiciel libre, ça ne signifie pas le logiciel gratuit. Je sais bien qu'en anglais le mot est le même, mais la nuance a quand même une certaine importante. Tu pourrais même le plus légalement du monde, et pas mal de développeurs voire d'agences web le font, vendre du service en créant des sites construits avec des CMS libres comme Joomla, Wordpress et d'autres encore.
...mais je vois qu'il y en a qui sont très énervés.
À part toi, je ne vois personne d'énervé et pour ma part, je suis d'un calme olympien. Mais peut-être devrais-tu te poser la question suivante : pourquoi personne ici ne répond directement à ta question de base, pourquoi Berzemus a immédiatement soulevé ce problème de licence, et pourquoi j'ai moi-même appuyé sur ce point ? Si tu trouve une réponse un peu moins simpliste que « C'est de l'intégrisme » tu auras sans doute une approche différente, même si tu as passé un temps assez conséquent sur ledit projet.

Tu as souligné que d'autres ont publié des extensions en masquant leur code sur Joomla et qu'il n'y a pas eu de procès : possible, il n'y en a peut-être pas encore eu, mais ça ne signifie pas d'une part que c'est légal et ça ne les met pas à l'abri d'un retour de bâton de la FSF par exemple.

Ce qu'il faudrait aussi voir, c'est l'esprit général qui peut régner sur un forum comme PHPFrance : On est dans l'open-source, trouves-tu vraiment anormal qu'on réagisse pas bien vis-à-vis du closed-source ? Le cas échéant, tu es soit incohérent, soit naïf, et si ce n'est pas le cas, alors c'est que tu nous prend pour des naïfs, assez bonne-pommes pour tout filer sans discernement juste pour l'amour de l'art ;)

Re: Obfuscation js

Posté : 04 sept. 2011, 19:57
par kodjo
bon ce qui te gêne, c'est le code masqué, pas le code commercialisé.
ok promis, je ne masquerai pas. tu te sens mieux? bonne soirée à tous.

Re: Obfuscation js

Posté : 04 sept. 2011, 20:20
par kodjo
au passage, je te fais découvrir ceci:
http://www.magictoolbox.com/

ça fait 10 ans que je développe sous Joomla et je ne remercierai jamais assez ce mec de me faire payer pour son appli. Non seulement le prix est léger, mais il me fait gagner un temps hallucinant.
Le support aussi est parfait. L'appli est entièrement modifiable, sauf un fichier javascript obfusqué (dont j'ai posté un bout plus haut) qui permet de contrôler la validité d'une licence.

Ce mec est encore pire que moi, il n'a même pas de version gratuite de son appli comme je vais le faire. Et alors?
Est-ce une raison pour faire de lui un pestiféré? C'est une des extensions Joomla les plus populaires, je serais étonné que la FSF ne l'aie pas vu passer.
Si t'es si motivé que ça, tu peux aller le dénoncer.

Je lance ici un appel à tous les développeurs qui se posent la question. Ce n'est pas parce que vous distribuez des applis payantes qui faut éviter les forums gratuits, n'ayez pas honte.
Et si vous jugez que votre appli vaut le coup d'être payée, n'hésitez pas non plus. Dans tous les cas le marché est impitoyable et personne n'est stupide. Si votre appli ne vaut pas ce que vous dites, personne ne l'achètera de toutes façon, mais vous aurez grandi dans l'expérience.
Et si cette appli ne se vend pas, je suis sûr que vous la laisserez en libre téléchargement dans tous les cas.

Ensuite, il faut arrêter de prendre les gens pour des neuneus. On cherche tous des revenus d'une manière ou d'une autre, les informaticiens y compris.
Ceux qui n'en cherchent pas en ont certainement déjà accumulé assez. On parle ici de vendre son expertise et son savoir, où est le pb?

Je suis naif? Au cas ou tu ne l'aurais pas remarqué, les gros players du open source se font une thune monstre, mais d'une autre manière. Ils laissent l'outil libre pour vendre leurs services à ceux qui veulent du poussé ou du personnalisé. Au final, celui qui a vendu son logiciel et celui qui l'a distribué gratuitement se boivent un cocktail pendant que tu perds ton temps à titiller un mec qui va dans tous les cas distribuer une version de son appli gratuitement.

Oui, je vois bien que tu es d'un calme olympien, mais pas moi, ça m'énerve tout ça

Re: Obfuscation js

Posté : 04 sept. 2011, 21:38
par nicolas
au passage, je te fais découvrir ceci:
http://www.magictoolbox.com/

ça fait 10 ans que je développe sous Joomla et je ne remercierai jamais assez ce mec de me faire payer pour son appli. Non seulement le prix est léger, mais il me fait gagner un temps hallucinant.
Le support aussi est parfait. L'appli est entièrement modifiable, sauf un fichier javascript obfusqué (dont j'ai posté un bout plus haut) qui permet de contrôler la validité d'une licence.
Je ne sais pas sous quelle licence les modules sont distribués mais ils doivent nécessairement l'être sous une licence compatible avec la licence de jomla, à savoir gnu/gpl. Le fait de rendre un fichier non lisible met la personne hors la loi. Pour être plus précis, il ne respecte pas une des clauses de la licence qui précise que le code doit pouvoir être modifiable.

En même temps, son fichier javascript n'est que légèrement obfusqué, il a juste renommé les fonctions, par exemple "ma_fonction_au_joli_nom" en "A".

Re: Obfuscation js

Posté : 04 sept. 2011, 22:06
par kodjo
bon, c'est pas grave, changeons de sujet.
Je tiens tout de même à remercier cyrano (et tous les autres) d'avoir participé car même si je ne suis pas d'accord avec sa vision des choses, j'ai quand même appris des choses dans ce qu'il a dit, sur phpfrance et sur l'open source en général. Et en plus il m'a souvent aidé à comprendre et à progresser ces 10 dernières années, essentiellement sur des messages posté en anonyme.
Toujours en anonyme, j'ai moi même répondu à pas mal de questions (avec mon niveau modeste) et participé à quelques débats passionnants.

Mon préféré est "quel est le meilleur langage pour...". c'est pareil, ça ne finit jamais. il n'y a pas de point final, on s'enrichit, c'est tout. Qu'on revende ensuite une appli ou pas, ça n'a rien à voir.

Merci Cyrano, merci à tous les membres actif du forum, et merci à tous ceux qui postent des questions.

C'est bon je ne vais pas crytper mon code, il sera tout ouvert. Mais je souhaite en commercialiser une version avancée. Si tu n'as rien contre les logiciels commerciaux dont une version est gratuite, nous pouvons peut-être continuer.
J'ai posé un message juste à côté sur le contrôle de licence.
javascript-ajax/controle-licence-t260236.html

Pensez-vous qu'il y ait une solution? Ou alors suis-je toujours aussi indésirable?

Re: Obfuscation js

Posté : 04 sept. 2011, 23:44
par Cyrano
Si tu n'as rien contre les logiciels commerciaux dont une version est gratuite, nous pouvons peut-être continuer.
Non seulement on peut continuer, mais j'ajouterais un élément qui t'inspirera peut-être.

Il y a environ 5 ans, MySQL AB avec son SGBD Open source distribué sous deux licences, une libre, l'autre commerciale, présentait tout de même un chiffre d'affaire annuel d'approximativement 45M$ . Il est certain qu'atteindre de telles proportions avec une extension pour Joomla relève de la fantaisie, mais néanmoins le modèle économique existe et il s'est montré viable. ;)