{"id":20677204,"url":"https://github.com/operatorfoundation/adversarylab","last_synced_at":"2025-08-18T15:07:15.147Z","repository":{"id":41325684,"uuid":"119454419","full_name":"OperatorFoundation/AdversaryLab","owner":"OperatorFoundation","description":"Adversary Lab is a service that analyzes captured network traffic to extract statistical properties. Using this analysis, filtering rules can be synthesized to block sampled traffic. The purpose of this service is to help application developers create applications which are more resistant to network filtering attacks.","archived":false,"fork":false,"pushed_at":"2024-10-30T23:24:16.000Z","size":16519,"stargazers_count":23,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-19T21:49:52.357Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://OperatorFoundation.org/","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/OperatorFoundation.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":"2018-01-29T23:17:13.000Z","updated_at":"2025-03-23T23:28:39.000Z","dependencies_parsed_at":"2024-10-31T00:20:41.686Z","dependency_job_id":"f5b59de9-d5ca-4360-9ede-8a46caffae95","html_url":"https://github.com/OperatorFoundation/AdversaryLab","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/OperatorFoundation/AdversaryLab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FAdversaryLab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FAdversaryLab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FAdversaryLab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FAdversaryLab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OperatorFoundation","download_url":"https://codeload.github.com/OperatorFoundation/AdversaryLab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OperatorFoundation%2FAdversaryLab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271012141,"owners_count":24684484,"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","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-16T21:14:49.243Z","updated_at":"2025-08-18T15:07:15.109Z","avatar_url":"https://github.com/OperatorFoundation.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"### The Operator Foundation\n\n[Operator](https://operatorfoundation.org) makes useable tools to help people around the world with censorship, security, and privacy.\n\n# Adversary Lab\n\nAdversary Lab is a service that analyzes captured network traffic to extract statistical properties. Using this analysis, filtering rules can be synthesized to block sampled traffic.\n\nThe purpose of Adversary Lab is to give researchers and developers studying network filtering a way to understand how easy it is to block different protocols.\nIf you have an application that uses a custom protocol, Adversary Lab will demonstrate how a rule can be synthesized to systematically block all traffic using that protocol.\nSimilarly, if you have a network filtering circumvention tool, then Adversary Lab can synthesize a rule to block your tool.\nThis analysis can also be used to study tools that specifically attempt to defeat networking filtering, such as Pluggable Transports.\n\nAdversary Lab analysis works by training a classifier on two observed data sets, the \"allow\" set and the \"block\" set.\nFor instance, a simulated adversary could allow HTTP, but block HTTPS. By training the system with HTTP and HTTPS data, it will generate a rule that distinguishes these two classes of traffic based on properties observed in the traffic.\n\n## Getting Started\n\n### Prerequisites\n\nSwift 5.6, included in Xcode 11\n\n## Deployment\n\nTo add network traffic to Adversary Lab for analysis you can use [CanaryDesktop](https://github.com/OperatorFoundation/CanaryDesktop.git) for macOS, or [CanaryLinux](https://github.com/OperatorFoundation/CanaryLinux.git) for Linux. When selecting data to load, you should browse to the location of one of the zip files created by Canary. These zip files are named \"adversary_data\" followed by a timestamp.\n\n## Built With\n\n* [Datable](https://github.com/OperatorFoundation/Datable) - Swift convenience functions to convert between various different types and Data\n* [Song](https://github.com/OperatorFoundation/Song.git) - Data structure serialization with static typing.\n* [Abacus](https://github.com/OperatorFoundation/Abacus.git) - Swift data structures for data processing.\n* [SwiftUICharts](https://github.com/willdale/SwiftUICharts.git) - A charts / plotting library for SwiftUI.\n* [ZIPFoundation](https://github.com/weichsel/ZIPFoundation) - ZIP Foundation is a library to create, read and modify ZIP archive files.\n\n## Contributing\n\nPlease read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.\n\n## Versioning\n\n[SemVer](http://semver.org/) is used for versioning. For the versions available, see the [tags on this repository](https://github.com/OperatorFoundation/AdversaryLab/tags).\n\n## Authors\n\n* **Dr. Brandon Wiley** - *Concept and initial work* - [Operator Foundation](https://OperatorFoundation.org/)\n* **Adelita Schule** - *Swift implementation* - [Operator Foundation](adelita@OperatorFoundation.org)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n\n## Acknowledgments\n\nAdversaryLab is based on Dr. Brandon Wiley's dissertation work, \"[Circumventing Network Filtering with Polymorphic Protocol Shapeshifting](http://blanu.net/Dissertation.pdf)\".\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperatorfoundation%2Fadversarylab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foperatorfoundation%2Fadversarylab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foperatorfoundation%2Fadversarylab/lists"}