I am creating a simple script which searches through a textfile for the correct combination but it just doesn’t work. I troubleshooted everything but all the parts just worked, but still the whole script isn’t working and I don’t know how to fix it.
code:
<html> <form> <input type="text" name="input" placeholder="hash"><button type="submit">Crack!</button> </form> <?php $input = $_GET["input"]; // pulling input from url $hashes = file_get_contents("hashes.txt"); // loading hashes $hasharray = explode(";", $hashes); // separating hashcombos $arraynum = count($hasharray); // counting number of hashcombos // defining loop $loopnum = 0; while($loopnum < $arraynum) { $combo = $hasharray[$loopnum]; // selecting hashcombo $comboarray = explode("|", $combo); // separating hashcombo $text = $comboarray[0]; $hash = $comboarray[1]; // cecking if hash matches if($hash === $input) { echo("Hash: $hash"); echo("<br>"); echo("Text: $text"); } $loopnum = $loopnum + 1; // updating loop } ?> </html>
example hashes.txt:
test|example; example|test;
Advertisement
Answer
Your file contains newlines, that are also invisible characters. For example:
test|example;(newline here) example|test;
You split the lines in your file by using the ;
, but that does not remove the newline characters. Considering the comments in your question, you have newlines in your results causing your comparisons to fail. That said, I suggest the following solution right after loading the hashes to remove the newline characters:
$hashes = preg_replace("/[rn]/", "", $hashes);
Which will result in a string like:
test|example;example|test;
The rest of your code will work as expected.