<?php
// 1. Les données que l'on connaît
$default_plaintext = '{"showpassword":"no","bgcolor":"#ffffff"}';
// Remplace ceci par la valeur de TON cookie data
$cookie_ciphertext_b64 = 'ClVLIh4ASCsCBE8lAxMacFMZV2hdVVotEhhUJQNVAmhSEV4sFxFeaAw%3D';
// On décode le cookie (il est encodé pour l'URL, puis en base64)
$cookie_ciphertext = base64_decode(urldecode($cookie_ciphertext_b64));
//------------------------------------------------------------------
// 2. Fonction pour répéter la même opération XOR que le serveur
function repeating_xor($text, $key) {
$outText = '';
for($i=0; $i<strlen($text); $i++) {
$outText .= $text[$i] ^ $key[$i % strlen($key)];
}
return $outText;
}
//------------------------------------------------------------------
// 3. Calculer la clé
$key = repeating_xor($default_plaintext, $cookie_ciphertext);
echo "Clé trouvée (peut ne pas être lisible) : " . $key . "\n\n";
// 4. Créer notre nouvelle donnée
$new_plaintext = '{"showpassword":"yes","bgcolor":"#ffffff"}';
// 5. Chiffrer notre nouvelle donnée avec la clé
$new_ciphertext = repeating_xor($new_plaintext, $key);
// 6. Encoder pour le cookie
$new_cookie_b64 = base64_encode($new_ciphertext);
echo "Nouveau texte en clair : " . $new_plaintext . "\n";
echo "Valeur à mettre dans le cookie : " . $new_cookie_b64 . "\n";
?>