· 9 years ago · Sep 19, 2016, 12:08 AM
1from string import join
2from random import choice, randrange
3from urllib import urlencode
4from urllib2 import urlopen, Request, HTTPError
5from bs4 import BeautifulSoup
6from threading import Thread
7import requests
8
9
10class AccountGenerator(Thread):
11 header = {
12 "User-Agent": "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"
13 }
14
15 def __init__(self):
16 super(AccountGenerator, self).__init__()
17
18 self.email = "random"
19 self.name = "random"
20 self.pw = "penguin88"
21 self.color = randrange(1, 12)
22
23 def run(self):
24 self.loadCaptchas()
25 self.registerPenguin()
26
27 def loadCaptchas(self):
28 self.captchas = {}
29 self.captchas["watermelon"] = "ARRB8J8KQ9t7AAAAAElFTkSuQmCC"
30 self.captchas["balloon"] = "wuWB85cW2c5NQAAAABJRU5ErkJggg=="
31 self.captchas["pizza"] = "XMAAAAASUVORK5CYII="
32 self.captchas["popcorn"] = "yat7sdCF61QAAAABJRU5ErkJggg=="
33 self.captchas["igloo"] = "b+T94dZQb+IAAAAASUVORK5CYII="
34 self.captchas["cheese"] = "B0eBprJbn4wXAAAAAElFTkSuQmCC"
35
36 def registerPenguin(self):
37 self.getRegisterData()
38
39 if self.name == "random":
40 self.name = self.genRandomString(8)
41
42 if self.email == "random":
43 self.email = self.genRandomString(8) + "@gmail.com"
44
45 print "[{0}] Registering... ".format(self.name)
46
47 try:
48 data = {
49 "anon_token": self.anonToken,
50 "color": str(self.color),
51 "name": self.name,
52 "pass": self.pw,
53 "pass_show": "1",
54 "email": self.email,
55 "terms": "1",
56 "captcha": str(self.captchaN),
57 "op":"Create Your Penguin",
58 "form_build_id": self.formBuildId,
59 "form_id": "penguin_create_form"
60 }
61
62 request = Request("https://secured.clubpenguin.com/penguin/create", urlencode(data), self.header)
63 response = urlopen(request)
64
65 htmlData = response.read()
66 soup = BeautifulSoup(htmlData, "html.parser")
67
68
69 setCookieResponse = response.info().getheader("Set-Cookie")
70 response.close()
71
72 if setCookieResponse != None:
73 print "[{0}] Registration successful".format(self.name)
74 with open("accounts.txt", "a") as file:
75 file.write("{0}:{1}\n".format(self.name, self.pw))
76
77 except HTTPError, err:
78 if err.code == 403:
79 print "[{0}] Registration successful".format(self.name)
80 with open("accounts.txt", "a") as file:
81 file.write("{0}:{1}\n".format(self.name, self.pw))
82 else:
83 raise
84
85
86 def getRegisterData(self):
87 request = Request("https://secured.clubpenguin.com/penguin/create", headers=self.header)
88 response = urlopen(request)
89
90 cookie = response.info().getheader("Set-Cookie")
91 htmlData = response.read()
92
93 response.close()
94
95 soup = BeautifulSoup(htmlData, "html.parser")
96
97 itemName = self.findBetween(htmlData, "item_name\":\"", "\",");
98 image1 = self.findBetween(htmlData, "\"images\":{\"1\":\"", "\",");
99 image1 = image1.rsplit('/',1)[-1]
100
101 image2 = self.findBetween(htmlData, image1 + "\",\"2\":\"", "\",");
102 image2 = image2.rsplit('/',1)[-1]
103
104 image3 = self.findBetween(htmlData, image2 + "\",\"3\":\"", "\"");
105 image3 = image3.rsplit('/',1)[-1]
106
107 itemImage = self.captchas[itemName]
108 if(image1 == itemImage):
109 self.captchaN = 0
110 elif(image2 == itemImage):
111 self.captchaN = 1
112 elif(image3 == itemImage):
113 self.captchaN = 2
114
115 self.anonToken = soup.find("input", {"name": "anon_token"})["value"]
116 self.formBuildId = soup.find("input", {"name": "form_build_id"})["value"]
117
118 randomString = self.genRandomString()
119
120 self.header["Cookie"] = "{0} playspanTRANSID=arthur-{1}; cpBROWSERID=vortexal-{1};".format(cookie, randomString)
121 self.header["Origin"] = "https://secured.clubpenguin.com"
122 self.header["Referer"] = "https://secured.clubpenguin.com/penguin/create"
123
124 def findBetween(self, s, first, last):
125 try:
126 start = s.index(first) + len(first)
127 end = s.index(last, start)
128 return s[start:end]
129 except ValueError:
130 return ""
131
132 def safeFind(self, str, value):
133 try:
134 jsonObj = json.loads(str)
135 return jsonObj[value]
136 except ValueError, e:
137 return False
138 return False
139
140 def genRandomString(self, length=8):
141 return join((choice("qwertyuiopasdfghjklzxcvbnm") for _ in range(length)), "")