Autenticación#
La API usa autenticación JWT con dos tokens:
Login#
POST /endpoint/login
Content-Type: application/json
{
"username": "operador1",
"password": "mi_password",
"version": "1.2"
}
Respuesta exitosa (200):
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
Renovar token#
POST /endpoint/refresh
Authorization: Bearer <refresh_token>
Usar la API#
Todas las peticiones autenticadas requieren el header:
Authorization: Bearer <access_token>
Endpoints de la API#
Todos los endpoints están bajo el prefijo configurado en profile.yaml (por defecto /endpoint).
Conexión y sincronización#
| Método | Ruta | Descripción |
|---|
| POST | /login | Autenticación |
| POST | /refresh | Renovar access token |
| POST | /sync | Sincronización inicial del cliente |
| POST | /subscribe | Configurar suscripciones de eventos |
| GET | /connect | WebSocket para cliente (via OTP) |
| GET | /channel | Canal WebSocket adicional (via OTP) |
OTP (One-Time Passwords)#
| Método | Ruta | Descripción |
|---|
| POST | /otp/generate | Generar token OTP |
| POST | /otp/upload/temp | Subir archivo temporal via OTP |
| GET | /otp/download/sync | Descargar sync data via OTP |
Listeners#
| Método | Ruta | Descripción |
|---|
| GET | /listener/list | Listar listeners activos |
| POST | /listener/create | Crear un nuevo listener |
| POST | /listener/edit | Editar un listener existente |
| POST | /listener/stop | Detener un listener |
| POST | /listener/pause | Pausar un listener |
| POST | /listener/resume | Reanudar un listener pausado |
Agentes#
| Método | Ruta | Descripción |
|---|
| GET | /agent/list | Listar agentes registrados |
| POST | /agent/generate | Generar un nuevo payload |
| POST | /agent/remove | Eliminar un agente |
| POST | /agent/set/tag | Establecer tag de un agente |
| POST | /agent/set/mark | Establecer marca visual |
| POST | /agent/set/color | Establecer color |
| POST | /agent/update/data | Actualizar datos del agente |
Comandos y consola#
| Método | Ruta | Descripción |
|---|
| POST | /agent/command/execute | Ejecutar comando con UI |
| POST | /agent/command/raw | Ejecutar comando sin formato |
| POST | /agent/command/file | Comando con transferencia de archivo |
| POST | /agent/console/remove | Limpiar consola del agente |
Tareas#
| Método | Ruta | Descripción |
|---|
| GET | /agent/task/list | Listar tareas completadas |
| POST | /agent/task/cancel | Cancelar tarea pendiente |
| POST | /agent/task/delete | Eliminar tarea del historial |
| POST | /agent/task/hook | Ejecutar hook de tarea |
| POST | /agent/task/save | Guardar tarea |
Chat#
| Método | Ruta | Descripción |
|---|
| POST | /chat/send | Enviar mensaje al chat |
Descargas#
| Método | Ruta | Descripción |
|---|
| GET | /download/list | Listar descargas |
| POST | /download/sync | Sincronizar descarga al cliente |
| POST | /download/delete | Eliminar descarga(s) |
Capturas de pantalla#
| Método | Ruta | Descripción |
|---|
| GET | /screen/list | Listar capturas |
| GET | /screen/image | Obtener imagen de una captura |
| POST | /screen/setnote | Establecer nota de una captura |
| POST | /screen/remove | Eliminar captura |
Credenciales#
| Método | Ruta | Descripción |
|---|
| GET | /creds/list | Listar credenciales |
| POST | /creds/add | Añadir credencial |
| POST | /creds/edit | Editar credencial |
| POST | /creds/remove | Eliminar credencial |
| POST | /creds/set/tag | Establecer tag |
Targets#
| Método | Ruta | Descripción |
|---|
| GET | /targets/list | Listar targets |
| POST | /targets/add | Añadir target |
| POST | /targets/edit | Editar target |
| POST | /targets/remove | Eliminar target |
| POST | /targets/set/tag | Establecer tag |
Túneles#
| Método | Ruta | Descripción |
|---|
| GET | /tunnel/list | Listar túneles activos |
| POST | /tunnel/start/socks5 | Iniciar SOCKS5 |
| POST | /tunnel/start/socks4 | Iniciar SOCKS4 |
| POST | /tunnel/start/lportfwd | Iniciar local port forward |
| POST | /tunnel/start/rportfwd | Iniciar reverse port forward |
| POST | /tunnel/stop | Detener túnel |
| POST | /tunnel/set/info | Establecer info del túnel |
Servicios#
| Método | Ruta | Descripción |
|---|
| GET | /service/list | Listar servicios |
| POST | /service/call | Llamar función de servicio |
Endpoints dinámicos#
Los extenders pueden registrar endpoints adicionales en tiempo de ejecución usando:
RegisterEndpoint(method, path, handler) — Endpoint autenticadoRegisterPublicEndpoint(method, path, handler) — Endpoint público
Estos endpoints se registran bajo el mismo prefijo y son accesibles mientras el extender esté cargado.
WebSocket#
La comunicación en tiempo real se realiza via WebSocket:
wss://servidor:4321/endpoint/connect?otp=<token>
El WebSocket se establece usando un OTP (One-Time Password) generado previamente. A través de él, el servidor envía notificaciones de:
- Nuevos agentes
- Resultados de tareas
- Mensajes de chat
- Actualizaciones de estado
- Eventos de listeners
Códigos de respuesta#
| Código | Significado |
|---|
| 200 | Operación exitosa |
| 401 | Token inválido o expirado |
| 404 | Endpoint no encontrado |
| 500 | Error interno del servidor |
Manejo de errores#
Las respuestas de error siguen el formato:
{
"message": "Descripción del error",
"ok": false
}