Skip to content

secureot/secureot-inventory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Test login

curl -v -c cookies.txt -X POST http://localhost:8000/login -H "Content-Type: application/json" -d '{"email": "admin@secureot.space", "password": "password123"}'

Cargar PCAP

https://github.com/automayt/ICS-pcap/tree/master/Additional%20Captures/4SICS-GeekLounge-151022 https://www.netresec.com/?page=PCAP4SICS

curl -v -b cookies.txt -X POST http://localhost:8000/pcap/upload  -F "file=@./4SICS-GeekLounge-151022.pcap"

Consultar los datos cargados

curl -b cookies.txt "http://localhost:8000/assets?page=1&size=5&search=PLC"
docker exec -it secureot_db psql -U admin -d secureot_db -c "SELECT ip_address, mac_address, name FROM assets WHERE mac_address IS NOT NULL;"

API Identificador de MAC

https://maclookup.app/downloads/json-database

curl -v -b cookies.txt -X POST http://localhost:8000/import/mac-vendors -F "file=@./mac-vendors-export.json"
docker exec -it secureot_db psql -U admin -d secureot_db -c "
SELECT 
    a.ip_address, 
    a.mac_address, 
    COALESCE(mv.vendor_name, '--- Desconocido ---') as fabricante_real,
    a.name as nombre_asignado
FROM assets a
LEFT JOIN mac_vendors mv 
    ON LEFT(REPLACE(UPPER(a.mac_address), ':', ''), 6) = mv.oui
WHERE a.mac_address IS NOT NULL
ORDER BY a.ip_address ASC;
"

        ip_address         |    mac_address    |             fabricante_real             |      nombre_asignado
---------------------------+-------------------+-----------------------------------------+---------------------------
 10.10.10.20               | 00:1C:06:27:64:11 | Siemens Numerical Control Ltd., Nanjing | 10.10.10.20
 10.10.10.30               | 54:EE:75:3F:4A:DB | Wistron InfoComm(Kunshan)Co.,Ltd.       | 10.10.10.30
 10.100.152.10             | 1C:E8:5D:69:C5:C2 | Cisco Systems, Inc                      | 10.100.152.10
 17.110.224.213            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 17.110.224.213
 17.110.230.30             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 17.110.230.30
 17.130.137.73             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 17.130.137.73
 17.130.137.75             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 17.130.137.75
 21.2.2.2                  | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 21.2.2.2
 52.4.151.114              | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 52.4.151.114
 52.5.95.205               | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 52.5.95.205
 54.210.217.83             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 54.210.217.83
 54.241.179.26             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 54.241.179.26
 74.125.205.188            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 74.125.205.188
 77.245.33.76              | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 77.245.33.76
 83.140.27.11              | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 83.140.27.11
 93.158.110.200            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 93.158.110.200
 93.158.110.218            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 93.158.110.218
 108.160.163.110           | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 108.160.163.110
 141.82.217.52             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 141.82.217.52
 173.252.90.4              | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 173.252.90.4
 192.168.1.10              | 04:18:D6:83:DB:16 | Ubiquiti Inc                            | 192.168.1.10
 192.168.2.21              | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.21
 192.168.2.22              | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.22
 192.168.2.44              | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.44
 192.168.2.53              | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.53
 192.168.2.64              | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.64
 192.168.2.110             | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.110
 192.168.2.133             | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.133
 192.168.2.137             | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.137
 192.168.2.166             | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.166
 192.168.2.199             | 00:07:7C:1A:61:83 | Westermo Network Technologies AB        | 192.168.2.199
 192.168.57.3              | 00:1E:EC:26:D2:AC | COMPAL INFORMATION (KUNSHAN) CO., LTD.  | 192.168.57.3
 192.168.88.25             | 00:D0:C9:A5:C9:2D | ADVANTECH CO., LTD.                     | 192.168.88.25
 192.168.88.52             | 28:CF:E9:18:B5:ED | Apple, Inc.                             | 192.168.88.52
 192.168.88.53             | A0:99:9B:1C:D8:65 | Apple, Inc.                             | 192.168.88.53
 192.168.88.54             | A0:99:9B:1C:D8:65 | Apple, Inc.                             | 192.168.88.54
 192.168.88.55             | A0:99:9B:1C:D8:65 | Apple, Inc.                             | 192.168.88.55
 192.168.88.61             | 00:90:E8:27:8C:37 | MOXA TECHNOLOGIES CORP., LTD.           | 192.168.88.61
 192.168.89.1              | 00:0A:DC:64:85:C2 | RuggedCom Inc.                          | 192.168.89.1
 192.168.89.2              | 70:71:BC:3A:0D:E8 | PEGATRON CORPORATION                    | 192.168.89.2
 192.168.143.155           | A0:99:9B:1C:D8:65 | Apple, Inc.                             | 192.168.143.155
 193.182.190.178           | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 193.182.190.178
 193.209.237.4             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 193.209.237.4
 199.16.156.48             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 199.16.156.48
 199.16.156.70             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 199.16.156.70
 199.16.156.72             | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 199.16.156.72
 199.16.156.198            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 199.16.156.198
 199.16.156.231            | A2:F4:01:00:01:D6 | --- Desconocido ---                     | 199.16.156.231
 fe80::baae:edff:fe75:7041 | B8:AE:ED:75:70:41 | Elitegroup Computer Systems Co.,Ltd.    | fe80::baae:edff:fe75:7041
(49 rows)
CREATE OR REPLACE VIEW view_assets_full AS
SELECT 
    a.id,
    a.name,
    a.ip_address,
    a.mac_address,
    -- Prioridad: Si ya le asignaste un fabricante manual, muestra ese. 
    -- Si no, muestra el detectado por la MAC.
    COALESCE(m.name, mv.vendor_name, 'Desconocido') AS fabricante_final,
    CASE 
        WHEN m.name IS NOT NULL THEN 'Manual/Oficial'
        WHEN mv.vendor_name IS NOT NULL THEN 'Detectado por MAC'
        ELSE 'N/A'
    END as fuente_fabricante
FROM assets a
LEFT JOIN manufacturers m ON a.manufacturer_id = m.id
LEFT JOIN mac_vendors mv ON LEFT(REPLACE(UPPER(a.mac_address), ':', ''), 6) = mv.oui;
curl -v -b cookies.txt "http://localhost:8000/assets/full?size=500" | jq
curl -v -b cookies.txt "http://localhost:8000/assets/full?search=192.168.88.61" | jq
curl -v -b cookies.txt "http://localhost:8000/asset-connections/network-topology" | jq

Rutas

🔌 API Endpoints

El backend expone una API RESTful en el puerto 8000. A excepción de las rutas públicas, todos los endpoints requieren la cookie auth_token.

🔓 Autenticación y Sistema (Público)

Método Endpoint Descripción
POST /login Autentica al usuario. Recibe JSON {email, password} y devuelve una cookie HttpOnly.
GET /health Chequeo de estado (Health Check). Devuelve 200 OK si el sistema está operativo.

🏭 Gestión de Activos (Assets)

Método Endpoint Descripción
GET /assets Lista paginada de activos. Soporta filtros (page, size, search, site_id, etc.).
GET /assets/full (Nuevo) Lista enriquecida. Incluye el campo detected_vendor cruzando la MAC con la BD de fabricantes.
POST /assets Crea un nuevo activo manualmente.
GET /assets/:id Obtiene el detalle completo de un activo por su UUID.
PUT /assets/:id Actualiza los datos de un activo existente.
DELETE /assets/:id Elimina un activo (Soft Delete / Borrado lógico).
POST /assets/bulk-delete Elimina múltiples activos en una sola petición. Recibe { ids: [uuid, uuid] }.

📂 Archivos e Importación

Método Endpoint Descripción
POST /pcap/upload Sube un archivo .pcap. Analiza tráfico, extrae IPs/MACs y crea activos automáticamente.
POST /import/mac-vendors (Nuevo) Carga el JSON de maclookup para actualizar la base de datos de fabricantes OUI.
POST /import/xlsx/preview Sube un Excel para previsualizar activos antes de importarlos masivamente.
POST /print/generate Genera un reporte PDF (Ficha Técnica) de un activo específico.
GET /uploads/* Sirve archivos estáticos subidos al servidor.

📄 Plantilla de Importación (Excel/CSV)

El sistema espera un archivo con las siguientes columnas para la importación masiva de activos. Las columnas IP Address y MAC Address son opcionales para activos offline (repuestos).

Name Tag IP Address MAC Address Serial Number Model Type Manufacturer Site Area Criticality
Main PLC Line 1 PLC-MTY-01 192.168.1.10 00:1C:06:A1:B2:C3 SN-998877 S7-1500 PLC Siemens Planta Monterrey Ensamble High
HMI Panel A HMI-MTY-01 192.168.1.11 00:0C:29:D4:E5:F6 SN-554433 TP1200 HMI Siemens Planta Monterrey Ensamble Medium
Robot Weld 3 ROB-WELD-03 192.168.2.50 00:50:56:11:22:33 FAN-2023 R-2000iD Robot Fanuc Planta Querétaro Soldadura Critical
Switch Core SW-CORE-01 10.10.10.1 E8:65:D4:88:99:00 J9729A 2920-48G Switch HP Planta Monterrey IDF-01 High
Repuesto VFD SPARE-VFD-04 SN-112233 PowerFlex Drive Rockwell Almacén Central Estante 4 Low

📊 Dashboard y Visualización

Método Endpoint Descripción
GET /dashboard/stats Devuelve KPIs: total de activos, activos críticos, riesgosos y distribución por estado.
GET /asset-connections/network-topology Devuelve nodos y aristas (grafo) para visualizar el mapa de red interactivo.
GET /search/global Buscador global rápido. Encuentra coincidencias en activos y sitios simultáneamente.

🗺️ Catálogos y Jerarquías

Método Endpoint Descripción
GET /sites Lista los sitios físicos (ej: Plantas).
GET /areas Lista las áreas dentro de los sitios (ej: Líneas de producción).
GET /locations Lista ubicaciones específicas (ej: Racks, Gabinetes).
GET /manufacturers Lista el catálogo oficial de fabricantes (Siemens, Rockwell, etc.).
GET /suppliers Lista los proveedores registrados.
GET /asset-types Lista los tipos de activo (PLC, HMI, Robot, Sensor).
GET /asset-statuses Lista los estados posibles (Activo, Mantenimiento, Offline).

👤 Usuario

Método Endpoint Descripción
GET /users/me Devuelve la información del perfil del usuario logueado actualmente.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors