· 7 years ago · Dec 23, 2018, 02:44 PM
1using InstagramAccCreator.Logger;
2using MahApps.Metro.Controls;
3using Microsoft.Win32;
4using Newtonsoft.Json.Linq;
5using System;
6using System.Collections.Generic;
7using System.IO;
8using System.Linq;
9using System.Net;
10using System.Net.Http;
11using System.Text;
12using System.Threading;
13using System.Threading.Tasks;
14using System.Windows;
15using System.Windows.Controls;
16using System.Windows.Data;
17using System.Windows.Documents;
18using System.Windows.Input;
19using System.Windows.Media;
20using System.Windows.Media.Imaging;
21using System.Windows.Shapes;
22
23namespace InstagramAccCreator
24{
25 /// <summary>
26 /// Interaction logic for Creator.xaml
27 /// </summary>
28 public partial class Creator : MetroWindow
29 {
30 private static Random random = new Random();
31 private static List<String> emails = new List<String> { "@gmail.com", "@yahoo.com", "@outlook.com", "@hotmail.com" };
32 private static ILogger logger = FileLogger.Instance;
33
34 List<string> Proxies;
35
36 public Creator()
37 {
38 InitializeComponent();
39 Proxies = new List<string>();
40
41 }
42
43 private void ProxiesBtn_Click(object sender, RoutedEventArgs e)
44 {
45 OpenFileDialog odf = new OpenFileDialog();
46 if (odf.ShowDialog() == true)
47 {
48 string line = "";
49 System.IO.StreamReader file = new System.IO.StreamReader(odf.FileName);
50 while ((line = file.ReadLine()) != null)
51 {
52 Proxies.Add(line);
53 }
54
55 file.Close();
56 }
57 }
58
59 public static string RandomString(int length)
60 {
61 const string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
62 return new string(Enumerable.Repeat(chars, length)
63 .Select(s => s[random.Next(s.Length)]).ToArray());
64 }
65
66 private Stack<Dictionary<string, string>> GetRandom(int amount)
67 {
68 try
69 {
70 Stack<Dictionary<string, string>> ret = new Stack<Dictionary<string, string>>();
71 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://randomuser.me/api/?results=" + amount.ToString());
72 request.AutomaticDecompression = DecompressionMethods.GZip;
73 string json = null;
74 using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
75 using (Stream stream = response.GetResponseStream())
76 using (StreamReader reader = new StreamReader(stream))
77 {
78 json = reader.ReadToEnd();
79 }
80
81 var parsed = JObject.Parse(json);
82 foreach (var user in parsed["results"])
83 {
84 Dictionary<string, string> tmp = new Dictionary<string, string>();
85 tmp["username"] = (string)user["login"]["username"] + RandomString(3);
86 tmp["password"] = RandomString(8);
87 tmp["email"] = tmp["username"] + '.' + RandomString(3) + emails[random.Next(emails.Count)];
88 tmp["name"] = (string)user["name"]["first"];
89 tmp["seamless_login_enabled"] = "1";
90 ret.Push(tmp);
91 }
92
93
94 return ret;
95 }
96 catch (Exception e)
97 {
98 logger.Log(e.ToString());
99 return null;
100 }
101 }
102
103 private void AddTextLine(string text)
104 {
105 TxtBox.AppendText(text);
106 TxtBox.AppendText(Environment.NewLine);
107 Thread.Sleep(1000);
108 }
109
110 private async Task<ERRORS> Register(string proxy, Dictionary<string, string> details)
111 {
112 var handler = new HttpClientHandler
113 {
114 AllowAutoRedirect = true,
115 UseCookies = true,
116 CookieContainer = new CookieContainer()
117 };
118 /*
119 try
120 {
121 handler.Proxy = new WebProxy(proxy);
122 }
123 catch
124 {
125 logger.Log("Bad Proxy");
126 return ERRORS.FAIL;
127 }
128
129 handler.UseProxy = true;
130 */
131 var client = new HttpClient(handler);
132 client.BaseAddress = new Uri("https://www.instagram.com");
133 client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");
134 client.DefaultRequestHeaders.Add("X-Instagram-AJAX", "846d5a59d9e9");
135 client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
136 try
137 {
138 await client.GetAsync("/");
139 }
140 catch
141 {
142 logger.Log("Failed get request, probably bad proxy");
143 return ERRORS.FAIL;
144 }
145
146 var cookies = handler.CookieContainer.GetCookies(client.BaseAddress);
147 client.DefaultRequestHeaders.Add("X-CSRFToken", cookies["csrftoken"].Value);
148 var request = new HttpRequestMessage(HttpMethod.Post, "/accounts/web_create_ajax/");
149 request.Content = new FormUrlEncodedContent(details);
150 request.Headers.Referrer = new Uri(client.BaseAddress, "/");
151
152 HttpResponseMessage response = null;
153 try
154 {
155 response = await client.SendAsync(request);
156 }
157 catch
158 {
159 logger.Log("Failed post request, probably bad proxy");
160 return ERRORS.FAIL;
161 }
162
163 var content = await response.Content.ReadAsStringAsync();
164 JObject info = null;
165 try
166 {
167 info = JObject.Parse(content);
168 }
169 catch
170 {
171 logger.Log("Failed parsing JSON, probably bad request");
172 return ERRORS.FAIL;
173 }
174 try
175 {
176 if (info["account_created"] != null && (bool)info["account_created"])
177 {
178 logger.Log("Created a new user");
179 return ERRORS.SUCCESS;
180 }
181 else
182 {
183 if (info["errors"] != null && info["errors"].HasValues)
184 {
185 if (info["errors"]["ip"] != null)
186 {
187 logger.Log("Bad IP");
188 logger.Log(info["errors"].ToString());
189 return ERRORS.IP;
190 }
191 if (info["errors"]["email"] != null)
192 {
193 logger.Log("Bad Email: " + details["email"]);
194 logger.Log(info["errors"].ToString());
195 return ERRORS.EMAIL;
196 }
197 if (info["errors"]["username"] != null)
198 {
199 logger.Log("Bad User: " + details["username"]);
200 logger.Log(info["errors"].ToString());
201 return ERRORS.USERNAME;
202 }
203 }
204 }
205 }
206 catch
207 {
208 logger.Log("JSON Parsing failed");
209 return ERRORS.FAIL;
210 }
211
212 return ERRORS.FAIL;
213 }
214
215 private void UserToFile(string proxy, Dictionary<string, string> details)
216 {
217 File.AppendAllText("results.txt", String.Format("{0}:{1}:{2}:{3}:{4}", details["username"], details["password"], details["email"], details["name"], proxy) + Environment.NewLine);
218 }
219
220 private async void StartBtn_Click(object sender, RoutedEventArgs e)
221 {
222 StartBtn.IsEnabled = false;
223 AddTextLine("Starting...");
224 if (Proxies.Count == 0)
225 {
226 MessageBox.Show("No Proxies are loaded");
227 StartBtn.IsEnabled = true;
228 return;
229 }
230
231 var users = GetRandom(20);
232 int amount = 0;
233
234 if(! int.TryParse(Amnt.Text, out amount))
235 {
236 MessageBox.Show("Please type an integer");
237 StartBtn.IsEnabled = true;
238 return;
239 }
240
241 foreach (var proxy in Proxies)
242 {
243 for (var i = 0; i < amount; i++)
244 {
245 if (users.Count == 0)
246 users = GetRandom(20);
247
248 if (users == null)
249 {
250 MessageBox.Show("Failed getting random details");
251 }
252
253 var user = users.Pop();
254 ERRORS error = await Register(proxy, user);
255
256 switch (error)
257 {
258 case ERRORS.SUCCESS:
259 {
260 UserToFile(proxy, user);
261 AddTextLine("User: " + user["username"] + " created");
262 break;
263 }
264 case ERRORS.IP:
265 case ERRORS.FAIL:
266 {
267 users.Push(user);
268 AddTextLine("Bad IP, skipping proxy");
269 i = amount;
270 break;
271 }
272 case ERRORS.USERNAME:
273 case ERRORS.EMAIL:
274 {
275 AddTextLine("Bad username/email, retrying with new details");
276 i--;
277 break;
278 }
279 }
280 }
281 }
282 StartBtn.IsEnabled = true;
283 }
284
285 enum ERRORS
286 {
287 SUCCESS,
288 IP,
289 EMAIL,
290 USERNAME,
291 FAIL
292 }
293 }
294}