ISKEAY
OSINT-platform
Een platform voor onderzoek in openbare bronnen. Het is geen zoekmachine, maar een systeem dat laat zien waar informatie vandaan komt en wat elkaar tegenspreekt.
- 59 toolsAchter een register met een vast schema
- 36 adaptersExtra bronnen voor wat de kerntools missen
- Mistral-agentKiest zelf de volgende onderzoeksstap
- FastAPI en Next.jsPython-backend, TypeScript-dashboard
Hoe het werkt
Een onderzoek begint met één gegeven en eindigt met bewijs dat je kunt nalopen.
- InvoerEen naam, username, e-mail, telefoonnummer, profiel-URL of afbeelding.
- AgentMistral kiest de tools, geheugen onthoudt wat al bekend is en een wachtrij houdt het werk traceerbaar.
- Bronnen36 extra adapters vullen gaten die de 59 kerntools laten liggen.
- BewijsEvidence Court zet een plafond op zwakke of tegenstrijdige signalen.
- DashboardLive status, een graaf, bewijsregels en exports.
De opzet
De backend is FastAPI. Routes voor zoeken, de assistent en cases komen samen in één vast resultaatmodel, zodat scanstatus en resultaten altijd op dezelfde plek staan.
Scans draaien als taken in een wachtrij, met live updates naar het dashboard en een terugvaloptie die zelf vraagt. De standaardopslag is SQLite, met een apart pad voor graafgegevens en bewijsregels.
In het kort
- FastAPI-backend met eigen routes voor zoeken, assistent en cases.
- Mistral-agent met function-calling en geheugen voor entiteiten, bewijs en tegenstrijdigheden.
- Asynchrone wachtrij met live updates en dubbele-werk-detectie die blijft staan.
- Next.js-dashboard voor langlopende scans.
Een hoge score telt pas als het bewijs klopt
De sterkste keuze in ISKEAY is dat onzekerheid zichtbaar blijft. Ruwe hits, geen-resultaat en tegenstrijdigheden krijgen allemaal een plek in het model, in plaats van te worden weggemiddeld.
Evidence Court zet een plafond op een score zodra bewijs zwak, tegenstrijdig of niet onafhankelijk genoeg is. De stopregel blokkeert afronden zolang belangrijke bronnen, acties of ankerpunten nog open staan. Een hit is dus nooit automatisch een conclusie.
Veel vinden is niet genoeg. Je moet ook kunnen uitleggen waarom het relevant is.
def _evidence_court_ceiling(self, memory):
try:
verdicts = self.EVIDENCE_COURT.evaluate(memory)
return self.EVIDENCE_COURT.confidence_ceiling(verdicts)
except Exception as exc:
logger.debug("suppressed error: %s", exc)
return (
self.EVIDENCE_COURT_FAIL_CLOSED_CEILING,
"Evidence Court could not evaluate "
"all evidence safely.",
)Als de beoordeling zelf faalt, valt het systeem terug op het laagste plafond. Het faalt dus naar voorzichtig, niet naar zelfverzekerd.
59 tools, niet als losse trucjes
Elke tool zit achter een register met een vast schema. Een controle zorgt dat de catalogus compleet is.
Zoeken
google_dork, serper_dork, SearXNG en Brave voor gerichte zoekopdrachten.
Gebruikersnamen
username_scan, verify_account, Maigret en Sherlock voor brede platformchecks.
E-mail en telefoon
email_discovery, Holehe, PhoneInfoga en Gravatar voor identiteitssignalen.
Datalekken
breach_intel, paste_intel, darkweb_intel en stealer_intel. Deze bronnen zijn ruisgevoelig en worden zo behandeld.
Domeinen en organisaties
whois_intel, cert_intel, asn_intel en archive_intel voor publieke registers.
Terminal als terugval
Een uitvoerder met toegestane commando's draait bekende CLI-tools, zonder ongecontroleerde shell.
Grenzen
Waarvoor dit bedoeld is
- Alleen legaal, afgesproken en proportioneel onderzoek. Het is geen surveillance-tool.
- Deze pagina bevat geen echte scan-uitvoer en geen persoonsgegevens.
Wat je moet weten
- Resultaten hangen af van lokale diensten, API-sleutels en veranderingen op platformen.
- Het blijft een persoonlijk project.
Vragen over dit project?
Ik laat graag zien hoe het werkt, en wat ik anders zou doen.