Obfuscation js

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Obfuscation js

Re: Obfuscation js

par devlop78 » 06 sept. 2011, 03:59

Tout ne se vaut pas :

http://www.daftlogic.com/projects-onlin ... scator.htm
var mdr ="lol";
alert(mdr.toLowerCase());
jQuery("li").show().css({"background":"none"});
donne

eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 0="2";1(0.4());5("9").8().7({"6":"a"});',11,11,'mdr|alert|lol|var|toLowerCase|jQuery|background|css|show|li|none'.split('|'),0,{}))
Ca ne vaut rien ... Le eval() trahit tout ...
alert(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 0="2";1(0.4());5("9").8().7({"6":"a"});',11,11,'mdr|alert|lol|var|toLowerCase|jQuery|background|css|show|li|none'.split('|'),0,{}));
Donne le bon code ...

Re: Obfuscation js

par devlop78 » 06 sept. 2011, 03:54

Je sujet m'intéresse, mais pas les débats. Moi, je cherche au minimum la compression, et au mieux l'obfuscation. Mais d'un c'est pour une appli 100% moi, et deux, ce n'est pas une priorité, et pas vraiment nécessaire.

Mais rien que http://javascriptobfuscator.com/default.aspx

C'est une horreur à lire. J'avais utilisé exactement le même outil pour faire un simple lien mailto:monmail et c'est vraiment pratique

Re: Obfuscation js

par Berzemus » 05 sept. 2011, 10:00

Pour meubler un peu le point que j'ai soulevé et que Cyrano à défendu vaillamment (en vérité je ne comptais pas faire débat, mais puisqu'un forum est un lieu de débat, c'est pas tout à fait inattendu :wink: ).

Il serait irrespectueux de notre part d'aider sans avertir des dangers et obstacles qui pourraient se présenter, ce serait comme s'assurer que les élastiques sont bien attachés avant de laisser un quidam sauter d'un pont qu'on sait trop bas.

Et plutôt que d'y aller de mes propres opinions, j'apporte quelques faits, car chacun sait qu'il est inutile d'argumenter des faits.

Je vous présente, la FAQ sur la licence de joomla (oui, c'est dans la langue de pippa middleton).

Je réfère directement à ses 3 points-ci:
Does the license allow someone to sell an extension?

Yes. The Preamble of the GNU GPL states "when we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things."

Also see: http://www.gnu.org/licenses/old-license ... AllowMoney


Does the license allow someone to encrypt an extension?

Yes, technically, but the distributor must provide access to the complete and unencrypted source code by either including it in the package or by making it available for download. The distributor must provide access "for a charge no more than [their] cost of physically performing source distribution." See [1].

Can I release an extension under a non-GPL licence?
It is our opinion that most extensions are derivative works of Joomla! and must be licensed under the GNU GPL. It is possible that an extension could work within Joomla! and not be considered a derivative work according to copyright law but this would have to be evaluated on a case-by-case basis. If you believe your extension is not a derivative work we strongly recommend that you seek professional legal advice.
Voilà une belle brochette de concepts du logiciel libre.
Oui, il est possible de vendre de l'open-source. Le principal est que le code source doit rester libre d'accès.

Donc en ce qui te concerne, kodjo, tu peux vendre ton extension, mais tu dois utiliser une licence au moins aussi large que celle d'origine de Joomla, et du dois faire en sorte que le code source est accessible.


Le fait est que lorsqu'on décide de produire quelque chose commercialement, les clients ont des droits envers toi, ainsi que toutes les parties tierces sur lesquels tu aurais basé ton produit. Oui, c'est compliqué, mais c'est pas oui-oui-land ici, il y a des règles et des lois qui régissent les relations commerciales. (d'ailleurs, es-tu bien assujetti à la TVA ? As-tu le droit de commercialiser, de vendre un produit ? Quid de la fiscalité ?). Je ne dis bien sur pas ça pour te décourager, tout le contraire, mais je préfère t'éviter de te lancer dans le précipice sans même savoir ce qu'il y à au fond. Sauter à l'élastique c'est bien, mais mieux vaut le faire en toute connaissance de cause.*

Et estime-toi heureux de ne pas vivre aux states, rien que le fait d'utiliser un truc bateau comme un menu déroulant pourrait te valoir un procès de quelques milliers/millions de dollars. Il y a des brevets ridiculement larges dans tout les coins, et chaque ligne de code en viole une douzaine. Heureusement qu'en europe, nous sommes un peu plus à l'abri de ce genre de déconvenues.

* D'ou le succès de l'open-source et sa gratuité: les développeurs font ce qu'ils aiment, sans s'encombrer de relations client, de support, de taxes, d'impôts etc...

Re: Obfuscation js

par Cyrano » 04 sept. 2011, 23:44

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. ;)

Re: Obfuscation js

par kodjo » 04 sept. 2011, 22:06

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

par nicolas » 04 sept. 2011, 21:38

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

par kodjo » 04 sept. 2011, 20:20

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

par kodjo » 04 sept. 2011, 19:57

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

par Cyrano » 04 sept. 2011, 19:44

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

par kodjo » 04 sept. 2011, 19:25

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

par Cyrano » 04 sept. 2011, 18:43

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

par kodjo » 04 sept. 2011, 18:20

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

par Cyrano » 04 sept. 2011, 17:05

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

par nhachet » 04 sept. 2011, 16:08

Un outil comme celui-ci pourrait-il te convenir ? http://jscompress.com/

Re: Obfuscation js

par Cyrano » 04 sept. 2011, 13:42

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.