Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net;
- using System.IO;
- using System.Net.Http;
- using Newtonsoft.Json.Linq;
- using System.Text.RegularExpressions;
- namespace Pokemap {
- class Program {
- static bool _debug = true;
- const string API_URL = "https://pgorelease.nianticlabs.com/plfe/rpc";
- const string LOGIN_URL = "https://sso.pokemon.com/sso/login?service=https%3A%2F%2Fsso.pokemon.com%2Fsso%2Foauth2.0%2FcallbackAuthorize";
- const string LOGIN_OAUTH = "https://sso.pokemon.com/sso/oauth2.0/accessToken";
- static void Main(string[] args) {
- Console.WriteLine("Enter Username");
- string username = Console.ReadLine();
- if (username == "default") {
- login_ptc();
- }
- else {
- Console.WriteLine("Enter Password");
- string password = Console.ReadLine();
- login_ptc(username, password);
- }
- Console.ReadLine();
- }
- static string login_ptc(string username = "kingske007", string password = "secret") {
- Console.WriteLine("[!] login for: {0}", username);
- string token = "";
- using (var clientHandler = new HttpClientHandler()) {
- clientHandler.AllowAutoRedirect = false;
- using (var client = new HttpClient(clientHandler)) {
- client.DefaultRequestHeaders.Add("User-Agent", "niantic");
- var r = client.GetAsync(LOGIN_URL).Result.Content.ReadAsStringAsync().Result;
- var jdata = JObject.Parse(r);
- var data = new[]
- {
- new KeyValuePair<string, string>("lt", (string)jdata["lt"]),
- new KeyValuePair<string, string>("execution", (string)jdata["execution"]),
- new KeyValuePair<string, string>("_eventId", "submit"),
- new KeyValuePair<string, string>("username", username),
- new KeyValuePair<string, string>("password", password),
- };
- var result = client.PostAsync(LOGIN_URL, new FormUrlEncodedContent(data)).Result;
- if (result.Headers.Location == null)
- return null;
- var location = result.Headers.Location.ToString();
- var r1 = result.Content.ReadAsStringAsync().Result;
- string ticket = null;
- try { ticket = new Regex(".*ticket=").Split(location)[1]; }
- catch {
- if (_debug)
- Console.WriteLine(r1);
- return null;
- }
- var data1 = new[]
- {
- new KeyValuePair<string, string>("client_id", "mobile-app_pokemon-go"),
- new KeyValuePair<string, string>("redirect_uri", "https://www.nianticlabs.com/pokemongo/error"),
- new KeyValuePair<string, string>("client_secret", "w8ScCUXJQc6kXKw8FiOhd8Fixzht18Dq3PEVkUCP5ZPxtgyWsbTvWHFLm2wNY0JR"),
- new KeyValuePair<string, string>("grant_type", "refresh_token"),
- new KeyValuePair<string, string>("code", ticket),
- };
- var r2 = client.PostAsync(LOGIN_OAUTH, new FormUrlEncodedContent(data1)).Result.Content.ReadAsStringAsync().Result;
- var access_token = new Regex("&expires.*").Split(r2)[0];
- access_token = new Regex(".*access_token=").Split(access_token)[1];
- token = access_token;
- Console.WriteLine("Received acces token: " + token);
- }
- }
- return token;
- }
- }
- public class LoginResponseData {
- public string lt;
- public string execution;
- }
- public class LoginRequestData {
- public string lt, execution, _eventId = "submit", username, password;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement