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 chiffreurs et les emballeurs, malgré leur diversité, ne possèdent que 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échiffrer (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 le MessageBox ouvert, 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 du 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 à 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 , collez-le dans le décodeur et enregistrez-le au format 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 é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, 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 insérez à la suite 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'articles 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écodé 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 rechercher des chevaux de Troie et d'autres codes malveillants. Puisque tous les programmes conçus pour protéger le droit 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 . En plus du décodeur, Malzilla dispose de nombreux autres outils et paramètres facilitant la suppression de 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 piquer le code via <? Php eval ( gzinflate ( base64_decode ( ' coded text ' ) ' )); ?> code php.

Comme toujours, j'ai décidé de me tourner vers Google pour obtenir un indice. La réponse, comme toujours, 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 CHMOD 0666)
  4. lancer 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 php 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 sais pas où je l’ai 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, insérez dans le formulaire uniquement SGksIG1hbg == 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 (en 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 trouvé d'autres solutions à ce problème, écrivez dans le commentaire, essayez de les résoudre.