Adamantine

Adamantine je software pro detekci malwaru v souborech. Typické použití je pro sanitizaci souborových vstupů v informačních systémech. Efektivně zabraňuje nahrání virů, ransomwaru, exploitů apod. do klíčové firemní infrastruktury. Adamantine lze také použít jako ochranu klientů před stažením nebezpečných souborů ze zabezpečených služeb pomocí Adamantine, tím se zabrání reinfekci klientských stanic.

Software Adamantine lze provozovat buď vzdáleně přes cloud provozovaný společnosti SpongeData nebo formou On-Premise, kdy je Adamantine provozován přímo u zákazníka.

Obsah

REST API

Základní URL: https://adamantine.spongedata.cz

Autorizace

Ve všech požadavích na server musí být nastavena hlavička Authorization: token __TOKEN__. Pokud je použit nevalidní token (nebo žádný), server odpoví se status kódem 401. Pokud byl token zabanován, server odpoví se status kódem 403.

Odpovědi od serveru

Všechny odpovědi od serveru jsou ve formátu JSON. Pokud server vrací chybu, obsahem tohoto JSONu je vždy { "error": "chybová hláška" }. Chybové hlašky jsou pouze v angličtině!

Zpracování souboru

POST /v1/process

Zpracuje soubor a vrátí seznam nalezených virů.

Parametry dotazu:

Hlavičky:

Tělo: Obsah souboru jako binární stream.

Odpověď:

Pokud je soubor úspěšně zpracován, server vrátí JSON obsahující následující klíče:

Pokud nastane chyba, server odpoví jedním z následujících status kódů:

Příklad:

cURL:

$ curl -X POST \
    --header "Content-Type: application/octet-stream" \
    --header "Authorization: token __TOKEN__" \
    https://adamantine.spongedata.cz/v1/process?filename=eicar.zip \
    --data-binary @~/Downloads/eicar.zip

> {
>   "viruses": [
>     "EICAR Test-NOT virus!!!||algo",
>     "Eicar test file",
>     "Win.Test.EICAR_HDB-1"
>   ],
>   "filename": "eicar.zip",
>   "remainingAccess": 93
> }

Node.js:

const request = require('request');
const fs = require('fs');

request.post('https://adamantine.spongedata.cz/v1/process?filename=eicar.zip', {
  headers: {
    'Content-Type': 'application/octet-stream',
    'Authorization': 'token __TOKEN__',
  },
  body: fs.createReadStream('/home/user/Downloads/eicar.zip'),
}, (err, res) => {
  const json = JSON.parse(res.body);
  if (json.error) {
    console.error(json.error);
  } else {
    console.log(json.viruses);
  }
});

Python:

import json
import requests

with open("/home/user/Downloads/eicar.zip", "rb") as f:
    r = requests.post(
        "https://adamantine.spongedata.cz/v1/process?filename=eicar.zip",
        headers={
            "Content-Type": "application/octet-stream",
            "Authorization": "token __TOKEN__"
        },
        data=f)

    if r.ok:
        res = json.loads(r.content)
        err = res.get("error", None)

        if err:
            print("ERROR:", err)
        else:
            print(res["viruses"])

    r.close()

PHP:

<?php
require __DIR__.'/vendor/autoload.php';

$client = new GuzzleHttp\Client();

$body = GuzzleHttp\Psr7\Utils::tryFopen('/home/user/Downloads/eicar.zip', 'rb');

$res = $client->request('POST', 'https://adamantine.spongedata.cz/v1/process?filename=eicar.zip', [
  'headers' => [
    'Content-Type' => 'application/octet-stream',
    'Authorization' => 'token __TOKEN__'
  ],
  'body' => $body
]);

$json = json_decode($res->getBody(), true);

if (array_key_exists('error', $json)) {
  echo "ERROR: $json[error]\n";
} else {
  echo var_dump($json['viruses']);
}