Discussion about new cheats, glitches and secrets go here.
User avatar
By Karth123
#744 I decided to release my working multithreaded account generator. It registers and activates penguins and stores the usernames and passwords in a text document. Here are some of it's key features:

    -Registers penguins
    -Activates penguins
    -Resends activation email if not received in 'x'*Still haven't found the perfect value for this, currently it's at 20. amount of attempts.
    -Multithreaded (previous one registered and activated penguins one by one, this one will register and activate penguins simultaneously)
    -Improved code (previous one was messy and code was not stable and often crashed)
I've recorded the rate of generation and it (with my crap internet and 2012 iMac) registered and activated 50 penguins in around 1 minute and 20 seconds.

Dependencies required:
    -requests
    -BeautifulSoup

Code: Select All Codefrom string import join
from random import choice, randrange
from threading import Thread
from hashlib import md5
from time import sleep

import requests
from bs4 import BeautifulSoup

class AccountGenerator():
    header = {
        "User-Agent": "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"
    }

    def __init__(self):
        self.email = "random"
        self.name = "random"
        self.pw = "RandomPass45"
        self.color = randrange(1, 12)

        self.captchas = {
            "watermelon":"ARRB8J8KQ9t7AAAAAElFTkSuQmCC",
            "balloon": "wuWB85cW2c5NQAAAABJRU5ErkJggg==",
            "pizza": "XMAAAAASUVORK5CYII=",
            "popcorn": "yat7sdCF61QAAAABJRU5ErkJggg==",
            "igloo": "b+T94dZQb+IAAAAASUVORK5CYII=",
            "cheese": "B0eBprJbn4wXAAAAAElFTkSuQmCC",
        }

    def getRegisterData(self):
        response = requests.get("https://secured.clubpenguin.com/penguin/create", headers=self.header)

        cookie = response.headers["Set-Cookie"]
        htmlData = response.text

        soup = BeautifulSoup(htmlData, "html.parser")

        itemName = self.findBetween(htmlData, "item_name\":\"", "\",");
        image1 = self.findBetween(htmlData, "\"images\":{\"1\":\"", "\",");
        image1 = image1.rsplit('/',1)[-1]

        image2 = self.findBetween(htmlData, image1 + "\",\"2\":\"", "\",");
        image2 = image2.rsplit('/',1)[-1]

        image3 = self.findBetween(htmlData, image2 + "\",\"3\":\"", "\"");
        image3 = image3.rsplit('/',1)[-1]

        itemImage = self.captchas[itemName]
        if(image1 == itemImage):
            self.captchaN = 0
        elif(image2 == itemImage):
            self.captchaN = 1
        elif(image3 == itemImage):
            self.captchaN = 2

        self.anonToken = soup.find("input", {"name": "anon_token"})["value"]
        self.formBuildId = soup.find("input", {"name": "form_build_id"})["value"]

        randomString = self.generateRandomString()

        self.header["Cookie"] = "{0} playspanTRANSID=karth-{1}; cpBROWSERID=solero-{1};".format(cookie, randomString)
        self.header["Origin"] = "https://secured.clubpenguin.com"
        self.header["Referer"] = "https://secured.clubpenguin.com/penguin/create"


    def registerPenguin(self):
        self.getRegisterData()

        if self.name == "random":
            self.name = self.generateRandomString()

        if self.email == "random":
            self.email = self.generateRandomString() + "@extremail.ru"

        print "[{0}] Registering...  with {1}".format(self.name, self.email)
        data = {
            "anon_token": self.anonToken,
            "color": str(self.color),
            "name": self.name,
            "pass": self.pw,
            "pass_show": "1",
            "email": self.email,
            "terms": "1",
            "captcha": str(self.captchaN),
            "op":"Create Your Penguin",
            "form_build_id": self.formBuildId,
            "form_id": "penguin_create_form"
        }


        finalResponse = requests.post("https://secured.clubpenguin.com/penguin/create", data=data, headers=self.header)

        if "Activation Email Sent" in finalResponse.text:
            print "[{0}] Registration successful".format(self.name)
            self.activatePenguin()
        else:
            print "[{0}] Failed registering... trying again".format(self.name)
            self.registerPenguin()

    def activatePenguin(self):
        print "[{0}] Activating...".format(self.name)
        attempts = 0
        htmlData = requests.get("http://api.temp-mail.ru/request/mail/id/" + md5(self.email).hexdigest() + "/format/php").text
        while "Activate Penguin*" not in htmlData:
            attempts+=1
            sleep(1)
            htmlData = requests.get("http://api.temp-mail.ru/request/mail/id/" + md5(self.email).hexdigest() + "/format/php").text
            if attempts > 20:
                self.resendActivationEmail()
                attempts = 0
        soup = BeautifulSoup(htmlData, "html.parser")
        for link in soup.find_all('a'):
            if link.text == "Activate Penguin*":
                self.activationLink = link['href']
                break
        htmlData = requests.get(self.activationLink, headers=self.header).text
        soup = BeautifulSoup(htmlData, "html.parser")
        formBuildId = soup.find("input", {"name": "form_build_id"})["value"]
        activateData = {
            "chat_mode" : "standard",
            "opt_in_cp" : "0",
            "opt_in_disney" : "0",
            "terms" : "1",
            "privacy" : "1",
            "op" : "Activate!",
            "form_build_id" : formBuildId,
            "form_id" : "penguin_activate"

        }
        response = requests.post(self.activationLink, data=activateData, headers=self.header)
        if response.url != self.activationLink:
            print "[{0}] Activation successful".format(self.name)
            with open("accounts.txt", "a") as file:
                file.write("{0}:{1}\n".format(self.name, self.pw))

        else:
            print "[{0}] Activation failed".format(self.name)

    def resendActivationEmail(self):
        print "[{0}] Resending activation email...".format(self.name)
        headers = {
            "User-Agent": "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11",
            "Referer": "https://secured.clubpenguin.com/penguin/lost-code",
            "Origin": "https://secured.clubpenguin.com"
        }
        response = requests.get("https://secured.clubpenguin.com/penguin/lost-code", headers=headers)

        soup = BeautifulSoup(response.text, "html.parser")

        form_build_id = soup.find("input", {"name":"form_build_id"})["value"]

        data = {
            "name": self.name,
            "email": self.email,
            "form_build_id": form_build_id,
            "form_id":"penguin_lost_code_form"
        }

        requests.post("https://secured.clubpenguin.com/system/ajax", headers=headers, data=data)

    def findBetween(self, s, first, last):
        try:
            start = s.index(first) + len(first)
            end = s.index(last, start)
            return s[start:end]
        except ValueError:
            return ""

    def generateRandomString(self, length=8):
        return join((choice("qwertyuiopasdfghjklzxcvbnm") for _ in range(length)), "")


amt = input("Enter the amount of penguins you wish to generate: ")

for i in range(int(amt)):
    account_generator = AccountGenerator()
    thread = Thread(target=account_generator.registerPenguin)
    thread.start()

To activate the penguins, the script uses TempMail's temporary email API. They provide around 3 domains at a time, but they regularly remove and add new ones, so you just need to change it, by changing this line:
Code: Select All Codeself.email = self.generateRandomString() + "@[EMAIL DOMAIN HERE]"


You can find a list of domains which TempMail provide here. CP also block email domains which provide temporary mail services, so if you keep on getting 'Failed registering... trying again', just try registering a penguin manually using the email domain and if its blocked (you should see something like this) find a working domain and change it on the script. If CP have blocked all of TempMail's domains, just wait patiently until TempMail provide new domains. I don't know the limit, but CP sometimes times you out after a certain number of registers (per IP), so that could be another cause of the 'Failed registering... trying again', to make sure you could try creating a penguin manually. Other than that, I don't think there should be any other problems

Have fun!
User avatar
By Trippy
#757
Code: Select All CodeEnter the amount of penguins you wish to generate: 1
>>>
Warning (from warnings module):
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 318
    SNIMissingWarning
SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning.

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 122
    InsecurePlatformWarning
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
[itkhzyep] Registering...  with xmzfvnzr@extremail.ru

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 122
    InsecurePlatformWarning
InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
[itkhzyep] Registration successful
[itkhzyep] Activating...

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\bs4\builder\_htmlparser.py", line 167
    "Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help."))
RuntimeWarning: Python's built-in HTMLParser cannot parse the given document. This is not a bug in Beautiful Soup. The best solution is to install an external parser (lxml or html5lib), and use Beautiful Soup with that parser. See http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser for help.
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 530, in __bootstrap_inner
    self.run()
  File "C:\Python27\lib\threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "C:\Users\Vincent\Desktop\Club-Penguin-Follow-Bot-master\AccountGenerator.py", line 95, in registerPenguin
    self.activatePenguin()
  File "C:\Users\Vincent\Desktop\Club-Penguin-Follow-Bot-master\AccountGenerator.py", line 111, in activatePenguin
    soup = BeautifulSoup(htmlData, "html.parser")
  File "C:\Python27\lib\site-packages\bs4\__init__.py", line 215, in __init__
    self._feed()
  File "C:\Python27\lib\site-packages\bs4\__init__.py", line 239, in _feed
    self.builder.feed(self.markup)
  File "C:\Python27\lib\site-packages\bs4\builder\_htmlparser.py", line 168, in feed
    raise e
HTMLParseError: malformed start tag, at line 12, column 61




This is what I get when I click run. Thank you for replying
User avatar
By StormCoder
#1119 Hello have they patched it? I keep getting "Failed registering... trying again", and when I print the response I get the register page with the error message "Unable to register at the moment", it still works from the register page though. Any workaround?
User avatar
By Karth123
#1120
StormCoder Wrote:Hello have they patched it? I keep getting "Failed registering... trying again", and when I print the response I get the register page with the error message "Unable to register at the moment", it still works from the register page though. Any workaround?


This script is patched.

However, I have fixed it but don't plan to publicly release it, if you are interested in it PM me.
User avatar
By MineC
#1422
Karth123 Wrote:
StormCoder Wrote:Hello have they patched it? I keep getting "Failed registering... trying again", and when I print the response I get the register page with the error message "Unable to register at the moment", it still works from the register page though. Any workaround?


This script is patched.

However, I have fixed it but don't plan to publicly release it, if you are interested in it PM me.


Do you still have a working one?