abracadabraPDF › Forums › PDF – Général › Protection PDF
- Ce sujet est vide.
-
CréateurSujet
-
24 mai 2020 à 19:37 #46339micka92Membre
Bonsoir,
J’ai pour habitude de protéger mes PDF avec des mots de passe complexes. Pour autant, je m’en suis déjà vu certains déverrouiller. Apparemment, les personnes en question auraient simplement utilisé certains sites Internet permettant le déverrouillage. Savez-vous comment il serait possible de mieux les protéger ?
-
CréateurSujet
-
AuteurRéponses
-
24 mai 2020 à 20:44 #67644MerlinMaître des clés
Bonsoir
Les “restrictions d’utilisations” d’Adobe ne sont pas des protections, la longueur du mot de passe n’y change rien, c’est trop facile à contourner ou à faire sauter : https://smallpdf.com/fr/unlock-pdf
Seul le mot de passe à l’ouverture est une vraie protection.Pour la dernière question il faudrait savoir ce que tu veux protéger (scripts ?, images ?…) et contre qui.
24 mai 2020 à 21:27 #67645micka92MembreBonsoir Merlin,
Je veux principalement protéger mes scripts. En effet, dans le cadre de mon travail, je me suis fait voler un long travail de plusieurs mois par des entreprises concurrentes. A l’avenir, j’aimerais pouvoir protéger, si possible, mes scripts. Qu’on me vole le modèle, tant pis, mais pas l’intelligence mise dans les formulaires.
25 mai 2020 à 06:09 #67646micka92MembreBonjour,
J’ai fait le test et effectivement, n’importe quel mot de passe de restrictions d’utilisateurs se fait sauter, même très complexes. C’est dingue ! Le mot de passe d’ouverture du fichier le protège bien contre ces sites, mais ce n’est pas possible dans mon cas. Les formulaires sont renseignés plusieurs fois par jour, transmis à des clients, collègues etc, et il n’est donc pas concevable d’y mettre un mot de passe d’ouverture. :oh:
25 mai 2020 à 06:12 #67647bebarthMaître des clésbonjour,
Je me permets de répondre avant Merlin qui ne manquera pas de compléter ou rectifier mes dires en cas de nécessité, vu que c’est lui qui m’a appris comment faire.
Attention, avant de commencer, je te conseille fortement de travailler sur une copie car après c’est assez difficile de récupérer les scripts originaux.- Tu peux dans un premier temps compresser ou minifier ton script.
https://jscompress.com/ compresse le script, c’est à dire qu’il retire tous les caractères inutiles qui le sont pour une bonne lecture de la programmation (retours ligne, espaces, tabulations…).
https://javascript-minifier.com/ fait la même chose, et “complique” en même temps le script. D’après ce que j’ai pu remarquer, “true” devient “!0” (qui signifie “n’est pas faux”), il change l’ordre des égalités, la syntaxe if else… tu regarderas si tu veux !
Après cette étape, le script devient déjà beaucoup plus illisible donc difficile à comprendre pour un non initié. Même pour quelqu’un qui s’y connait, il y a un peu de boulot pour remettre ça “lisible”. Il existe des sites qui font ce travaille (https://unminify.com/ par exemple) mais il y a encore un peu de boulot derrière pour remettre le script comme tu l’avais écrit.
[/list]
- Tu peux ensuite obfusquer ton script :
https://javascriptobfuscator.com/Javascript-Obfuscator.aspx
Après cette étape le script devient complètement illisible (et le sera même pour toi…). Attention donc !
Le soucis avec l’obfuscation (je viens de l’apprendre récemment) est que les antivirus bloquent les formulaires avec ces scripts. Ça devient donc compliquer à utiliser lorsque le formulaire doit être renvoyé à une société dont le système antivirus est réglé de la sorte…
[/list]La première étape protège déjà pas mal le script contre les vulgaires copier/coller. Je te conseille même de ne pas minifier absolument tous les scripts de tous les champs, mais uniquement ceux qui en valent le coup (les scripts de document et les principaux scripts sur les boutons ou les champs qui contiennent des fonctions ou des script un peu compliqués).
De toute façon, si tu tombes sur un feru de programmation ou d’informatique, aucun cryptage ne lui résistera.
A moins que tu ais découvert le script du siècle, il y a peu de personnes qui passeront des heures à déchiffrer ton script (je dis “ton”, mais c’est idem pour les miens). S’ils ne comprennent pas, ils essaieront d’en trouver un autre plus compréhensible.
@+
:bonjour:25 mai 2020 à 06:34 #67648bebarthMaître des clés…on va prendre en exemple un de mes scripts que j’ai donné récemment pour calculer l’âge.
A l’origine, ça donne ça :Code:var chaine=this.getField(“Naissance”).valueAsString;
if (chaine!=””) {
var dateNaissance=chaine.split(“u002F”);
var jourNaissance=Number(dateNaissance[0]);
var moisNaissance=Number(dateNaissance[1]);
var anneeNaissance=Number(dateNaissance[2]);
var aujourdhui=new Date();
var cetteAnnee=aujourdhui.getFullYear();
var ceMois=aujourdhui.getMonth()+1;
var ceJour=aujourdhui.getDate();
var age=cetteAnnee-anneeNaissance;
var t=this.templates;
if (age>0) {
if (age>1) {
var ans=” ans”;
} else {
var ans=” an”
}
if (ceMoisif (ceMois==moisNaissance) {
if (ceJour}
this.getField(“Age”).value=age+ans;
} else {
this.getField(“Age”).value=(ceMois-moisNaissance)+” mois”;
}
if (age>0 && age<18) {
for (var i=0; iif (t.name==”mineur”) t.hidden=false;
else t.hidden=true;
}
} else if (age>0) {
for (var i=0; iif (t.name==”majeur”) t.hidden=false;
else t.hidden=true;
}
}
} else {
this.getField(“Age”).value=””;
for (var i=0; i} Une fois minifié :
Code:var chaine=this.getField(“Naissance”).valueAsString;if(“”!=chaine){var dateNaissance=chaine.split(“/”),jourNaissance=Number(dateNaissance[0]),moisNaissance=Number(dateNaissance[1]),anneeNaissance=Number(dateNaissance[2]),aujourdhui=new Date,cetteAnnee=aujourdhui.getFullYear(),ceMois=aujourdhui.getMonth()+1,ceJour=aujourdhui.getDate(),age=cetteAnnee-anneeNaissance,t=this.templates;if(age>0){if(age>1)var ans=” ans”;else ans=” an”;if(ceMois0&&age<18)for(var i=0;i 0)for(i=0;i Et une fois obfusqué :
Code:var _0x80a1=[“x76x61x6Cx75x65x41x73x53x74x72x69x6Ex67″,”x4Ex61x69x73x73x61x6Ex63x65″,”x67x65x74x46x69x65x6Cx64″,””,”x2F”,”x73x70x6Cx69x74″,”x67x65x74x46x75x6Cx6Cx59x65x61x72″,”x67x65x74x4Dx6Fx6Ex74x68″,”x67x65x74x44x61x74x65″,”x74x65x6Dx70x6Cx61x74x65x73″,”x20x61x6Ex73″,”x20x61x6E”,”x76x61x6Cx75x65″,”x41x67x65″,”x20x6Dx6Fx69x73″,”x6Cx65x6Ex67x74x68″,”x6Dx69x6Ex65x75x72″,”x6Ex61x6Dx65″,”x68x69x64x64x65x6E”,”x6Dx61x6Ax65x75x72″];var chaine=this[_0x80a1[2]](_0x80a1[1])[_0x80a1[0]];if(_0x80a1[3]!= chaine){var dateNaissance=chaine[_0x80a1[5]](_0x80a1[4]),jourNaissance=Number(dateNaissance[0]),moisNaissance=Number(dateNaissance[1]),anneeNaissance=Number(dateNaissance[2]),aujourdhui= new Date,cetteAnnee=aujourdhui[_0x80a1[6]](),ceMois=aujourdhui[_0x80a1[7]]()+ 1,ceJour=aujourdhui[_0x80a1[8]](),age=cetteAnnee- anneeNaissance,t=this[_0x80a1[9]];if(age> 0){if(age> 1){var ans=_0x80a1[10]}else {ans= _0x80a1[11]};if(ceMois< moisNaissance){age= age- 1};if(ceMois== moisNaissance&& ceJour< jourNaissance){age= age- 1};this[_0x80a1[2]](_0x80a1[13])[_0x80a1[12]]= age+ ans}else {this[_0x80a1[2]](_0x80a1[13])[_0x80a1[12]]= ceMois- moisNaissance+ _0x80a1[14]};if(age> 0&& age< 18){for(var i=0;i< t[_0x80a1[15]];i++){_0x80a1[16]== t[i][_0x80a1[17]]?t[i][_0x80a1[18]]= !1:t[i][_0x80a1[18]]= !0}}else {if(age> 0){for(i= 0;i< t[_0x80a1[15]];i++){_0x80a1[19]== t[i][_0x80a1[17]]?t[i][_0x80a1[18]]= !1:t[i][_0x80a1[18]]= !0}}}}else {this[_0x80a1[2]](_0x80a1[13])[_0x80a1[12]]= _0x80a1[3];for(i= 0;i< t[_0x80a1[15]];i++){t[i][_0x80a1[18]]= !0}}// JavaScript DocumentLe script original n’est pas très compliqué, donc une fois minifier il est encore assez compréhensible, mais lorsque le script l’est un peu plus, ça le devient également pour le déchiffrer rien que minifié.
Quant au script obfusqué, si tu sais le lire, chapeau !
@+
:bonjour:25 mai 2020 à 10:05 #67649micka92MembreBonjour bebarth et merci pour tout. C’est très intéressant. Cela me permettra effectivement de brouiller les pistes pour des novices, même si bien souvent le “vol” de mes documents se fait simplement pour modifier le logo et le nom de l’entreprise, tout en gardant l’intelligence que j’y ai mise.
25 mai 2020 à 10:30 #67650bebarthMaître des clésCe qu’il est également possible de faire, c’est de personnaliser avec un logo tes boites de dialogue ou tes messages d’alerte (si tu en as).
C’est déjà un peu plus compliquer à modifier pour un novice…
@+
:bonjour:25 mai 2020 à 13:38 #67651MerlinMaître des clésPas mieux. :Smiley03:
J’ajouterai juste que :
– l’obfuscation plombe aussi les téléchargements, c’est pour ça qu’il n’y a plus de documents obfusqués téléchargeables sur le site abracadabraPDF (enfin je crois)
-il ne faut pas hésitez à noyer les scripts utilisés dans un flots de scripts ou de données inutiles. L’idée c’est de faire en sorte qu’il soit plus simple et plus rentable de développer le script soi-même que de débrouiller un écheveaux de scripts inconnus.25 mai 2020 à 19:24 #67652micka92MembreMerci à vous pour votre aide. :bonjour: C’est vraiment “surprenant” que l’on ne puisse pas mieux protéger nos “créations”. Alors oui, le mot de passe d’ouverture permet de mieux bloquer le piratage, mais ce n’est pas concevable pour les supports que je crée de demander un mot de passe à chaque ouverture. Il y a trop d’interlocuteurs différents.
26 mai 2020 à 07:28 #67653MerlinMaître des clésEt en plus dans ton cas ça ne servirait à rien, parce-que le mot de passe à l’ouverture permet aussi de déverrouiller les restrictions d’utilisation.
:mur: :oh:Concernant les scripts c’est normal : s’ils sont chiffrés (obfusqués) un anti-virus ne peut pas savoir si c’est du code malicieux ou non, donc ça clignote tout de suite en rouge.
AuteurRéponsesAffichage de 10 réponses de 1 à 10 (sur un total de 10)- Vous devez être connecté pour répondre à ce sujet.
- Tu peux dans un premier temps compresser ou minifier ton script.