<?php require_once '../../functions/singleByteXOR.php'; if ($argc > 1) { $input = hex2bin($argv[1]); } else { $input = hex2bin("1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"); } $scores = findSingleByteXOR($input); arsort($scores); $keyCount = 0; foreach ($scores as $key => $value) { if ($keyCount < 5) { $decrypt = singleByteXOR($input, chr($key)); printf("'%1\$1c' (%1\$'03u) %2\$+09.3f : %3\$1s\n", $key, $value, $decrypt); } else { break; } $keyCount++; }
} $lines = array(); $file = fopen($filename, "r"); while (!feof($file)) { //read file line by line into a new array element $lines[] = trim(fgets($file, 4096)); //remove blank lines, suppress empty element left by editors $lines = array_filter($lines); } fclose($file); $linesKey = []; //store best scoring key for each line $linesScore = []; //store best score for each line foreach ($lines as $lineNumber => $line) { $scores = findSingleByteXOR(hex2bin($line)); arsort($scores); $keyCount = 0; foreach ($scores as $key => $value) { if ($keyCount < 1) { $linesKey[$lineNumber] = $key; $linesScore[$lineNumber] = $value; } else { break; } $keyCount++; } } arsort($linesScore); $lineCount = 0; printf("LINE KEY KEY# SCORE OUTPUT\n");