Memahami Objek Atribut dalam VirusTotal API v3
Objek Attributes dalam VirusTotal API v3 adalah wadah data utama yang berisi seluruh metrik, hasil pemindaian mesin antivirus, metadata file, dan analisis perilaku dari suatu entitas (baik itu file, URL, IP address, atau domain). Setiap kali Anda melakukan kueri ke endpoint VirusTotal menggunakan API v3, data inti yang menjelaskan karakteristik objek tersebut selalu dikemas di dalam properti attributes pada JSON response.
Dalam ekosistem VirusTotal, memahami struktur objek ini krusial bagi pengembang SOC (Security Operations Center), analis malware, dan insinyur otomatisasi keamanan yang ingin menguraikan (parsing) hasil deteksi keamanan secara programatis tanpa harus membaca dashboard web secara manual.
Struktur Utama Objek Atribut File
Ketika Anda menganalisis file melalui hash (MD5, SHA-1, SHA-256) pada endpoint /api/v3/files/{id}, objek attributes memuat puluhan field data penting. Berikut adalah matriks komponen kunci yang paling sering diakses dalam pengembangan skrip keamanan.
| Nama Atribut (Field) | Tipe Data | Deskripsi Keterangan |
|---|---|---|
last_analysis_stats |
Object | Ringkasan hasil deteksi dari seluruh vendor (harmless, malicious, suspicious, undetected, timeout). |
last_analysis_results |
Object | Hasil detail per vendor antivirus (misal: Kaspersky, Microsoft, Sophos mendeteksi sebagai apa). |
sha256 / sha1 / md5 |
String | Kriptografis hash unik dari sampel file yang dianalisis. |
size |
Integer | Ukuran file dalam satuan byte. |
magic |
String | Identifikasi tipe file berdasarkan magic bytes (misal: PE32 executable, PDF document). |
first_submission_date |
Integer (Epoch) | Waktu pertama kali file ini diunggah ke database VirusTotal. |
times_submitted |
Integer | Jumlah total file identik yang pernah dikirimkan oleh pengguna lain. |
pe_info / elf_info |
Object | Struktur header spesifik biner (jika file berupa executable Windows atau Linux). |
Contoh Implementasi Respon JSON
Berikut adalah cuplikan kode nyata dari struktur objek atribut yang dikembalikan oleh server VirusTotal saat melakukan pemanggilan API terhadap file tertentu.
{
"data": {
"id": "84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349",
"type": "file",
"attributes": {
"size": 102400,
"sha256": "84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349",
"md5": "d41d8cd98f00b204e9800998ecf8427e",
"magic": "PE32 executable (GUI) Intel 80386, for MS Windows",
"last_analysis_stats": {
"harmless": 0,
"malicious": 58,
"suspicious": 2,
"undetected": 0,
"timeout": 0
},
"times_submitted": 12,
"first_submission_date": 1672531199
}
}
}
Cara Mengambil Atribut dengan Python
Untuk mengekstrak data dari objek atribut ini secara otomatis, Anda dapat menggunakan pustaka requests standar di Python. Pastikan Anda sudah memiliki kunci API yang valid dari akun VirusTotal.
- Instal pustaka requests melalui terminal:
pip install requests - Gunakan endpoint v3 dengan menyertakan header x-apikey.
- Akses kamus data Python pada kunci
['data']['attributes']untuk membaca metrik keamanan.
import requests
url = "https://www.virustotal.com/api/v3/files/84c82835a5d21bbcf75a61763d8bab4f52c2e8c64ec3bf8575031b26c61f9349"
headers = {
"accept": "application/json",
"x-apikey": "KUNCI_API_ANDA_DI_SINI"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
attributes = data['data']['attributes']
malicious_count = attributes['last_analysis_stats']['malicious']
file_magic = attributes['magic']
print(f"Jumlah deteksi malware: {malicious_count}")
print(f"Tipe file: {file_magic}")
else:
print(f"Gagal mengambil data: {response.status_code}")
Troubleshooting Umum Akses API
Kendala yang sering ditemui pengembang saat memproses objek atribut meliputi:
- HTTP 403 Forbidden: Kunci API tidak valid atau kuota harian/menit telah habis (terutama pada akun publik gratis yang dibatasi 4 permintaan per menit).
- KeyError pada Python: File belum pernah dianalisis sebelumnya di database VirusTotal, sehingga beberapa atribut seperti
last_analysis_resultsmungkin belum tersedia sebelum dilakukan pemindaian ulang (re-scan). - Format Hash Salah: Pastikan string hash yang dimasukkan dalam URL sesuai dengan standar SHA-256, SHA-1, atau MD5 tanpa karakter spasi tambahan.