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 cryptage et du conditionnement, les points faibles de protection, les méthodes de suppression manuelle, ainsi que des outils universels pour la suppression automatique des conditionneurs et la protection des pièces jointes à partir de scripts JavaScript.

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

Yandex, DLE et d’autres projets populaires ont commencé à s’impliquer, et de belles histoires sur «prendre soin des utilisateurs», «économiser du trafic» et autres absurdités sont très amusantes.

Eh bien, si quelqu'un a quelque chose à cacher, notre tâche est de le conduire à l'eau claire.

La théorie

En raison de la nature de l’exécution de JavaScript, tous les encodeurs et les emballeurs, malgré leur diversité, ne disposent que de deux variantes de l’algorithme:

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

ou en option:

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

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 injecter du code malveillant dans la page, par exemple un cadre caché.

Les deux algorithmes peuvent être combinés, le "piège" et l'enchevêtrement du décodeur peuvent être quelconques, seul le principe lui-même reste inchangé.

Dans les deux cas, il s'avère que des données entièrement déchiffrées sont transférées aux fonctions eval () et document.write () .

Comment les intercepter?

Essayez de remplacer eval () par alert () et, dans la boîte de message ouverte, vous verrez immédiatement le texte déchiffré.

Certains navigateurs vous permettent de copier du texte à partir de MessageBoxes, mais il est préférable d’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 du déchiffrement 
	 fonction décodeur (str) { 
	  document.getElementById ('décodé'). valeur + = str + '\ n'; 
	 } 
	 </ script> 
	 
	 <! - Fenêtre de journal -> 
	 <textarea id = "decoded" style = "width: 900px; height: 500px;"> </ textarea> 
	 
	 <script type = "text / javascript"> 
	 // Insère le script crypté ici 
	 // remplace tous les appels eval () et document.write () par decoder (). 
	 </ script> 
	 
	 </ body> 
	 </ html> 
	

Par exemple, prenons un script de Yandex , en regardant 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"); [остальной такой же бред отрезан]

Je dirai tout de suite que ce script est traité par JavaScript Compressor , il est facile de le reconnaître par sa signature - le nom caractéristique de la fonction au début du script. Copiez l'intégralité du code source du script, remplacez le premier eval par le décodeur , insérez-le dans le décodeur et enregistrez-le sous forme de page html.

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

Ouvrez-le dans n’importe quel navigateur et vérifiez que le script décompacté est immédiatement apparu dans la zone de texte. Il est trop tôt pour se réjouir, tous les sauts de ligne et le formatage du code ont été supprimés. Comment traiter cela est décrit dans l'article sur la désobfuscation .

Le deuxième exemple. Page HTML, couverte avec le programme HTML Protector. Ceci est une page qui montre les capacités du programme. Toutes les options sont donc impliquées: bloquer la sélection et la copie de texte, interdire le bouton droit de la souris, protéger les images, masquer la barre d'état, chiffrer le code HTML, etc. Nous ouvrons le code source, nous regardons. Tout en haut se trouve un document.write déjà familier et un script chiffré. Exécutez-le dans le décodeur, nous obtenons la fonction de déchiffrement du contenu principal:

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

Remplacez le dernier document.write par le décodeur de la fonction et collez-y les trois scripts cryptés restants:

	 <script type = "text / javascript"> 
	 // Insère le script crypté ici 
	 // 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é, les scripts d'article ne sont pas complètement, vous devez les copier entièrement. Ouvrez le décodeur dans le navigateur et consultez les scripts de sécurité ajoutés par le programme et le texte source déchiffré de la page. Pour plus de commodité, vous ne pouvez déchiffrer que 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 supprimé et d'autres pages HTML de protection.

Logiciel de recherche de chevaux de Troie et autres codes malveillants

Pour les cas plus complexes, il faudra utiliser de l'artillerie lourde. Il s'agit d'un projet gratuit de Malzilla 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 clairement malveillants, Malzilla nous aidera à les combattre. Nous téléchargeons la dernière version, décompressons, exécutons. Ouvrez le deuxième onglet Décodeur, collez le code du script chiffré dans la fenêtre supérieure, appuyez sur le bouton Exécuter le script.

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

Le dossier eval_temp contient tous les résultats des fonctions eval () , y compris les intermédiaires. Ils peuvent être visualisés en cliquant sur le bouton Afficher les résultats de eval () , le texte s’ouvrira dans la fenêtre du bas. Il peut être copié, collé dans la fenêtre supérieure et immédiatement formaté en appuyant sur le bouton Formater le code . Outre le décodeur, Malzilla dispose de nombreux autres outils et paramètres vous permettant de supprimer facilement toute protection contre les scripts JavaScript.

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

Vous pouvez également faire attention à un autre outil gratuit permettant de travailler avec des scripts cryptés - FreShow .

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

Je viens de rencontrer le problème de faire apparaître le code via <? Php eval ( gzinflate ( base64_decode ( ' encoded text ' ) ' )); ?> code php

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

Code:

	 <html>
	 <body>
	 <! - commence le décryptage ->
	 <? php
	 $ str = gzinflate (base64_decode ('texte codé'));
	 tandis que (1) {
	 if (($ pos1 = strpos ($ str, 'eval (')) = === FALSE) {
	 pause
	 }
	 $ pos2 = strpos ($ str, ');');
	 $ newstr = substr ($ str, $ pos1 + 5, $ pos2 - $ pos1-5);
	 eval ('$ str ='. $ newstr. ";");
	 }
	 print $ str;
	 ?>
	 <! - fin du déchiffrement ->
	 </ body>
	 </ html>
	

Enregistrez ce fichier à votre guise, téléchargez-le sur l'hôte ou lancez-le sur votre hôte local et copiez le contenu entre les balises de la source.

<! - commence le décryptage ->
...
<! - fin du déchiffrement ->

Tous Le code est déchiffré.

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

Dans ce cas, procédez comme suit:

  1. enregistrer ce fichier en tant que decrypt.php
  2. Enregistrer le code crypté sous coded.txt
  3. créer un fichier decoded.txt vide (si vous l'exécutez sur le serveur, spécifiez-le CHMOD 0666)
  4. lancez le fichier decrypt.php
  5. Le fichier decoded.txt devrait maintenant contenir le code PHP décodé.

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 do CHMOD 0666 decoded.txt)
	 4. Exécutez ce script (visitez decrypt.php dans un navigateur Web ou decrypt.php dans le shell)
	 5. Ouvrez decoded.txt, le PHP devrait être déchiffré s'il ne fait pas l'objet de commentaires ci-dessous http://danilo.ariadoss.com/decoding-eval-gzinflate-base64-decode/
	 * /
	 echo "\ nDECODE nested eval (gzinflate ())" par DEBO Jurgen <jurgen@person.be> \ n \ n ";
	 echo "1. Lecture du fichier coded.txt \ n";
	 $ fp1 = fopen ("coded.txt", "r");
	 $ contents = fread ($ fp1, taille de fichier ("coded.txt"));
	 fclose ($ fp1);
	 echo "2. Décodage \ n";
	 while (preg_match ("/ eval \ (gzinflate /", $ content))) {
	  $ contents = preg_replace ("/ <\? | \?> /", "", $ contents);  eval (preg_replace ("/ eval /", "\ $ contents =", $ contents));  } echo "3. Ecrire decoded.txt \ n";  $ fp2 = fopen ("decoded.txt", "w");  fwrite ($ fp2, trim ($ content));  fclose ($ fp2);
	 ?> 

Lors du déchiffrement du code, je ne suis pas sûr de l'avoir vu. Il a été démontré qu'il est impossible de s'en débarrasser. " Je vais vous aider à continuer votre post.

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

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

Premier cas:

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

Si nous rencontrons la chaîne eval (base64_decode ('SGksIG1hbg ==')) ,
alors nous passons par ce lien Sur le décodeur en ligne, nous insérons dans le formulaire uniquement SGksIG1hbg == à partir de notre ligne et cliquez sur le bouton "Décoder les données".

Deuxième cas:

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

Si nous rencontrons la chaîne eval (gzinflate (base64_decode ('80jNyclXyFTPVUhJTc5PSU0BAA =='))); .
passer par ce lien et insérez la ligne entière dans le formulaire en commençant par eval (gzinflate et ending ))); et cliquez sur "Décoder".

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

Pour décrypter les inclusions malveillantes dans le code de type php:

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

Vous pouvez simplement remplacer la fonction eval par la fonction echo et voir ce qui s'est passé.

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

Si aucune des méthodes n'a aidé, alors pas de chance :(

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