Відправка безкоштовних смс від будь якого номеру

Колись був дуже корисний сайт sms.gt.com.ua який дозволяв відправляти смс на номери мобільних операторів. Існував із 1999 року до 2009 року.

sms-gt-com-ua

Особливістю був номер відправника який складався із 8 цифр, який був зашифрований у cookie відправника. Після невеликого реверс інжирингу появилася можливість відправлити смс із будь яким 8 цифровим ідентифікатором. Телефон при отриманні такої смс відображав імя із телефонної книги, у якого співпадали останні 8 цифр.

Кукс який зберігав номер відправника називався UID, і обчислювався наступним кодом:

<?php

$real_is =array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$hash[15]=array('4','5','6','7','0','1','2','3','C','D','E','F','8','9','A','B');
$hash[14]=array('5','4','7','6','1','0','3','2','D','C','F','E','9','8','B','A');
$hash[13]=array('A','B','8','9','E','F','C','D','2','3','0','1','6','7','4','5');
$hash[12]=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$hash[11]=array('1','0','3','2','5','4','7','6','A','8','B','9','D','C','F','E');
$hash[10]=array('E','F','C','D','A','B','8','9','6','7','4','5','2','3','0','1');
$hash[9] =array('C','D','E','F','8','9','X','X','X','X','X','X','X','X','X','X');
$hash[8] =array('7','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X');
$hash[7] =array('C','D','E','F','8','9','A','B','4','5','6','7','0','1','2','3');
$hash[6] =array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
$hash[5] =array('1','0','3','2','5','4','7','6','9','8','B','A','D','C','F','E');
$hash[4] =array('9','8','B','A','D','C','F','E','1','0','3','2','5','4','7','6');
$hash[3] =array('2','3','0','1','5','7','4','6','A','B','8','9','E','F','C','D');
$hash[2] =array('4','5','6','7','0','1','2','3','C','D','E','F','8','9','A','B');
$hash[1] =array('X','X','X','X','X','X','X','X','X','X','A','B','C','D','E','F');
$hash[0] =array('X','X','X','X','X','X','X','X','X','X','X','X','X','X','X','4');

function get_hesh($nm)
{
 $nm=substr($nm,strlen($nm)-8,8);
 $is_hesh='';
 global $real_is;
 global $hash;
 $p_1=DecHex($nm);
 if (HexDec($p_1)<HexDec('fffffff')) {$p_1='0'.$p_1;};
 $p_2=DecHex(HexDec('ffffffff')-HexDec($p_1));
 $crypt=$p_2.$p_1;
 $crypt=strtoupper($crypt);
 for ($i=0;$i<16;$i++)
 {
 for ($z=0;$z<count($real_is);$z++) 
 { 
 if (substr($crypt, $i, 1)==$real_is[$z]) 
 {
 $is_hesh.=$hash[$i][$z];
 };
 };
 };
 return $is_hesh;
};

function unhesh($hesh)
{
 $un_hesh="";$is_us="";
 global $real_is;
 global $hash;
 for ($i=0;$i<16;$i++)
 {
 for ($z=0;$z<count($real_is);$z++) 
 {
 if (substr($hesh, $i, 1)==$hash[$i][$z]) 
 { 
 $un_hesh.=$real_is[$z]; 
 $is_us="1";
 };
 };
 if ($is_us=="1")
 {
 $is_us="0";
 } else
 {
 $un_hesh.="X";
 $is_us="0";
 };
 }; 
 return $un_hesh;
};

?>
Коментарі