Désobfuscateur et dépaqueteur Ruby
Détectez et inversez automatiquement l'obfuscation Ruby. Identifie les chaînes encodées par Base64.decode64() et Base64.strict_decode64(), le décodage Base64 par .unpack("m"), les motifs de chiffrement XOR, les appels d'envoi dynamique send(), les définitions à l'exécution define_method, l'eval() imbriqué avec dépaquetage récursif et les chaînes empaquetées en hexadécimal via .pack("H*"). Chaque détection inclut un score de confiance, les numéros de ligne source et le contexte du code environnant. Gratuit, privé et sans inscription.
Detect and reverse Ruby obfuscation techniques. Automatically identifies Base64 eval, .unpack("m"), XOR cipher patterns, send() dynamic dispatch, define_method, nested eval, and hex-packed strings with confidence ratings and source context.
Paste Ruby code above and click Analyze Ruby Codeto detect obfuscation patterns. The tool identifies Base64 eval, .unpack("m"), XOR cipher patterns, send() dispatch, define_method, nested eval, and hex-packed strings. Try loading an example to see how it works!
Fonctionnalités
- 7 détecteurs de motifs d'obfuscation Ruby : détecte automatiquement les chaînes encodées par Base64.decode64() et Base64.strict_decode64(), le décodage Base64 par .unpack('m'), les motifs d'octets par chiffrement XOR (bytes.zip.cycle.map .pack), les appels d'envoi dynamique send(), les définitions dynamiques define_method, l'eval() imbriqué avec décodage récursif et les chaînes empaquetées en hexadécimal par .pack('H*'). Chaque détecteur utilise une correspondance de motifs spécialisée pour Ruby.
- Affichage des valeurs encodées et de l'analyse décodée : chaque détection montre la valeur encodée d'origine ou l'indicateur d'obfuscation à côté du résultat décodé ou de l'analyse dans une carte claire. Les chaînes Base64 sont entièrement décodées, l'eval imbriqué est dépaqueté récursivement jusqu'à 3 niveaux, et les appels send/define_method affichent les noms de méthode dynamiques.
- Score de confiance et contexte source : chaque détection reçoit une note de confiance de 1 à 5 : très élevée pour le Base64 décodé contenant des mots-clés Ruby (def, class, require), élevée pour les décodages réussis, moyenne pour les détections send/define_method et faible pour les motifs XOR nécessitant le runtime. Les numéros de ligne source et le contexte du code environnant sont inclus pour chaque indicateur.
- 100 % local dans le navigateur et privé : toute la désobfuscation Ruby s'exécute entièrement dans votre navigateur. Votre code Ruby, tous les indicateurs détectés, les valeurs décodées et les résultats d'analyse ne quittent jamais votre appareil. Aucun envoi vers un serveur, aucun appel d'API, aucun stockage de données et aucun suivi.
Qu'est-ce que la désobfuscation Ruby ?
La désobfuscation Ruby est le processus consistant à détecter et inverser les techniques d'obfuscation intentionnelle du code utilisées dans les programmes Ruby. Le code Ruby obfusqué masque souvent des chaînes, des appels de méthode et de la logique pour échapper à l'analyse statique, contourner les outils de sécurité ou protéger la propriété intellectuelle. Les techniques courantes incluent l'encodage de chaînes en Base64, l'utilisation de .unpack("m") pour le décodage en ligne, la dissimulation des appels de méthode derrière l'envoi dynamique send(), la définition de méthodes au runtime avec define_method et l'encapsulation de charges utiles dans des appels eval() imbriqués. Désobfusquer Ruby est essentiel pour l'analyse de sécurité, la réponse aux incidents et la compréhension de code Ruby malveillant ou protégé.
Comment fonctionne notre désobfuscateur Ruby
Le désobfuscateur Ruby analyse le code source Ruby à l'aide d'une correspondance de motifs tenant compte du langage pour chaque technique d'obfuscation. Les appels Base64.decode64() sont détectés en extrayant l'argument de type chaîne et en le décodant via la fonction atob() du navigateur. Les motifs .unpack("m") sont identifiés et décodés de la même manière. Les appels eval() imbriqués sont dépaquetés récursivement jusqu'à 3 niveaux, en tentant de décoder le Base64 interne à chaque niveau. Les appels send() sont identifiés par leurs arguments de nom de méthode sous forme de chaîne, et les définitions define_method sont capturées avec leurs noms de méthode. Les motifs de chiffrement XOR (bytes.zip avec cycle.map et XOR sur pack) sont détectés avec des indicateurs de contexte. Tout le traitement s'exécute localement dans votre navigateur.
Limites et considérations
Cet outil présente des limites importantes. Les motifs de chiffrement XOR sont détectés mais ne peuvent pas être décodés sans la clé réelle au runtime : ils sont signalés pour investigation manuelle. Le chiffrement personnalisé utilisant les bibliothèques OpenSSL ou Digest de Ruby n'est pas pris en charge. La construction de chaînes à partir de variables ("this_" + "that") n'est pas détectée comme de l'obfuscation, car il s'agit d'un motif Ruby légitime. Les charges utiles compressées en gzip ne sont pas gérées, car le Zlib de Ruby n'est pas disponible dans le navigateur. Vérifiez toujours la sortie décodée avant d'agir : des faux positifs peuvent survenir avec des correspondances de chaînes fortuites.
Confidentialité et sécurité
Cet outil s'exécute entièrement dans votre navigateur à l'aide de JavaScript côté client. Le code Ruby que vous collez, tous les indicateurs d'obfuscation détectés, les valeurs décodées et les résultats d'analyse ne sont jamais envoyés à un serveur, stockés dans une base de données ni transmis sur le réseau. Toute l'analyse, la correspondance de motifs et le décodage s'exécutent localement sur votre appareil. Il n'y a aucun appel d'API, suivi analytique, cookie ni collecte de données d'aucune sorte. Cela le rend totalement sûr pour analyser du code Ruby propriétaire, des gems tierces, des échantillons de malwares ou du code source sensible.
Foire aux questions
L'outil détecte sept motifs d'obfuscation Ruby courants : Base64.decode64() et Base64.strict_decode64() avec des chaînes encodées en Base64, le décodage Base64 par .unpack("m"), la manipulation d'octets par chiffrement XOR (bytes.zip avec cycle.map et XOR), les appels d'envoi dynamique send() avec des noms de méthode sous forme de chaîne, les définitions dynamiques de méthode par define_method, l'eval() imbriqué avec décodage Base64 récursif jusqu'à 3 niveaux de profondeur, et les chaînes encodées en hexadécimal par .pack("H*").
Lorsque l'outil rencontre un appel eval() avec un argument de type chaîne, il tente récursivement de décoder les appels internes Base64.decode64() ou .unpack("m") contenus dans cette chaîne. Chaque couche décodée est à nouveau analysée pour d'autres appels eval(), jusqu'à 3 niveaux de profondeur. Cela révèle le véritable code Ruby une fois toutes les couches d'obfuscation retirées.
Les motifs de chiffrement XOR utilisent généralement une clé définie ailleurs dans le code ou construite dynamiquement, ce qui rend impossible tout déchiffrement sans exécution au runtime. L'outil détecte le motif structurel (bytes.zip avec cycle et XOR) et le signale pour investigation manuelle. Vous pouvez exécuter l'extrait XOR dans un environnement d'exécution Ruby pour obtenir la valeur décodée réelle.
Les scores de confiance vont de 1 à 5. Le score 5 (très élevé) est attribué lorsque le contenu décodé en Base64 contient des mots-clés Ruby comme def, class, require ou module, preuve solide de code Ruby obfusqué. Le 4 (élevé) concerne les décodages base64/unpack réussis ou le dépaquetage d'eval imbriqué multi-niveaux. Le 3 (moyen) concerne les détections d'envoi send() et define_method. Le 2 (faible) concerne les détections de motifs XOR dont le décodage nécessite une exécution au runtime.
Non. L'outil couvre les motifs d'obfuscation Ruby les plus courants, mais ne peut pas gérer toutes les méthodes. Il ne peut pas décoder les chaînes construites par concaténation, tableaux ou recherches dans des hachages. Il ne peut pas déchiffrer les données chiffrées avec OpenSSL, inverser des fonctions de transformation ni traiter les données compressées avec Zlib de Ruby. L'obfuscation avancée peut nécessiter une analyse dynamique dans un environnement d'exécution Ruby.
En Ruby, send() permet l'invocation dynamique de méthodes par leur nom : au lieu de obj.method(), les attaquants utilisent obj.send("method") pour masquer le nom de la méthode à l'analyse statique. define_method crée des méthodes au runtime, permettant de définir du code dynamiquement. Les deux sont des outils légitimes de métaprogrammation, mais sont fréquemment détournés dans le code Ruby obfusqué pour échapper à la détection par signature.
Absolument. Le désobfuscateur Ruby s'exécute entièrement dans votre navigateur. Votre code Ruby, les indicateurs détectés, les valeurs décodées et les résultats d'analyse ne sont jamais envoyés à un serveur, stockés dans une base de données ni transmis sur le réseau. Tout le traitement se fait localement sur votre appareil, sans appels d'API ni collecte de données.
Oui : 100 % gratuit, sans inscription, sans compte et sans limite d'utilisation. Analysez autant de code Ruby que nécessaire, autant de fois que vous voulez. Aucun niveau premium, frais caché ni limite de débit. L'outil s'exécute entièrement dans votre navigateur : votre code ne quitte jamais votre appareil.