{"id":13628115,"url":"https://github.com/iCepa/iCepa","last_synced_at":"2025-04-17T00:33:15.158Z","repository":{"id":45837581,"uuid":"43506446","full_name":"iCepa/iCepa","owner":"iCepa","description":"iOS system-wide VPN based Tor client","archived":false,"fork":false,"pushed_at":"2024-06-02T11:42:40.000Z","size":3446,"stargazers_count":752,"open_issues_count":1,"forks_count":83,"subscribers_count":59,"default_branch":"main","last_synced_at":"2025-04-12T19:46:14.665Z","etag":null,"topics":["apple","bridges-traffic","icepa","ios","ios-app","ios-extension","rust","rustup","swift","swift-3","tor","vpn","xcode"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/iCepa.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":"2015-10-01T16:07:00.000Z","updated_at":"2025-04-09T21:41:52.000Z","dependencies_parsed_at":"2024-09-28T22:00:43.553Z","dependency_job_id":"ffd80fc8-cc30-4609-bccb-e52505096fbd","html_url":"https://github.com/iCepa/iCepa","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/iCepa%2FiCepa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FiCepa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FiCepa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iCepa%2FiCepa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iCepa","download_url":"https://codeload.github.com/iCepa/iCepa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249293177,"owners_count":21245691,"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":["apple","bridges-traffic","icepa","ios","ios-app","ios-extension","rust","rustup","swift","swift-3","tor","vpn","xcode"],"created_at":"2024-08-01T22:00:45.873Z","updated_at":"2025-04-17T00:33:15.105Z","avatar_url":"https://github.com/iCepa.png","language":"Swift","funding_links":[],"categories":["Security","Swift","Uncategorized"],"sub_categories":["RSS","Uncategorized"],"readme":"#  iCepa Restart\n\nThis is a completely fresh implementation of the iCepa app.\n\nIt is a testbed for [Network Extension](https://developer.apple.com/documentation/networkextension)\nexperiments for advanced VPN-style apps.\n\nIt was originally developed for use with Tor by Conrad Kramer, hence the name \n(\"Cepa\" means onion in Latin), but can be used as a base for all other sorts of proxies now and \nalso with [Pluggable Transports](https://www.pluggabletransports.info).\n\n## Features\n\n- Container app for installing and controlling the Network Extension and displaying log output \n  for easier debugging.\n- App Group storage to share files between the app and the extension.\n- iOS and MacOS implementation.\n- Basic messaging implementation to show how to communicate between app and extension.\n- Easy build configuration via xcconfig file.\n- Clean encapsulation of NE code in `VpnManager` and `BasePTProvider` classes.\n- Clean implementation of a `TorManager` to show usage of `Tor.framework`.\n- `Tor.framework` integrated as a git submodule for easy debugging.\n- Proxy can be run in extension **and in app** and easily switched.\n- Glue code for different tun2socks implementations to try out.\n\n## Different tun2socks implementations\n\nSince a lot of existing proxy code can't handle IP packets directly (like Tor), a big part of the\nexperiment is/was trying out different projects which go in between. Code for these is kept\naround for demonstration purposes, but is disabled, except the last (called leaf), which currently\nseems to be the best option.\n\nThe following libraries were tried and might be of interest to you:\n\n- [OBTun2Socks](https://github.com/tladesignz/OBTun2Socks)\n  A stab at packaging a C tun2socks implementation in a CocoaPod.\n  \n-  [GoTun2Socks](https://github.com/eycorsican/go-tun2socks)\n  A Go implementation of tun2socks. Discontinued.\n  \n- [outline-go-tun2socks](https://github.com/Jigsaw-Code/outline-go-tun2socks)\n  A Go tun2socks implementation by the Outline project.\n  \n- [tun2tor](https://github.com/iCepa/tun2tor)\n  A Rust implementation of tun2socks specifically written for Tor with support for its DNS resolution.\n  (slightly updated to fix compilation issues, but still outdated and discontinued)\n  \n- [leaf](https://github.com/eycorsican/leaf.git)\n  A flexible proxy framework written in Rust with support for SOCKS, HTTP CONNECT,\n  ShadowSocks and many more with highly configurable routing options. \n\n## Getting started\n\n```sh\ngit clone --recursive git@github.com:iCepa/iCepa.git\ncd iCepa\npod install # or `update`\nopen iCepa.xcworkspace\n```\n\nNetwork Extensions can only be run on a real device.\nYou will also need a paid Apple Developer subscription to be able to manually create the \ndevelopment certificates needed.\n\nDon't edit `project.pbxproj` (the project configuration) directly, instead use  `Config.xcconfig`, \nwhere all signing-related info is kept out of the way.\n\nYou will need to create 3 identifiers here:\nhttps://developer.apple.com/account/resources/identifiers/list\n\n- A group identifier.\n- An app bundle identifier for the app itself.\n- An app bundle identifier used for the Network Extension.\n\nBoth app IDs need the capabilities \"App Groups\" and \"Network Extensions\".\nAdd the created group ID to the \"App Groups\" capability.\n\nPut these IDs in the respective fields in `Config.xcconfig`.\n\nThe devloper team ID can be found on the aforementioned page in the top right.\n\nCreate 2 iOS development profiles here for the app and the extension:\nhttps://developer.apple.com/account/resources/profiles/list\n\nPut their \"names\" as their specifiers in `Config.xcconfig`.\n\nIn Xcode, go to \"Preferences\" -\u003e \"Accounts\" -\u003e select your Apple ID -\u003e \"Download Manual Profiles\"\n\nNow, you should be able to compile and run on a real device.\n\n\n## Author, License\n\nBenjamin Erhart, [Die Netzarchitekten e.U.](https://die.netzarchitekten.com)\n\nUnder the authority of [Guardian Project](https://guardianproject.info).\n\nLicensed under [MIT](LICENSE.txt)\n\n\n## Icon\n\nIcon taken from\n\nhttps://thenounproject.com/term/onion/35969/\n\nBy Brennan Novak, Public Domain\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiCepa%2FiCepa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FiCepa%2FiCepa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiCepa%2FiCepa/lists"}