Hey Folks!
I've been writing some code for a small project and saw PHP crashing every
time.
The Code:
<?php
/*
* XOR buffer v1
*/
class XoRb {
/* Set buffer ( -> write genPad to file ) in bit */
public $buffer = 4096;
public function encrypt($InputString, $KeyPhrase){
$KeyPhraseLength = strlen($KeyPhrase);
for ($i = 0, $strlen = strlen($InputString); $i <
$strlen; $i++)
$InputString[$i] = chr( (
ord($InputString[$i]) ^ ord( $KeyPhrase[ ( $i % $KeyPhraseLength ) ] ) ) );
return $InputString;
}
public function genPad ( $input ) {
for ( $i = 1, $o = null, $strlen = strlen($input);
$i <= $strlen; ++$i )
$o .= chr( mt_rand( 10, 300 ) );
return $o;
}
public function writePad ( $file, $byte, $buffer = false ) {
$fo = fopen( $file, "a+");
if ( !$buffer ) $buffer = $this -> buffer;
if ( $byte < $buffer ) $buffer = $byte;
for ( $i = 1, $o = null; $i <= $byte; ++$i ) {
$o .= chr( mt_rand( 10, 300 ) );
if ( strlen( $o ) <= $buffer + 20 )
print "Writing buffer " . chr ( $i %
$buffer ) . "\n" and fwrite( $fo, $o ) and $o = null;
}
}
}
$xor = new XoRb;
$xor -> buffer = 1024;
$xor -> writePad ( 'int.dat', 8192 * 1000 );
/* //Interface
while ( true ) {
print "Input: ";
$input = trim(fgets(fopen("php://stdin", "a+")));
print "\tPad: " . ($str = $xr->genPad($input));
print "\n\tOutput: " . $xr->encrypt($input, $str) .
"\n\n";
}
*/
?>
PHP now breaks at:
" chr ( $i % $buffer ) ",
in:
if ( strlen( $o ) <= $buffer + 20 ) print "Writing buffer " . chr ( $i %
$buffer ) . "\n" and fwrite( $fo, $o ) and $o = null;
while $I = 5k ± 2k.
Tested within CLI on Windows, I don't think, it'll break on Linux, nor
Apple.
--
(c) Kenan Sulayman
Freelance Designer and Programmer
Life's Live Poetry