{"id":28762518,"url":"https://github.com/woozymasta/homoglitch","last_synced_at":"2025-08-31T04:11:12.458Z","repository":{"id":295856039,"uuid":"991463510","full_name":"WoozyMasta/homoglitch","owner":"WoozyMasta","description":"CLI tools to make text human-readable but machine-hostile.","archived":false,"fork":false,"pushed_at":"2025-05-27T17:43:34.000Z","size":69,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-27T18:31:09.856Z","etag":null,"topics":["chaos","cli","confuse","glitch","go","golang","homoglitch","homoglyph","noise","obfuscation","unicode"],"latest_commit_sha":null,"homepage":"","language":"Go","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/WoozyMasta.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,"zenodo":null}},"created_at":"2025-05-27T16:59:30.000Z","updated_at":"2025-05-27T17:43:38.000Z","dependencies_parsed_at":"2025-06-02T22:17:53.790Z","dependency_job_id":null,"html_url":"https://github.com/WoozyMasta/homoglitch","commit_stats":null,"previous_names":["woozymasta/homoglitch"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/WoozyMasta/homoglitch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fhomoglitch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fhomoglitch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fhomoglitch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fhomoglitch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WoozyMasta","download_url":"https://codeload.github.com/WoozyMasta/homoglitch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WoozyMasta%2Fhomoglitch/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260318699,"owners_count":22991122,"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":["chaos","cli","confuse","glitch","go","golang","homoglitch","homoglyph","noise","obfuscation","unicode"],"created_at":"2025-06-17T08:08:43.384Z","updated_at":"2025-06-17T08:08:44.090Z","avatar_url":"https://github.com/WoozyMasta.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# homoglyph / homoglitch\n\nCLI tools to make text human-readable but machine-hostile.\n\nThey replace characters with visually identical or similar Unicode\n[homoglyphs](https://en.wikipedia.org/wiki/Homoglyph) and optionally\ninject zero-width spaces to break indexing, searching, and translation.\n\n## homoglyph example\n\nEach time you get a new unique line with `homoglyph`\n\n```bash\n# run 3 times\necho 'Just a random string for example!' | homoglyph\nͿս​​ѕt а r​​​а​​​​ոԁom ѕt​ri​​ոg f​​or ех​аm​​​plеǃ\nͿ​​ս​​​ѕt а rаո​​ԁom ѕ​​​​​​tr​​​iոg f​or ех​​​аm​plеǃ\nͿս​ѕt а r​​​​​​​аոԁom ѕ​tr​​​​​iոg f​​​or е​​х​​​​аmplеǃ\n```\n\nWhich a machine won't always be able to recognize\n\n![example](example.png)\n\nA string of different length with a different set and number of characters\nis always generated\n\n```bash\nfor _ in {0..10}; do \n  echo 'Just a random string for example!' | homoglitch | wc -c | tr -d '\\n'\n  printf ' '\ndone\n\n169 186 156 194 164 174 166 189 156 169 161\n\necho 'Just a random string for example!' | wc -c\n34\n```\n\n## homoglitch example\n\nBut if the result is not good enough, there is a more hardcore\nsolution `homoglitch`\n\n```bash\n# run 3 times\necho 'Just a random string for example!' | homoglitch\nͿ​​​​​​𝓾𝑠𝒕 ɑ 𝘳​𝚊​​​𝒏​​​ꓒ𝗢ｍ 𝐬𝕥​​​ꭈ𝑙𝑛𝗴 𝕗​​​ﮨ𝗋 𝓮​ｘ​𝒂​​ｍ⍴іⅇǃ\n𝗝​​ꭒ​ƽ𝘵 𝖺 𝕣​​​𝛼​​𝖓𝓭​𑣗ｍ 𝐬​​𝓽​𝗋𝚒ռ𝑔 ẝ​𝛐𝐫 е​​​​​​​​​​𝔁​​​аｍ𝞀𝙡𝐞ⵑ\nꓙ​​​𝑢​𝐬𝔱 𝛂 ᴦ𝖺​​​​​​𝗇ⅾ૦ｍ 𝖘​𝖙​​𝚛⏽ո𝖌 ẝ​​​𐐬𝓇 𝙚​⤫ɑｍ𝝔​​𝚕ｅ！\n```\n\n## Build\n\nFirst, generate `homoglyphs.go` from a homoglyph set:\n\n### homoglyph\n\n```bash\n# For a visually invisible replacement\nrm homo*.go\ngo run generate.go glyph.txt\nCGO_ENABLED=0 go build -o homoglyph.exe -ldflags \"-s -w\" -trimpath -gcflags=all=\"-N -l\" ./...\nrm homoglyph.go\n# or\n./build.sh glyph.txt\n```\n\n### homoglitch\n\n```bash\n# For aggressive chaotic substitution\nrm homo*.go\ngo run generate.go glitch.txt\nCGO_ENABLED=0 go build -o homoglitch.exe -ldflags \"-s -w\" -trimpath -gcflags=all=\"-N -l\" ./...\nrm homoglitch.go\n# or\n./build.sh glitch.txt\n```\n\nThe glitch.txt file is based on\n[codebox/homoglyph](http://github.com/codebox/homoglyph).\n\n## some tests\n\nTest data files 149K `alice29.txt`, 471K `plrabn12.txt` and 3,9M `bible.txt`\nfrom \u003chttps://corpus.canterbury.ac.nz/descriptions/\u003e\n\n```bash\n## alice29.txt\nsync; time homoglyph \u003c alice29.txt \u003e alice29-glyph.txt\n\nreal    0m0,048s\nuser    0m0,000s\nsys     0m0,000s\n# 436K alice29-glyph.txt\n\nsync; time homoglitch \u003c alice29.txt \u003e alice29-glitch.txt\n\nreal    0m0,052s\nuser    0m0,000s\nsys     0m0,000s\n# 664K alice29-glitch.txt\n\n## plrabn12.txt\nsync; time homoglyph \u003c plrabn12.txt \u003e plrabn12-glyph.txt\n\nreal    0m0,099s\nuser    0m0,000s\nsys     0m0,000s\n# 1,4M plrabn12-glyph.txt\n\nsync; time homoglitch \u003c plrabn12.txt \u003e plrabn12-glitch.txt\n\nreal    0m0,107s\nuser    0m0,000s\nsys     0m0,000s\n# 2,2M plrabn12-glitch.txt\n\n## bible.txt\nsync; time homoglyph \u003c bible.txt \u003e bible-glyph.txt\n\nreal    0m0,486s\nuser    0m0,000s\nsys     0m0,000s\n# 12M bible-glyph.txt\n\nsync; time homoglitch \u003c bible.txt \u003e bible-glitch.txt\n\nreal    0m0,567s\nuser    0m0,000s\nsys     0m0,000s\n# 19M bible-glitch.txt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoozymasta%2Fhomoglitch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwoozymasta%2Fhomoglitch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwoozymasta%2Fhomoglitch/lists"}