Compare commits
No commits in common. "7f601e84a73e18406e5ea2c7443baa628a8741d9" and "386c5442948f2e1ebef171be9eff3815da9c7f90" have entirely different histories.
7f601e84a7
...
386c544294
@ -1,39 +0,0 @@
|
|||||||
#!/usr/bin/env/ python3
|
|
||||||
"""
|
|
||||||
Escaner de puertos
|
|
||||||
"""
|
|
||||||
|
|
||||||
import socket as s
|
|
||||||
import os
|
|
||||||
|
|
||||||
|
|
||||||
os.system("clear")
|
|
||||||
print("""
|
|
||||||
##################
|
|
||||||
Escaner de puertos
|
|
||||||
##################
|
|
||||||
""")
|
|
||||||
os.system("sleep 0.6")
|
|
||||||
|
|
||||||
host = input("\n[+] Introduce la IP a escanear: ")
|
|
||||||
port = int(input("[+] Introduce el puerto a escanear: "))
|
|
||||||
|
|
||||||
def port_scanner():
|
|
||||||
|
|
||||||
sock = s.socket(s.AF_INET, s.SOCK_STREAM)
|
|
||||||
sock.settimeout(0.9)
|
|
||||||
|
|
||||||
if not sock.connect_ex((host, port)):
|
|
||||||
print(f"[+] El puerto {port} está abierto")
|
|
||||||
else:
|
|
||||||
print(f"[!] El puerto {port} está cerrado")
|
|
||||||
|
|
||||||
sock.close()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
port_scanner()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,145 +0,0 @@
|
|||||||
#!/usr/bin/env/ python3
|
|
||||||
"""
|
|
||||||
Escaner de puertos
|
|
||||||
"""
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import socket as s
|
|
||||||
import signal
|
|
||||||
import sys
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
|
||||||
from termcolor import colored
|
|
||||||
|
|
||||||
open_sockets = []
|
|
||||||
|
|
||||||
|
|
||||||
def def_handler(sig, frame):
|
|
||||||
"""
|
|
||||||
Función para manejar la señal SIGINT (Ctrl + C).
|
|
||||||
"""
|
|
||||||
|
|
||||||
print(colored("\n[!] Saliendo...", "blue"))
|
|
||||||
|
|
||||||
for sock in open_sockets:
|
|
||||||
|
|
||||||
sock.close()
|
|
||||||
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, def_handler) # CTRL + C
|
|
||||||
|
|
||||||
|
|
||||||
def get_arguments():
|
|
||||||
"""
|
|
||||||
Función para obtener los argumentos de la línea de comandos.
|
|
||||||
"""
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description="Escaner de puertos TCP")
|
|
||||||
parser.add_argument(
|
|
||||||
"-t", "--target", dest="target", required=True,
|
|
||||||
help="IP objetivo a escanear (Ej: -t 192.168.1.1)"
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
"-p", "--port", dest="port", required=True,
|
|
||||||
help="""Rango de puertos a escanear
|
|
||||||
(Ej: -p 80 or -p 50-100 or -p 80,443,8080)"""
|
|
||||||
)
|
|
||||||
options = parser.parse_args()
|
|
||||||
|
|
||||||
return options.target, options.port
|
|
||||||
|
|
||||||
|
|
||||||
def port_scanner(port, host):
|
|
||||||
"""
|
|
||||||
Función para escanear un puerto en un host dado.
|
|
||||||
"""
|
|
||||||
|
|
||||||
with s.socket(s.AF_INET, s.SOCK_STREAM) as sock:
|
|
||||||
|
|
||||||
try:
|
|
||||||
|
|
||||||
sock.settimeout(2)
|
|
||||||
|
|
||||||
open_sockets.append(sock)
|
|
||||||
|
|
||||||
sock.connect((host, port))
|
|
||||||
|
|
||||||
sock.sendall(b"HEAD / HTTP/1.0\r\n\r\n")
|
|
||||||
response = sock.recv(1024)
|
|
||||||
response = response.decode(errors="ignore").split("\n")
|
|
||||||
|
|
||||||
if response:
|
|
||||||
print(
|
|
||||||
colored(
|
|
||||||
f"\n[+] El puerto {port} está abierto", "green"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
# print(
|
|
||||||
# colored(
|
|
||||||
# f"\t[+] Respuesta del puerto {port}: {response}",
|
|
||||||
# "blue"
|
|
||||||
# )
|
|
||||||
# )
|
|
||||||
|
|
||||||
for line in response:
|
|
||||||
print(colored(line, "grey"))
|
|
||||||
|
|
||||||
else:
|
|
||||||
print(
|
|
||||||
colored(
|
|
||||||
f"\n[+] El puerto {port} está abierto",
|
|
||||||
"green"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
except (s.timeout, ConnectionRefusedError):
|
|
||||||
pass
|
|
||||||
|
|
||||||
finally:
|
|
||||||
sock.close()
|
|
||||||
|
|
||||||
|
|
||||||
def scan_ports(ports, target):
|
|
||||||
"""
|
|
||||||
Función para escanear una lista de puertos en un host dado.
|
|
||||||
"""
|
|
||||||
|
|
||||||
with ThreadPoolExecutor(max_workers=100) as executor:
|
|
||||||
|
|
||||||
executor.map(lambda port: port_scanner(port, target), ports)
|
|
||||||
|
|
||||||
|
|
||||||
def parse_ports(ports_str):
|
|
||||||
"""
|
|
||||||
Función para analizar la cadena de puertos y devolver una secuencia de puertos.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if "-" in ports_str:
|
|
||||||
|
|
||||||
start_port, end_port = map(int, ports_str.split("-"))
|
|
||||||
|
|
||||||
return range(start_port - 1, end_port + 1)
|
|
||||||
|
|
||||||
elif "," in ports_str:
|
|
||||||
|
|
||||||
return map(int, ports_str.split(","))
|
|
||||||
|
|
||||||
else:
|
|
||||||
|
|
||||||
return int(ports_str),
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
"""
|
|
||||||
Función principal del programa.
|
|
||||||
"""
|
|
||||||
|
|
||||||
target, ports_str = get_arguments()
|
|
||||||
ports = parse_ports(ports_str)
|
|
||||||
|
|
||||||
scan_ports(ports, target)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
@ -1,100 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
"""
|
|
||||||
Cambiar la dirección mac
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
import argparse
|
|
||||||
import re
|
|
||||||
import signal
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
from termcolor import colored
|
|
||||||
|
|
||||||
|
|
||||||
def def_handler(sig, frame):
|
|
||||||
|
|
||||||
print(colored(
|
|
||||||
f'\n[!] Saliendo del programa...', 'red'
|
|
||||||
))
|
|
||||||
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
signal.signal(signal.SIGINT, def_handler)
|
|
||||||
|
|
||||||
def get_arguments():
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description='Herramienta para cambiar la dirección mac'
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
'-i', '--interface',
|
|
||||||
dest='interface',
|
|
||||||
help='Nombre de la interfaz de red',
|
|
||||||
required=True
|
|
||||||
)
|
|
||||||
parser.add_argument(
|
|
||||||
'-m', '--mac',
|
|
||||||
dest='new_mac',
|
|
||||||
help='Nueva dirección mac',
|
|
||||||
required=True
|
|
||||||
)
|
|
||||||
|
|
||||||
return parser.parse_args()
|
|
||||||
|
|
||||||
|
|
||||||
def is_valid_input(interface, new_mac):
|
|
||||||
|
|
||||||
is_valid_interface = re.match(
|
|
||||||
r'^[w|e][n|l][o]\d{1,2}$', interface
|
|
||||||
)
|
|
||||||
|
|
||||||
is_valid_mac = re.match(
|
|
||||||
r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$', new_mac
|
|
||||||
)
|
|
||||||
|
|
||||||
if not is_valid_interface:
|
|
||||||
|
|
||||||
print(colored(
|
|
||||||
f'\n[!] El nombre de la interfaz de red no es válida', 'red'
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
if not is_valid_mac:
|
|
||||||
|
|
||||||
print(colored(
|
|
||||||
f'\n[!] La dirección mac no es válida', 'red'
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
return is_valid_interface and is_valid_mac
|
|
||||||
|
|
||||||
|
|
||||||
def change_mac_address(interface, new_mac):
|
|
||||||
|
|
||||||
if is_valid_input(interface, new_mac):
|
|
||||||
|
|
||||||
print(colored(
|
|
||||||
f'\n[+] Cambiando la dirección mac de {interface} a {new_mac}', 'blue'
|
|
||||||
))
|
|
||||||
|
|
||||||
subprocess.run(["sudo", "ifconfig", interface, "down"])
|
|
||||||
subprocess.run(["sudo", "ifconfig", interface, "hw", "ether", new_mac])
|
|
||||||
subprocess.run(["sudo", "ifconfig", interface, "up"])
|
|
||||||
|
|
||||||
print(colored(
|
|
||||||
f'\n[+] Dirección mac cambiada correctamente', 'green'
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
|
|
||||||
args = get_arguments()
|
|
||||||
change_mac_address(args.interface, args.new_mac)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
|
||||||
main()
|
|
@ -25,4 +25,3 @@ Quizá encuentres aquí cosas que no están en el vídeo, o viceversa, son apunt
|
|||||||
| 9. [Bloc de notas](./09_bloc_notas/) |
|
| 9. [Bloc de notas](./09_bloc_notas/) |
|
||||||
| 10. [Calculadora](./10_calculadora/) |
|
| 10. [Calculadora](./10_calculadora/) |
|
||||||
| 11. [Chat cifrado con E2E](./11_chat_cifrado_E2E/) |
|
| 11. [Chat cifrado con E2E](./11_chat_cifrado_E2E/) |
|
||||||
| 12 [Escaner de puertos](./12_escaner_puertos/) |
|
|
||||||
|
Loading…
Reference in New Issue
Block a user