{"id":46668500,"url":"https://github.com/albertotijunelis/hashguard","last_synced_at":"2026-03-12T03:01:06.349Z","repository":{"id":342882985,"uuid":"1175508279","full_name":"albertotijunelis/hashguard","owner":"albertotijunelis","description":"Professional file verification \u0026 threat intelligence platform — hashing, signatures, PE analysis, YARA, risk scoring, IOC extraction, and multi-source threat intel.","archived":false,"fork":false,"pushed_at":"2026-03-08T19:25:16.000Z","size":85459,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T19:27:36.168Z","etag":null,"topics":["file-analysis","malware-analysis","pe-analysis","python","security","threat-intelligence","virustotal","yara"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/albertotijunelis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-07T20:04:48.000Z","updated_at":"2026-03-08T19:25:19.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/albertotijunelis/hashguard","commit_stats":null,"previous_names":["albertotijunelis/safeverify","albertotijunelis/hashguard"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/albertotijunelis/hashguard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertotijunelis%2Fhashguard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertotijunelis%2Fhashguard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertotijunelis%2Fhashguard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertotijunelis%2Fhashguard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/albertotijunelis","download_url":"https://codeload.github.com/albertotijunelis/hashguard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertotijunelis%2Fhashguard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30331971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-analysis","malware-analysis","pe-analysis","python","security","threat-intelligence","virustotal","yara"],"created_at":"2026-03-08T21:09:51.456Z","updated_at":"2026-03-12T03:01:06.339Z","avatar_url":"https://github.com/albertotijunelis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/albertotijunelis/hashguard/main/assets/branding/icon%2Btexto.png\" alt=\"HashGuard\" height=\"160\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eMalware Research \u0026 Threat Intelligence Platform\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/albertotijunelis/hashguard/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/badge/%E2%AC%87%EF%B8%8F_Download-v1.1.2-FF6600?style=for-the-badge\" alt=\"Download\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/hashguard/\"\u003e\u003cimg src=\"https://img.shields.io/badge/%F0%9F%93%A6_PyPI-hashguard-FF6600?style=for-the-badge\" alt=\"PyPI\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Elastic--2.0-003366.svg\" alt=\"Elastic License 2.0\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.org/project/hashguard/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/hashguard?color=FF6600\u0026label=pypi\" alt=\"PyPI version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/albertotijunelis/hashguard/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/albertotijunelis/hashguard/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/albertotijunelis/hashguard\"\u003e\u003cimg src=\"https://codecov.io/gh/albertotijunelis/hashguard/branch/main/graph/badge.svg\" alt=\"Coverage\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/python-3.9%2B-FF6600.svg\" alt=\"Python 3.9+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-informational\" alt=\"Platform\"\u003e\n\u003c/p\u003e\n\n---\n\nHashGuard is a professional malware research platform that combines static analysis, ML classification, behavioral detection, script deobfuscation, sandbox monitoring, 167 YARA rules, multi-source threat intelligence, fuzzy hashing, IOC graphing, and a web dashboard — accessible via CLI, web browser, or Python API.\n\n## What's new in v1.1.2\n\n- **STIX 2.1 Export** — one-click export of analysis results as a STIX 2.1 Bundle; compatible with MISP, OpenCTI, TheHive, Splunk SOAR\n- **CI/CD Pipeline** — GitHub Actions: test matrix (3.9–3.13 × Ubuntu/Windows), CodeQL security scanning, automated release builds\n- **ML Training Pipeline** — train your own models (Random Forest, Gradient Boosting, Ensemble) on 63 rich features extracted from analysis results; real-time classification on every upload\n- **Batch Ingest** — bulk sample ingestion from MalwareBazaar (abuse.ch Auth-Key + selectors) and local directories; automatic feature extraction and dataset building\n- **Dual ML Classification** — built-in 5-class classifier (22 PE features) + custom trained model (63 features) with class probabilities and model management\n- **Web Dashboard** — FastAPI + Alpine.js dark-themed SPA with file upload, IOC graphs, timelines, cluster visualization, ML training controls, and model management\n- **ML Classification** — Gradient Boosted Trees + Random Forest ensemble (benign / trojan / ransomware / miner / stealer)\n- **Script Deobfuscation** — PowerShell, VBScript, JavaScript, Batch, HTA deobfuscation via pattern matching\n- **Behavioral Sandbox** — Windows Sandbox integration with ETW-based process monitoring and system snapshot diffing\n- **Unpacker** — UPX auto-unpacking, packer/protector detection, Unicorn CPU emulation (experimental)\n- **158 YARA Rules** — expanded from 28 to 158 rules across 14 categories (C2, evasion, persistence, exploits, stealers, ransomware, rootkits, documents, miners, destructive...)\n- **Threat Intelligence** — added ThreatFox + Shodan InternetDB (now 7 sources total)\n- **IOC Enrichment** — passive DNS, IP geolocation, WHOIS, domain age analysis\n- **IOC Graphs** — visual relationship mapping (file → domain → IP → family) with vis.js\n- **Malware Clustering** — DBSCAN on ML feature vectors + fuzzy hash similarity + imphash grouping\n- **Family Detection** — YARA metadata, threat intel, imphash patterns, string signatures\n- **Timeline Analysis** — delivery → execution → persistence → C2 → action phase sequencing\n- **SQLite Database** — persistent storage for all analysis results, IOCs, behaviors, clusters, and ML datasets\n\n## Features\n\n### Analysis Engine\n\n| Category | Feature | Details |\n|----------|---------|---------|\n| **Hashing** | Cryptographic | SHA-256, SHA-1, MD5 in a single streaming pass |\n| **Fuzzy Hashing** | Similarity | ssdeep (CTPH) + TLSH for variant detection |\n| **Signatures** | Known-bad | 21 malware hash signatures in `signatures.json` |\n| **Risk Score** | Composite | 0–100 score → clean / suspicious / malicious verdict |\n| **PE Analysis** | Deep inspection | Sections, imports, entropy, packer detection, TLS callbacks, anti-debug/anti-VM, rich headers, overlay analysis |\n| **YARA** | Rule engine | **158 rules** across 14 categories, auto-loads custom `.yar` files |\n| **Capabilities** | CAPA-inspired | Ransomware, keylogger, reverse shell, credential theft, persistence, evasion technique detection |\n| **ML** | Classification | Built-in 5-class ensemble (GBT + RF) + custom trained models (RF, GBT, Ensemble) |\n| **ML Training** | Pipeline | 63-feature extraction, dataset management, model training, real-time prediction |\n| **Batch Ingest** | Dataset | MalwareBazaar bulk ingestion (Auth-Key + selectors) and local directory scanning |\n| **Deobfuscation** | Script analysis | PowerShell, VBScript, JavaScript, Batch, HTA pattern-based deobfuscation |\n| **Unpacker** | Packing | UPX auto-unpack, MPRESS/Themida/VMProtect detection, Unicorn emulation |\n| **Sandbox** | Behavioral | Windows Sandbox + ETW monitoring, system snapshot diffing |\n| **IOC Extraction** | Strings | URLs, IPs, domains, emails, PowerShell commands, crypto wallets, registry keys |\n| **Family Detection** | Attribution | YARA metadata + threat intel + imphash + string signature matching |\n| **Clustering** | Grouping | DBSCAN on ML features, fuzzy hash similarity, shared IOC analysis |\n| **STIX Export** | Interop | STIX 2.1 Bundle (File, Malware, Indicator, AttackPattern, SCOs, Notes) |\n| **Timeline** | Sequencing | Delivery → execution → persistence → C2 → action phase mapping |\n\n### Threat Intelligence (7 sources)\n\n| Source | Type | Key Required |\n|--------|------|:---:|\n| MalwareBazaar | Hash reputation | No |\n| URLhaus | Payload database | No |\n| ThreatFox | IOC database | No |\n| AlienVault OTX | Hash reputation | No |\n| Shodan InternetDB | IP intelligence | No |\n| AbuseIPDB | IP reputation | Yes (free tier) |\n| VirusTotal | Multi-engine scan | Yes (opt-in `--vt`) |\n\n### Interfaces\n\n| Interface | Description |\n|-----------|-------------|\n| **CLI** | Single-file, URL, and batch modes with JSON / CSV / HTML reports |\n| **Web Dashboard** | FastAPI SPA with file upload, IOC graphs, timelines, clustering, and search |\n| **REST API** | Full programmatic access at `http://127.0.0.1:8000/api/docs` |\n| **ML API** | Train models, manage datasets, predict samples via REST endpoints |\n| **Python API** | `from hashguard import analyze` — embeddable in your own scripts |\n\n## Architecture\n\n```\n┌──────────────────────────────────────────────────────────────────────┐\n│                           HashGuard v1.1.2                           │\n├───────────────┬──────────────┬───────────┬───────────────────────────┤\n│     CLI       │ Web Dashboard│  REST API │       Python API          │\n│   cli.py      │ web/api.py   │  /api/*   │ from hashguard import ...│\n├───────────────┴──────────────┴───────────┴───────────────────────────┤\n│                         scanner.py                                    │\n│      compute_hashes() → analyze() → analyze_url()                    │\n├──────────┬──────────┬──────────┬──────────┬──────────┬───────────────┤\n│ PE       │ YARA     │ Threat   │ ML       │ Sandbox  │ Deobfuscator │\n│ Analyzer │ Scanner  │ Intel    │ Classify │ Monitor  │ Unpacker     │\n│ advanced │ 167 rules│ 7 sources│ GBT + RF │ ETW/Snap │ UPX/Unicorn  │\n│ _pe.py   │ 15 files │ + cache  │ 5 class  │ diff     │              │\n├──────────┼──────────┼──────────┼──────────┼──────────┼───────────────┤\n│ ML Train │ Feature  │ Batch    │ Family   │ Cluster  │ IOC Enricher │\n│ Pipeline │ Extract  │ Ingest   │ Detector │ Engine   │ DNS/Geo/WHOIS│\n│ RF/GBT/E │ 63 feats │ abuse.ch │ fuzzy    │ DBSCAN   │              │\n├──────────┼──────────┼──────────┼──────────┼──────────┼───────────────┤\n│ IOC      │ Timeline │ Risk     │ STIX     │          │              │\n│ Graph    │ Builder  │ Scorer   │ Export   │          │              │\n│ vis.js   │ phases   │ 0-100    │ 2.1      │          │              │\n├──────────┴──────────┴──────────┴──────────┴──────────┴───────────────┤\n│  database.py (SQLite)  │  reports.py (JSON/CSV/HTML)  │  config.py  │\n└────────────────────────┴──────────────────────────────┴──────────────┘\n```\n\n## Quick start\n\n### Install from PyPI\n\n```bash\npip install hashguard\n```\n\n### Install from source\n\n```bash\ngit clone https://github.com/albertotijunelis/hashguard.git\ncd hashguard\npip install -e \".[full]\"    # includes lief, tlsh, networkx\n```\n\n### CLI\n\n```bash\nhashguard file.exe                            # full analysis pipeline\nhashguard file.exe --vt --json                # + VirusTotal (requires VT_API_KEY)\nhashguard --url https://example.com/file.exe  # download \u0026 analyze\nhashguard --batch ./samples -o report.html    # batch scan → HTML report\nhashguard --web                               # launch web dashboard\n```\n\n### Web Dashboard\n\n```bash\nhashguard-web                                 # opens http://127.0.0.1:8000\n```\n\nThe web dashboard features dark theme, file upload with drag-and-drop, real-time analysis progress, IOC relationship graphs (vis.js), behavior timelines, malware clustering visualization, sample search, and full analysis history.\n\n### Python API\n\n```python\nfrom hashguard import analyze, analyze_url, compute_hashes, is_malware\nfrom hashguard import analyze_pe, yara_scan, query_threat_intel\n\n# Full analysis (hashes + PE + YARA + ML + capabilities + threat intel + risk)\nresult = analyze(\"file.exe\")\n\nprint(result[\"hashes\"][\"sha256\"])\nprint(result[\"risk_score\"])          # {\"score\": 82, \"verdict\": \"malicious\", \"factors\": [...]}\nprint(result[\"yara_matches\"])        # YARA rule hits\nprint(result[\"strings\"])             # extracted URLs, IPs, domains, wallets\nprint(result[\"threat_intel\"])        # MalwareBazaar + URLhaus + ThreatFox + OTX\nprint(result[\"ml_classification\"])   # {\"label\": \"trojan\", \"confidence\": 0.87}\nprint(result[\"capabilities\"])        # detected behaviors\nprint(result[\"family_detection\"])    # {\"family\": \"AgentTesla\", \"confidence\": 0.9}\n\n# Also query VirusTotal (requires VT_API_KEY env var)\nresult = analyze(\"file.exe\", vt=True)\n\n# Standalone PE analysis\npe_info = analyze_pe(\"file.exe\")\n\n# ML Training Pipeline\nfrom hashguard.ml_trainer import start_training, predict_sample, list_models\nfrom hashguard.batch_ingest import start_ingest\n\n# Train a model on your dataset\ntraining = start_training(mode=\"binary\", algorithm=\"ensemble\", test_size=0.2)\n\n# Predict with trained model\nprediction = predict_sample(features_dict)\n# → {\"predicted_class\": \"malicious\", \"confidence\": 95.0, \"probabilities\": {...}}\n\n# Bulk ingest from MalwareBazaar\nstart_ingest(source=\"recent\", limit=100)\n```\n\n## YARA Rules\n\nHashGuard ships with **158 rules** across **14 categories**. Custom `.yar` / `.yara` files placed in the `yara_rules/` directory are loaded automatically.\n\n| File | Rules | Covers |\n|------|:-----:|--------|\n| `c2_frameworks.yar` | 15 | Cobalt Strike, Metasploit, Sliver, Brute Ratel, Mythic, Havoc, HTTP/DNS/IRC C2, Telegram/Discord C2, ICMP tunneling |\n| `evasion.yar` | 17 | Anti-debug, anti-VM, anti-sandbox, AMSI bypass, ETW patching, process hollowing, direct syscalls, DLL unhooking, sleep obfuscation, APC injection |\n| `persistence.yar` | 16 | Registry run keys, scheduled tasks, WMI events, services, COM hijacking, bootkit, AppInit DLLs, DLL search order, lateral movement (PsExec, DCSync, pass-the-hash) |\n| `destructive.yar` | 15 | MBR/disk/file wipers, HermeticWiper, CaddyWiper, USB/network/email worms, RATs (njRAT, DarkComet, Quasar, Remcos) |\n| `exploits.yar` | 13 | CVE-2017-11882, CVE-2021-44228 (Log4Shell), CVE-2021-34527 (PrintNightmare), Follina, EternalBlue, ZeroLogon, shellcode patterns |\n| `stealers.yar` | 12 | Browser credentials, crypto wallets, Discord tokens, Telegram sessions, Steam, FTP, email, VPN, clipboard monitoring |\n| `documents.yar` | 12 | OLE macros, DDE attacks, template injection, PDF exploits, RTF exploits, OneNote embedded files, ISO/IMG/LNK droppers |\n| `trojans.yar` | 12 | Reverse shells, data exfiltration, downloaders, droppers, firewall/security disabling, UAC bypass, LSASS dumping |\n| `ransomware.yar` | 11 | LockBit, Conti, BlackCat/ALPHV, Hive, REvil, WannaCry, Dharma, ransom notes, shadow copy deletion |\n| `rootkits.yar` | 10 | Driver loading, SSDT/IDT hooking, process/file hiding, bootkit MBR/UEFI, vulnerable driver exploitation |\n| `miners.yar` | 10 | XMRig, Stratum protocol, mining pools, Coinhive, hidden mining, crypto algorithm detection |\n| `packers.yar` | 6 | UPX, MPRESS, ASPack, Themida/VMProtect, Enigma, PECompact |\n| `default.yar` | 5 | PowerShell encoding, process injection, anti-debug, crypto usage, keylogger |\n| `scripts.yar` | 4 | VBA macro droppers, batch payloads, JS droppers, HTA payloads |\n\n## Configuration\n\n| Variable | Description |\n|---|---|\n| `VT_API_KEY` | VirusTotal API key (enables VT lookups with `--vt` flag) |\n| `ABUSE_CH_API_KEY` | abuse.ch Auth-Key for MalwareBazaar bulk ingest (free at bazaar.abuse.ch) |\n| `ABUSEIPDB_API_KEY` | AbuseIPDB API key (free at abuseipdb.com) |\n| `HASHGUARD_SIGNATURES` | Path to custom signatures database |\n\nSettings can also be configured via the **Web Dashboard**, persisted to `%APPDATA%/HashGuard/config.json`.\n\n## Comparison\n\n| Feature | HashGuard | VirusTotal (web) | ClamAV |\n|---------|:----------:|:----------------:|:------:|\n| Offline analysis | **Yes** | No | Yes |\n| Risk scoring | **Yes** | Partial | No |\n| ML classification | **Yes** | No | No |\n| ML training pipeline | **Yes** | No | No |\n| Batch sample ingest | **Yes** | No | No |\n| Script deobfuscation | **Yes** | No | No |\n| Behavioral sandbox | **Yes** | No | No |\n| IOC extraction + graphing | **Yes** | No | No |\n| PE analysis (deep) | **Yes** | Partial | No |\n| YARA rules (158) | **Yes** | No | Yes |\n| STIX 2.1 export | **Yes** | No | No |\n| Malware clustering | **Yes** | No | No |\n| Family detection | **Yes** | **Yes** | Yes |\n| Threat intel (7 sources) | **Yes** | **Yes** | No |\n| Web dashboard | **Yes** | **Yes** | No |\n| CLI + Web API | **Yes** | Web only | CLI only |\n| SQLite persistence | **Yes** | N/A | No |\n| CI/CD pipeline | **Yes** | N/A | No |\n| Windows installer | **Yes** | N/A | Yes |\n| License | **Elastic-2.0** | Proprietary | **GPL** |\n\n## Building\n\n```bash\ncd scripts\npy -3.12 -m PyInstaller hashguard-cli.spec    # CLI + Web executable\n```\n\nReleases are automated via GitHub Actions — push a `v*` tag and the workflow publishes executables, a portable ZIP, and a Windows installer.\nEvery push and PR runs the CI pipeline (pytest matrix, linting) and the security workflow (pip-audit + CodeQL).\n\n## Project structure\n\n```\nsrc/hashguard/\n  scanner.py             core analysis engine\n  risk_scorer.py         composite 0–100 risk scoring\n  string_extractor.py    automated IOC / string extraction\n  pe_analyzer.py         PE executable inspection\n  advanced_pe.py         extended PE analysis (TLS, anti-debug, rich headers)\n  yara_scanner.py        YARA rules engine (158 rules, 14 categories)\n  threat_intel.py        7-source threat intelligence with TTL cache\n  ioc_enrichment.py      passive DNS, geolocation, WHOIS, domain age\n  ioc_graph.py           IOC relationship graphs (vis.js)\n  capability_detector.py CAPA-inspired behavioral detection\n  family_detector.py     malware family identification\n  fuzzy_hasher.py        ssdeep + TLSH fuzzy hashing\n  ml_classifier.py       built-in ML ensemble classifier (GBT + RF, 5 classes)\n  ml_trainer.py          ML training pipeline (RF, GBT, Ensemble) with model persistence\n  feature_extractor.py   63-feature vector extraction for ML training and prediction\n  batch_ingest.py        MalwareBazaar bulk ingestion and local directory scanning\n  malware_cluster.py     DBSCAN clustering engine\n  malware_timeline.py    attack phase timeline builder\n  deobfuscator.py        script deobfuscation (PS, VBS, JS, BAT, HTA)\n  unpacker.py            UPX unpacker + packer detection + Unicorn emulation\n  sandbox.py             behavioral sandbox (Windows Sandbox + ETW)\n  database.py            SQLite persistence layer\n  stix_exporter.py       STIX 2.1 bundle export (Malware, Indicators, ATT\u0026CK, IOC SCOs)\n  cli.py                 command-line interface\n  config.py              configuration management\n  reports.py             JSON / CSV / HTML reports\n  logger.py              logging utilities\n  web/\n    api.py               FastAPI web dashboard + REST API\n    templates/            Alpine.js + Tailwind CSS SPA\n  yara_rules/            14 YARA rule files (158 rules)\n  data/                  signatures.json, pe_indicators.json\ntests/                   721 pytest tests (78% coverage)\nassets/branding/         logo and icon files\nscripts/                 PyInstaller specs, NSIS installer, build tooling\n.github/workflows/       CI (test + lint), Release (build + publish), Security (audit + CodeQL)\n```\n\n## License\n\nCopyright (c) 2026 Alberto Tijunelis Neto. [Elastic License 2.0 (ELv2)](LICENSE)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertotijunelis%2Fhashguard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falbertotijunelis%2Fhashguard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertotijunelis%2Fhashguard/lists"}