Techniczny punkt wejścia. Bez marketingu. Poniżej: quickstart (import → pack → retest), formaty importu z realnymi parserami, przykłady curl, kontrakt openapi.json, kanon statusów i znane ograniczenia. Baza API: https://k0nsult.cloud/api/ip3/v1.
MEDIA_SIGNAL (sygnał do triażu), nie dowód naprawy. Wszelkie działania o charakterze
testu bezpieczeństwa (BAS, red-team) wyłącznie w granicach pisemnych Rules of Engagement.
Ta strona nie zawiera payloadów ani instrukcji ofensywnych. Doktryna: claim ≤ proof.
Realne parsery Burp/ZAP/Nessus/Qualys/CSV/JSON + YARA/RE zapisują incydenty i evidence (sha256 + chain-of-custody) do PostgreSQL.
Reguła close-with-evidence egzekwowana w bazie: bez rekordu CONFIRMED zamknięcie zwraca 422.
Evidence-package (JSON/PDF + package_sha256) odzwierciedla każdą zmianę stanu.
Kanon liczby testów i dowodów: Evidence Matrix (/roadmap-dev). Kanon statusu każdego elementu: Status Matrix. Ta strona nie duplikuje liczb „NN/NN" — linkuje do źródła prawdy.
Minimalna ścieżka end-to-end na warstwie v1 (auth-gated, DB). Wymaga konta v1 (na zaproszenie — patrz roadmap-dev). Sample pack niżej działa bez logowania.
POST /api/ip3/v1/auth/login → zwraca {token, token_type:"Bearer", expires_in:3600, roles[]}. Token = JWT ważny 1h./imports/burp|zap|nessus|qualys|csv|generic|re) z nagłówkiem Authorization: Bearer <token>. Odpowiedź 201 = connector_run (utworzone incydenty + evidence, import=MEDIA_SIGNAL).GET /api/ip3/v1/reports/evidence-package/:id?format=pdf → pobieralny PDF; ?format=json → manifest + package_sha256 + chain-of-custody.POST /incidents/:id/evidence, ustaw retest CONFIRMED (PATCH /incidents/:id), a następnie POST /incidents/:id/close. Bez rekordu CONFIRMED → 422. Pobierz pack ponownie — package_sha256 się zmieni (dowód zmiany stanu).Każdy endpoint ma test jednostkowy parsera + test integracyjny na żywej bazie. Kanon liczb → Evidence Matrix.
| Konektor | Endpoint (POST) | Content-Type / body | Status |
|---|---|---|---|
| Burp Suite | /imports/burp | application/xml — surowy eksport XML (<issue>) | LIVE v1 |
| OWASP ZAP | /imports/zap | application/json (alerts) lub application/xml | LIVE v1 |
| Nessus / Tenable | /imports/nessus | text/csv — kolumny Name,Risk,CVE,CVSS,Host… | LIVE v1 |
| Qualys VM | /imports/qualys | text/csv (QID,Title,Severity,CVE ID,CVSS Base,Host,Threat) lub application/xml | LIVE v1 |
| Generic CSV | /imports/csv | text/csv — nagłówki title,severity,cve?,cvss?,type?,host? | LIVE v1 |
| Generic JSON | /imports/generic | application/json — {source_tool, findings:[{title,severity,cve?,cvss?,incident_type?}]} | LIVE v1 |
| YARA / RE (malware) | /imports/re | application/json — YARA {matches|rules} lub {findings:[{title,severity,type,sha256,technique}]} | LIVE v1 |
Normalizacja: severity → P0–P3, enrichment offline (KEV/CVSS/EPSS hint z seedu), mapowanie MITRE ATT&CK (GET /incidents/:id/ttp). Online-lookup NVD/CISA, STIX/TAXII, deduplikacja/idempotencja = ROADMAP. YARA/RE: ipIII orkiestruje dowody z warsztatu RE — nie deobfuskuje.
curlBaza: API=https://k0nsult.cloud/api/ip3/v1. Zamień :id, :eid i dane logowania na własne. Uwierzytelnianie: Authorization: Bearer <token>.
# zwraca {token, token_type:"Bearer", expires_in:3600, roles[]} TOKEN=$(curl -s -X POST https://k0nsult.cloud/api/ip3/v1/auth/login \ -H 'Content-Type: application/json' \ -d '{"email":"analyst@example.org","password":"<secret>"}' \ | sed -n 's/.*"token":"\([^"]*\)".*/\1/p')
curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/burp \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/xml' \ --data-binary @burp-export.xml # 201 {ok,connector_run:{...},created,evidence_ids[...]} | 422 no_findings
curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/nessus \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: text/csv' \ --data-binary @nessus.csv curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/zap \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \ --data-binary @zap-report.json curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/generic \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \ -d '{"source_tool":"custom-dast","findings":[{"title":"SQLi /login","severity":"high","cve":"CVE-2021-44228","cvss":9.8,"incident_type":"injection"}]}'
curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/re \ -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \ -d '{"findings":[{"title":"YARA hit: Emotet loader","severity":"high","type":"malware","sha256":"<hash>","technique":"T1027"}]}' # ipIII = evidence orchestration, NIE disassembler/deobfuscator
curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/reports/evidence-package/:id?format=pdf" \ -H "Authorization: Bearer $TOKEN" -o board-pack.pdf # ?format=json => manifest + package_sha256 + chain-of-custody + audit trail
curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/incidents/:id/legal-triggers?personal_data=true&high_risk=true&entity=bank§or=finance" \ -H "Authorization: Bearer $TOKEN" # {triggers[],trigger_count,basis,doctrine} — DORA art.19 / NIS2 24h-72h / RODO art.33-34 / AI Act art.73 # zegary (deadline ISO od created_at) + draft powiadomienia. DECISION-SUPPORT, nie porada prawna.
curl -s -X GET https://k0nsult.cloud/api/ip3/v1/incidents/:id/ttp \ -H "Authorization: Bearer $TOKEN" # {ttps:[{id:"T1027",tactic,name}...],count} — heurystyka, nie automatyczna atrybucja
curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/engagements/:eid/report-package?format=pdf" \ -H "Authorization: Bearer $TOKEN" -o tlpt-report.pdf # raport TLPT: engagement + timeline + evidence-register + final-report + manifest + package_sha256
openapi.jsonKontrakt referencyjny (OpenAPI 3.1). Nie jest to SLA. Statusy per-endpoint w polu x-status (LIVE / GAP / reference).
GET /ai-truth/ipIII/openapi.json
info.version: 0.1.0-reference · x-status: reference-contract
API Docs — viewer OpenAPI (inline, CSP-safe).
API Explorer — interaktywny, woła żywe read-path endpointy.
bearer (JWT z /auth/login). Nagłówek x-konsult-secret = DEPRECATED do prod (docelowo OIDC/OAuth2 + mTLS).
/api/ip3/incidents = publiczny read-path (dane SIMULATION). /api/ip3/v1/* = LIVE auth-gated (JWT/RBAC/PostgreSQL, zapis). /api/incidents = legacy placeholder GAP (chroniony, 401 anon). Nie mieszać warstw.Ta strona nie definiuje statusów lokalnie. Jedyne źródło prawdy dla statusu każdego elementu portalu → Status Matrix. Poniżej tylko legenda reguły §16.
| Status | Znaczenie | Warunek nadania |
|---|---|---|
| LIVE | Działa produkcyjnie/na gałęzi z dowodem. | Kod + test + endpoint (lub link do artefaktu). |
| DEMO | Ścieżka odczytu na danych przykładowych. | Endpoint read-path działa, dane oznaczone jako demo. |
| SIMULATION | Wartości/incydenty ilustracyjne. | Jawnie „symulacja", nie stan realnej infrastruktury. |
| ROADMAP | Specyfikacja docelowa, jeszcze nie zbudowane. | Opisane kryteria akceptacji, brak działającego kodu. |
| GAP | Hipoteza/luka bez pokrycia dowodowego. | Brak dowodu — nie wolno przedstawiać jako fakt. |
Skrót. Pełny, wersjonowany rejestr → Known Limitations. Deklarujemy je zamiast je ukrywać — to jest waluta zaufania.
x-konsult-secret deprecated na prod.created_at).Syntetyczne artefakty do testu parserów i kształtu odpowiedzi — publiczne, bez tokenu, zero danych realnych. Whitelist plików (zero path-traversal).
| Plik | Typ | Do czego |
|---|---|---|
import-burp-demo.xml | application/xml | wejście dla /imports/burp |
import-nessus-demo.csv | text/csv | wejście dla /imports/nessus |
evidence-package-demo.json | application/json | kształt board pack (manifest + hash) |
README.txt | text/plain | opis + zasady użycia |
# indeks sample pack (JSON) curl -s https://k0nsult.cloud/ai-truth/ipIII/samples # pobierz demo i sprawdź parser lokalnie (bez zapisu — potrzebny token do /imports) curl -s -o burp.xml https://k0nsult.cloud/ai-truth/ipIII/samples/import-burp-demo.xml
Znalazłeś błąd w ipIII? Zgłoś przez /.well-known/security.txt lub stronę disclosure / CVD. Testy bezpieczeństwa samego portalu — tylko po uzgodnieniu zakresu (RoE). Weryfikator integralności pakietów: verify.