{"id":21142450,"url":"https://github.com/victor-david/robo-crypto","last_synced_at":"2025-03-14T13:21:25.017Z","repository":{"id":84067489,"uuid":"52048904","full_name":"victor-david/robo-crypto","owner":"victor-david","description":"A Windows command line application that enables you to copy one directory (and its sub-directories) to another, encrypting all files in the process. File names and directory names are converted to hash values.","archived":false,"fork":false,"pushed_at":"2020-08-20T17:49:51.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-21T07:11:12.614Z","etag":null,"topics":["command-line-tool","csharp","decryption","encryption"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/victor-david.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":"SecurityDriven.Inferno/Cipher/AesCtrCryptoTransform.cs","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-19T00:19:06.000Z","updated_at":"2020-08-20T17:51:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"d25bc9f6-0e2f-401e-bffa-0aa30ebd0230","html_url":"https://github.com/victor-david/robo-crypto","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/victor-david%2Frobo-crypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victor-david%2Frobo-crypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victor-david%2Frobo-crypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victor-david%2Frobo-crypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/victor-david","download_url":"https://codeload.github.com/victor-david/robo-crypto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243581058,"owners_count":20314167,"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":["command-line-tool","csharp","decryption","encryption"],"created_at":"2024-11-20T07:53:37.013Z","updated_at":"2025-03-14T13:21:25.011Z","avatar_url":"https://github.com/victor-david.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# README\n\n**RoboCrypto** is a command line application that enables you to copy one directory (and its sub-directories) to another,\nencrypting all files in the process. In addition, file names and directory names are converted to hash values to prevent\ninferring their worth or purpose.\n\n## Encryption\n\n**RoboCrypto** works like RoboCopy (when used with its synchronizing switches) in the sense that only new and changed files\nare copied (and encrypted) to the target. In addition, **RoboCrypto** hashes the file and directory names in the process.\nFor instance, when encrypting:\n\n~~~cmd\nRoboCrypto C:\\MySource C:\\MyTarget H:\\MyKeyFile.bin /e\n~~~\n\nC:\\MySource\\SecretFiles\\FinanceReport.xlsx\n\nbecomes\n\nC:\\MyTarget\\d9e8fb147ef70faa\\6097aeb067f3d1c10f51ca8d.aes\n\nThe folder used as the target root is not hashed, but all subdirectories *are* hashed.\n\nAfter running an encryption operation, a second run does nothing (until files are added or modified in the source)\n\nMany thanks to Stan Drapkin @sdrapkin - the cryptographic methods used in **RoboCrypto** come from his crypto library:\n\n[GitHub repository](https://github.com/sdrapkin/SecurityDriven.Inferno)\n\n[Documentation](http://securitydriven.net/inferno/)\n\n## Key File\nYou must use a key file. Entering the key manually is not supported.\n\n## Encrypting Again\nNormally, **RoboCrypto** only copies and encrypts a file if it is new or has changed. There may be times when you need to\nforce all files to be encrypted again, for example if you change the encryption key. To do so, use the /f switch:\n\n~~~cmd\nRoboCrypto C:\\MySource C:\\MyTarget H:\\MyKeyFile.bin /e /f\n~~~\n\nThis causes all files to be encrypted, whether they have changed or not. You can also use the force-with-timestamp switch:\n\n~~~cmd\nRoboCrypto C:\\MySource C:\\MyTarget H:\\MyKeyFile.bin /e /ft\n~~~\n\nAs with /f - this causes all files to be encrypted. In addition, the timestamps of all files (source and target) are incremented\nby one minute in order to ensure that any downstream processing (such as Dropbox, see Backup Scenario section below) recognizes\nthat the files need to be processed.\n\n## Decryption\n\nTo decrypt:\n\n~~~cmd\nRoboCrypto C:\\MyTarget C:\\MyRecoveredFiles H:\\MyKeyFile.bin /d\n~~~\n\nDecryption requires that the target directory (the one in which the decrypted file and directories will go) be empty.\n\n## Backup Scenario\nMy purpose for developing **RoboCrypto** was to encrypt a certain set of files as they were copied into my Dropbox directory\nas part of my automated incremental backup. I prefer to push things to the cloud when I'm ready, so I don't work with files\ndirectly in my Dropbox directory. Instead, I run a batch file at the end of the day:\n\n~~~cmd\nrem This is backup.cmd\nrem RoboCopy to copy only new and changed files\n\nRoboCopy D:\\MyFiles E:\\Dropbox\\MyFiles /E /R:2 /W:3 /NJH /NJS /NDL /NP /NS /TS /XJ /XO\n\nRoboCopy (other directories) etc.\n\nrem See if the USB stick is there\n\nif exist H:\\MyKeyFile.bin (\n\n  RoboCrypto D:\\MyConfidentialFiles E:\\Dropbox\\MyEncryptedFiles H:\\MyKeyFile.bin /e\n\n)\n~~~\n\n## Key Generation\n**RoboCrypto** is accompanied by **KeyGen**, a simple utility to create a key file of various lengths.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictor-david%2Frobo-crypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictor-david%2Frobo-crypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictor-david%2Frobo-crypto/lists"}