Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@


# Bolt4Free
Un script en Python que explota una vulnerabilidad práctica en la aplicación de patinetes eléctricos Bolt, lo que permite usar los patinetes eléctricos sin ningún cargo

# Automatización de viajes con patinetes Bolt

Bolt4Free es un script en Python que explota una vulnerabilidad práctica en la aplicación de patinetes eléctricos Bolt, permitiéndote usar los patinetes sin ningún cargo. El script aprovecha el hecho de que Bolt no tiene tarifa de desbloqueo, por lo que un viaje puede iniciarse y terminarse tantas veces como se desee, y que si la duración de un viaje está por debajo de un plazo determinado, no habrá cargo.

## Requisitos previos
- Cuenta de Bolt con un método de pago confirmado configurado
- Burp Suite para interceptar solicitudes `HTTP` y obtener la información a continuación (más información sobre cómo configurar Burp Suite en dispositivos móviles en [Interceptando solicitudes con Burp Suite](https://github.com/amstrdm/Bolt4Free/edit/main/README.md#intercepting-requests-with-burp-suite))

Antes de ejecutar este programa, necesitas tener la siguiente información:

- `cookie`: El valor de la cookie requerido para la autenticación.
- `authorization`: El valor de autorización requerido para la autenticación (por ejemplo, Basic KzQ5MTc2NzA4Njc1MDQ6MUZCRjAwMEYtQkQzRC00RjgwLUE5NUItRUZFODg4RjYzQzVB).
- `payment_instrument_id`: El ID del instrumento de pago (por ejemplo, adyen_paypal/6837466090316059).
- `user_agent` (opcional): La cadena de user agent que se utilizará en las solicitudes. El valor predeterminado es "Bolt/109764413 CFNetwork/1390 Darwin/22.0.0".

- Todos estos valores se pueden obtener de cualquier solicitud `http` saliente desde la aplicación móvil de Bolt

## Instalación

Para ejecutar el script Bolt4Free, necesitas tener instalado el módulo requests. Si no lo tienes instalado, puedes hacerlo usando pip:
```
pip install requests
```
Una vez instalados los requisitos, clona el repositorio:
```
git clone https://github.com/amstrdm/Bolt4Free.git
```

## Uso
Antes de ejecutar el script, asegúrate de modificar las siguientes variables en el código:

- `Cookie`: Reemplázalo con el valor del encabezado `Cookie` de las solicitudes interceptadas por Burp Suite.
- `Authorization`: Reemplázalo con el valor del encabezado `Authorization` de las solicitudes interceptadas por Burp Suite.
- `Payment_instrument_id`: Reemplázalo con el valor del parámetro `payment_instrument_id` de las solicitudes interceptadas por Burp Suite.

Además, puedes cambiar la variable `user_agent` para que coincida con el user agent que desees.

Después, puedes ejecutar el script normalmente con Python:
```
cd Bolt4Free
python3 bolt4free.py
```


## Interceptando solicitudes con Burp Suite

Para obtener las variables requeridas (`Cookie`, `Authorization`, `Payment_instrument_id`), puedes redirigir las solicitudes POST desde la aplicación Bolt de tu teléfono a una computadora que ejecute Burp Suite. Esto te permite capturar las solicitudes y extraer los valores necesarios. Puedes encontrar instrucciones sobre cómo redirigir solicitudes desde un teléfono a Burp Suite [aquí](https://portswigger.net/support/configuring-an-android-device-to-work-with-burp).

Ten en cuenta que este proceso puede requerir conocimientos técnicos y está destinado únicamente con fines educativos.

---

## Flujo del programa

El programa sigue los siguientes pasos:

1. `get_user_input()`: Solicita al usuario que ingrese el ID de su patinete Bolt.
2. `create_and_start_order`: Envía una solicitud POST a la API de Bolt para crear e iniciar el viaje. Devuelve la respuesta.
3. `extract_order_id`: Extrae "order_id" del JSON de respuesta.
4. `getactive1`: Envía una solicitud POST a la API de Bolt para obtener los detalles del viaje activo. Devuelve la respuesta.
5. `extract_getactive1_order_id`: Extrae "getactive1_id_value" del JSON de respuesta.
6. `getactive2`: Envía una segunda solicitud POST a la API de Bolt para obtener los detalles del viaje activo (esta solicitud puede ser innecesaria y potencialmente eliminarse).
7. `finish1`: Envía una solicitud POST a la API de Bolt para finalizar el viaje (primer paso).
8. `finish2`: Envía una solicitud POST a la API de Bolt para finalizar el viaje (segundo paso, confirma la terminación).
9. Espera la duración especificada (50 segundos) para simular la duración del viaje.
10. Envía solicitudes para finalizar el viaje y espera la respuesta de confirmación.

## Manejo de errores

El programa realiza un manejo básico de errores. Si alguna de las solicitudes falla o devuelve una respuesta inesperada, se imprimirá un mensaje de error. El programa se cerrará en caso de un error.

### Aviso legal

- El proyecto Bolt4Free es con fines educativos y es parte de un programa de Bug Bounty. El creador del proyecto no se hace responsable de ningún acto explícito o ilegal realizado con el programa. Utiliza este script responsablemente y bajo tu propio riesgo.

- Ten en cuenta que actualmente no hay una forma "segura" de salir del programa, ya que eso requeriría el uso de hilos (threading), lo cual probablemente se agregará más adelante; por lo tanto, al terminar el programa, es importante verificar en la aplicación oficial de Bolt si el viaje se terminó correctamente, ya que es probable que el programa haya salido del bucle antes de tiempo y, por lo tanto, no haya enviado las solicitudes `POST` necesarias para finalizar el viaje.

- Nota: Este programa se proporciona "tal cual" y puede requerir ajustes basados en cualquier cambio en la API de Bolt o en el proceso de autenticación.