Что бы пройти авторизацию нам нужно сделать несколько шагов: 
1. Взять ключ для нашего пароля
2. Зашифровать все (пароль + ключ)
3. Послать запрос на авторизацию

Для начала я создал класс ml с 4 методами: get_password, get_salt, auth и curl_get

class ml{

var $auth_url = "http://mlgame.ru/auth";
var $salt_url = "http://mlgame.ru/salt";
var $game_url = "http://mlgame.ru/";
var $password;
var $login;
var $cookie_name = "cookie.txt";

function __construct(){}

function curl_get($host, $referer = null){}

function get_salt(){}

function get_password(){}

function auth(){}
}

Что кто будет делать:
get_salt будет идти на страничку подбора ключа для пароля и парсить его.
get_passwordбудет генерировать наш пароль, в смысле шифровать его с ключом (salt)
auth будет нас авторизировать 
curl_get будет у нас в качестве браузера

get_salt:

$salt = json_decode($this->curl_get($this->salt_url), TRUE);
return $salt['salt'];

В ответ получим что-то похожее на md5

get_password:
Что бы сложить пароль они используют ресурсы клиента, что есть для их и яма. И в эту яму полезим и мы.
Алгоритм шифра вот такой: MD5( MD5(clearText) + salt );
так что:

return md5(md5($this->password)."".$this->get_salt());

Этого вполне достаточно что бы сделать хэш нашего пароля точно так же как это делает и сайт.

auth:
Тут все просто, у нас есть логин у нас уже есть сгенерированный хэш нашего пароля и у нас есть сигарета и кофе…

Сервер нам попросту отдаст ошибку типа у нас не правильный пароль если мы не заберем cookie которые он нам даст. Для этого я в curl_get добавил всего две строчки:

curl_setopt($ch, CURLOPT_COOKIEJAR,  $this->cookie_name);
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_name);

после все хорошо заработало.

Ну и сам auth:

$to = $this->auth_url."?username=".$this->login."&password=".$this->get_password()."&autologin=false&captcha=null";
$auth = $this->curl_get($to, $this->game_url);
return $auth;

curl_get будет пока что!!!! вот такой:

$ch = curl_init();
 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, "Opera/14.00 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51");
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR,  $this->cookie_name);
        curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_name);
 
$html = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
return $html;

ГОТОВЫЙ ML.CLASS.PHP:

class ml{

var $auth_url = "http://mlgame.ru/auth";
var $salt_url = "http://mlgame.ru/salt";
var $game_url = "http://mlgame.ru/";
var $password;
var $login;
var $cookie_name = "cookie.txt";

function __construct(){}

function curl_get($host, $referer = null){
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, "Opera/14.00 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51");
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie_name);
curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie_name);

$html = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
return $html;
}

function get_salt(){
$salt = json_decode($this->curl_get($this->salt_url), TRUE);
return $salt['salt'];
}

function get_password(){
//MD5( MD5(clearText) + salt );
return md5(md5($this->password)."".$this->get_salt());
}

function auth(){
$to = $this->auth_url."?username=".$this->login."&password=".$this->get_password()."&autologin=false&captcha=null";
$auth = $this->curl_get($to, $this->game_url);
return $auth;
}
}

Делаем

$ml = new ml();
$ml->login = "ЛОГИН";
$ml->password = "ПАРОЛЬ";
echo $ml->auth();

и вуаля 🙂 мы вошли.