{"adoption": {"forks": 347, "observed_at": "2026-08-28T04:05:05.700851+00:00", "stars": 1575}, "canonical_url": "https://ross.abutalabs.com/products/whapa", "card": {"archived": false, "artifact_type": "cli-tool", "description": "WhatsApp Parser Toolset v1.59", "domain": ["security", "developer-tools", "messaging-platforms"], "enriched": true, "function": ["parser", "security", "search-engine", "cli", "gui", "cryptography"], "health_score": 77, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["B16f00t/whapa"], "name": "B16f00t/whapa", "platform": ["windows", "python", "cli"], "pushed_at": "2026-08-02T13:58:43+00:00", "repo": "B16f00t/whapa", "stars": 1575, "tags": ["whatsapp", "digital-forensics", "chat-analysis", "crypt15", "msgstore", "google-drive-backup", "icloud-extraction", "chat-export", "report-generation", "reporting", "forensics", "command-line", "linux", "macos", "desktop"], "topics": ["forensic-analysis", "whatsapp-parser", "whatsapp-encryption"], "urls": [], "use_cases": ["decrypt whatsapp crypt15 backup database", "parse whatsapp msgstore.db messages", "extract whatsapp backup from google drive", "analyze whatsapp chat from iphone ChatStorage.sqlite", "generate forensic report of whatsapp conversations", "search whatsapp messages by sender date or regex", "merge multiple whatsapp database files"], "what_it_is": "Whapa is a Python-based forensic toolset for parsing and analyzing WhatsApp databases from Android and iOS devices. It includes tools for decrypting crypt12/14/15 backups, extracting Google Drive and iCloud backups, merging databases, and generating searchable reports.", "when_to_avoid": ["you need a general-purpose messaging app or WhatsApp client", "you want a fully automated one-click forensic suite with no command-line work", "you lack legal authorization to access the WhatsApp data being analyzed"], "when_to_choose": ["you need to forensically analyze WhatsApp data on Android or iOS", "you must decrypt crypt12, crypt14, or crypt15 backups", "you want to extract WhatsApp backups from Google Drive or iCloud", "you need searchable, exportable reports of WhatsApp conversations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/whapa", "repo": "B16f00t/whapa", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:05.700851+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:57:26.457808+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0f9c05a4a9798a736f121d382fdd3b5abd08143dcae76b44fa36afa10ca46df4", "fetched_at": "2026-08-28T04:05:05.700851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/B16f00t/whapa"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3162, "days_push": 31, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}