Add course Python ofensivo
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
parent
5b62da6cf0
commit
086b1ca614
25
README.md
25
README.md
@ -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>
|
||||||
|
|
||||||
|
24
python-ofensivo/00_ejercicios/01_combinar_listas.py
Normal file
24
python-ofensivo/00_ejercicios/01_combinar_listas.py
Normal 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)
|
3
python-ofensivo/00_ejercicios/README.md
Normal file
3
python-ofensivo/00_ejercicios/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Cajón de sastre de ejercicios
|
||||||
|
|
||||||
|
...
|
50
python-ofensivo/01_oneliner/README.md
Normal file
50
python-ofensivo/01_oneliner/README.md
Normal 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")'
|
||||||
|
```
|
29
python-ofensivo/02_shebang_convenios/README.md
Normal file
29
python-ofensivo/02_shebang_convenios/README.md
Normal 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
19
python-ofensivo/README.md
Normal 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) |
|
||||||
|
|
Loading…
Reference in New Issue
Block a user