Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?
- function ubase64_encode($str)
- {
- return strtr(base64_encode($str),"+=","-*");
- }
- function ubase64_decode($str)
- {
- return base64_decode(strtr(urldecode($str),"-*","+="));
- }
- function packreq($params)
- {
- $devtime = ubase64_encode(gmdate("ymdHis"));
- // change the userid if required
- $res = "sdkver=MDA1MDAz&userid=MjA0NDczNjM4MjM0Nw**&passwd=NTUx&bssid=ZTBhMWQ3NDUxZjFj"
- . "&apinfo=MDA6MDAwMDAwMC0wMA**&gamecd=SVJBTw**&makercd=MDE*&unitcd=MA**"
- . "&macadr=OGM1NmM1ZTU3YjMw&lang=MDI*&birth=MDAwMA**&devtime=$devtime&devname=WAA*";
- foreach($params as $key=>$val)
- {
- $res .= "&$key=".ubase64_encode($val);
- }
- return $res;
- }
- function decoderes($str)
- {
- $str = explode("&",$str);
- $res = array();
- foreach($str as $k)
- {
- list($k,$v) = explode("=", $k);
- $v = ubase64_decode($v);
- $res[$k] = $v;
- }
- return $res;
- }
- function getservicetoken($cache=false)
- {
- if($cache || (file_exists("servicetoken") && time()<filemtime("servicetoken")+43200))
- return trim(file_get_contents("servicetoken"));
- else
- {
- $sock = fsockopen("ssl://nas.nintendowifi.net","443",$errno,$errstr);
- if($sock)
- {
- $req = packreq(array("action"=>"SVCLOC","svc"=>"0000"));
- $headers = "POST /ac HTTP/1.0\n"
- ."Content-type: application/x-www-form-urlencoded\n"
- ."Host: nas.nintendowifi.net\n"
- ."User-Agent: Nitro WiFi SDK/5.3\n"
- ."HTTP_X_GAMECD: IRAO\n"
- ."Connection: close\n"
- ."Content-Length: ".strlen($req)."\n\n";
- fwrite($sock, $headers.$req);
- for($res=""; !feof($sock);)
- $res .= fread($sock, 8192);
- fclose($sock);
- list($headers, $res) = explode("\r\n\r\n",$res,2);
- $res = decoderes($res);
- if(!isset($res['servicetoken'])) die("Error: Pokecheck has been banned on NAS, cannot get service token.");
- file_put_contents("servicetoken", $res['servicetoken']);
- return $res['servicetoken'];
- }
- else return getservicetoken(true);
- }
- }
Advertisement