"; if ($ip_client !== $clemapNumeraire[3]) { echo "IP CLIENT $clemapNumeraire[3]($ip_client) : SCAM"; } else { echo "IP CLIENT $clemapNumeraire[3]($ip_client) : OK !"; } echo "
"; if ($ip_serveur !== $clemapNumeraire[1]) { echo "IP SERVEUR $clemapNumeraire[1]($ip_serveur) : SPAM"; } else { echo "IP SERVEUR $clemapNumeraire[1]($ip_serveur) : OK !"; } echo "
"; if ($time === $clemapNumeraire[0]) { echo "TIME SERVER $clemapNumeraire[0]($time) : erreurParadoxale"; } else { echo "TIME SERVER $clemapNumeraire[0]($time) : OK !"; } echo "
"; if ($token !== $clemapNumeraire[2]) { echo "TOKEN $clemapNumeraire[2]($token) : erreurH4x0r"; } else { echo "TOKEN $clemapNumeraire[2]($token) : OK !"; } echo "
"; function decrypter_Cesar($aDeCrypter, $decalage) { $decalage = (36+$decalage)%36; //echo $decalage." |"; $caracteres = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $aDeCrypter = strtoupper($aDeCrypter); $tab_code = preg_split('//', $aDeCrypter, -1, PREG_SPLIT_NO_EMPTY); $PassPhrase = ''; foreach ($tab_code as $elmt) { $position = strpos($caracteres, $elmt); $new_pos = ($position+$decalage)%36; $PassPhrase .= substr($caracteres, $new_pos, 1); } return $PassPhrase; } function encrypter_Cesar($aCrypter, $decalage) { $decalage = 36 - (36+$decalage)%36; //echo $decalage." |"; $caracteres = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; $aCrypter = strtoupper($aCrypter); $tab_code = preg_split('//', $aCrypter, -1, PREG_SPLIT_NO_EMPTY); $PassPhrase = ''; foreach ($tab_code as $elmt) { $position = strpos($caracteres, $elmt); $new_pos = ($position+$decalage)%36; $PassPhrase .= substr($caracteres, $new_pos, 1); } return $PassPhrase; } function invertionCaracteres($chaine) { $chaine_tab = preg_split('//', $chaine, -1, PREG_SPLIT_NO_EMPTY); $taille_chaine = count($chaine_tab)-1; $chaine_inv = ''; //echo "passe".$taille_chaine; for ($i = $taille_chaine ; $i >= 0 ; $i--) { $chaine_inv .= $chaine_tab[$i]; } return $chaine_inv; } function expulserDernierElement($tab) { $taille = count($tab); $nouveau_tab = array(); for ($itx = 0 ; $itx < $taille-1 ; $itx++) { $nouveau_tab[] = $tab[$itx]; //echo "i:".$itx; } return $nouveau_tab; } function expulserPremierElement($tab) { $taille = count($tab); $nouveau_tab = array(); for ($itx = 1 ; $itx < $taille ; $itx++) { $nouveau_tab[] = $tab[$itx]; //echo "i:".$itx; } return $nouveau_tab; } function transformerChaineEnTableau($ChaineCaracteres) { return preg_split('//', $ChaineCaracteres, -1, PREG_SPLIT_NO_EMPTY); } function transformerTableauEnChaine($tableau) { $chaine = ""; foreach ($tableau as $element) { $chaine .= $element; } return $chaine; } function encrypterCleMapDialogue($ip_serveur, $ip_client, $time, $token) { $time_inv = invertionCaracteres($time); $ip2_en_chiffre_acoller_tab = explode('.', $ip_client); $ip2_en_chiffre_acoller = implode($ip2_en_chiffre_acoller_tab); $ip2_inv = invertionCaracteres($ip2_en_chiffre_acoller); /*TODO: ENCRYPTER UNE NOUVELLE CRYPTOGRAPHIE*/ $ip2_encrypt = encrypter_Cesar($ip2_inv, 18); $dimension_ip2 = strlen($ip2_en_chiffre_acoller_tab[0])."".strlen($ip2_en_chiffre_acoller_tab[1])."".strlen($ip2_en_chiffre_acoller_tab[2])."".strlen($ip2_en_chiffre_acoller_tab[3]); $ip2_encrypt .= ".".encrypter_Cesar($dimension_ip2, 7); /*END TODO*/ $ip_en_chiffre_acoller = explode('.', $ip_serveur); $dimension_ip = strlen($ip_en_chiffre_acoller[0])."".strlen($ip_en_chiffre_acoller[1])."".strlen($ip_en_chiffre_acoller[2])."".strlen($ip_en_chiffre_acoller[3]); $dimension_ip_inv = invertionCaracteres($dimension_ip); //$ip_en_chiffre_acoller_add_taille = $dimension_ip.implode($ip_en_chiffre_acoller); $ip_en_chiffre_acoller = implode($ip_en_chiffre_acoller); $ip_inv = invertionCaracteres($ip_en_chiffre_acoller); //$ip_inv_add_taille = invertionCaracteres($ip_en_chiffre_acoller_add_taille); $ip_tab_inv = preg_split('//', $ip_inv, -1, PREG_SPLIT_NO_EMPTY); $time_tab_inv = preg_split('//', $time_inv, -1, PREG_SPLIT_NO_EMPTY); $taille_ip = count($ip_tab_inv); $taille_time = count($time_tab_inv); $clemap = ''; //mélange for ($i = 0; ($i < $taille_ip && $i < $taille_time) ; $i++) { $clemap .= $ip_tab_inv[0].$time_tab_inv[0]; $ip_tab_inv = expulserPremierElement($ip_tab_inv); $time_tab_inv = expulserPremierElement($time_tab_inv); } $clemap .= implode($ip_tab_inv); $clemap .= implode($time_tab_inv); //ajout de fin d'élément $clemap .= $token; $clemap .= $taille_time; //fin du mélange //$taille_time = '10000000000000072635098764359649420365426520929365074263850640643'; $time_taille_tab = preg_split('//', $taille_time, -1, PREG_SPLIT_NO_EMPTY); $taille_caracteres_time = count($time_taille_tab); $taille_caracteres_time_itx = $taille_caracteres_time; //création de la clé de fibonnaci afin de connaitre le nombre de caracteres de la chaine (taille de la chaine time) $cleFibonacci = ''; $i = 0; while (isset($taille_caracteres_time_itx) && $taille_caracteres_time_itx > 1) { $time_taille_tab_itx = preg_split('//', $taille_caracteres_time_itx, -1, PREG_SPLIT_NO_EMPTY); $taille_caracteres_time_itx = count($time_taille_tab_itx); $taille_caracteres_time .= $taille_caracteres_time_itx; $i++; } $cleFibonacci = $i+1; $cleNumeraire = $taille_caracteres_time.$cleFibonacci; //echo "
".$time."/".$cleNumeraire."
"; //echo $cleNumeraire;die(); $cleNumeraire = encrypter_Cesar($cleNumeraire, 4); $clemap_encrypt = encrypter_Cesar($clemap, 3); $clemap_encrypt = $clemap_encrypt . $cleNumeraire; $clemap_encrypt_with_ip_dimension = $dimension_ip_inv . $clemap_encrypt; $clemap_with_ip_dimension_encrypt = encrypter_Cesar($clemap_encrypt_with_ip_dimension, 3); //$clemap_with_ip_dimension_encrypt_tab = preg_split('//',$clemap_with_ip_dimension_encrypt, -1,PREG_SPLIT_NO_EMPTY); $clemap_with_ip_dimension_encrypt .= $ip2_encrypt; /*$taille_tab = count($clemap_with_ip_dimension_encrypt_tab); $i = 0; $final_clemap_encrypt = ""; do{ $final_clemap_encrypt .= $clemap_with_ip_dimension_encrypt_tab[$i]; if ($i % 5 == 0){ $final_clemap_encrypt .= ' '; } $i++; }while ( $i < $taille_tab ); return $final_clemap_encrypt;*/ return $clemap_with_ip_dimension_encrypt; } function decrypterCleMapDialogue($clemap_encrypt) { /*$clemap_with_ip_dimension_encrypt_with_block_tab = preg_split('//',$clemap_encrypt, -1,PREG_SPLIT_NO_EMPTY); $taille_tab = count($clemap_with_ip_dimension_encrypt_with_block_tab); $i = 0; $final_clemap_encrypt_no_block = ""; do{ if ($clemap_with_ip_dimension_encrypt_with_block_tab[$i] !== ' '){ $final_clemap_encrypt_no_block .= $clemap_with_ip_dimension_encrypt_with_block_tab[$i]; } $i++; }while ( $i < $taille_tab ); $final_clemap_encrypt_no_block = explode(".",$final_clemap_encrypt_no_block);*/ $final_clemap_encrypt_no_block = explode(".", $clemap_encrypt); if (!isset($final_clemap_encrypt_no_block[1])) { $tab_retour = array(); $tab_retour[0] = ""; $tab_retour[1] = ""; $tab_retour[2] = ""; $tab_retour[3] = ""; return $tab_retour; } $taille_ipclient = decrypter_Cesar($final_clemap_encrypt_no_block[1], 7); $ip2_dimension = array(); $ip2_dimension[] = substr($taille_ipclient, 0, 1); $ip2_dimension[] = substr($taille_ipclient, 1, 1); $ip2_dimension[] = substr($taille_ipclient, 2, 1); $ip2_dimension[] = substr($taille_ipclient, 3, 1); $ip2_total_dimension = $ip2_dimension[0]+$ip2_dimension[1]+$ip2_dimension[2]+$ip2_dimension[3]; $ip2_notSeparated_encrypt = substr($final_clemap_encrypt_no_block[0], -$ip2_total_dimension); $ip2_notSeparated_decrypt = decrypter_Cesar($ip2_notSeparated_encrypt, 18); $ip2_notSeparated_notInverted = invertionCaracteres($ip2_notSeparated_decrypt); $ip2 = substr($ip2_notSeparated_notInverted, 0, $ip2_dimension[0])."."; $ip2 .= substr($ip2_notSeparated_notInverted, $ip2_dimension[0], $ip2_dimension[1])."."; $ip2 .= substr($ip2_notSeparated_notInverted, $ip2_dimension[0]+$ip2_dimension[1], $ip2_dimension[2])."."; $ip2 .= substr($ip2_notSeparated_notInverted, $ip2_dimension[0]+$ip2_dimension[1]+$ip2_dimension[2], $ip2_dimension[3]); $final_clemap_encrypt_begin_with_no_block = substr($final_clemap_encrypt_no_block[0], 0, -$ip2_total_dimension); $ip_post = decrypter_Cesar($final_clemap_encrypt_begin_with_no_block, 3); $ip_dimension = array(); $ip_dimension[] = substr($ip_post, 0, 1); $ip_dimension[] = substr($ip_post, 1, 1); $ip_dimension[] = substr($ip_post, 2, 1); $ip_dimension[] = substr($ip_post, 3, 1); $true_taille_ip = $ip_dimension[0]+$ip_dimension[1]+$ip_dimension[2]+$ip_dimension[3]; $clemap_encrypt_sans_dimension_ip = substr($final_clemap_encrypt_begin_with_no_block, 4); $clemapNumeraire = decrypter_Cesar($clemap_encrypt_sans_dimension_ip, 3); $clemapNumeraire = decrypter_Cesar($clemapNumeraire, 4); $clemapNumeraire_tab = preg_split('//', $clemapNumeraire, -1, PREG_SPLIT_NO_EMPTY); $clemapNumeraire_tab_taille = count($clemapNumeraire_tab)-1; $i=1; $tempIndice = $clemapNumeraire_tab_taille; $cleFibonacci = $clemapNumeraire_tab[$clemapNumeraire_tab_taille]; $clemapNumeraire_tab = expulserDernierElement($clemapNumeraire_tab); $nbElement = 1; for ($i = 1 ; $i <= $cleFibonacci ; $i++) { $nbElement_temp = ''; for ($j = 0 ; $j < $nbElement ; $j++) { $tempIndice = count($clemapNumeraire_tab)-1; $nbCaracteres = $clemapNumeraire_tab[$tempIndice]; $nbElement_temp = $nbCaracteres.$nbElement_temp; $clemapNumeraire_tab = expulserDernierElement($clemapNumeraire_tab); } $nbElement = $nbElement_temp; } $taille_time = $nbElement; $clemap_encrypt_sans_dimension = implode($clemapNumeraire_tab); $clemap_reencrypt_sans_dimension = encrypter_Cesar($clemap_encrypt_sans_dimension, 4); $clemap = decrypter_Cesar($clemap_reencrypt_sans_dimension, 3); $clemap_tab = preg_split('//', $clemap, -1, PREG_SPLIT_NO_EMPTY); $element = ''; for ($j = 0 ; $j < $taille_time ; $j++) { $tempIndice = count($clemap_tab)-1; if ($tempIndice < 0) { break; } $caractere = $clemap_tab[$tempIndice]; $element = $caractere.$element; $clemap_tab = expulserDernierElement($clemap_tab); } $true_taille_time = $element; $element = ''; for ($j = 0 ; $j < 3 ; $j++) { $tempIndice = count($clemap_tab)-1; if ($tempIndice < 0) { break; } $caractere = $clemap_tab[$tempIndice]; $element = $caractere.$element; $clemap_tab = expulserDernierElement($clemap_tab); } $token_encrypt = $element; $token_decrypt= $token_encrypt; if ($true_taille_time > $true_taille_ip) { $difference = $true_taille_time - $true_taille_ip; $flagLePlusLong = 'time'; } else { $difference = $true_taille_ip - $true_taille_time; $flagLePlusLong = 'ip'; } $element = ''; for ($i = 0 ; $i < $difference ; $i++) { $tempIndice = count($clemap_tab)-1; $caractere = $clemap_tab[$tempIndice]; $element = $caractere.$element; $clemap_tab = expulserDernierElement($clemap_tab); } $tempip = ''; $temptime = ''; if ($flagLePlusLong = 'ip') { $tempip = $element; } else { $temptime = $element; } $ip = ''; $time = ''; while (isset($clemap_tab[0]) && $clemap_tab[0] != null) { $ip .= $clemap_tab[0]; $clemap_tab = expulserPremierElement($clemap_tab); $time .= $clemap_tab[0]; $clemap_tab = expulserPremierElement($clemap_tab); } $ip .= $tempip; $time .= $temptime; $time_post_without_ip_dimension = invertionCaracteres($time); $ip_not_inverted = invertionCaracteres($ip); $ip_complete = substr($ip_not_inverted, 0, $ip_dimension[3])."."; $ip_complete .= substr($ip_not_inverted, $ip_dimension[3], $ip_dimension[2])."."; $ip_complete .= substr($ip_not_inverted, $ip_dimension[3]+$ip_dimension[2], $ip_dimension[1])."."; $ip_complete .= substr($ip_not_inverted, $ip_dimension[3]+$ip_dimension[2]+$ip_dimension[1], $ip_dimension[0]); $tab_retour = array(); $tab_retour[0] = $time_post_without_ip_dimension; $tab_retour[1] = $ip_complete; $tab_retour[2] = $token_decrypt; $tab_retour[3] = $ip2; // print_r($tab_retour); return $tab_retour; }