All pastes #914384 Raw Edit

Untitled

public php v1 · immutable
·published 2008-02-22 20:56 UTC
rendered paste body
<?phpfunction unscramble($code) {	$code=str_replace(array('1','0'),array('I','O'),$code);	$code=strtoupper($code);	$lookuptable=array_flip(		array('G','6','E','Q','T','X','Y','N',		'4','W','R','H','B','F','K','O','I','J',		'A','P','C','D','5','S','8',		'V','7','U','Z','3','L','M')	);		$charcodes='';	for($i=0;$i<strlen($code);$i++) {		$charCodes[$i]=$lookuptable[ $code[$i] ];	}		$codeBytes[0] = 0xFF & (($charCodes[0] << 3) + ($charCodes[1] >> 2));	$codeBytes[1] = 0xFF & (($charCodes[1] << 6) + ($charCodes[2] << 1) + ($charCodes[3] >> 4));	$codeBytes[2] = 0xFF & (($charCodes[3] << 4) + ($charCodes[4] >> 1));	$codeBytes[3] = 0xFF & (($charCodes[4] << 7) + ($charCodes[5] << 2) + ($charCodes[6] >> 3));	$codeBytes[4] = 0xFF & (($charCodes[6] << 5) + ($charCodes[7]));	$codeBytes[5] = 0xFF & (($charCodes[8] << 3) + ($charCodes[9] >> 2));	$codeBytes[6] = 0xFF & (($charCodes[9] << 6) + ($charCodes[10] << 1) + ($charCodes[11] >> 4));	$codeBytes[7] = 0xFF & (($charCodes[11] << 4) + ($charCodes[12] >> 1));	$codeBytes[8] = 0xFF & (($charCodes[12] << 7) + ($charCodes[13] << 2) + ($charCodes[14] >> 3));	$codeBytes[9] = 0xFF & (($charCodes[14] << 5) + ($charCodes[15]));		print_r($codeBytes);echo '<br>';		$random=$codeBytes[8] * 0x100 + $codeBytes[9];		//$r6 = 0x40D583D;	$r8 = $random;			for($count = 0; $count < 8; $count++) {		printf("%X<br>",$r8);		$r5 = (0x40D583D * $r8) & 0xFFFF;		$codeBytes[$count] ^= (($r8 >> 8) & 0xFF);		$r5++;		$r0 = floor($r5 / 0x5F5E100) & 0xFFFF;		$r0 = ($r0 * 0x5F5E100) & 0xFFFF;		$r8 = $r5 - $r0;			}		print_r($codeBytes);echo '<br>';		$driver1 = ($codeBytes[6] >> 1) & 0x1f;	$driver2 = (($codeBytes[2] << 3) + ($codeBytes[3] >> 5)) & 0x1f;	$cart = (($codeBytes[7] >> 4) + ($codeBytes[6] << 4)) & 0x1f;	$unknown1 = ($codeBytes[7] & 0xf);	$time1 = ($codeBytes[0] * 0x10000 + $codeBytes[1] * 0x100 + $codeBytes[2]) >> 5;	$time2 = (($codeBytes[4] * 0x10000 + $codeBytes[5] * 0x100 + $codeBytes[6]) >> 6) & 0x3FFFF;	$unknown2 = ($codeBytes[2] >> 2) & 0x03;	$unknown3 = ($codeBytes[2] >> 4) & 0x01;	$checksum = ($codeBytes[3] & 0x1f);			$calculatedChecksum = $unknown2 + $driver2;	$calculatedChecksum +=$unknown3;	$calculatedChecksum +=$time1;	$calculatedChecksum +=$driver1;	$calculatedChecksum +=$cart;	$calculatedChecksum +=$unknown1;	$calculatedChecksum +=$time2;	$calculatedChecksumFinal = ($calculatedChecksum) & 0xFF;	$calculatedChecksumFinal += ($calculatedChecksum >> 8) & 0xFF;	$calculatedChecksumFinal += ($calculatedChecksum >> 16) & 0xFF;	$calculatedChecksumFinal += ($calculatedChecksum >> 24) & 0xFF;	$calculatedChecksumFinal &= 0x1f;		return array(		'driver'=>$driver1,		'partner'=>$driver2,		'cart'=>$cart,		'course'=>$unknown1,		'time'=>$time1,		'lap'=>$time2,		'unknown2'=>$unknown2,		'unknown3'=>$unknown3,		'checksum'=>$checksum,		'calcchecksum'=>$calculatedChecksumFinal	);}