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


  • ANNUAIRE
  • [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation
    [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [FR] Root-Me
    Notre équipe se base sur un constat : à l'heure actuelle ou l'information tend à devenir...
    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