forked from sebastienvercammen/ptc-acc-gen
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix everything. Reverting to last good commit. fuck git.
- Loading branch information
1 parent
7c1db12
commit 93628de
Showing
16 changed files
with
796 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Auto detect text files and perform LF normalization | ||
* text=auto | ||
|
||
# Custom for Visual Studio | ||
*.cs diff=csharp | ||
|
||
# Standard to msysgit | ||
*.doc diff=astextplain | ||
*.DOC diff=astextplain | ||
*.docx diff=astextplain | ||
*.DOCX diff=astextplain | ||
*.dot diff=astextplain | ||
*.DOT diff=astextplain | ||
*.pdf diff=astextplain | ||
*.PDF diff=astextplain | ||
*.rtf diff=astextplain | ||
*.RTF diff=astextplain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
|
||
# Dependency directories | ||
node_modules | ||
jspm_packages | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
output/screenshots/*.png |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
[submodule "PogoPlayer"] | ||
path = PogoPlayer | ||
url = https://github.com/MRokas/PogoPlayer.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2016 Frost The Fox and Sébastien Vercammen | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
# Nintendo PTC Account Generator | ||
|
||
***Supported once again! Please use the [PokemonGo-Dev Discord](https://discord.gg/g6k7w83) for questions.*** | ||
|
||
**Please be sure to clone RECURSIVELY** | ||
example: git clone --recursive https://github.com/FrostTheFox/ptc-acc-gen.git | ||
|
||
An automation script based on Nightmare.js that can create any number of Nintendo Pokémon Trainer Club accounts with a single e-mail address. This only works because Nintendo doesn't check for "[email protected]" e-mail tricks, where the e-mail host completely ignores any part after (and including) the plus sign and sends it to "[email protected]". | ||
|
||
This project was started as a proof of concept: even multi-billion dollar companies that just released the single most popular mobile game (Pokémon Go) sometimes miss the details. | ||
|
||
More about plus signs in e-mail addresses [on StackExchange](http://security.stackexchange.com/questions/65244/what-are-the-security-reasons-for-disallowing-the-plus-sign-in-email-addresses). | ||
|
||
If you're using Gmail and want to automatically verify all accounts, use this gist: https://gist.github.com/sebastienvercammen/e7e0e9e57db246d7f941b789d8508186 | ||
or | ||
https://github.com/FrostTheFox/ptc-acc-gen/blob/master/gmailverify.js | ||
|
||
|
||
The new version on Nightmare.js now: | ||
|
||
* Checks for usernames/e-mails that are already taken | ||
* Can screenshot the result page | ||
* Handles server issues better | ||
* Doesn't require PhantomJS/CasperJS or fiddling with the PATH environment variable | ||
|
||
## Requirements | ||
### Prerequisites | ||
* [Node.js](https://nodejs.org/en/) | ||
|
||
## Usage | ||
Windows Instructions: | ||
|
||
New beta install script! try running "install.bat" (and tell pyr0ball if something doesn't work) | ||
- If using the install script, you can simply run makeaccounts.bat afterwards. | ||
|
||
|
||
1. Make sure you clone recursively (git clone --recursive [origin]) | ||
- if you download the zip, make sure you also download the submodule PogoPlayer | ||
- or do it the easy way with `git submodule init && git submodule update` | ||
- if you cloned non-recursively, run install.bat. | ||
2. Install requirements with `npm install` | ||
3. Edit config.js if not using the install.bat or config.py. | ||
4. Run using `makeaccounts.bat`. | ||
5. Wait for the generator to fill in the second page, then accept the captcha and hit submit. | ||
6. Repeat for all accounts | ||
7. Find the generated accounts in PogoPlayer/accounts.csv. | ||
|
||
Linux Instructions: | ||
***Headless systems will no longer be able to use the gen due to the captcha requirement.*** | ||
|
||
1. Run `install.sh` | ||
2. Run using `makeaccounts.sh`. | ||
3. Wait for the generator to fill in the second page, then accept the captcha and hit submit. | ||
4. Repeat for all accounts | ||
5. Find the generated accounts in PogoPlayer/accounts.csv. | ||
|
||
|
||
***Note: Messages about trainer name usually are not a problem and you generally shouldn't be concerned by them.*** | ||
|
||
|
||
## Configuration | ||
### 1. Generate 10 accounts in the format USERx, where x is 0 to 9. | ||
This example corresponds to the default settings. It will generate 10 accounts in the same format: user0, user1, ... | ||
|
||
In [config.js](config.js): | ||
|
||
// Starts gen from startNumber to endNumber, determining how many accounts are made | ||
startNum: 0, | ||
endNum: 10, | ||
|
||
// Creation Options | ||
nicknameFile: false, // Use nicknames file, or just append numbers to username? | ||
randomPassword: false, // If true generate a random password, If false set "password" field below | ||
screenshotResult: true, // Saves a screenshot per account creation when set to true | ||
screenshotOnFailure: true, // Saves a screenshot even if registration fails when set to true | ||
|
||
// Creation Requirements | ||
username: 'CHANGEME', // Keep the '', User- & display name. Make sure any "(username + number)@domain.com" is 100% unique, and is 6 characters minimum, but under 14 characters after the numbers are applied. | ||
password: 'CHANGEME', // If you set randomPassword to 'false' above change this to your chosen password (so you have same password for all accounts) | ||
emailUser: 'email', // Enter your email address name. If your address is [email protected] you'd enter 'email' | ||
emailDomain: 'domain.com', // Domain of email address. If your address is [email protected] you'd enter 'domain.com' | ||
latitude: 'LATITUDE', // Location Latitude for initial login | ||
longitude: 'LONGITUDE' // Location Longitude for initial login | ||
|
||
### 2. Generate random passwords per account. | ||
|
||
Set randomPassword: true, in [config.js](config.js). | ||
|
||
Password for accounts will be random, aftyer finished find usernames and passwords in /PogoPlayer/accounts.csv | ||
|
||
### 3. Save screenshots (Default directory is /output/screenshots) | ||
|
||
screenshotResult: true, // Saves a screenshot per account creation when set to true | ||
screenshotOnFailure: true, // Saves a screenshot even if registration fails when set to true | ||
|
||
### 4. Use a list of unique usernames instead of USERx combinations. | ||
|
||
To create a number of accounts with custom usernames instead of user + number combinations, change [index.js](index.js): | ||
|
||
Set nicknameFile: true, in [config.js](config.js). | ||
|
||
The list of unique usernames must be stored in [nicknames.json](nicknames.json). An example is available on the repo. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
var config = { | ||
// Starts gen from startNumber to endNumber, determining how many accounts are made | ||
startNum:0, | ||
endNum:10, | ||
|
||
// Creation Options | ||
// Use nicknames file, or just append numbers to username? | ||
nicknameFile:false, | ||
// If true generate a random password, If false set "password" field below | ||
randomPassword:true, | ||
// Saves a screenshot per account creation when set to true | ||
screenshotResult:true, | ||
// Saves a screenshot even if registration fails when set to true | ||
screenshotOnFailure:true, | ||
|
||
// Creation Requirements | ||
// Keep the '', User- & display name. Make sure any "(username + number)@domain.com" is 100% unique, and is 6 characters minimum, but under 14 characters after the numbers are applied. | ||
username:"CHANGEME", | ||
// If you set randomPassword to 'false' above change this to your chosen password (so you have same password for all accounts) | ||
password:"CHANGEME", | ||
// Enter your email address name. If your address is email@domain.com you'd enter 'email' | ||
emailUser:"email", | ||
// Domain of email address. If your address is email@domain.com you'd enter 'domain.com' | ||
emailDomain:"gmail.com", | ||
// Location Latitude for initial login | ||
latitude:"36.54596", | ||
// Location Longitude for initial login | ||
longitude:"-79.22247", | ||
// Country code (e.g. BE, FR, US, CA) | ||
country:"US" | ||
}; | ||
|
||
module.exports = config; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,188 @@ | ||
#!/usr/bin/python | ||
# Version 1 | ||
|
||
import os | ||
import sys | ||
import signal | ||
import re | ||
from os import fsync | ||
|
||
|
||
def signal_handler(signal, frame): | ||
print('You pressed Ctrl+C!') | ||
sys.exit(0) | ||
|
||
def printmenu(): | ||
os.system('cls' if os.name == 'nt' else 'clear') | ||
#os.system('cls') # for Windows | ||
#os.system('clear') | ||
|
||
print (30 * '-') | ||
print ("PTC-ACC-GEN Config Builder") | ||
print ("Lets set you up!") | ||
print (30 * '-') | ||
print ("1. Build Your Config") | ||
print ("0. Quit") | ||
print (30 * '-') | ||
choice = raw_input('Enter your choice [0-1] : ') | ||
try: | ||
choice = int(choice) | ||
except: | ||
printmenu() | ||
print (30 * '-') | ||
|
||
if choice == 1: | ||
configBuilder() | ||
elif choice == 0: | ||
cleanExit("bye") | ||
else: | ||
printmenu() | ||
|
||
|
||
def configBuilder(): | ||
|
||
"Calculates the number of accounts needed for a specific step value to achiece a specific scan time" | ||
startNum = raw_input("Number for Accounts to Start at (recommend 0): ") | ||
endNum = raw_input("Number for Accounts to End at (recommend 10): ") | ||
nicknameFile = raw_input("Use Nickname File? (recommend: false): ") | ||
randomPassword = raw_input("Use Random Password? (recommend: true): ") | ||
screenshotResult = raw_input("Save Screenshot of each Success? (recommend: true): ") | ||
screenshotOnFailure = raw_input("Save Screenshot of each Failure? (recommend: true): ") | ||
username = raw_input("Choose User/Display name, at least 6 chars and less than 15: ") | ||
if randomPassword.lower() in ("false"): | ||
password = raw_input("Choose Static Password for Accounts: ") | ||
else: | ||
password = "NOSTATIC" | ||
emailUser = raw_input("Email Address Name (whats before the @ in your email address? ex: yoloswag420): ") | ||
emailDomain = raw_input("Email Domain (whats after the @ in your email address? ex: gmail.com): ") | ||
latitude = raw_input("Latitude for Registration (example: 36.54596): ") | ||
longitude = raw_input("Longitude for Registration (example: -79.22247): ") | ||
country = raw_input("Country Code for Registration (example: US, BE, FR, CA): ") | ||
|
||
#Now lets check what people input vs what is valid | ||
flag = 1 | ||
while flag == 1: | ||
try: | ||
int(startNum) | ||
except ValueError: | ||
try: | ||
float(startNum) | ||
except ValueError: | ||
print (30 * '-') | ||
print "Your Number for Accounts to Start at is not a number" | ||
print "Your Current Start Number: %s" %(startNum) | ||
startNum = raw_input("Number for Accounts to Start at (recommend 0): ") | ||
flag = 1 | ||
try: | ||
int(endNum) | ||
except ValueError: | ||
try: | ||
float(endNum) | ||
except ValueError: | ||
print (30 * '-') | ||
print "Your Number for Accounts to End at is not a number" | ||
print "Your Current End Number: %s" %(endNum) | ||
startNum = raw_input("Number for Accounts to End at (recommend 10): ") | ||
flag = 1 | ||
try: | ||
int(latitude) | ||
except ValueError: | ||
try: | ||
float(latitude) | ||
except ValueError: | ||
print (30 * '-') | ||
print "Your Latitude is not a number" | ||
print "Your Current Latitude: %s" %(latitude) | ||
latitude = raw_input("Latitude for Registration (example: 36.54596): ") | ||
flag = 1 | ||
try: | ||
int(longitude) | ||
except ValueError: | ||
try: | ||
float(longitude) | ||
except ValueError: | ||
print (30 * '-') | ||
print "Your Longitude is not a number" | ||
print "Your Current Longitude: %s" %(longitude) | ||
startNum = raw_input("Longitude for Registration (example: -79.22247): ") | ||
flag = 1 | ||
|
||
if startNum > endNum: | ||
print (30 * '-') | ||
print "Your Number for Accounts to End at must be greater than Number for Accounts to Start at" | ||
print "Your Current End Number: %s Your Current Start Number: %s" %(startNum, endNum) | ||
startNum = raw_input("Number for Accounts to Start at (recommend 0): ") | ||
endNum = raw_input("Number for Accounts to End at (recommend 10): ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
if nicknameFile.lower() not in ("true", "false"): | ||
print (30 * '-') | ||
print "You didn't type 'true' or 'false' for Use Nickname File: %s" %(nicknameFile) | ||
nicknameFile = raw_input("Use Nickname File? (recommend: false): ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
if randomPassword.lower() not in ("true", "false"): | ||
print (30 * '-') | ||
print "You didn't type 'true' or 'false' for Use Random Password: %s" %(randomPassword) | ||
randomPassword = raw_input("Use Random Password? (recommend: false): ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
if screenshotResult.lower() not in ("true", "false"): | ||
print (30 * '-') | ||
print "You didn't type 'true' or 'false' for Save Screenshot of each Success: %s" %(screenshotResult) | ||
screenshotResult = raw_input("Save Screenshot of each Success? (recommend: true): ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
if screenshotOnFailure.lower() not in ("true", "false"): | ||
print (30 * '-') | ||
print "You didn't type 'true' or 'false' for Save Screenshot of each Failure: %s" %(screenshotOnFailure) | ||
screenshotOnFailure = raw_input("Save Screenshot of each Failure? (recommend: true): ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
if len(username) < 6: | ||
print (30 * '-') | ||
print "You chose a username that was less than 6 chars: %s" %(username) | ||
username = raw_input("Choose User/Display name, at least 6 chars and less than 15: ") | ||
flag = 1 | ||
elif len(username) > 15: | ||
print (30 * '-') | ||
print "You chose a username that was more than 15 chars: %s" %(username) | ||
username = raw_input("Choose User/Display name, at least 6 chars and less than 15: ") | ||
flag = 1 | ||
else: | ||
flag = 0 | ||
|
||
vars = ['startNum', 'endNum','nicknameFile','randomPassword','screenshotResult','screenshotOnFailure','username','password','emailUser','emailDomain','latitude','longitude','country'] | ||
new_values = [startNum + ',',endNum + ',',nicknameFile + ',',randomPassword + ',',screenshotResult + ',',screenshotOnFailure + ',','"' + username + '",','"' + password + '",','"' + emailUser + '",','"' + emailDomain + '",','"' + latitude + '",','"' + longitude + '",','"' + country + '"'] | ||
what_to_change = dict(zip(vars,new_values)) | ||
|
||
updating('config.js',what_to_change) | ||
|
||
raw_input("Config Built Successfully! Press Enter") | ||
printmenu() | ||
|
||
def updating(filename,dico): | ||
|
||
RE = '(('+'|'.join(dico.keys())+')\s*:)[^\r\n]*?(\r?\n|\r)' | ||
pat = re.compile(RE) | ||
|
||
def jojo(mat,dic = dico ): | ||
return dic[mat.group(2)].join(mat.group(1,3)) | ||
|
||
with open(filename,'rb') as f: | ||
content = f.read() | ||
|
||
with open(filename,'wb') as f: | ||
f.write(pat.sub(jojo,content)) | ||
|
||
def cleanExit(message): | ||
sys.exit(message) | ||
|
||
|
||
signal.signal(signal.SIGINT, signal_handler) | ||
printmenu() |
Oops, something went wrong.