Add exercise 7 by script-hacking course
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
56e63522ac
commit
bae9018e6f
@ -28,16 +28,16 @@ Ten en cuenta que este ejercicio es solo una simulación y no debe utilizarse pa
|
|||||||
|
|
||||||
## Ejercicios propuestos por copilot
|
## Ejercicios propuestos por copilot
|
||||||
|
|
||||||
- **Ejercicio 1**: instalar la biblioteca de Python `python-nmap` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`
|
- **Ejercicio 1**: instalar la biblioteca de Python `python-nmap` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`.
|
||||||
- **Ejercicio 2**: instalar la biblioteca de Python `impacket` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`
|
- **Ejercicio 2**: instalar la biblioteca de Python `impacket` y realizar un escaneo de puertos a la dirección IP `192.168.1.1`.
|
||||||
- **Ejercicio 3**: instalar la biblioteca de Python `requests` y realizar una solicitud HTTP a la dirección URL `proof.local`
|
- **Ejercicio 3**: instalar la biblioteca de Python `requests` y realizar una solicitud HTTP a la dirección URL `proof.local`.
|
||||||
- **Ejercicio 4**: instalar la biblioteca de Python `twisted` y crear un servidor de chat que permita a los usuarios enviar mensajes a todos los demás usuarios conectados
|
- **Ejercicio 4**: instalar la biblioteca de Python `twisted` y crear un servidor de chat que permita a los usuarios enviar mensajes a todos los demás usuarios conectados.
|
||||||
- **Ejercicio 5**: instalar la biblioteca de Python `faker` y generar 10 nombres aleatorios
|
- **Ejercicio 5**: instalar la biblioteca de Python `faker` y generar 10 nombres aleatorios.
|
||||||
- **Ejercicio 6**: instalar la biblioteca de Python `scapy` y crear un paquete de red personalizado que contenga un mensaje de texto
|
- **Ejercicio 6**: instalar la biblioteca de Python `scapy` y crear un paquete de red personalizado que contenga un mensaje de texto.
|
||||||
- **Ejercicio 7**: instalar la biblioteca de Python `cryptography` y encriptar el mensaje ``
|
- **Ejercicio 7**: instalar la biblioteca de Python `cryptography` y encriptar un mensaje.
|
||||||
- **Ejercicio 8**: instalar la biblioteca de Python `pwntools` y crear un exploit que permita a un usuario ejecutar comandos en un servidor remoto
|
- **Ejercicio 8**: instalar la biblioteca de Python `pwntools` y crear un exploit que permita a un usuario ejecutar comandos en un servidor remoto.
|
||||||
- **Ejercicio 9**: instalar la biblioteca de Python `paramiko` y crear un cliente SSH que permita a un usuario ejecutar comandos en un servidor remoto
|
- **Ejercicio 9**: instalar la biblioteca de Python `paramiko` y crear un cliente SSH que permita a un usuario ejecutar comandos en un servidor remoto.
|
||||||
- **Ejercicio 10**: instalar la biblioteca de Python `pylibnet` y crear un paquete de red personalizado que contenga un mensaje de texto
|
- **Ejercicio 10**: instalar la biblioteca de Python `pylibnet` y crear un paquete de red personalizado que contenga un mensaje de texto.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -193,6 +193,11 @@ En este ejercicio, utilizamos la biblioteca scapy para crear un paquete de red p
|
|||||||
|
|
||||||
Finalmente, utilizamos la función send de scapy.all para enviar el paquete a la red.
|
Finalmente, utilizamos la función send de scapy.all para enviar el paquete a la red.
|
||||||
|
|
||||||
|
Antes de nada se debe instalar la dependencia:
|
||||||
|
```shell
|
||||||
|
pip install scapy
|
||||||
|
```
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from scapy.all import *
|
from scapy.all import *
|
||||||
|
|
||||||
@ -203,18 +208,36 @@ packet = IP(dst="192.168.1.1")/ICMP()/"Hola, este es un mensaje"
|
|||||||
send(packet)
|
send(packet)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Para mostrar los mensajes ICMP entrantes, puedes utilizar el comando tcpdump en la línea de comandos:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sudo tcpdump -X icmp
|
||||||
|
```
|
||||||
|
![](img/03.png)
|
||||||
|
|
||||||
#### Solución ejercicio 7:
|
#### Solución ejercicio 7:
|
||||||
|
|
||||||
En este ejercicio, utilizamos la biblioteca cryptography para encriptar un mensaje utilizando el algoritmo de cifrado Fernet. Generamos una clave de cifrado utilizando Fernet.generate_key(). Luego, creamos un objeto Fernet con la clave generada.
|
En este ejercicio, utilizamos la biblioteca cryptography para encriptar un mensaje utilizando el algoritmo de cifrado Fernet. Generamos una clave de cifrado utilizando Fernet.generate_key(). Luego, creamos un objeto Fernet con la clave generada.
|
||||||
|
|
||||||
Definimos un mensaje en la variable message y utilizamos el método encrypt del objeto Fernet para encriptar el mensaje. El mensaje encriptado se almacena en la variable encrypted_message. Finalmente, imprimimos el mensaje encriptado.
|
Definimos un mensaje en la variable message y utilizamos el método encrypt del objeto Fernet para encriptar el mensaje. El mensaje encriptado se almacena en la variable encrypted_message. Finalmente, imprimimos el mensaje encriptado.
|
||||||
|
|
||||||
|
Antes de nada se debe instalar la dependencia:
|
||||||
|
```shell
|
||||||
|
pip install cryptography
|
||||||
|
```
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from cryptography.fernet import Fernet
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
# Generar una clave de cifrado
|
# Generar una clave de cifrado
|
||||||
key = Fernet.generate_key()
|
key = Fernet.generate_key()
|
||||||
|
|
||||||
|
print(f"Clave de cifrado generada: {key}")
|
||||||
|
|
||||||
|
# O utilizar una clave de cifrado ya generada
|
||||||
|
|
||||||
|
# key = b'Qd4u32ZW-C3DlWs35tvhgiPUHYP4YmlAfUBAV9EFlBs='
|
||||||
|
|
||||||
# Crear un objeto Fernet con la clave generada
|
# Crear un objeto Fernet con la clave generada
|
||||||
cipher = Fernet(key)
|
cipher = Fernet(key)
|
||||||
|
|
||||||
@ -228,6 +251,27 @@ encrypted_message = cipher.encrypt(message)
|
|||||||
print(f"Mensaje encriptado: {encrypted_message}")
|
print(f"Mensaje encriptado: {encrypted_message}")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Para desencriptar es así:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
|
key = "" # Añadir la clave de cifrado generada anteriormente
|
||||||
|
|
||||||
|
# Crear un objeto Fernet con la clave
|
||||||
|
cipher = Fernet(key)
|
||||||
|
|
||||||
|
# Mensaje encriptado
|
||||||
|
encrypted_message = "" # Añadir el mensaje encriptado
|
||||||
|
|
||||||
|
# Desencriptar el mensaje
|
||||||
|
decrypted_message = cipher.decrypt(encrypted_message)
|
||||||
|
|
||||||
|
# Imprimir el mensaje desencriptado
|
||||||
|
print(f"Mensaje desencriptado: {decrypted_message}")
|
||||||
|
```
|
||||||
|
![](img/04.png)
|
||||||
|
|
||||||
#### Solución ejercicio 8:
|
#### Solución ejercicio 8:
|
||||||
|
|
||||||
En este ejercicio, utilizamos la biblioteca pwntools para crear un exploit que se conecta a un servidor remoto y ejecuta comandos. Utilizamos la función remote para establecer la conexión con la dirección IP del servidor y el puerto especificado.
|
En este ejercicio, utilizamos la biblioteca pwntools para crear un exploit que se conecta a un servidor remoto y ejecuta comandos. Utilizamos la función remote para establecer la conexión con la dirección IP del servidor y el puerto especificado.
|
||||||
|
BIN
scripts-hacking-etico/img/03.png
Normal file
BIN
scripts-hacking-etico/img/03.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.4 KiB |
BIN
scripts-hacking-etico/img/04.png
Normal file
BIN
scripts-hacking-etico/img/04.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
12
scripts-hacking-etico/src/06-scapy.py
Normal file
12
scripts-hacking-etico/src/06-scapy.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
"""
|
||||||
|
Instalar la biblioteca de Python `scapy`
|
||||||
|
y crear un paquete de red personalizado
|
||||||
|
que contenga un mensaje de texto
|
||||||
|
"""
|
||||||
|
from scapy.all import *
|
||||||
|
|
||||||
|
# Crear un paquete IP con un mensaje de texto
|
||||||
|
packet = IP(dst="192.168.1.1")/ICMP()/"Hola, este es un mensaje de prueba"
|
||||||
|
|
||||||
|
# Enviar el paquete
|
||||||
|
send(packet)
|
19
scripts-hacking-etico/src/07-cryptography-dec.py
Normal file
19
scripts-hacking-etico/src/07-cryptography-dec.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
"""
|
||||||
|
Desencriptar mensaje anterior
|
||||||
|
"""
|
||||||
|
|
||||||
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
|
key = b'GccwcTdrJaoP7z26l2rZHAITi7CZrreIAqwb3X2Lq8s=NO'
|
||||||
|
|
||||||
|
# Crear un objeto Fernet con la clave
|
||||||
|
cipher = Fernet(key)
|
||||||
|
|
||||||
|
# Mensaje encriptado
|
||||||
|
encrypted_message = b'gAAAAABkf4K73Fl-2ZZlYkVhntF5YPcjIXx3zSkYx2lKdpxh5r8nv0zpBLOOtzCkOxMjX8mSx18hMbV5AwZZg1HAJKOskntvBAyiQmqtXbHLe18L5tiU2uw='
|
||||||
|
|
||||||
|
# Desencriptar el mensaje
|
||||||
|
decrypted_message = cipher.decrypt(encrypted_message)
|
||||||
|
|
||||||
|
# Imprimir el mensaje desencriptado
|
||||||
|
print(f"Mensaje desencriptado: {decrypted_message}")
|
26
scripts-hacking-etico/src/07-cryptography.py
Normal file
26
scripts-hacking-etico/src/07-cryptography.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
"""
|
||||||
|
Instalar la biblioteca de Python `cryptography`
|
||||||
|
y encriptar un mensaje.
|
||||||
|
"""
|
||||||
|
from cryptography.fernet import Fernet
|
||||||
|
|
||||||
|
# Generar una clave de cifrado
|
||||||
|
key = Fernet.generate_key()
|
||||||
|
|
||||||
|
print(f"Clave de cifrado generada: {key}")
|
||||||
|
|
||||||
|
# O utilizar una clave de cifrado ya generada
|
||||||
|
|
||||||
|
# key = b'Qd4u32ZW-C3DlWs35tvhgiPUHYP4YmlAfUBAV9EFlBs='
|
||||||
|
|
||||||
|
# Crear un objeto Fernet con la clave generada
|
||||||
|
cipher = Fernet(key)
|
||||||
|
|
||||||
|
# Mensaje a encriptar
|
||||||
|
message = b"Hola, este es un mensaje"
|
||||||
|
|
||||||
|
# Encriptar el mensaje
|
||||||
|
encrypted_message = cipher.encrypt(message)
|
||||||
|
|
||||||
|
# Imprimir el mensaje encriptado
|
||||||
|
print(f"Mensaje encriptado: {encrypted_message}")
|
Loading…
Reference in New Issue
Block a user