Centralize provider caching and rate-limit handling, then add Domain/URL/Hash IOC types and safer VT/IPInfo key resolution so lookups stay reliable on free-tier APIs.
46 lines
1.0 KiB
Python
46 lines
1.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Offline validation for plugins/ioclib.py helpers.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from plugins.ioclib import parse_mb_info, vt_url_id # noqa: E402
|
|
|
|
|
|
def _assert(cond: bool, msg: str):
|
|
if not cond:
|
|
raise AssertionError(msg)
|
|
|
|
|
|
def main() -> int:
|
|
_assert(vt_url_id("http://example.com/") == "aHR0cDovL2V4YW1wbGUuY29tLw", "vt_url_id known example")
|
|
|
|
mb = parse_mb_info(
|
|
{
|
|
"query_status": "ok",
|
|
"data": [
|
|
{
|
|
"sha256_hash": "0" * 64,
|
|
"signature": "Emotet",
|
|
"tags": ["tag1", "tag2"],
|
|
}
|
|
],
|
|
}
|
|
)
|
|
_assert(mb.status == "ok", "mb.status")
|
|
_assert(mb.signature == "Emotet", "mb.signature")
|
|
_assert(mb.tags == ("tag1", "tag2"), "mb.tags")
|
|
print("ok")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|
|
|