Advertisement
Guest User

Untitled

a guest
Aug 4th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.31 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Net;
  7. using System.IO;
  8. using System.Net.Http;
  9. using Newtonsoft.Json.Linq;
  10. using System.Text.RegularExpressions;
  11.  
  12. namespace Pokemap {
  13.     class Program {
  14.  
  15.         static bool _debug = true;
  16.  
  17.         const string API_URL = "https://pgorelease.nianticlabs.com/plfe/rpc";
  18.         const string LOGIN_URL = "https://sso.pokemon.com/sso/login?service=https%3A%2F%2Fsso.pokemon.com%2Fsso%2Foauth2.0%2FcallbackAuthorize";
  19.         const string LOGIN_OAUTH = "https://sso.pokemon.com/sso/oauth2.0/accessToken";
  20.  
  21.         static void Main(string[] args) {
  22.  
  23.             Console.WriteLine("Enter Username");
  24.             string username = Console.ReadLine();
  25.  
  26.             if (username == "default") {
  27.                 login_ptc();
  28.             }
  29.             else {
  30.                 Console.WriteLine("Enter Password");
  31.                 string password = Console.ReadLine();
  32.                 login_ptc(username, password);
  33.             }
  34.             Console.ReadLine();
  35.         }
  36.  
  37.         static string login_ptc(string username = "kingske007", string password = "secret") {
  38.             Console.WriteLine("[!] login for: {0}", username);
  39.             string token = "";
  40.             using (var clientHandler = new HttpClientHandler()) {
  41.                 clientHandler.AllowAutoRedirect = false;
  42.                 using (var client = new HttpClient(clientHandler)) {
  43.                     client.DefaultRequestHeaders.Add("User-Agent", "niantic");
  44.                     var r = client.GetAsync(LOGIN_URL).Result.Content.ReadAsStringAsync().Result;
  45.                     var jdata = JObject.Parse(r);
  46.                     var data = new[]
  47.                     {
  48.                         new KeyValuePair<string, string>("lt", (string)jdata["lt"]),
  49.                         new KeyValuePair<string, string>("execution", (string)jdata["execution"]),
  50.                         new KeyValuePair<string, string>("_eventId", "submit"),
  51.                         new KeyValuePair<string, string>("username", username),
  52.                         new KeyValuePair<string, string>("password", password),
  53.                     };
  54.                     var result = client.PostAsync(LOGIN_URL, new FormUrlEncodedContent(data)).Result;
  55.                     if (result.Headers.Location == null)
  56.                         return null;
  57.                     var location = result.Headers.Location.ToString();
  58.                     var r1 = result.Content.ReadAsStringAsync().Result;
  59.  
  60.                     string ticket = null;
  61.                     try { ticket = new Regex(".*ticket=").Split(location)[1]; }
  62.                     catch {
  63.                         if (_debug)
  64.                             Console.WriteLine(r1);
  65.                         return null;
  66.                     }
  67.  
  68.                     var data1 = new[]
  69.                     {
  70.                         new KeyValuePair<string, string>("client_id", "mobile-app_pokemon-go"),
  71.                         new KeyValuePair<string, string>("redirect_uri", "https://www.nianticlabs.com/pokemongo/error"),
  72.                         new KeyValuePair<string, string>("client_secret", "w8ScCUXJQc6kXKw8FiOhd8Fixzht18Dq3PEVkUCP5ZPxtgyWsbTvWHFLm2wNY0JR"),
  73.                         new KeyValuePair<string, string>("grant_type", "refresh_token"),
  74.                         new KeyValuePair<string, string>("code", ticket),
  75.                     };
  76.                     var r2 = client.PostAsync(LOGIN_OAUTH, new FormUrlEncodedContent(data1)).Result.Content.ReadAsStringAsync().Result;
  77.                     var access_token = new Regex("&expires.*").Split(r2)[0];
  78.                     access_token = new Regex(".*access_token=").Split(access_token)[1];
  79.                     token = access_token;
  80.                     Console.WriteLine("Received acces token: " + token);
  81.                 }
  82.             }
  83.             return token;
  84.         }
  85.     }
  86.     public class LoginResponseData {
  87.         public string lt;
  88.         public string execution;
  89.     }
  90.  
  91.     public class LoginRequestData {
  92.         public string lt, execution, _eventId = "submit", username, password;
  93.     }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement