{"id":21175403,"url":"https://github.com/luckman212/cscheck","last_synced_at":"2025-10-18T20:22:49.122Z","repository":{"id":242937198,"uuid":"810991660","full_name":"luckman212/cscheck","owner":"luckman212","description":"outputs codesigning info for macOS binaries","archived":false,"fork":false,"pushed_at":"2024-06-09T17:55:35.000Z","size":52,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-07T10:34:46.961Z","etag":null,"topics":["macos","security"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/luckman212.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-05T18:24:59.000Z","updated_at":"2025-01-28T03:50:41.000Z","dependencies_parsed_at":"2024-06-09T18:27:51.839Z","dependency_job_id":"5c4bb217-39b7-48b9-8107-5d8c1cba21b3","html_url":"https://github.com/luckman212/cscheck","commit_stats":null,"previous_names":["luckman212/cscheck"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/luckman212/cscheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckman212%2Fcscheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckman212%2Fcscheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckman212%2Fcscheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckman212%2Fcscheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luckman212","download_url":"https://codeload.github.com/luckman212/cscheck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckman212%2Fcscheck/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264503949,"owners_count":23618762,"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":["macos","security"],"created_at":"2024-11-20T16:59:17.913Z","updated_at":"2025-10-18T20:22:44.073Z","avatar_url":"https://github.com/luckman212.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"./icon.png\" width=96 /\u003e\n\n# cscheck\n\n### What\n\nSome recent [hubbub][1] around a _silent change of ownership_ of the popular macOS app Bartender prompted me to create this small commandline tool. The purpose of the tool is to output Developer Name, ID and hash of the codesigning cert (fingerprint). This can be integrated into various automated checks to detect casual switch-a-roos.\n\n### How\n\nIf you'd rather not trust downloading the precompiled binary from this repo, feel free to compile your own:\n\n```\nswiftc -O -o cscheck cscheck.swift\n```\n\nTo use, place the `cscheck` binary in your `$PATH` and execute as:\n\n```\ncscheck /path/to/app\n```\n\nYou can pass \u003e1 argument at once:\n\n```\ncscheck /Applications/*.app\n```\n\n### Example output\n\n```\n$ cscheck /Applications/Screenflick.app\nApp: /Applications/Screenflick.app\nSHA-256 Fingerprint: 72d1436e7885315c580605e994e8a94e4a44a0523e2cde17e95430ae616469be\nDeveloper ID: 28488A87JB\nDeveloper Name: Seth Willits\n```\n\n### Automation\n\nOne way to use this tool is to periodically run it against your entire /Applications directory, and compare the output to a set of known-good values.\n\nHere's a simple example of how one could do this:\n\n#### Step 1 (initial setup)\n```\ncscheck /Applications/*.app \u003e ~/.known_good 2\u003e/dev/null\n```\n#### Step 2 (compare - run this e.g. once per day)\n```\ndiff -y --suppress-common-lines ~/.known_good \u003c(cscheck /Applications/*.app 2\u003e/dev/null)\n```\n\n### AI Disclosure\n\nChatGPT was used to help generate a portion of this code. Feel free to pass along tips or open issues for any errors or improvements! I am not a Swift developer by trade.\n\n[1]: https://news.ycombinator.com/item?id=40584606\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckman212%2Fcscheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluckman212%2Fcscheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckman212%2Fcscheck/lists"}