Add course Python ofensivo

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
Manuel Vergara 2023-12-13 23:00:26 +01:00
parent 5b62da6cf0
commit 086b1ca614
6 changed files with 136 additions and 14 deletions

View File

@ -10,6 +10,7 @@ Este repositorio contiene los apuntes tomados en diversos cursos de python refle
| [30 days of python](./30-days-of-python/README.md) | Intermedio | --- | 25 horas | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) | | [30 days of python](./30-days-of-python/README.md) | Intermedio | --- | 25 horas | [Repo Asabeneh](https://github.com/Asabeneh/30-Days-Of-Python) |
| [Cajón de sastre](./catch-all/README.md) | Intermedio | --- | continua | [Personal](https://vergaracarmona.es) | | [Cajón de sastre](./catch-all/README.md) | Intermedio | --- | continua | [Personal](https://vergaracarmona.es) |
| [scripts-hacking-etico](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) | | [scripts-hacking-etico](./scripts-hacking-etico/README.md) | Avanzado | --- | 5 horas | [ChapGPT](https://www.chat.openai.com), [Canal Telegram](https://t.me/seguridadinformatic4) |
| [Python ofensivo](./python-ofensivo/README.md) | Avanzado | 35 horas | ¿? horas | [hack4u](https://hack4u.io) |
Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados o por investigación propia, con mucho café para combatir el insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo estos documentos tan completos y entendiendo que el conocimiento debe ser libre, se decidió compartirlos. Si encuentras **cualquier error puedes abrir una issue o contactar conmigo**. Las prácticas y ejercicios aquí contenidos son los que hice mediante los cursos mencionados o por investigación propia, con mucho café para combatir el insomnio. Realmente, los apuntes no fueron pensados para compartirlos, por ello pueden tener lagunas de información o contenido adicional respecto al curso, ya que se redactaron para recordar procedimientos y conceptos que EMHO me parecieron relevantes. Teniendo estos documentos tan completos y entendiendo que el conocimiento debe ser libre, se decidió compartirlos. Si encuentras **cualquier error puedes abrir una issue o contactar conmigo**.
@ -24,10 +25,9 @@ Recuerda,
<br> <br>
## Información sobre python ## Información sobre python
<details> <details>
<summary><strong> Qué es python según chatGPT 🤖</strong></summary> <summary><strong> Qué es python según chatGPT 🤖</strong></summary>
Python es un lenguaje de programación interpretado y de alto nivel. Python se destaca por su sintaxis clara y legible, lo que lo hace muy accesible tanto para principiantes como para programadores experimentados. Python es un lenguaje de programación interpretado y de alto nivel. Python se destaca por su sintaxis clara y legible, lo que lo hace muy accesible tanto para principiantes como para programadores experimentados.
Una de las características distintivas de Python es su enfoque en la legibilidad del código, lo que se conoce como el principio "bello es mejor que feo" (beautiful is better than ugly). Esto se logra mediante el uso de una sintaxis clara y estructurada que facilita la comprensión y el mantenimiento del código. Una de las características distintivas de Python es su enfoque en la legibilidad del código, lo que se conoce como el principio "bello es mejor que feo" (beautiful is better than ugly). Esto se logra mediante el uso de una sintaxis clara y estructurada que facilita la comprensión y el mantenimiento del código.
@ -54,22 +54,10 @@ Guido van Rossum es el principal autor de Python, y su continuo rol central en d
> Guido van Rossum > Guido van Rossum
En 2019, Python fue el lenguaje de programación más popular en GitHub, superando a Java, el segundo lenguaje más popular, por más de 1 millón de repositorios. En 2019, Python fue el lenguaje de programación más popular en GitHub, superando a Java, el segundo lenguaje más popular, por más de 1 millón de repositorios.
</details>
<details>
<summary><strong>Últimas versiones 🔄</strong></summary>
Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él. Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x y posteriores.
Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas.
En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning.
</details> </details>
<details> <details>
<summary><strong>PEP 20 - Zen de Python 📄</strong></summary> <summary><strong>PEP 20 - Zen de Python 📄</strong></summary>
El Zen de Python es una colección de 20 principios de software que influyen en el diseño del Lenguaje de Programación Python, de los cuales 19 fueron escritos por Tim Peter en junio de 1999. El texto es distribuido como dominio público: El Zen de Python es una colección de 20 principios de software que influyen en el diseño del Lenguaje de Programación Python, de los cuales 19 fueron escritos por Tim Peter en junio de 1999. El texto es distribuido como dominio público:
``` ```
@ -93,6 +81,15 @@ Si la implementación es difícil de explicar, es una mala idea.
Si la implementación es fácil de explicar, puede que sea una buena idea. Si la implementación es fácil de explicar, puede que sea una buena idea.
Los espacios de nombres son una gran idea, ¡tengamos más de esos! Los espacios de nombres son una gran idea, ¡tengamos más de esos!
``` ```
</details>
<details>
<summary><strong>Últimas versiones 🔄</strong></summary>
Python 2.7.x (última versión de la serie Python 2.x) fue oficialmente descontinuado el 1 de enero de 2020 (paso inicialmente planeado para 2015), por lo que ya no se publicarán parches de seguridad y otras mejoras para él. Con el final del ciclo de vida de Python 2, solo tienen soporte la rama Python 3.6.x y posteriores.
Con Python 3.5 llegaría el soporte incluido para entrada/salida asíncrona a través de la biblioteca asyncio, orientada a aplicaciones que requieren alto rendimiento de código concurrente, como servidores web, bibliotecas de conexión de bases de datos y colas de tareas distribuidas.
En la actualidad, Python se aplica en los campos de inteligencia artificial y machine learning.
</details> </details>

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
"""
Combinar listas
"""
# Ejercicio 1
odd_number = [1, 3, 5, 7, 9]
even_number = [2, 4, 6, 8, 10]
zip_numbers = zip(odd_number, even_number)
new_list = []
for odd, even in zip_numbers:
new_list.append(odd + even)
print(new_list)
# Ejercicio 2
odd_number = [1, 3, 5, 7, 9]
even_number = [2, 4, 6, 8, 10]
result = list(map(sum, zip(odd_number, even_number)))
print(result)

View File

@ -0,0 +1,3 @@
# Cajón de sastre de ejercicios
...

View File

@ -0,0 +1,50 @@
# Ejemplos de oneliner en Python
No solo está la opción del interprete de python, también puedes utilizar la opción `-c` del comando para crear un script en línea.
Ejemplos:
```bash
python3 -c 'import pty; pty.spawn("/bin/bash")'
```
1. **Imprimir números del 1 al 10:**
```bash
python33 -c 'print([i for i in range(1, 11)])'
```
2. **Calcular la suma de los cuadrados de los números del 1 al 5:**
```bash
python33 -c 'print(sum([i**2 for i in range(1, 6)]))'
```
3. **Listar archivos en el directorio actual:**
```bash
python33 -c 'import os; print(os.listdir("."))'
```
4. **Imprimir la fecha y hora actual:**
```bash
python33 -c 'from datetime import datetime; print(datetime.now())'
```
5. **Contar las líneas en un archivo:**
```bash
python33 -c 'print(sum(1 for line in open("archivo.txt")))'
```
6. **Invertir una cadena:**
```bash
python33 -c 'cadena = "Hola mundo"; print(cadena[::-1])'
```
7. **Generar una lista de números pares del 0 al 8:**
```bash
python33 -c 'print([i for i in range(9) if i % 2 == 0])'
```
8. **Verificar si un número es primo:**
```bash
python33 -c 'n = 11; print("Primo" if all(n % i != 0 for i in range(2, int(n**0.5) + 1)) and n > 1 else "No primo")'
```

View File

@ -0,0 +1,29 @@
# Shebang
Es más óptimo usar `#!/usr/bin/env python` que `#!/usr/bin/python` porque el primero busca el intérprete en el `PATH` del sistema, mientras que el segundo asume que el intérprete está en `/usr/bin/python`.
# Convenios Python
Por otro lado, el `if` siguiente es una convención para que el código que está dentro de él solo se ejecute si el script se ejecuta directamente, y no si se importa como módulo.
```python
if ___name___ == '___main___':
print('Soy el módulo principal')
else:
print('No soy el módulo principal')
```
Tener en cuenta que el nombre de las variables son en minúsculas, y si son varias palabras, se separan con guiones bajos, en snake_case Por ejemplo: `nombre_de_la_variable`.
Las Constantes son en mayúsculas, y si son varias palabras, se separan con guiones bajos, en SCREAMING_SNAKE_CASE. Por ejemplo: `NOMBRE_DE_LA_CONSTANTE`.
Las Clases son en UpperCamelCase, es decir, la primera letra de cada palabra en mayúsculas. Por ejemplo: `NombreDeLaClase`.
Las funciones son en minúsculas, y si son varias palabras, se separan con guiones bajos, en lowercamelcase. Por ejemplo: `nombredelafuncion`.
Las variables privadas se nombran con un guión bajo al principio. Por ejemplo: `_variable_privada`.

19
python-ofensivo/README.md Normal file
View File

@ -0,0 +1,19 @@
# Apuntes del curso Python Ofensivo
_Confirmado, no es una serpiente que te insulta_
Estos apuntes y ejercicios en python son parte del curso de Python Ofensivo de [hack4u](https://hack4u.io):
- [Curso Python Ofensivo](https://hack4u.io/cursos/python-ofensivo/)
¡Te recomiendo que lo hagas cogiendo tus propios apuntes! Este repositorio es para mi uso personal, pero si te sirve de ayuda, ¡me alegro!
Quizá encuentres aquí cosas que no están en el vídeo, o viceversa, son apuntes personales 😊
![](https://c.tenor.com/-SV9TjUGabMAAAAC/hacker-python.gif)
| Ejercicios y apuntes |
| ------------------------------------------------------------ |
| 0. [Cajón de sastre de ejercicios](./00_cajon_sastre) |
| 1. [Ejemplos de oneliner en python](./01_oneliner/README.md) |
| 2. [Shebang y convenios](./02_shebang_convenios/README.md) |