{"_id":"uproxy-churn","_rev":"39-ed849d7efea41ed8e030e4c84b476f12","name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","dist-tags":{"latest":"2.1.0"},"versions":{"0.0.1":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"0.0.1","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-typescript":"~0.3.8","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.0","regex2dfa":"~0.1.4","uproxy-lib":"^11.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@0.0.1","dist":{"shasum":"6d33d2db9724fa7281a2e0255ff0cb6b980599c6","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-0.0.1.tgz","integrity":"sha512-UHeflcHUjNjB1wPntqlriQDCpQ7o+UMnoQW1XZXivH31apb8/tOwlR5y+Ls85Yu6tJVo9zu4fufGZKdDJcIdRQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGHtY5FOYmCpsCJNRObquVegGYrbwqoOUT4mYUtEDURDAiA7aXwTskJgoaEB78f8gD+wPVi7RaFAAfrz8esu8f1Cew=="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"0.0.2":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"0.0.2","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-typescript":"~0.3.8","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.0","regex2dfa":"~0.1.4","uproxy-lib":"^11.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@0.0.2","dist":{"shasum":"6f8f86f910b7e1af65c53b2c86e42c8bd5179187","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-0.0.2.tgz","integrity":"sha512-asC0dlbd94JWrGlgBrVc0kYyFjqVRKo1mDSp8ONs2SYnyv7/Od2NouX2oPvhLP/2pBNfL6j1SrpCiwbFpHjSZg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICy8Uo3rh+0M3mT9+neWB2uTvUlQy/Uk1bJTxAW+UA4rAiBWwbxEEsIvx0MIEnqSoNhItzCL8UBj7FdcgkYo6zwbvQ=="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"0.0.3":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"0.0.3","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-typescript":"~0.3.8","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.0","regex2dfa":"~0.1.4","uproxy-lib":"^11.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@0.0.3","dist":{"shasum":"cb6769391d2164bd8bb04e1c642295cfeae31541","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-0.0.3.tgz","integrity":"sha512-Vj4Vz8F4BTXCq7LW/iC9GO7SPLM8HL4XBKqPoyIQKQsBdtUt1EKxJYl37+6ntHV891G+WCyJQ0rqqHqA6rWZcw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF88mKfZS7AbuMZjc9Nkq/Ogf/BhERZVf79erj256I4/AiEAqvHMz5fC436WfDjvYgVrK20d0zbHDgwmvTBIC6+7z+U="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"0.0.4":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"0.0.4","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-typescript":"~0.3.8","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.1","regex2dfa":"~0.1.6","uproxy-lib":"^11.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@0.0.4","dist":{"shasum":"0f04af3a41934b160cb0725e7d4a04a6a7649897","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-0.0.4.tgz","integrity":"sha512-x4BOPGICzH1IBb2JQFRVTkPWWkKtRCZ/4WfEMygKuYNgO1rF8LgjI3B0fNl69xcfdo9S1/Yi0gUe+/C9wwd5nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFbU/IN16VfKShcclR5ch5NjDSyGvGnK7a5dy+y3siYRAiBRf9yYNAHVtkKgbH3Z/o4uZ83TZ2QyGoB/rIPPGDEt7g=="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"0.0.5":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"0.0.5","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-typescript":"~0.3.8","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.1","regex2dfa":"~0.1.6","uproxy-lib":"^11.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@0.0.5","dist":{"shasum":"ee673dac53caf943ed33289707837eb570a0dc2a","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-0.0.5.tgz","integrity":"sha512-tVmeYYhwT8YGbrttqmvC1qOTlaIYhCr5r6U3f+kxdG7oGYSLWU2u2nhxnfpkr2Mjg6y5ZKXGVSExXOUWnwW8RQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGWtWEB1JF5iazm1pNKkcIe60W8aHMtIkJ9XDOkyyOlsAiEA5LKTt5YU6G9np2n2yNM3YZPfdur6eLMgXIwXGfUsCUU="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"1.0.0":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"1.0.0","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-ts":"^1.11","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.1","regex2dfa":"~0.1.6","uproxy-lib":"^12.0.2","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@1.0.0","dist":{"shasum":"68ae929f9daa2fe1ab8cfcc4a998c43cc5cb7919","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-1.0.0.tgz","integrity":"sha512-wXgVo40BzRmsS7XeTTe8N41fUF0nS5YjC6ldk00ygI0J4BK4HRRgO3ZvfySW8QZwMhPja/K9ArmHPFmVFnQlVw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNBSYFXAT6EBSfORch1qrO7jDDb2te7qFtxsRJNUFuaAiBFNtAkIi+5rB0ejekactGLTXOWb+F2geQxXThP+1NtCg=="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"2.0.0":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"2.0.0","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-ts":"^1.11","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.1","regex2dfa":"~0.1.6","uproxy-lib":"^13.0.0","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@2.0.0","dist":{"shasum":"6cb948d80216be36b31a82ad97f00f26a06fe04a","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-2.0.0.tgz","integrity":"sha512-RcXtvZbdFnCSTQTqYiCa3aPSdhEVhqUO1WPLcqE+YBr8ZU9EurTYuSRlQT1PFrR1OZxPfwcD3E2WU8o4aHUXAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHLIvBgRmqp4pvto7AiVj2dJR1agxa726gLmOm0BrpHQIhAI9EifHTz+N7cTuPDZMSS2sWKAVBISzB45qCcTMnXsrN"}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"},"2.1.0":{"name":"uproxy-churn","description":"Obfuscated WebRTC data channels.","version":"2.1.0","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"scripts":{"test":"grunt test"},"devDependencies":{"grunt":"~0.4.5","grunt-ts":"^1.11","grunt-contrib-copy":"^0.5.0","grunt-contrib-clean":"~0.6.0","grunt-contrib-jasmine":"~0.7.0","es6-promise":"^1.0.0","grunt-browserify":"~3.0.1","crypto":"0.0.3","utransformers":"~0.2.1","regex2dfa":"~0.1.6","uproxy-lib":"^13.0.0","grunt-contrib-symlink":"~0.3.0"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"},"_id":"uproxy-churn@2.1.0","dist":{"shasum":"691e13be8acc40660a151777ab7747b6c8c18acc","tarball":"https://registry.npmjs.org/uproxy-churn/-/uproxy-churn-2.1.0.tgz","integrity":"sha512-9TzEH85NjsonMAFZ5XJ5KXKUgFbcYYRTs6T749vX/hViNbdtmWeaZivCpW0MX9wD4nUhF+sbV9JHlqEHXBwQgw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5W/sryNcmca4YmDZI0Q/sTN2uWxsGInGThksSQ4wJvQIgTC0vILj08iZaKpzp6tvwSTmkcGg0tj9gRjxNh1gbZFc="}]},"_from":".","_npmVersion":"1.3.10","_npmUser":{"name":"trevj","email":"trevj@google.com"},"maintainers":[{"name":"trevj","email":"trevj@google.com"}],"deprecated":"all code moved to uproxy"}},"readme":"uproxy-churn\n============\n\n[![Build Status](https://travis-ci.org/uProxy/uproxy-churn.svg?branch=master)](https://travis-ci.org/uProxy/uproxy-churn) [![devDependency Status](https://david-dm.org/uProxy/uproxy-churn/dev-status.svg)](https://david-dm.org/uProxy/uproxy-churn#info=devDependencies)\n\nObfuscated WebRTC data channels.\n\n### Overview\n\nWebRTC supports the creation of peer-to-peer data channels. WebRTC data channels\nare secured with\n[DTLS](http://en.wikipedia.org/wiki/Datagram_Transport_Layer_Security).\nAn observer of the network traffic between two connected hosts can trivially see\nthat DTLS is in use; from this, they may infer that data channels are in use. We\nwish to make it difficult for an observer to detect the use of data channels.\n\nThis repository builds a Freedom module which affords control over WebRTC data\nchannels at the network layer. The module, `churn`, provides an interface\nsimilar to `uproxy-lib`'s `uproxypeerconnection`.\n\n`churn` works by configuring WebRTC to pipe its peer-to-peer data through a\nlocal TURN server. This affords us an opportunity to transform the data prior\nto sending it over the network; `churn` code on the remote host then restores\nthe data to its original format prior to delivering it to the remote WebRTC\npeer.\n\nCurrently, [uTransformers](https://github.com/uProxy/uTransformers) are used to\ntransform and restore the data being sent over the network. The\n[libFTE](https://github.com/uproxy/libfte) transformer, in particular,\naffords great control over format of the data across the untrusted network.\n\nThis repository builds two sample apps, both Chrome apps.\n\n#### turn\n\nDemonstrating the simplest possible use of the `turn` and `net` modules,\nthis app spins up a TURN server on port 9997.\n\nThe server may be used with standard TURN clients, e.g. the command-line\ntools from the `rfc5766-turn-server` suite:\n\n* Install the [rfc5766-turn-server](https://code.google.com/p/rfc5766-turn-server) client utilities (`apt-get install rfc5766-turn-server` on Debian-like systems)\n* Open a terminal and execute `turnutils_peer`. This starts a UDP echo server on ports 3480 and 3481.\n* Open another terminal and execute `turnutils_uclient -s -u test -w test -e 127.0.0.1 127.0.0.1 -p 9997`\n\nYou should see a flurry of activity in the Chrome debugging console. On the\ncommand line, you will soon see a report. The output is not very user-friendly\nbut the important parts are `tot_send_msgs` and `tot_send_bytes`. With the TURN\nserver, echo server, and TURN client all running locally, you should not see any\ndropped packets. For more options, e.g. to open more channels or send larger\ndatagrams, see the\n[turnutils_uclient documentation](https://code.google.com/p/rfc5766-turn-server/wiki/turnutils_uclient).\n\n#### chat\n\nDemonstrates how the `churn` module may be used to drive a two-way chat client.\n\nThe endpoints in use - along with a lot of debugging information - may be\ndetermined by examining the Javascript console; to convince yourself that the\ndata is indeed obfuscated, examine your system's network traffic with the help\nof wireshark.\n","maintainers":[{"name":"trevj","email":"trevj@google.com"}],"time":{"modified":"2022-06-28T05:57:21.895Z","created":"2014-09-10T14:57:52.001Z","0.0.1":"2014-09-10T14:57:52.938Z","0.0.2":"2014-09-10T17:19:58.937Z","0.0.3":"2014-09-10T17:27:06.861Z","0.0.4":"2014-09-12T00:15:44.842Z","0.0.5":"2014-09-12T18:27:11.497Z","1.0.0":"2014-10-03T19:50:34.614Z","2.0.0":"2014-10-06T23:54:58.482Z","2.1.0":"2014-10-07T15:35:58.192Z"},"readmeFilename":"README.md","repository":{"type":"git","url":"https://github.com/uproxy/uproxy-churn"},"bugs":{"url":"https://github.com/uproxy/uproxy-churn/issues"}}