Hola hacketones! Bienvenidos a un nuevo CTF hoy veremos: TryHackMe CompTIA Pentest+ Python Basics
Conceptos básicos de Python
Utilizando un editor de código en línea, aprende los conceptos básicos de Python y pon en práctica tus conocimientos programando un breve proyecto de inversión en Bitcoin.

Tarea 2 Hola Mundo
Para empezar, vamos a crear un programa sencillo que muestre un texto.
# This is an example commentprint(«Hello World»)
Como puedes ver en el ejemplo de código anterior, es solo una línea (mostrada en la línea 2), y cuando ejecutamos este código, mostrará el texto Hello World. Analicemos esto. En el ejemplo, la línea 1 es un comentario, una línea que comienza con el símbolo de almohadilla (#) y que no es ejecutada por la computadora. Un comentario lo escribe el programador (tú) para ayudar a otras personas que lean el código a entender lo que sucede.
Podemos controlar lo que se muestra en la pantalla mediante la print()instrucción. Todo lo que esté dentro de los paréntesis ()se mostrará. Sin embargo, como estamos imprimiendo una cadena (más adelante en esta sala hablaremos sobre los tipos de datos), debemos ponerlos entre comillas «».
Tenga en cuenta que los ejemplos de esta sala son para Python 3.
Responda las siguientes preguntas
En el editor de código, imprime «Hola Mundo». ¿Cuál es la bandera?
THM{PRINT_STATEMENTS}

Tarea 3 Operadores matemáticos
Ahora vamos a ver los operadores matemáticos y cómo se pueden aplicar en Python. Al igual que una calculadora, existen operaciones como la suma, la resta, la multiplicación y la división; con Python, podemos programar nuestra propia calculadora. Al fin y al cabo, programar consiste simplemente en escribir reglas para que el ordenador las siga según datos y condiciones específicos. La siguiente tabla muestra las diferentes operaciones.
| Operador | Sintaxis | Ejemplo |
| Suma | + | 1 + 1 = 2 |
| Sustracción | – | 5 – 1 = 4 |
| Multiplicación | * | 10 * 10 = 100 |
| División | / | 10 / 2 = 5 |
| Módulo | % | 10 % 2 = 0 |
| Exponente | ** | 5**2 = 25 (5 2 ) |
Ahora que conocemos los operadores matemáticos básicos, pasemos a los operadores de comparación; estos desempeñan un papel importante en Python y se desarrollarán cuando veamos loopsy if statements. Estos operadores se utilizan para evaluar el estado de un programa en un estado particular.
| Símbolo | Sintaxis |
| Más que | > |
| Menos que | < |
| Igual a | == |
| No es igual a | != |
| Mayor o igual que | >= |
| Menor o igual que | <= |
Responda las siguientes preguntas
En el editor de código, imprime el resultado de 21 + 43. ¿Cuál es la bandera?
THM{ADDITI0N}
Imprime el resultado de 142 – 52. ¿Cuál es la bandera?
THM{SUBTRCT}
Imprime el resultado de 10 * 342. ¿Cuál es la bandera?
THM{MULTIPLICATION_PYTHON}
Imprime el resultado de 5 al cuadrado. ¿Cuál es la bandera?
THM{EXP0N3NT_POWER}

THM{SUBTRCT}

Tarea 4 Variables y tipos de datos
Las variables permiten almacenar y actualizar datos en un programa informático. Se asigna un nombre a la variable y se almacenan los datos asociados a ese nombre.
food =»ice cream»
money =2000
En el ejemplo anterior, tenemos 2 variables. La variable llamada «food» almacena la cadena (palabras) «ice cream», mientras que otra variable llamada «money» almacena un número (2000).
Las variables son muy útiles, ya que puedes modificarlas a lo largo del programa. En el siguiente ejemplo, la variable «edad» se establece en 30 y luego se incrementa en 1, obteniendo así el valor final de 31. Puedes copiar y pegar este código en el editor, ejecutarlo y ver el resultado.
age =30
age =age +1
print(age)
Observe, en la línea 2, cómo actualizamos una variable. A la izquierda, tenemos el nombre de la variable ya creada, «edad», seguido del operador =. A la derecha, tenemos el valor que le asignamos a la variable; en nuestro caso, la variable edad (que actualmente tiene un valor de 30) se incrementa en 1.
Hablemos de los tipos de datos, que se refieren al tipo de datos que se almacenan en una variable. Se puede almacenar texto, números y muchos otros tipos. Los tipos de datos que debes conocer son:
- Cadena : se utiliza para combinaciones de caracteres, como letras o símbolos.
- Entero – Números enteros
- Números flotantes : números que contienen decimales o fracciones.
- Booleano : se utiliza para datos que se limitan a las opciones Verdadero o Falso.
- Lista : serie de diferentes tipos de datos almacenados en una colección.

Responda las siguientes preguntas
En una nueva línea, imprime el valor de altura. ¿Qué bandera aparece?
THM{VARIABL3S}

Tarea 5 Operadores lógicos y booleanos
Los operadores lógicos permiten realizar asignaciones y comparaciones, y se utilizan en pruebas condicionales (como las sentencias if).
| Operación lógica | Operador | Ejemplo |
| Equivalencia | == | si x == 5 |
| Menos que | < | si x < 5 |
| Menor o igual que | <= | si x <= 5 |
| Más que | > | si x > 5 |
| Mayor o igual que | >= | si x >= 5 |
Los operadores booleanos se utilizan para conectar y comparar relaciones entre expresiones. Al igual que en una expresión condicional (if), las condiciones pueden ser verdaderas o falsas.
| Operación booleana | Operador | Ejemplo |
| Ambas condiciones deben ser verdaderas para que la afirmación sea verdadera. | Y | Si x >= 5 Y x <= 100, devuelve VERDADERO si x es un número entre 5 y 100. |
| Solo es necesario que se cumpla una de las condiciones de la afirmación. | O | Si x == 1 O x == 10 Devuelve VERDADERO si X es 1 o 10 |
| Si una condición es lo opuesto a un argumento | NO | if NOT yReturns TRUE si el valor de y es FALSO |
Veamos algunos ejemplos de código Python:

Tarea 6 Proyecto de transporte marítimo Introducción a las sentencias condicionales (if)
El uso de sentencias condicionales (if) permite a los programas tomar decisiones. Estas sentencias permiten que un programa tome una decisión en función de una condición. A continuación, se muestra un ejemplo de cómo se puede usar una sentencia condicional para determinar qué sección de código (qué instrucción de impresión) se debe utilizar.

En el ejemplo, si eres menor de 17 años, el programa mostrará el texto «No tienes edad suficiente para conducir»; sin embargo, si eres mayor de 17 años, mostrará «Tienes edad suficiente para conducir». Según una condición (en este ejemplo, la agevariable), el programa ejecutará diferentes secciones de código.
Hay algunos componentes clave que podemos destacar de nuestro ejemplo de código anterior:
- La ifpalabra clave indica el comienzo de la instrucción if, seguida de un conjunto de condiciones.
- La instrucción if solo se ejecuta si la condición (o conjunto de condiciones) es verdadera. En nuestro ejemplo, es age < 17; si esa condición es verdadera (la edad es menor de 17), se ejecuta el código dentro de la instrucción if. Si las condiciones no se cumplen, el programa ejecutará por defecto el código que se muestra en la elseparte de la instrucción if.
- Los dos puntos :marcan el final de la instrucción if.
- Observe la sangría . Todo lo que aparece después de los dos puntos y que está indentado se considera parte de la instrucción if, que el programa ejecutará.
- .

Las sentencias condicionales son esenciales en la programación y las usarás mucho.
Responda las siguientes preguntas
Una vez que haya escrito la aplicación en la pestaña shipping.py del editor de código, aparecerá una bandera, que es la respuesta a esta pregunta.
THM{IF_STATEMENT_SHOPPING}

En shipping.py, en la línea 15 (cuando uses la sugerencia del editor de código), cambia la variable customer_basket_cost a 101 y vuelve a ejecutar el código. Obtendrás una bandera (si el costo total es correcto según tu código); esta bandera es la respuesta a esta pregunta.
THM{MY_FIRST_APP}

Tarea 7 Bucles
En programación, los bucles permiten que los programas iteren y realicen acciones varias veces. Hay dos tipos de bucles: bucles fory whilebucles.
Bucles while
Comencemos por analizar cómo estructuramos un bucle while. Podemos hacer que el bucle se ejecute indefinidamente o (de forma similar a una sentencia if) determinar cuántas veces debe ejecutarse en función de una condición.

Este bucle while se ejecutará 10 veces, mostrando el valor de la variable i en cada iteración (bucle). Analicemos esto:
- La variable i se establece en 1.
- La instrucción while especifica dónde debe comenzar el bucle.
- Cada vez que se ejecute el bucle, comenzará desde el principio (mostrando el valor de i).
- Luego pasa a la siguiente línea del bucle, que incrementa el valor de i en 1.
- Entonces (como no hay más código que el programa pueda ejecutar), vuelve al principio del bucle, reiniciando el proceso.
- El programa seguirá ejecutándose en bucle hasta que el valor de la variable i sea mayor que 10.
Bucles for
Un bucle for se utiliza para iterar sobre una secuencia, como una lista. Las listas se utilizan para almacenar varios elementos en una sola variable y se crean utilizando corchetes (véase más abajo). Aprendamos con el siguiente ejemplo:

Este bucle for que se muestra en el bloque de código anterior se ejecutará 3 veces, mostrando cada sitio web de la lista. Analicemos esto:
- La variable de lista llamada sitios web está almacenando 3 elementos.
- El bucle itera a través de cada elemento, imprimiendo el elemento.
- El programa deja de ejecutarse en bucle cuando ha recorrido todos los elementos del bucle.
Para ilustrarlo con un ejemplo práctico, podrías crear un programa que compruebe si un sitio web está en línea o si un artículo está en stock. Recorrerías la lista de sitios web, añadirías funcionalidades dentro del bucle para verificar cada sitio y mostrarías los resultados. La sala » Python para pentesters » te enseña a usar Python para enumerar un objetivo, crear un registrador de pulsaciones de teclas, escanear una red y mucho más.
En Python, también podemos iterar sobre un rango de números usando la función `range`. A continuación, se muestra un ejemplo de código Python que imprime los números del 0 al 4. En programación, el 0 suele ser el número inicial, por lo que contar hasta 5 es del 0 al 4 (pero tiene 5 números: 0, 1, 2, 3 y 4).

En el editor de código, haga clic en la pestaña «script.py» y escriba un bucle que muestre todos los números del 0 al 50.

THM{L00PS_WHILE_FOR}
Tarea 8 Bitcoin Project Introduction to Functions
A medida que los programas se vuelven más grandes y complejos, parte del código se vuelve repetitivo, escribiendo el mismo código para realizar los mismos cálculos. Aquí es donde entran en juego las funciones. Una función es un bloque de código que se puede llamar en diferentes partes del programa.
Podrías usar una función para realizar un cálculo, como la distancia entre dos puntos en un mapa, o para generar texto formateado según ciertas condiciones. El uso de funciones elimina el código repetitivo, ya que su propósito se puede aprovechar varias veces en un programa.

Hay algunos componentes clave que podemos destacar de esta función:
- La defpalabra clave indica el comienzo de una función. A la palabra clave le sigue un nombre que define el programador y que se puede usar para llamar a la función. En nuestro ejemplo, es sayHello.
- Después del nombre de la función hay un par de paréntesis ()que contienen valores de entrada, datos que podemos pasar a la función. En nuestro ejemplo, es una variable llamada name.
- Los dos puntos :marcan el final del encabezado de la función.
En la función, observe la indentación . Al igual que en las sentencias if, todo lo que aparece después de los dos puntos y que está indentado se considera parte de la función.
Una función también puede devolver un resultado; consulte el siguiente bloque de código:

Si llamamos a la calcCostfunción y le pasamos «dulces» como parámetro, la función devolverá un número decimal (float). En el código anterior, tomamos una variable llamada `gastado` y le sumamos el costo de «dulces» mediante la calcCostfunción. Al llamarla calcCost, devolverá el número 3.99; este número se sumará a la spentvariable, dando como resultado un total de 13.99.
Responda las siguientes preguntas
Has invertido en Bitcoin y quieres escribir un programa que te avise cuando el valor de Bitcoin caiga por debajo de un valor determinado en dólares.
En el editor de código, haz clic en la pestaña bitcoin.py. Escribe una función llamada bitcoinToUSD con dos parámetros: bitcoin_amount , la cantidad de Bitcoin que posees, y bitcoin_value_usd , el valor de Bitcoin en USD. La función debe devolver usd_value, que es el valor de tu Bitcoin en USD (para calcularlo, en la función, multiplica la variable bitcoin_amount por la variable bitcoin_value_usd y devuelve el resultado). El inicio de la función debe verse así:
defbitcoinToUSD(bitcoin_amount,bitcoin_value_usd):
Una vez que hayas escrito la función bitcoinToUSD, úsala para calcular el valor de tu Bitcoin en USD y luego crea una instrucción if para determinar si el valor cae por debajo de $30,000; si es así, muestra un mensaje de alerta (mediante una instrucción print).
THM{BITC0IN_INVESTOR}

Tarea 9 Archivos
En Python, puedes leer y escribir archivos. Hemos visto que en ciberseguridad es común escribir un script e importarlo o exportarlo desde un archivo, ya sea para almacenar la salida del script o para importar una lista de cientos de sitios web desde un archivo para enumerarlos. Veamos un ejemplo:
f =open(«file_name»,»r»)
print(f.read())
Para abrir el archivo, usamos la función integrada `open()`, y el parámetro `r` significa «leer» y se usa para leer el contenido del archivo. La variable tiene un método `read()` para leer el contenido del archivo. También puedes usar el método `readlines()` y recorrer cada línea del archivo; esto es útil si tienes una lista donde cada elemento está en una línea nueva. En el ejemplo anterior, el archivo está en la misma carpeta que el script de Python; si estuviera en otra ubicación, tendrías que especificar la ruta completa del archivo.
También puedes crear y escribir archivos. Si escribes en un archivo existente, primero ábrelo y usa la «a» en la función `open` después de especificar el nombre del archivo (que significa añadir). Si escribes en un archivo nuevo, usa «w» (escribir) en lugar de «a». Consulta los ejemplos a continuación para mayor claridad:

Observe que utilizamos el método close() después de escribir en un archivo; esto cierra el archivo para que no se pueda escribir más en él (dentro del programa).
Responda las siguientes preguntas
En el editor de código, escribe código Python para leer el archivo flag.txt. ¿Cuál es la bandera que contiene este archivo?
THM{F1LE_R3AD}

Tarea 10 Importaciones
En Python, podemos importar bibliotecas, que son colecciones de archivos que contienen funciones. Piensa en importar una biblioteca como importar funciones que ya han sido escritas para ti. Por ejemplo, existe una biblioteca llamada «date» que te da acceso a cientos de funciones diferentes para todo lo relacionado con fechas y horas.

Importamos otras bibliotecas usando la importpalabra clave `.now()`. Luego, en Python, usamos el nombre de la biblioteca importada para acceder a sus funciones. En el ejemplo anterior, importamos `datetime` y luego accedemos al método `.now()` llamando a `nombre_biblioteca.nombre_método()`. Copia y pega el ejemplo anterior en el editor de código.
Aquí tienes algunas bibliotecas populares que te pueden resultar útiles para programar scripts como pentester:
- Request – una sencilla biblioteca HTTP.
- Scapy : envía, intercepta, analiza y falsifica paquetes de red.
- Pwntools : una biblioteca para el desarrollo de CTF y exploits.
Muchas de estas bibliotecas ya están integradas en el lenguaje de programación; sin embargo, las bibliotecas escritas por otros programadores que no estén instaladas en tu máquina se pueden instalar usando una aplicación llamada pip, que es el gestor de paquetes de Python. Digamos que quieres instalar la biblioteca «scapy» (que te permite crear tus propios paquetes en el código y enviarlos a otras máquinas); primero la instalas ejecutando el comando pip install scapy, después de lo cual en tu programa ya puedes importar la biblioteca scapy.

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!