Skip to content

Instantly share code, notes, and snippets.

@AlexArchive
Created May 17, 2014 01:32
Show Gist options
  • Save AlexArchive/a3022b5df46d477c8cdd to your computer and use it in GitHub Desktop.
Save AlexArchive/a3022b5df46d477c8cdd to your computer and use it in GitHub Desktop.
namespace Code
{
public class XboxLogin
{
private static void Do()
{
var cookieContainer = new CookieContainer();
var handler = new HttpClientHandler();
handler.AllowAutoRedirect = true;
handler.CookieContainer = cookieContainer;
var client = new HttpClient(handler);
cookieContainer.Add(new Cookie("MC0", Time().ToString(), "/", ".xbox.com"));
cookieContainer.Add(new Cookie("s_vi", "[CS]v1|26AD59C185011B4D-40000113004213F1[CE]", "/", ".xbox.com"));
cookieContainer.Add(new Cookie("s_nr", "1297891791797", "/", ".xbox.com"));
cookieContainer.Add(new Cookie("s_sess",
"%20s_cc%3Dtrue%3B%20s_ria%3Dflash%252011%257Csilverlight%2520not%2520detected%3B%20s_sq%3D%3B", "/",
".xbox.com"));
cookieContainer.Add(new Cookie("s_pers",
"%20s_vnum%3D1352674046430%2526vn%253D4%7C1352674046430%3B%20s_lastvisit%3D1324587801077%7C1419195801077%3B%20s_invisit%3Dtrue%7C1324589873289%3B",
"/", ".xbox.com"));
cookieContainer.Add(new Cookie("UtcOffsetMinutes", "60", "/", ".xbox.com"));
cookieContainer.Add(new Cookie("xbox_info", "t=3", "/", ".xbox.com"));
cookieContainer.Add(new Cookie("PersistentId", "0a652e56e40f42caac3ac84fad02ed01", "/", ".xbox.com"));
client.DefaultRequestHeaders.Add("Referer", "http://www.xbox.com/en-US/");
client.DefaultRequestHeaders.Add("User-Agent",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
var loginUri =
new Uri("https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=11&ct=" + Time() +
"&rver=6.0.5286.0&wp=MBI&wreply=https://live.xbox.com:443/xweb/live/passport/setCookies.ashx%3Frru%3Dhttp%253a%252f%252fwww.xbox.com%252fen-US%252f&flc=3d1033&lc=1033&cb=reason=0&returnUrl=http%253a%252f%252fwww.xbox.com%252fen-US%252f%253flc%253d1033&id=66262");
HttpResponseMessage response = client.GetAsync(loginUri).Result;
string content = response.Content.ReadAsStringAsync().Result;
cookieContainer.Add(new Cookie("WLOpt", "act=[1]", "/", ".login.live.com"));
cookieContainer.Add(new Cookie("CkTst", "G" + Time(), "/", ".login.live.com"));
var postUrl = Regex.Match(content, "urlPost:'(?<postUrl>.+?)'").Groups["postUrl"].Value;
var ppftVal = Regex.Match(content, "name=\"PPFT\" id=\"i0327\" value=\"(?<ppft>.+?)\"").Groups["ppft"].Value;
var ppsxVal = Regex.Match(content, "j:'(?<ppsx>.+?)'").Groups["ppsx"].Value;
var builder = new PostDataBuilder();
builder.Add("login", Constants.Email);
builder.Add("passwd", Constants.Password);
builder.Add("KMSI", "1");
builder.Add("mest", "0");
builder.Add("type", "11");
builder.Add("LoginOptions", "3");
builder.Add("PPSX", ppsxVal);
builder.Add("PPFT", ppftVal);
builder.Add("idsbho", "1");
builder.Add("PwdPad", "");
builder.Add("sso", "");
builder.Add("i1", "1");
builder.Add("i2", "1");
builder.Add("i3", "12035");
builder.Add("i12", "1");
builder.Add("i13", "1");
builder.Add("i14", "323");
builder.Add("i15", "3762");
builder.Add("i18", "__Login_Strings%7C1%2C__Login_Core%7C1%2C");
client.DefaultRequestHeaders.Remove("Referer");
client.DefaultRequestHeaders.Add("Referer", "https://login.live.com/login.srf");
FormUrlEncodedContent data = builder.ToFormUrlEncodedContent();
Debugger.Break();
var response2 = client.PostAsync(postUrl, data).Result;
var content2 = response2.Content.ReadAsStringAsync().Result;
}
private static int Time()
{
var unixTimestamp = (Int32) (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
return unixTimestamp;
}
}
public class PostDataBuilder
{
private readonly List<KeyValuePair<string, string>> _data = new List<KeyValuePair<string, string>>();
public void Add(string key, string content)
{
_data.Add(new KeyValuePair<string, string>(key, content));
}
public FormUrlEncodedContent ToFormUrlEncodedContent()
{
return new FormUrlEncodedContent(_data);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment