• STATISTIQUES
  • Il y a eu un total de 0 membres et 40784 visiteurs sur le site dans les dernières 24h pour un total de 40 784 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [EN] Lost-chall
    Site de challenge présenté sous la forme de différente saison. Pour passer une saison vous devez avoir accumulÃ...
    Challenges
    [FR] Forum-Webmaster
    Une communauté webmaster pour apporter / recevoir de l'aide en création de site internet. Webmaster...
    Webmaster
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] Net Force
    Javascript: 9, Java Applets: 6, Cryptography: 16, Exploits: 7, Cracking: 14, Programming: 13, Internet: 15, Steganograph...
    Challenges
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [FR] Hackfest
    Le Hackfest est un évènement de sécurité et de piratage informatique au Québec reg...
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!

    €



Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Php] Tentative de décryptage d'un xor
25-09-2012, 19h26 (Modification du message : 19-11-2012, 18h38 par InstinctHack.)
Message : #1
Luxerails Hors ligne
Bon membre
*



Messages : 267
Sujets : 6
Points: 67
Inscription : Aug 2011
[Php] Tentative de décryptage d'un xor
Hello, j'ai essayé de coder une fonction en php permettant de décrypter un xor (donc sans connaître la clé). Il suffit juste de lui donner le ciphertext et la longueur de la clé. Elle marche pas a tout les coups, mais elle permet de révéler pas mal de plaintext Smile
La variable $abc contient les caractères les plus fréquents dans un texte normal ([a-zA-Z] etc), donc cette fonction permet d'essayer de retrouver la clé d'un texte 'normal' chiffré, pas un fichier ou quoi.
La fonction retourne un array avec le plaintext et la clé retrouvée.

Exemple avec le ciphertext suivant (en hexa ici) avec une clé de 4 : 0e005911314f451c780255012b0e5717780c581b3e09429b781f5100781a5e522000425c
La fonction retrouve :
Citation :Message déchiffré : VoIci Un mEssaGe cHiffRé pAr uN xoR.
Clé retrouvée : Xo\x07r
L'algo s'est juste trompé sur un caractère de la clé (le 3ème caractère est un 0, pas un 0x07; soit la clé "Xo0r"). Mais le plaintext ici est quand même facilement lisible Smile

Bref, voici la fonction :

Code :
function breakxor($c, $lenkey) {
    $c = str_split($c, $lenkey);
    $a = array();
    for($i = 0; $i < $lenkey; $i++, $a[] = '');
    for($i = 0; $i < $lenkey; $i++)
        for($j = 0; $j < count($c); $j++)
            $a[$i] .= $c[$j][$i];
    $plaintext = array();
    $abc = str_split("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéèà .");
    $key = '';
    foreach($a as $col)
    {
        $p = array();
        for($k = 0; $k < 256; $k++) {
            $d = $col ^ str_repeat(chr($k), strlen($col));
            $count = 0;
            for($i = 0; $i < strlen($d); $i++)
                if(in_array($d[$i], $abc))
                    $count++;
            $p[$d . chr($k)] = $count;
        }
        $tmp = array_search(max($p), $p);
        $plaintext[] = substr($tmp, 0, -1);
        $key .= substr($tmp, -1);
    }
    $strout = '';
    for($j = 0; $j < strlen($plaintext[0]); $j++)
        for($i = 0; $i < $lenkey; $i++)
            $strout .= $plaintext[$i][$j];
    return array($strout, $key);
}
+1 (0) -1 (0) Répondre
26-09-2012, 09h16
Message : #2
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [PHP] Tentative de décryptage d'un xor
Sympa :)
Dommage que ce soit du php. xD Ca te derange pas que je la refasse en C ou python pour les gens qui veulent pas utiliser un serveur php...?
+1 (0) -1 (0) Répondre
26-09-2012, 19h06
Message : #3
Luxerails Hors ligne
Bon membre
*



Messages : 267
Sujets : 6
Points: 67
Inscription : Aug 2011
RE: [PHP] Tentative de décryptage d'un xor
Non ça ne me dérange pas du tout ^^ Je viens de finir la version python, toujours mieux que le php :p
Code :
def breakxor(c, lenkey):
        c2, i = [], 0
        while i < len(c):
                c2.append(c[i:i + lenkey])
                i += lenkey
        a = ['' for i in xrange(lenkey)]
        for i in xrange(lenkey):
                for j in xrange(len(c2)):
                        a[i] += c2[j][i]
        plaintext = []
        abc = [l for l in 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzéèà .']
        key = ''
        for col in a:
                p = {}
                for k in xrange(256):
                        d = ''.join([chr(ord(l) ^ k) for l in col])
                        count = 0
                        for w in d:
                                try:
                                        tmp = abc.index(w)
                                        count += 1
                                except: pass
                        p[d + chr(k)] = count
                tmp = [k for k, v in p.iteritems() if v == max(p.values())][0]
                plaintext.append(tmp[0:-1])
                key += tmp[-1]
        strout = ''
        for j in xrange(len(plaintext[0])):
                for i in xrange(lenkey):
                        strout += plaintext[i][j]
        return (strout, key)

L'algo est très simple, mais il s'en sort plutôt bien sur de longs textes. Si vous avez des remarques à faire...
+1 (0) -1 (0) Répondre
26-09-2012, 22h32
Message : #4
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [PHP] Tentative de décryptage d'un xor
bon, bah si tu l'as déjà fait en python... :p Si j'ai le temps, un jour (je sais pas pourquoi j'ai l'impression de dire ça tout le temps... xD) je le referais en C Smile
+1 (0) -1 (0) Répondre
26-09-2012, 23h03
Message : #5
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,721
Sujets : 287
Points: 157
Inscription : Jan 2012
RE: [PHP] Tentative de décryptage d'un xor
Effectivement je pense avoir vue cette phrase 2 ou 3 fois dans les derniers jours hehe
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut