Partage
  • Partager sur Facebook
  • Partager sur Twitter

One Time pad - Retrouver les plain text

    28 avril 2016 à 16:20:59

    Bonjour à tous !
    Alors voila, je ne sais pas vraiment si je poste au bon endroit mais je tentes ma chance !

    Dans le cadre d'un projet je dois cracker plusieurs Cypher Text issu de l’algorithme One Time Pad ! Pour ce faire j'ai dix cypher text encodés, un morceau de code censé m'aider et finalement un dernier Cypher text qui est la phrase que je dois rendre décodé pour avoir les points sur mon projet.
    Du coup j'ai commencé à chercher et la seule possibilité que je vois pour cracker tout ça c'est que deux cypher text ont été encoder avec la même clés j'ai donc écris le petit programme suivant pour rechercher des mots "basique" comme " the " et " and ". Les textes sont en Anglais !
    <?php
    function xor_fct($msg1,$msg2) // Fais la fct XOR sur deux textes en Hexa
    {
    	return bin2hex(pack('H*',$msg1) ^ pack('H*',$msg2));
    }
    
    
    //Cypher 1
    $msg_1 = "31100A170D5B6831032A1B1F1F66322C2D271A271754083A1E393164163109327F3F66040726080563293650252407087A51501D252E1F203E411C2424721D2B025806022B1B00741B4B00001B0170131E22662B250B3C3D312E65111F7A2C233C084D";
    
    //Cypher 2
    $msg_2 = "06170E1C1F573B3714281F0718232063353D57010B1A0E2A143F36640E3748122D293507093646162B272C50243555093B1603366B2E5965040448382E3E37582F1915002F030B211C4B1C090C1070131E22660C052B703C24246547043B2F383C024D";
    
    //Je mets en Hexa le mot que je veux tester
    $test_mot = "616e64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
    
    for($i = 0 ; $i <198 ; $i+=2)
    {
    	echo "</br>";
    	$x = xor_fct($msg_1, $msg_2); // Je XOR les deux messages cryptés
    	
    	echo $result_xor = xor_fct($x,$test_mot); // Je récupère la partie transformé
    	echo "</br>";
    	echo "code = "; // J'affiche les lettres que ça donne pour vois si c'est de l'anglais ou du n'importe quoi
    	$resultat_ascii = substr($result_xor,$i,198-(198-10));
    		$resultat_ascii_tmp = pack('H*', substr($resultat_ascii,0,2)); 
    	echo $resultat_ascii_tmp;
    		$resultat_ascii_tmp = pack('H*', substr($resultat_ascii,2,2)); 
    	echo $resultat_ascii_tmp;
    		$resultat_ascii_tmp = pack('H*', substr($resultat_ascii,4,2)); 
    	echo $resultat_ascii_tmp;
    		$resultat_ascii_tmp = pack('H*', substr($resultat_ascii,6,2)); 
    	echo $resultat_ascii_tmp;		
    		$resultat_ascii_tmp = pack('H*', substr($resultat_ascii,8,2)); 
    	echo $resultat_ascii_tmp;
    	echo "</br>";
    	echo "</br>";
    
    	$test_mot = substr($test_mot,0,-2); // Je décale mon mot pour le tester sur la suite
    	$test_mot = "00" . $test_mot;
    	
    	
    }
    
    
    
    
    ?>
    Le soucis c'est que avec ça je trouve pas vraiment mon bonheur et je commences à être a court d'idée. Voila le morceau code qui sert a l'encryption qui doit nous aider : 
    sprintf("%02X", ord($msg{$i}) ^ ord($key{$i}));

    ET voici les différents textes encodés :

    1. 31100A170D5B6831032A1B1F1F66322C2D271A271754083A1E393164163109327F3F66040726080563293650252407087A51501D252E1F203E411C2424721D2B025806022B1B00741B4B00001B0170131E22662B250B3C3D312E65111F7A2C233C084D
    2. 0408131503573C2D532B1554372F2A63353A1262371507783329372A002B0C2F36236600093C033F63242D046D0210013816122A252E12652512482D233E36583717420E3C0D0F270A4B09411E0D241217332F252942273C20252045093536733A072947
    3. 06170E1C1F573B3714281F0718232063353D57010B1A0E2A143F36640E3748122D293507093646162B272C50243555093B1603366B2E5965040448382E3E37582F1915002F030B211C4B1C090C1070131E22660C052B703C24246547043B2F383C024D
    4. 2217151C141925271D3B5A151F352131353713620D1A492C192D316402381B2378382E021C6F44073B27351923281B0A7407183D6C3338166C050D3A28313658250D1019260D1C7318021C090211244737373626224523742424360C032E223D3A036B47
    5. 230A0C1446183C2A163D5A1209222131203E57230311073B1829366416301C2E78293E130D3D120B3023781923611104331A0439207A112A3E04063F28312054630F0A042D004E321C18011219053E0413672B23200A24742A35330C112E26732D0E2247
    6. 2911081C0A0E682A123C5A121E2F212D252157350C1B493C1E62650511290423783F33040F2A15162622781923611C192753122A253F116520001B386125361D2854421926091A731B030D1308443D060F67242F67113F392077300B043B33233C024D
    7. 2317111C08042121532A020409343063363D196510540D3D022F372D033C482E373B6617002A46012C2B35153F221C0C385316373E3F1936250248382E3D3F582517104D211C06361D4B1E041F173908183466252142391B1677320A0231307330084D
    8. 241B001C150468361C6F19111E32252A2F721E2C021B1B3510382C2B0F77466878182E06480B232363273F152335064D201B15366C2918302B091C6C353A3658220B11043D1C0F3D0C0E480E0B44240F1367002F2307223529770710023F222679092147
    9. 2817111C46072735163D1C010066322633211E2D0A58493E1E3E65211938053634296A430729460363352C192326070C2D535D782D34136539120D6C203C731D3B080E02271C4E27004B1C00060170080022346A330A3574353F2A0B157463112C124D
    10. 3117430D0E1268321B20141142660722333618380B540836156C2A30093C1A663D3436061A3B1542302721503929104D3212132C6C2E1F206C272A05613A320B631712192B0C4E35001948004D1235150F67363F250E3937653B2002113649
    Et le cypher texte final à décoder :
    061D0F1503153A2B072A5A011F233763363A16364307493B10202921057909663A2329174523090327232A502839011F351004312334572829150023257224113710421D260700361C4B0408060170131E2E3564672370373024310A1D50

    Voila j’espère avoir était assez clair ..
    J'attends vos idées ou vos réponses avec impatience !
    Merci d'avance ! :)
     

    • Partager sur Facebook
    • Partager sur Twitter

    One Time pad - Retrouver les plain text

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown