{"id":26576626,"url":"https://github.com/getsentry/edmgutil","last_synced_at":"2025-03-23T03:24:00.031Z","repository":{"id":38330221,"uuid":"370796898","full_name":"getsentry/edmgutil","owner":"getsentry","description":"a handy utility to work with encrypted DMGs","archived":false,"fork":false,"pushed_at":"2024-02-15T18:05:31.000Z","size":67,"stargazers_count":18,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T06:47:06.892Z","etag":null,"topics":["tag-non-production"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/getsentry.png","metadata":{"funding":{"custom":["https://sentry.io/pricing/","https://sentry.io/"]},"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}},"created_at":"2021-05-25T18:49:35.000Z","updated_at":"2024-10-15T08:12:55.000Z","dependencies_parsed_at":"2024-02-15T19:26:46.297Z","dependency_job_id":"02526a58-ce4e-4a1b-aebf-c57de2f63cb2","html_url":"https://github.com/getsentry/edmgutil","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/getsentry%2Fedmgutil","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsentry%2Fedmgutil/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsentry%2Fedmgutil/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getsentry%2Fedmgutil/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getsentry","download_url":"https://codeload.github.com/getsentry/edmgutil/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245049843,"owners_count":20552734,"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":["tag-non-production"],"created_at":"2025-03-23T03:23:59.262Z","updated_at":"2025-03-23T03:24:00.001Z","avatar_url":"https://github.com/getsentry.png","language":"Rust","readme":"# edmgutil\n\n`edmgutil` is a simple wrapper utility to hdiutil to help you work with disposable, encrypted\nDMGs. It can decompress an encrypted ZIP into a newly mounted encrypted DMG, create empty\nthrowaway DMGs and automatically eject expired ones. This makes transferring and working with\ndata that should only live for a short period of time for debugging purposes to developer\nmachines a more convenient endeavour. The volume is individually encrypted and gets destroyed\nwhen ejected.\n\nIt also instructs the backup tool to disable backing up the volume in case someone accidentally\nadds it.\n\n## Installation\n\n```\ncargo install --git https://github.com/getsentry/edmgutil --branch main edmgutil\n```\n\nNote that this requires `7z` to be installed. If you don't have it:\n\n```\nbrew install p7zip\n```\n\n## Importing Encrypted Zip Archives\n\n```\nedmgutil import /path/to/encrypted.zip\n```\n\nIt will prompt for the password, then create an encrypted volumne with the same password and then\nextract the zip file into it and then delete the created dmg (unless `-k` is passed).\n\nOnce the DMG is ejected everything is gone again.\n\nWhen the DMG is created a timestamp is frozen into it (defined by `--days`, defaults to 7). It's\nrecommended to run `edmgutil eject --expired` regularly to automatically unmount expired\nimages for instance by putting it into your crontab (see `edmgutil cron`).\n\nTo create an encrypted zip use 7zip:\n\n```\n7za a -tzip -p'the password' -mem=AES256 encrypted.zip folder\n```\n\nJust make sure to use a long password, maybe something like this:\n\n```\nopenssl rand -hex 32\n```\n\n## Creating Empty DMGs\n\nTo create an empty, encrypted DMG use the `new` command and provide the size of the DMG in\nmegabytes. Alternatively you can provide a descriptive name which will become the volume name:\n\n```\nedmgutil new --size 100 --name \"My Stuff\"\n```\n\n## Listing / Ejecting\n\nTo list and eject encrypted DMGs you can use the following commands:\n\n```\nedmgutil list\nedmgutil eject --expired\nedmgutil eject --all\nedmgutil eject /Volumes/EncryptedVolume\n```\n\n## Crontab\n\nTo ensure that expired images are ejected automatically when possible can can install a crontab\nwhich runs ejecting hourly:\n\n```\nedmgutil cron --install\n```\n\n## Download Folder Monitoring\n\nBecause browsers love to download files unprompted into the default download location it's not\nuncommon for you to accidentally places files there you really don't want to retain there.\nThe `find-downloads` command can be useful for manual spot checking.\n\nThis will list all files that were downloaded from `your-domain.tld`:\n\n```\nedmgutil find-downloads -d your-domain.tld\n```\n\nIf subdomains should be included as well, use a `*`:\n\n```\nedmgutil find-downloads -d '*.your-domain.tld'\n```\n\nFor additional information you can turn on verbose mode which shows the exact\nsource of the file by URL:\n\n```\nedmgutil find-downloads -d your-domain.tld -v\n```\n\nAdditionally files from those domains older than N days can be auto deleted:\n\n```\nedmgutil find-downloads -d your-domain.tld --delete --days=7\n```\n","funding_links":["https://sentry.io/pricing/","https://sentry.io/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetsentry%2Fedmgutil","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetsentry%2Fedmgutil","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetsentry%2Fedmgutil/lists"}