{"id":23509122,"url":"https://github.com/scriptingosx/profiletool","last_synced_at":"2025-04-16T19:51:01.405Z","repository":{"id":148496005,"uuid":"161624988","full_name":"scriptingosx/profiletool","owner":"scriptingosx","description":"A tool to help manipulate macOS configuration profiles","archived":false,"fork":false,"pushed_at":"2018-12-13T10:50:11.000Z","size":17,"stargazers_count":27,"open_issues_count":1,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T05:41:24.445Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scriptingosx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-12-13T10:50:05.000Z","updated_at":"2024-05-03T14:54:55.000Z","dependencies_parsed_at":"2023-05-04T23:04:06.390Z","dependency_job_id":null,"html_url":"https://github.com/scriptingosx/profiletool","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/scriptingosx%2Fprofiletool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptingosx%2Fprofiletool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptingosx%2Fprofiletool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptingosx%2Fprofiletool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scriptingosx","download_url":"https://codeload.github.com/scriptingosx/profiletool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249269945,"owners_count":21241236,"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":[],"created_at":"2024-12-25T11:37:50.386Z","updated_at":"2025-04-16T19:51:01.398Z","avatar_url":"https://github.com/scriptingosx.png","language":"Python","readme":"# `profiletool`\nA tool that helps manage and manipulate configuration profiles.\n\n```\nprofiletool verb [options] FILE\n```\n\n## Actions\n\n### `unsign` - remove a profile's signature\n\nThis action will remove the signature from a given profile. The new, unsigned profile will be written to the current working directory with `_unsigned` appended to the file name. (i.e. `Settings.mobileconfig` will turn into `Settings_unsigned.mobileconfig`)\n\n```\n$ profiletool unsign Settings.mobileconfig\n```\n\nYou usually do _not_ have to explicitly unsign profiles when working with `profiletool`. All actions will work with signed and unsigned profiles.\n\n\n### `sign` - sign a profile\n\nThis action will sign a profile with a given identity. This requires a `--identity` argument. If a profile is already signed, the existing signature will be _replaced_.\n\n```\n$ profiletool sign --identity \"Developer ID Application: Armin Briegel\"\n```\n\nYou can get a list of identities available to use with\n\n```\n$ security find-identity -p codesigning -v\n```\n\nWhen you add the `--identify` argument to any action that generates a profile, the new profile will be signed.\n\n### `check-signature` - verify a profile's signature\n\nThis action will verify a signature and print some information.\n\n```\n$ profiletool check-signature Settings.mobileconfig\n```\n\n### `extract` - creates a new profile with a subset of payloads\n\nThis action requires at one or more `--type` arguments. This specifies the `PayloadType` of payload items that will be extracted into a new profile. UUIDs will for the profile and payload items will be regenerated. Identifiers for the profile and payload items will also be regenerated (as with `reset-identifiers`).\n\nThe new, extracted profile will be written to the current working directory with `_extract` appended to the file name. (i.e. `Settings.mobileconfig` will turn into `Settings_extract.mobileconfig`)\n\n```\n$ profiletool extract --type com.apple.preference.security -t com.apple.security.pkcs1 -t com.apple.security.FDERecoveryKeyEscrow -t com.apple.MCX.FileVault2 --identifier \"com.scriptingosx.security\" Security.mobileconfig\n```\n\n### `reset-uuids` - resets all UUIDs\n\nReplaces the `PayloadUUID` of the profile and all payload items with new UUIDs.\n\nThe new profile will be written to the current working directory with `_resetuuids` appended to the file name.\n\n### `reset-identifiers` - resets all identifiers\n\nReplaces all `PayloadIdentifiers` with new, unique values. The top-level identifier for the profile can (and should) be given with the `--identifier` option. If no `--identifier` is given, the tool will use `new.\u003cFILENAME\u003e`.\n\nThe identifier for each payload item will be generated by concatenating the `--identifier` and the `PayloadType`. When the Payload type starts with `com.apple.` this will be omitted.\n\nThe new profile will be written to the current working directory with `_resetidentifiers` appended to the file name.\n\n### `reset-both` - resets all identifiers and uuids\n\nReplaces both identifiers and uuids with new values.\n\n### `info` - prints a summary of the profile's contents\n\n### `read` - prints a value from a payload\n\nThis action requires a `--type` argument to define the payload item and a `--key` item to choose the key. When no `--key` is given, all keys and values will be printed for that payload.\n\n```\n$ profiletool read --type com.apple.security.pkcs1 --key PayloadUUID Security_extract.mobileconfig\n```\n\n### `write` - sets a value in a payload\n\nThis action requires a `--type` and `--key` argument, as well as a `--string` argument to define the value.\n\n```\n$ profiletool write --type com.scriptingosx.security.security.FDERecoveryKeyEscrow --key EncryptCertPayloadUUID --string 6a030f05-fe1e-11e8-b00f-8c85901d3852 Security_extract.mobileconfig\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptingosx%2Fprofiletool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscriptingosx%2Fprofiletool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptingosx%2Fprofiletool/lists"}