Skip to content
This repository was archived by the owner on Mar 26, 2025. It is now read-only.
/ echodown Public archive
  • Sponsor
  • Notifications You must be signed in to change notification settings
  • Fork 15

Commit 5b36bcc

Browse files
authoredMar 25, 2024
Merge pull request #13 from hackinghacker1/main
Shows the location of the inputted IP
2 parents 8a35286 + b96583e commit 5b36bcc

File tree

3 files changed

+104
-79
lines changed

3 files changed

+104
-79
lines changed
 

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ To use Echo Down, you will need to install the following dependencies:
2323
- time
2424
- random
2525
- re
26+
- requests
2627

2728
You can install all of these dependencies using pip:
2829
```bash

‎echodown.py

+101-78
Original file line numberDiff line numberDiff line change
@@ -13,107 +13,130 @@
1313
import random
1414
import time
1515
import re
16+
import requests
1617
from termcolor import colored
1718
from halo import Halo
18-
from termcolor import colored
1919

20-
def start_attack(ip, protocol):
21-
print()
22-
print(colored("Target set to " + ip + " using " + protocol + ".", "magenta",))
23-
print(colored("Starting attack with 16 threads, use CTRL+C to stop at any time", "magenta",))
24-
print()
25-
while True:
26-
mbSec = round(random.uniform(10, 40), 1)
27-
hitRate = round(random.uniform(95, 100), 2)
28-
curThread = random.randint(1, 16)
29-
if random.randint(1, 1000) < 10:
30-
print(colored("Thread {}: Thread underpreforming or not responding, restarting...".format(curThread),"red",))
31-
print(colored("Thread {}: Thread successfully restarted. Attacking target...".format(curThread),"green",))
20+
def get_location(ip):
21+
response = requests.get(f"https://ipinfo.io/{ip}/json")
22+
if response.status_code == 200:
23+
data = response.json()
24+
city = data.get('city')
25+
country = data.get('country')
26+
region = data.get('region')
27+
timezone = data.get('timezone')
28+
return city, country, region, timezone
29+
else:
30+
print("Failed to fetch location data.")
31+
return None, None, None, None
32+
33+
def start_attack(ip, protocol, city, country, region, timezone):
34+
if city:
35+
print(colored(f"IP: {ip}", "magenta"))
36+
print(colored(f"Location: {city}", "magenta"))
37+
print(colored(f"Region: {region}", "magenta"))
38+
print(colored(f"Country: {country}", "magenta"))
39+
print(colored(f"Timezone: {timezone}", "magenta"))
40+
print()
41+
print(colored("Target set to " + ip + " using " + protocol + ".", "magenta",))
42+
print(colored("Starting attack with 16 threads, use CTRL+C to stop at any time", "magenta",))
43+
print()
44+
while True:
45+
mbSec = round(random.uniform(10, 40), 1)
46+
hitRate = round(random.uniform(95, 100), 2)
47+
curThread = random.randint(1, 16)
48+
if random.randint(1, 1000) < 10:
49+
print(colored("Thread {}: Thread underperforming or not responding, restarting...".format(curThread),"red",))
50+
print(colored("Thread {}: Thread successfully restarted. Attacking target...".format(curThread),"green",))
51+
else:
52+
print(colored("Thread {}: {}MB sent in the last second to target with a {}% Hitrate on requests.".format(curThread, mbSec, hitRate),"green",))
53+
time.sleep(0.1)
3254
else:
33-
print(colored("Thread {}: {}MB sent in the last second to target with a {}% Hitrate on requests.".format(curThread, mbSec, hitRate),"green",))
34-
time.sleep(0.1)
55+
print("Failed to fetch location data. Unable to proceed with the attack.")
3556

3657
def main():
37-
print()
38-
print(colored("Starting Echo Down!", "red"))
39-
print(colored("I am sure you are using this for legal purposes - Echo", "red"))
40-
print()
58+
print()
59+
print(colored("Starting Echo Down!", "red"))
60+
print(colored("I am sure you are using this for legal purposes - Echo", "red"))
61+
print()
4162

42-
with Halo(text=colored("Updating", "yellow"), spinner="dots") as h1:
43-
time.sleep(0.5)
44-
h1.succeed(colored(" Up to date", "green"))
63+
with Halo(text=colored("Updating", "yellow"), spinner="dots") as h1:
64+
time.sleep(0.5)
65+
h1.succeed(colored(" Up to date", "green"))
4566

46-
with Halo(text=colored("Starting Proxy", "yellow"), spinner="dots") as h7:
47-
time.sleep(0.5)
48-
h7.succeed(colored(" Proxy online", "green"))
67+
with Halo(text=colored("Starting Proxy", "yellow"), spinner="dots") as h7:
68+
time.sleep(0.5)
69+
h7.succeed(colored(" Proxy online", "green"))
4970

50-
with Halo(text=colored("Starting!", "yellow"), spinner="dots") as h10:
51-
time.sleep(0.5)
52-
h10.succeed(colored(" Start", "green"))
71+
with Halo(text=colored("Starting!", "yellow"), spinner="dots") as h10:
72+
time.sleep(0.5)
73+
h10.succeed(colored(" Start", "green"))
5374

54-
print(colored('''
55-
56-
███████╗░█████╗░██╗░░██╗░█████╗░  ██████╗░░█████╗░░██╗░░░░░░░██╗███╗░░██╗
57-
██╔════╝██╔══██╗██║░░██║██╔══██╗  ██╔══██╗██╔══██╗░██║░░██╗░░██║████╗░██║
58-
█████╗░░██║░░╚═╝███████║██║░░██║  ██║░░██║██║░░██║░╚██╗████╗██╔╝██╔██╗██║
59-
██╔══╝░░██║░░██╗██╔══██║██║░░██║  ██║░░██║██║░░██║░░████╔═████║░██║╚████║
60-
███████╗╚█████╔╝██║░░██║╚█████╔╝  ██████╔╝╚█████╔╝░░╚██╔╝░╚██╔╝░██║░╚███║
61-
╚══════╝░╚════╝░╚═╝░░╚═╝░╚════╝░  ╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝░░╚══╝
75+
print(colored('''
76+
77+
███████╗░█████╗░██╗░░██╗░█████╗░  ██████╗░░█████╗░░██╗░░░░░░░██╗███╗░░██╗
78+
██╔════╝██╔══██╗██║░░██║██╔══██╗  ██╔══██╗██╔══██╗░██║░░██╗░░██║████╗░██║
79+
█████╗░░██║░░╚═╝███████║██║░░██║  ██║░░██║██║░░██║░╚██╗████╗██╔╝██╔██╗██║
80+
██╔══╝░░██║░░██╗██╔══██║██║░░██║  ██║░░██║██║░░██║░░████╔═████║░██║╚████║
81+
███████╗╚█████╔╝██║░░██║╚█████╔╝  ██████╔╝╚█████╔╝░░╚██╔╝░╚██╔╝░██║░╚███║
82+
╚══════╝░╚════╝░╚═╝░░╚═╝░╚════╝░  ╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝░░╚══╝
6283
6384
''', 'red'))
64-
print(colored(" The most powerful DDoS tool out there","red",attrs=["bold"],))
65-
print()
66-
menu_selections = [
67-
'Start',
68-
'Credits',
69-
'Exit'
70-
]
71-
print('Pick an option...')
72-
for i, option in enumerate(menu_selections, start=1):
73-
print(f'{i}. {option}')
74-
menu_selection = input('> ')
75-
if menu_selection == '1':
76-
menu_selection = 'Start'
77-
elif menu_selection == '2':
78-
menu_selection = 'Credits'
79-
elif menu_selection == '3':
80-
menu_selection = 'Exit'
81-
else:
82-
print(colored("Error: Unknown response at python userInput, promise rejected", "red"))
83-
exit("userInput void")
84-
85-
match menu_selection:
86-
case 'Start':
87-
print("Enter IP address:")
88-
ip = input(colored("> ", "yellow"))
89-
if not re.match(r"^(\d{1,3}\.){3}\d{1,3}$", ip):
90-
print(colored("Error: Invalid IP address format at python userInput, promise rejected", "red"))
85+
print(colored(" The most powerful DDoS tool out there","red",attrs=["bold"],))
86+
print()
87+
menu_selections = [
88+
'Start',
89+
'Credits',
90+
'Exit'
91+
]
92+
print('Pick an option...')
93+
for i, option in enumerate(menu_selections, start=1):
94+
print(f'{i}. {option}')
95+
menu_selection = input('> ')
96+
if menu_selection == '1':
97+
menu_selection = 'Start'
98+
elif menu_selection == '2':
99+
menu_selection = 'Credits'
100+
elif menu_selection == '3':
101+
menu_selection = 'Exit'
102+
else:
103+
print(colored("Error: Unknown response at python userInput, promise rejected", "red"))
91104
exit("userInput void")
92105

93-
print("Select a protocol (TCP, UDP, or HTTP):")
94-
protocol = input(colored("> ", "yellow"))
95-
if protocol not in ['TCP', 'UDP','HTTP']:
96-
print(colored("Error: Invalid protocol at python userInput, promise rejected", "red"))
97-
exit("userInput void")
106+
match menu_selection:
107+
case 'Start':
108+
print("Enter IP address:")
109+
ip = input(colored("> ", "yellow"))
110+
if not re.match(r"^(\d{1,3}\.){3}\d{1,3}$", ip):
111+
print(colored("Error: Invalid IP address format at python userInput, promise rejected", "red"))
112+
exit("userInput void")
113+
114+
print("Select a protocol (TCP, UDP, or HTTP):")
115+
protocol = input(colored("> ", "yellow"))
116+
if protocol not in ['TCP', 'UDP','HTTP']:
117+
print(colored("Error: Invalid protocol at python userInput, promise rejected", "red"))
118+
exit("userInput void")
98119

99-
print(colored("Launching with 16 threads.", "cyan"))
100-
print()
101-
start_attack(ip, protocol)
102-
case 'Credits':
103-
print(colored(' ECHODOWN', 'red', attrs=['bold']))
104-
print(colored('''
120+
city, country, region, timezone = get_location(ip)
121+
print(colored("Launching with 16 threads.", "cyan"))
122+
print()
123+
start_attack(ip, protocol, city, country, region, timezone)
124+
case 'Credits':
125+
print(colored(' ECHODOWN', 'red', attrs=['bold']))
126+
print(colored('''
105127
Star us on github!
106128
https://github.com/3kh0/echodown
107129
108130
Developers
109131
@3kh0
110132
@aeiea
111133
@RuralAnemone
134+
@hackinghacker1
112135
''', 'green'))
113-
exit(0)
114-
case 'Exit':
115-
exit(0)
136+
exit(0)
137+
case 'Exit':
138+
exit(0)
116139

117140

118141
if __name__ == "__main__":
119-
main()
142+
main()

‎src/requirements.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
termcolor
2-
halo
2+
halo
3+
requests

0 commit comments

Comments
 (0)
This repository has been archived.