This page has been robot translated, sorry for typos if any. Original content here.

Comment décrypter eval (base64_decode ()); eval (gzinflate (base64_decode ()));

Par sujet:


Comment décrypter ou décoder eval gzinflate base64_decode

Les principes de base du chiffrement et de l'emballage, les faiblesses de la protection, les méthodes de suppression manuelle, ainsi que les outils universels pour le retrait automatique des packers et la protection à charnière des scripts JavaScript.

Récemment, de plus en plus souvent le code source des scripts est chiffré ou empaqueté.

Yandex, DLE et d'autres projets populaires ont commencé à s'impliquer dans ce domaine, et de belles motos sur "prendre soin des utilisateurs", "sauver du trafic" et d'autres bêtises semblent très drôles.

Eh bien, si quelqu'un a quelque chose à cacher, cela signifie que notre tâche est de les amener à l'eau propre.

Théorie

En raison des particularités de l'exécution JavaScript, tous les chiffreurs et les packers, malgré leur diversité, n'ont que deux variantes de l'algorithme:

	 var encrypted = 'données chiffrées'; 
	 function decrypt (str) { 
	  // fonction de décryptage ou déballage 
	 } 
	 // Exécute le script décrypté 
	 eval (décrypter (crypté)); 	
	

ou en option:

	 var encrypted = 'données chiffrées'; 
	 function decrypt (str) { 
	  // fonction de décryptage ou déballage 
	 } 
	 // Afficher les données décryptées 
	 document.write (décrypter (crypté)); 
	

La deuxième méthode est le plus souvent utilisée pour protéger le code html source de la page, ainsi que divers chevaux de Troie pour introduire du code malveillant dans la page, par exemple, un cadre caché.

Les deux algorithmes peuvent être combinés, le "tas" et l'enchevêtrement du décrypteur peuvent être quelconques, seul le principe reste inchangé.

Dans les deux cas, il s'avère que les fonctions eval () et document.write () sont complètement décryptées.

Comment les intercepter?

Essayez de remplacer eval () par alert () , et dans le MessageBox ouvert, vous verrez immédiatement le texte déchiffré.

Certains navigateurs vous permettent de copier du texte à partir de MessageBox, mais il vaut mieux utiliser un tel décodeur semi-automatique:

	 <html> 
	 <head> <title> Décodeur JavaScript </ title> </ head> 
	 <body> 
	 
	 <script type = "text / javascript"> 
	 // La fonction d'écriture dans le journal des résultats de déchiffrement 
	 fonction décodeur (str) { 
	  document.getElementById ('décodé'). valeur + = str + '\ n'; 
	 } 
	 </ script> 
	 
	 <! - Fenêtre de journal -> 
	 <textarea id = "décodé" style = "largeur: 900px; hauteur: 500px;"> </ textarea> 
	 
	 <script type = "text / javascript"> 
	 // Insère le script chiffré ici, à l'avance 
	 // remplace tous les appels eval () et document.write () par decoder (). 
	 </ script> 
	 
	 </ body> 
	 </ html> 
	

Par exemple, prenons un script de Yandex , après avoir regardé le code source, nous voyons quelque chose de malsain:

eval(function(p,a,c,k,e,r){e=function(c){return(c 35?String.fromCharCode(c+29):c.toString(36))};if(! ''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e ){return r[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}('$.1e .18=8(j){3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".uL";3 m=j["6-L-17"] ||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8( ){3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16( $(k).q());3 t=$(o).2("15");3 c=$(o).2(".br");3 d=$(o).2(".b-12"); [остальной такой же бред отрезан] eval(function(p,a,c,k,e,r){e=function(c){return(c 35?String.fromCharCode(c+29):c.toString(36))};if(! ''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e ){return r[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}('$.1e .18=8(j){3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".uL";3 m=j["6-L-17"] ||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8( ){3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16( $(k).q());3 t=$(o).2("15");3 c=$(o).2(".br");3 d=$(o).2(".b-12"); [остальной такой же бред отрезан]

À la fois je vais dire, que ce script est traité JavaScript Compressor , il est facile d'apprendre sur la signature - le nom caractéristique de la fonction au début du script. Nous copions le code source complet du script, remplaçons le premier eval par le décodeur , l'insérons dans le décodeur et l'enregistrons sous forme de page html.

	 <script type = "text / javascript">
	 // Insère le script chiffré ici, à l'avance
	 // remplace tous les appels eval () et document.write () par decoder ().
	 décodeur (fonction (p, a, c, k, e, r) {e = fonction (c) {return (c <a? '': e ...
	 </ script>
	

Ouvrez-le dans n'importe quel navigateur et voir que dans textarea est immédiatement apparu script non emballé. Il est trop tôt pour être heureux, tous les transferts de ligne et le formatage du code ont été supprimés. Comment faire face à cela est écrit dans l'article sur la désobfuscation .

Le deuxième exemple. HTML-page, couvert par le programme HTML Protector. Ceci est une page qui démontre les fonctionnalités du programme, donc toutes les options sont là: bloquer la sélection et la copie de texte, désactiver le bouton droit de la souris, protéger les images, cacher la barre d'état, crypter le code html, etc. Nous ouvrons le code source, nous regardons. Tout en haut est déjà le document.write que nous connaissons et le script crypté. Exécutez-le à travers le décodeur, obtenez la fonction de déchiffrement du contenu principal:

hp_ok=true;function hp_d01(s){ ...вырезано... o=ar.join("")+os;document.write(o)

Nous remplaçons le dernier document.write par le décodeur dans la fonction et insérons après lui les trois scripts cryptés restants:

	 <script type = "text / javascript"> 
	 // Insère le script chiffré ici, à l'avance 
	 // remplace tous les appels eval () et document.write () par decoder (). 
	 hp_ok = true, fonction hp_d01 (s) {.... o = ar.join ("") + os; décodeur (o); 
	 hp_d01 (unescape ("> QAPKRV% 22NCLEWC .... 
	 hp_d01 (unescape ("> QAPKRV% 22NCLEWCEG? HctcQa ... 
	 hp_d01 (unescape (">` mf {% 22`eamnmp ?! DDDDDD% 22v ... 
	 </ script> 
	

Pour plus de commodité, l'article ne fournit pas de scripts complets, vous devez les copier entièrement. Nous ouvrons le décodeur dans le navigateur et voyons les scripts de protection ajoutés par le programme, ainsi que le texte original déchiffré de la page. Pour plus de commodité, vous pouvez déchiffrer seulement le troisième script, qui contient le code html de la page. C'est toute la protection. Comme vous pouvez le voir, rien de compliqué. De même, les autres protections des pages html sont supprimées.

Logiciel pour la recherche de chevaux de Troie et d'autres codes malveillants

Pour les cas plus complexes, l'artillerie lourde devra être utilisée. Ceci est un projet Malzilla gratuit conçu pour enquêter sur les chevaux de Troie et autres codes malveillants. Puisque tous les programmes conçus pour protéger les droits d'auteur sont uniquement malveillants, Malzilla nous aidera à les combattre. Téléchargez la dernière version, décompressez-la, démarrez-la. Ouvrez le deuxième onglet Decoder, dans la fenêtre supérieure, nous insérons le code du script chiffré, nous appuyons sur le bouton Run script.

Comment décrypter ou décoder eval gzinflate base64_decode
Malzilla au travail

Dans le dossier eval_temp , tous les résultats des fonctions eval () sont exécutés, y compris les résultats intermédiaires. Ils peuvent être visualisés en cliquant sur le bouton Afficher les résultats eval () , le texte s'ouvrira dans la fenêtre inférieure. Il peut être copié, collé dans la fenêtre supérieure et immédiatement formaté en appuyant sur le bouton Format de code . En plus du décodeur, Malzilla dispose également de nombreux outils et paramètres pour supprimer facilement toute protection des scripts JavaScript.

Comment décrypter ou décoder eval gzinflate base64_decode
Le script a été décrypté et formaté avec succès

Vous pouvez également faire attention à un outil gratuit supplémentaire pour travailler avec des scripts cryptés - FreShow .

Décodage <? Php eval ( gzinflate ( base64_decode ( ' encoded text ' )))); ?> - option 1 (script)

Face maintenant avec la tâche de découvrir tranquillement crypté grâce à <? Php eval ( gzinflate ( base64_decode ( ' texte codé ' )))); ?> code php.

Comme toujours, pour un indice j'ai décidé de me tourner vers Google. La réponse a toujours été trouvée.

Code:

	 <html>
	 <body>
	 <! - début du décryptage ->
	 <? php
	 $ str = gzinflate (base64_decode ('texte codé'));
	 alors que (1) {
	 if (($ pos1 = strpos ($ str, 'eval (')) === FAUX) {
	 rompre;
	 }
	 $ pos2 = strpos ($ str, ');');
	 $ newstr = substr ($ str, $ pos1 + 5, $ pos2- $ pos1-5);
	 eval ('$ str ='. $ newstr. ";");
	 }
	 print $ str;
	 ?>
	 <! - fin de décryptage ->
	 </ body>
	 </ html>
	

Sauvegardez ce fichier comme vous le souhaitez, remplissez-le sur l'hôte, ou exécutez-le sur localhost et copiez à partir de la source tout ce qui se trouve entre les balises

<! - début du décryptage ->
...
<! - fin de décryptage ->

C'est tout. Le code est déchiffré.

Décodage <? Php eval ( gzinflate ( base64_decode ( ' encoded text ' )))); ?> - option 2 (script)

Dans ce cas, vous devez effectuer les opérations suivantes:

  1. enregistrer ce fichier en tant que decrypt.php
  2. Chiffrer le code enregistré en tant que coded.txt
  3. créez un fichier decoded.txt vide (si vous exécutez le fichier sur le serveur, spécifiez-le CHMOD 0666)
  4. exécutez le fichier decrypt.php
  5. le fichier decoded.txt devrait maintenant avoir le code PHP déchiffré.

Code:

	 <? php
	 / *
	 Tiré de http://www.php.net/manual/de/function.eval.php#59862
	 Directions:
	 1. Enregistrez cet extrait sous le nom decrypt.php
	 2. Enregistrez le code PHP encodé dans coded.txt
	 3. Créez un fichier vide appelé decoded.txt (à partir du shell CHMOD 0666 decoded.txt)
	 4. Exécutez ce script (visitez decrypt.php dans un navigateur Web ou tapez php decrypt.php dans le shell)
	 5. Ouvrez décoded.txt, le PHP devrait être décrypté si pas de commentaire ci-dessous http://danilo.ariadoss.com/decoding-eval-gzinflate-base64-decode/
	 * /
	 echo "\ nDECODE imal eval (gzinflate ()) par DEBO Jurgen <jurgen@person.be> \ n \ n";
	 echo "1. Lecture coded.txt \ n";
	 $ fp1 = fopen ("coded.txt", "r");
	 $ contents = fread ($ fp1, filesize ("coded.txt"));
	 fclose ($ fp1);
	 echo "2. Décodage \ n";
	 while (preg_match ("/ eval \ (gzinflate /", $ contenu)) {
	  $ contents = preg_replace ("/ <\? | \?> /", "", $ contents);  eval (preg_replace ("/ eval /", "\ $ contents =", $ contenu));  } echo "3. Écriture de decoded.txt \ n";  $ fp2 = fopen ("decoded.txt", "w");  fwrite ($ fp2, trim ($ contenu));  fclose ($ fp2);
	 ?> 

En déchiffrant le code source, j'ai détecté que l'application freeware avait été téléchargée sur un site. J'ai lu cet article afin que d'autres puissent enquêter et utiliser du code malveillant sur leurs sites Web. J'espère que cela a aidé certains d'entre vous et je m'efforcerai de continuer avec les entrées utiles et perspicaces à partir de maintenant.

Décodage <? Php eval ( gzinflate ( base64_decode ( ' encoded text ' )))); ?> - option 3 (en ligne)

Comment décoder le code et supprimer les liens commerciaux des scripts payants et gratuits?

Premier cas:

eval(base64_decode ('SGksIG1hbg=='));

Si nous rencontrons la ligne eval (base64_decode ('SGksIG1hbg ==')) ,
alors nous continuons ce lien sur le décodeur en ligne, nous insérons dans le formulaire uniquement SGksIG1hbg == depuis notre ligne et appuyons sur le bouton "Décoder les données".

Cas de la seconde:

eval(gzinflate(base64_decode ('80jNyclXyFTPVUhJTc5PSU0BAA==')));

Si nous rencontrons la ligne eval (gzinflate (base64_decode ('80jNyclXyFTPVUhJTc5PSU0BAA =='))); ,
nous allons déjà sur ce lien et on colle toute la ligne dans la forme en commençant par eval (gzinflate et ending ))); et cliquez sur "Decode".

<? php eval ( ( base64_decode ( ' encoded text ' )) - option 4 (utilisant echo)

Pour déchiffrer des inclusions malveillantes dans le type de code php:

eval(base64_decode(”DQplcnJvcl9yZXBv...tPWhlYWRlc...2F0aW9uOiBodHRwOi8...eGl0KCk7DQp9Cn0KfQ0KfQ0KfQ==”));

Vous pouvez simplement remplacer la fonction eval par la fonction écho et voir ce qui se passe.

C'est l'un des moyens les plus élémentaires de déchiffrer base64_decode ...

Si aucun des moyens n'a aidé, alors pas le destin :(

Si vous avez d'autres solutions à ce problème, écrivez dans le commentaire, essayez de les comprendre.