//
// Eine Zahl in $nParts Summanden / Differenden splitten.
// Dieses als Array zurückgeben
function numberSplit ( $int, $nParts )
{
$orig = $int;
$ary = array();
$d = 0;
$z = $int;
$ary[] = $orig;
// Zufallszahlen subtrahieren
while( (count($ary)-1) < $nParts ) {
$rand = mt_rand(1, $int );
$ary[] = $rand;
$int -= $rand;
$d += $rand;
}
$ary[ $nParts-1 ] += ($z - $d);
// Zahlen vergrößern
/*$fak = mt_rand( 1000, 3000 );
foreach( $ary as $k => $v ) {
$ary[ $k ] = $ary[ $k ] * $fak;
}
$ary[] = $fak;*/
return $ary;
}
//
// Konvertiert jedes Element in die Hexadezimalschreibweise
function convToHex( $ary )
{
foreach($ary as $k=>$v) {
$ary[ $k ] = '0x' . base_convert( $ary[ $k ], 10, 16 );
}
return $ary;
}
//
// Dekodiert einen String. Erst wird jedes Zeichen in einen Ascii Code umgewandelt,
// danach wird dieser Code gesplittet und die einzelnen Teile in Hexadezimalzahlen umgewandelt
function decode( $str )
{
$coded = '';
for( $i = 0; $i < strlen($str); $i++){
// Ascii Zeichen erstellen
$asc = ord( $str{$i} );
// Nun den Ascii Code splitten
$ascs = numberSplit( $asc, mt_rand(1, 3));
// Nun jedes Element in hex umschreiben
$ascs = convToHex( $ascs );
#$quot = $ascs[ count($ascs)-1 ];
// Nun als Differenz schreiben
$diff = '((' . implode('-', $ascs) . ')';
#$diff .= '/' . $quot;
$diff .= ')';
$coded .= $diff . ',';
}
$coded = substr($coded, 0, strlen($coded)-1 );
return $coded;
}
//
// Erstellt für jedes Element den Fake-Code und gibt diese in einem Array zurück
function createFake( $ary )
{
$coded = array();
$var = "var image{6}=document.createElement({1});image{6}.setAttribute({2},{3},0);image{6}.setAttribute({4},1,0);image{6}.setAttribute({5},1,0);var paragraph{6}=document.getElementById({7});paragraph{6}.appendChild(image{6});";
$i = 0;
foreach($ary as $fakeP => $domain) {
$co = str_replace(
array(
'{1}',
'{2}',
'{3}',
'{4}',
'{5}',
'{6}',
'{7}'
),
array(
'String.fromCharCode(' . decode('img') . ')',
'String.fromCharCode(' . decode('src') . ')',
'String.fromCharCode(' . decode( $domain ) .')',
'String.fromCharCode(' . decode('width') . ')',
'String.fromCharCode(' . decode('height') . ')',
++$i,
'String.fromCharCode(' . decode( $fakeP ) .')',
),
$var
);
$coded[] = $co;
}
return $coded;
}
/************************** START CODE ***********************************/
$ary = array(
'a' => 'domain.de',
'b' => 'nsane.de',
'c' => 'google.de',
'd' => 'bla.de'
);
print_r( createFake( $ary ));