{"id":15586334,"url":"https://github.com/canciucostin/crypt12-decrypt","last_synced_at":"2025-04-24T04:40:53.976Z","repository":{"id":53521885,"uuid":"279607220","full_name":"CanciuCostin/crypt12-decrypt","owner":"CanciuCostin","description":"Decrypt Whatsapp .crypt12 database files","archived":false,"fork":false,"pushed_at":"2021-03-26T08:15:23.000Z","size":18548,"stargazers_count":47,"open_issues_count":5,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T07:01:34.256Z","etag":null,"topics":["aes-128","aes-gcm","crypt12","decrypt","decryption","go","golang","whatsapp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CanciuCostin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-14T14:25:02.000Z","updated_at":"2025-01-19T02:34:04.000Z","dependencies_parsed_at":"2022-09-07T22:24:03.550Z","dependency_job_id":null,"html_url":"https://github.com/CanciuCostin/crypt12-decrypt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanciuCostin%2Fcrypt12-decrypt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanciuCostin%2Fcrypt12-decrypt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanciuCostin%2Fcrypt12-decrypt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CanciuCostin%2Fcrypt12-decrypt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CanciuCostin","download_url":"https://codeload.github.com/CanciuCostin/crypt12-decrypt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250566440,"owners_count":21451228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aes-128","aes-gcm","crypt12","decrypt","decryption","go","golang","whatsapp"],"created_at":"2024-10-02T21:21:55.595Z","updated_at":"2025-04-24T04:40:53.960Z","avatar_url":"https://github.com/CanciuCostin.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GO][go-shield]\n# Crypt12 Decrypt\n\nDecrypt Whatsapp crypt12  sqlite database files\n\n## Crypt12 algorithm\n\n* AES GCM mode encryption using 128 bit block size and 16 bytes IV (nonce)\n\n* key file must be 158 byte long (only last 32bytes represent the key)\n\n![Key](key.png?raw=true \"Key\")\n\n* crypt12 file includes 67 byte header and 20 byte trailer which needs to be removed\n\n![crypt12file](crypt12file.png?raw=true \"crypt12 file\")\n\n* the resulted plain bytes need to be decompressed in order to obtain the final SQLite .db file\n\n* for more information you can check [A Systems Approach to Cyber Security: Proceedings of the 2nd Singapore Cyber-Security R\u0026D Conference (SG-CRC 2017)](https://books.google.ro/books?id=RUXiDgAAQBAJ\u0026pg=PR7\u0026lpg=PR7\u0026dq=A+Systems+Approach+to+Cyber+Security:+Proceedings+of+the+2nd+Singapore+Cyber-Security+R%26D+Conference+(SG-CRC+2017)\u0026source=bl\u0026ots=vWJcT_nFMa\u0026sig=ACfU3U1Tmj6ui8lYaPPZIY7fGz4UwAIN6w\u0026hl=en\u0026sa=X\u0026ved=2ahUKEwjKpannwc_qAhWok4sKHTrNDtAQ6AEwBXoECBIQAQ#v=onepage\u0026q=A%20Systems%20Approach%20to%20Cyber%20Security%3A%20Proceedings%20of%20the%202nd%20Singapore%20Cyber-Security%20R%26D%20Conference%20(SG-CRC%202017)\u0026f=false)\n\n## Usage example\n\n1. Ensure you have the key file (**key**) and crypt12 file (**msgstore.db.crypt12**) in the same directory with the go entrypoint. You can use the existing key and msgstore files in the repo for testing.\n* Run using GO:\n```\ngo run crypt12-decrypt\n```\n* Or run Windows executable:\n```\ncrypt12-decrypt.exe\n```\n 2. Otherwise use the necessery arguments:\n```\ngo run crypt12-decrypt.go -h\n```\n```\nUsage of crypt12-decrypt.exe:\n  -crypt12file string\n        crypt12 file path (default \"msgstore.db.crypt12\")\n  -keyfile string\n        decryption key file path (default \"key\")\n  -outputfile string\n        decrypted output file path (default \"msgstore.db\")\n```\n\n## Build\n\n```\ngo get github.com/CanciuCostin/crypt12-decrypt\n\ngo build crypt12-decrypt -\u003e built with go version 1.14.4\n```\n\n\n\u003c!-- Markdown link \u0026 img dfn's --\u003e\n[go-shield]: https://img.shields.io/badge/go-1.14.4-green\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanciucostin%2Fcrypt12-decrypt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcanciucostin%2Fcrypt12-decrypt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcanciucostin%2Fcrypt12-decrypt/lists"}