{"id":22158719,"url":"https://github.com/edk0/iphide","last_synced_at":"2025-03-24T15:10:14.333Z","repository":{"id":145810644,"uuid":"112114560","full_name":"edk0/iphide","owner":"edk0","description":"proof of concept structure-preserving IP mangling","archived":false,"fork":false,"pushed_at":"2018-06-29T09:49:13.000Z","size":15,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-29T20:18:08.311Z","etag":null,"topics":["c","encryption","format-preserving-encryption","irc","obfuscation","permutation","siphash"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edk0.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":"2017-11-26T20:34:05.000Z","updated_at":"2021-06-23T21:03:51.000Z","dependencies_parsed_at":"2023-06-11T07:00:50.608Z","dependency_job_id":null,"html_url":"https://github.com/edk0/iphide","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/edk0%2Fiphide","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edk0%2Fiphide/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edk0%2Fiphide/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edk0%2Fiphide/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edk0","download_url":"https://codeload.github.com/edk0/iphide/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245294769,"owners_count":20591900,"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":["c","encryption","format-preserving-encryption","irc","obfuscation","permutation","siphash"],"created_at":"2024-12-02T03:35:53.716Z","updated_at":"2025-03-24T15:10:14.326Z","avatar_url":"https://github.com/edk0.png","language":"C","readme":"# iphide\n\nstructure-preserving encryption for IP addresses\n\nHome-grown crypto features ahead, so I'll include the standard warning about\nfeet and bazookas, though in this case I'd posit that very little could be worse\nthan current alternatives ;)\n\nThe encryption key is currently compiled into the binary.\n\nI wrote this in the hope of solving all the problems with IP cloaking on IRC. My\nattempt encrypts each bit of an IP address based on all the bits preceding it,\npreserving the prefix structure of IP addresses:\n\n```console\n$ ./iphide 1.1.1.1\n1.1.1.1 -\u003e 8.33.150.83\n$ ./iphide 1.1.200.200\n1.1.200.200 -\u003e 8.33.1.83\n```\n\neven—uniquely, as far as I'm aware—in the middle of octets:\n\n```console\n$ ./iphide 1.1.64.1\n1.1.64.1 -\u003e 8.33.234.173\n$ ./iphide 1.1.96.1\n1.1.96.1 -\u003e 8.33.221.132\n```\n\nwhile revealing as little information as possible about their contents: You can\ntell how many bits of prefix two encrypted IP addresses share, but nothing else.\nIn order to improve privacy at the expense of structure-preservingness, an\nprefix of the IP address can use full-blown format-preserving encryption instead\n(12 bits by default for V4 addresses, but it's configurable in the source).\n\nOf course, since everything we're doing is encryption (and not hashing), this\nprocess is guaranteed to be completely collision-free and reversible, given the\nkey:\n\n```console\n$ ./iphide ?8.33.221.132\n8.33.221.132 -\u003e 1.1.96.1\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedk0%2Fiphide","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedk0%2Fiphide","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedk0%2Fiphide/lists"}