mirror of
https://github.com/arnaucube/botnetCrafter.git
synced 2026-02-28 12:46:41 +01:00
gets email, make signup in twitter, generates twitter API tokens and saves to file
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.log
|
||||
botnetConfig.json
|
||||
31
README.md
Normal file
31
README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Botnet Crafter
|
||||
|
||||
|
||||
|
||||

|
||||
(image from https://mirella-gabriele.deviantart.com )
|
||||
|
||||
## Instructions
|
||||
|
||||
- First, get geckhodriver:
|
||||
put geckodriver https://github.com/mozilla/geckodriver/releases
|
||||
|
||||
- Then export path (not really necessary if in the code puts the path):
|
||||
```
|
||||
export PATH=$PATH:/path/to/directory/of/executable/downloaded
|
||||
```
|
||||
Or put the path in the code:
|
||||
```
|
||||
driver = webdriver.Firefox(executable_path='/path/to/directory/of/executable/downloaded/in/previous/step')
|
||||
```
|
||||
|
||||
|
||||
- Install Python Selenium library:
|
||||
```
|
||||
pip install selenium
|
||||
```
|
||||
|
||||
- Use:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
7
botnetConfigEXAMPLE.json
Normal file
7
botnetConfigEXAMPLE.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"phone-number": "123456789",
|
||||
"bots": [{
|
||||
"full-name": "bot1accountname",
|
||||
"password": "awesome password here 000"
|
||||
}]
|
||||
}
|
||||
106
main.py
Normal file
106
main.py
Normal file
@@ -0,0 +1,106 @@
|
||||
from selenium import webdriver
|
||||
from selenium.common.exceptions import TimeoutException
|
||||
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
|
||||
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
import json
|
||||
import time
|
||||
|
||||
|
||||
# read botnetConfig.json data
|
||||
with open('botnetConfig.json') as data_file:
|
||||
botnet = json.load(data_file)
|
||||
print(botnet)
|
||||
bots = botnet["bots"]
|
||||
|
||||
for bot in bots:
|
||||
# Create a new instance of the Firefox driver
|
||||
driver = webdriver.Firefox(executable_path='/home/nau/sourceProgramsToInstall/geckodriver')
|
||||
|
||||
|
||||
# TEMP MAIL GENERATE
|
||||
print "Opening temp-mail.org to create an email account"
|
||||
driver.get("https://temp-mail.org/en/")
|
||||
email = driver.find_element_by_id("mail").get_attribute("value")
|
||||
print email
|
||||
|
||||
# Save the window opener (current window, do not mistaken with tab... not the same)
|
||||
window_email = driver.window_handles[0]
|
||||
# open new tab
|
||||
#driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + "t")
|
||||
|
||||
#
|
||||
# TWITTER SIGNUP
|
||||
#
|
||||
print "Opening twitter.com/signup to create a twitter account"
|
||||
driver.execute_script('''window.open("http://www.twitter.com/signup","_blank");''')
|
||||
|
||||
# Save the window opener (current window, do not mistaken with tab... not the same)
|
||||
window_twitter = driver.window_handles[1]
|
||||
# Put focus on current window which will, in fact, put focus on the current visible tab
|
||||
driver.switch_to_window(window_twitter)
|
||||
|
||||
delay = 10 # seconds
|
||||
# wait until the page is loaded, in this case, wait unitl the element with id='full-name' is loaded
|
||||
myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'full-name')))
|
||||
|
||||
print driver.title
|
||||
|
||||
driver.find_element_by_id("full-name").send_keys(bot["full-name"])
|
||||
driver.find_element_by_id("email").send_keys(email)
|
||||
driver.find_element_by_id("password").send_keys(bot["password"])
|
||||
driver.find_element_by_id("submit_button").submit()
|
||||
|
||||
|
||||
# PHONE Verification
|
||||
myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'phone_number')))
|
||||
driver.find_element_by_id("phone_number").send_keys(botnet["phone-number"])
|
||||
driver.find_element_by_name("discoverable_by_mobile_phone").click()#checkbox click
|
||||
driver.find_element_by_name("call_me").submit()
|
||||
|
||||
|
||||
code = raw_input('input something!: ')
|
||||
driver.find_element_by_id("code").send_keys(code)
|
||||
driver.find_element_by_id("code").submit()
|
||||
|
||||
|
||||
#
|
||||
# TWITTER APPS TOKEN GENERATION
|
||||
#
|
||||
print "Opening https://apps.twitter.com/ to generate a twitter API tokens"
|
||||
driver.execute_script('''window.open("https://apps.twitter.com/","_blank");''')
|
||||
# Save the window opener (current window, do not mistaken with tab... not the same)
|
||||
window_twitterApps = driver.window_handles[2]
|
||||
# Put focus on current window which will, in fact, put focus on the current visible tab
|
||||
driver.switch_to_window(window_twitterApps)
|
||||
driver.find_elements_by_xpath("//*[contains(text(), 'Create New App')]")[0].click()
|
||||
|
||||
driver.find_element_by_id("edit-name").send_keys(bot["full-name"] + "App")
|
||||
driver.find_element_by_id("edit-description").send_keys(bot["full-name"] + " is a good app")
|
||||
driver.find_element_by_id("edit-url").send_keys("http://twitter.com")
|
||||
driver.find_element_by_name("edit-tos-agreement").click()#checkbox click
|
||||
|
||||
driver.find_element_by_id("edit-submit").submit()
|
||||
|
||||
#generate tokens
|
||||
driver.find_elements_by_xpath("//*[contains(text(), 'Keys and Access Tokens')]")[0].click()
|
||||
myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'edit-submit-owner-token')))
|
||||
driver.find_element_by_id("edit-submit-owner-token").submit()
|
||||
|
||||
# get the tokens
|
||||
myElem = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, 'edit-token-actions')))
|
||||
|
||||
consumerKey = driver.find_elements_by_xpath("//*[contains(text(), 'Consumer Key (API Key)')]/following-sibling::span")[0].text
|
||||
consumerSecret = driver.find_elements_by_xpath("//*[contains(text(), 'Consumer Secret (API Secret)')]/following-sibling::span")[0].text
|
||||
accessToken = driver.find_elements_by_xpath("//*[contains(text(), 'Access Token')]/following-sibling::span")[0].text
|
||||
accessTokenSecret = driver.find_elements_by_xpath("//*[contains(text(), 'Access Token Secret')]/following-sibling::span")[0].text
|
||||
|
||||
botnetConfig["consumerKey"] = consumerKey
|
||||
botnetConfig["consumerSecret"] = consumerSecret
|
||||
botnetConfig["accessToken"] = accessToken
|
||||
botnetConfig["accessTokenSecret"] = accessTokenSecret
|
||||
|
||||
with open('results.txt', 'w') as outfile:
|
||||
json.dump(botnetConfig, outfile)
|
||||
Reference in New Issue
Block a user