public static EAccountResult CreateAccount(ref AccountData account) { EAccountResult result = EAccountResult.Success; PostResult postResult; PostRequest mClient = new PostRequest("http://ragnarokonline.fr/inscription/index.php", "http://ragnarokonline.fr/inscription/index.php"); mClient.Type = PostRequest.PostTypeEnum.Get; postResult = mClient.Post(); // apply cookies mClient.Cookies = postResult.Cookies; // visit register page (need to fetch new cookies) mClient.Url = "http://ragnarokonline.fr/inscription/inscrire.php"; mClient.UrlReferer = "http://ragnarokonline.fr/inscription/inscrire.php"; postResult = mClient.Post(); // apply cookies.. mClient.Cookies = postResult.Cookies; // download captcha mClient.Url = "http://ragnarokonline.fr/inscription/securimage/securimage_show.php"; postResult = mClient.Post(); // apply cookies.. again //mClient.Cookies = postResult.Cookies; string captchaPath = Path.GetTempFileName(); File.Delete(captchaPath); captchaPath += ".png"; File.WriteAllBytes(captchaPath, postResult.ResponseData); // open captcha Process p = Process.Start(captchaPath); Console.Write("\t\tCaptcha code: "); account.CaptchaCode = Console.ReadLine(); // Only if we have admin rights, we may kill the process System.Security.Principal.WindowsPrincipal pricipal = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()); if (pricipal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) == true) { try { if (p.CloseMainWindow() == false) { // fall trough throw new Exception("Failed to close captcha image process"); } } catch (Exception ex) { // Failed to close.. so try minimize it try { System.Windows.Forms.Form frm = (System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(p.MainWindowHandle); if (frm != null) { frm.WindowState = System.Windows.Forms.FormWindowState.Minimized; } } catch { // Nothing worked.. damn it // only native code may help now, but just to kill or minimize a process.. no way } } } mClient.Url = "http://ragnarokonline.fr/inscription/verifMail.php"; mClient.Cookies = postResult.Cookies; mClient.PostItems.Add("email", account.Email); mClient.PostItems.Add("name", account.Prename); mClient.PostItems.Add("surname", account.Name); mClient.PostItems.Add("jour", account.BirthDay.ToString()); mClient.PostItems.Add("mois", account.BirthMonth.ToString()); mClient.PostItems.Add("annee", account.BirthYear.ToString()); mClient.PostItems.Add("sexe", "1"); // Männlich mClient.PostItems.Add("captcha_code", account.CaptchaCode); postResult = mClient.Post(); Regex re = new Regex("&resultat=([^&]*)&login=([^&]*)&pass=([^&]*)"); Match match = re.Match(postResult.ResponseString); if (match.Success == false) { return(CreateAccount(ref account)); } account.Login = match.Groups[2].Captures[0].Value; account.Password = match.Groups[3].Captures[0].Value; int requestResult = int.Parse(match.Groups[1].Captures[0].Value); result = (EAccountResult)requestResult; return(result); }
public static EAccountResult CreateAccount(ref AccountData account) { EAccountResult result = EAccountResult.Success; PostResult postResult; PostRequest mClient = new PostRequest("http://ragnarokonline.fr/inscription/index.php", "http://ragnarokonline.fr/inscription/index.php"); mClient.Type = PostRequest.PostTypeEnum.Get; postResult = mClient.Post(); // apply cookies mClient.Cookies = postResult.Cookies; // visit register page (need to fetch new cookies) mClient.Url = "http://ragnarokonline.fr/inscription/inscrire.php"; mClient.UrlReferer = "http://ragnarokonline.fr/inscription/inscrire.php"; postResult = mClient.Post(); // apply cookies.. mClient.Cookies = postResult.Cookies; // download captcha mClient.Url = "http://ragnarokonline.fr/inscription/securimage/securimage_show.php"; postResult = mClient.Post(); // apply cookies.. again //mClient.Cookies = postResult.Cookies; string captchaPath = Path.GetTempFileName(); File.Delete(captchaPath); captchaPath += ".png"; File.WriteAllBytes(captchaPath, postResult.ResponseData); // open captcha Process p = Process.Start(captchaPath); Console.Write("\t\tCaptcha code: "); account.CaptchaCode = Console.ReadLine(); // Only if we have admin rights, we may kill the process System.Security.Principal.WindowsPrincipal pricipal = new System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent()); if (pricipal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator) == true) { try { if (p.CloseMainWindow() == false) { // fall trough throw new Exception("Failed to close captcha image process"); } } catch (Exception ex) { // Failed to close.. so try minimize it try { System.Windows.Forms.Form frm = (System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(p.MainWindowHandle); if (frm != null) { frm.WindowState = System.Windows.Forms.FormWindowState.Minimized; } } catch { // Nothing worked.. damn it // only native code may help now, but just to kill or minimize a process.. no way } } } mClient.Url = "http://ragnarokonline.fr/inscription/verifMail.php"; mClient.Cookies = postResult.Cookies; mClient.PostItems.Add("email", account.Email); mClient.PostItems.Add("name", account.Prename); mClient.PostItems.Add("surname", account.Name); mClient.PostItems.Add("jour", account.BirthDay.ToString()); mClient.PostItems.Add("mois", account.BirthMonth.ToString()); mClient.PostItems.Add("annee", account.BirthYear.ToString()); mClient.PostItems.Add("sexe", "1"); // Männlich mClient.PostItems.Add("captcha_code", account.CaptchaCode); postResult = mClient.Post(); Regex re = new Regex("&resultat=([^&]*)&login=([^&]*)&pass=([^&]*)"); Match match = re.Match(postResult.ResponseString); if (match.Success == false) { return CreateAccount(ref account); } account.Login = match.Groups[2].Captures[0].Value; account.Password = match.Groups[3].Captures[0].Value; int requestResult = int.Parse(match.Groups[1].Captures[0].Value); result = (EAccountResult)requestResult; return result; }
public static void Main(string[] args) { WriteLine("------------------------------------------------------", ConsoleColor.Blue); WriteLine("[ France Ragnarok Account Creator - by GodLesZ ]", ConsoleColor.Blue); WriteLine("------------------------------------------------------", ConsoleColor.Blue); WriteLine(); Write("\t#1 fetch email.."); string email = MailGenerator.createMail(); if (email == "") { WriteLine(" failed! PLease report this to GodLesZ.", ConsoleColor.Red); CleanUp(); Console.ReadKey(); return; } WriteLine(" done", ConsoleColor.Green); Write("\t#2 build credentials.."); AccountData userData = new AccountData(email); WriteLine(" done", ConsoleColor.Green); WriteLine("\t#3 create account.."); try { EAccountResult res; if ((res = AccountHelper.CreateAccount(ref userData)) != EAccountResult.Success) { WriteLine("\tfailed to create account: " + res, ConsoleColor.Red); CleanUp(); Console.ReadKey(); return; } } catch (Exception ex) { WriteLine("\tfailed to create account: internal exception", ConsoleColor.Red); CleanUp(); Console.WriteLine(ex); Console.ReadKey(); return; } try { Write("\t#4 create file.."); using (StreamWriter Writer = new StreamWriter("Account.txt", true)) { Writer.WriteLine("#----------- Account Daten ---------"); Writer.WriteLine("# E-Mail : " + userData.Email); Writer.WriteLine("# Login : "******"# Password: "******" done", ConsoleColor.Green); } catch (Exception WriterEX) { WriteLine("\failed to create file: internal exception", ConsoleColor.Red); CleanUp(); Console.WriteLine(WriterEX); Console.ReadKey(); return; } CleanUp(); WriteLine(); WriteLine("----------------------------------------", ConsoleColor.Green); WriteLine("Email : " + userData.Email); WriteLine("Login : "******"Password : "******"----------------------------------------", ConsoleColor.Green); Write("Wait for FRO email.. "); int i = 0; do { Console.Write("{0}{1}", (i > 0 ? "\b" : ""), mCursorData[i % mCursorData.Length]); if (MailGenerator.CheckResponseEmail(userData.Email) == true) { Write("\b received & validated!", ConsoleColor.Green); break; } System.Threading.Thread.Sleep(200); i++; } while (true); WriteLine(); WriteLine(); WriteLine("------------------------------------------------------", ConsoleColor.Blue); WriteLine("[ GodLesZ <3 Blaubeere ]", ConsoleColor.Blue); WriteLine("------------------------------------------------------", ConsoleColor.Blue); Console.ReadKey(); }