{ "info": { "author": "Mayfield Robotics", "author_email": "dev+dsrtp@mayfieldrobotics.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "=====\ndsrtp\n=====\n\n.. image:: https://travis-ci.org/mayfieldrobotics/dsrtp.svg\n :target: https://travis-ci.org/mayfieldrobotics/dsrtp\n \n.. image:: https://img.shields.io/pypi/v/dsrtp.svg\n :target: https://pypi.python.org/pypi/dsrtp\n\nSimple front-end for decrypting captured `SRTP and SRTCP `_ packets using:\n\n- `libsrtp `_ and \n- `dpkt `_\n\ninstall\n-------\n\nInstall devel `libpcap `_ and `libsrtp `_ if you need to, e.g.:\n\n.. code:: bash\n\n sudo apt-get install libpcap-dev libsrtp0-dev\n \nand then:\n\n.. code:: bash\n\n pip install dsrtp\n\nusage\n-----\n\ncommand\n~~~~~~~\n\nTo e.g. decrypt captured packets and write then back to a capture file:\n\n.. code:: bash\n\n dsrtp test/fixtures/av.pcap /tmp/rtp.pcap -ld -k test/fixtures/av_material.hex\n\nIf you have a cluttered capture (e.g. multiple SRTP streams) then you can\nselect e.g. the in-bound stream by ``address:port`` like:\n\n.. code:: bash\n\n dsrtp test/fixtures/av.pcap /tmp/rtp.pcap -k test/fixtures/av_material.hex -l d -i 192.168.121.234:60401\n\nlib\n~~~\n\nTo do the same in code:\n\n.. code:: python\n\n import dsrtp\n \n enc_km = open('test/fixtures/av_material.hex').read()\n km = dsrtp.KeyingMaterial.unpack_hex(enc_km)\n p = dsrtp.SRTPPolicy(ssrc_type=dsrtp.SRTPPolicy.SSRC_ANY_INBOUND, key=km.local)\n \n with dsrtp.SRTP(p) as ctx, \\\n open('test/fixtures/av.pcap', 'rb') as srtp_pcap, \\\n open('/tmp/rtp.pcap', 'wb') as rtp_pcap:\n pkts = dsrtp.read_packets(srtp_pcap)\n decrypted_pkts = dsrtp.decrypt_packets(ctx, pkts)\n dsrtp.write_packets(rtp_pcap, decrypted_pkts)\n\ndev\n---\n\nCreate a `venv `_:\n\n.. code:: bash\n\n mkvirtualenv dsrtp\n pip install Cython\n\nthen get it:\n\n.. code:: bash\n\n git clone git@github.com:mayfieldrobotics/dsrtp.git\n cd dsrtp\n workon dsrtp\n pip install -e .[test]\n\nand test it:\n\n.. code:: bash\n\n py.test test/ --cov dsrtp --cov-report term-missing --pep8\n\nrelease\n-------\n\nTests pass:\n\n.. code:: bash\n\n py.test test/ --cov dsrtp --cov-report term-missing --pep8\n\nso update ``__version__`` in:\n\n- ``dsrtp/__init__.py``\n\ncommit and tag it:\n\n.. code:: bash\n\n git commit -am \"release v{version}\"\n git tag -a v{version} -m \"release v{version}\"\n git push --tags\n\nand `travis `_ will publish it to `pypi `_.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mayfieldrobotics/dsrtp/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dsrtp", "package_url": "https://pypi.org/project/dsrtp/", "platform": "any", "project_url": "https://pypi.org/project/dsrtp/", "project_urls": { "Homepage": "https://github.com/mayfieldrobotics/dsrtp/" }, "release_url": "https://pypi.org/project/dsrtp/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Frontend for decrypting captured SRTP packets.", "version": "0.2.0" }, "last_serial": 1728703, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "8e8cf13c0616ad53eabbdf2e2480ce59", "sha256": "bde400cb92cc3a093deb6b762b577810aa1d2036e8da99078b5ddeebc17987c3" }, "downloads": -1, "filename": "dsrtp-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8e8cf13c0616ad53eabbdf2e2480ce59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42902, "upload_time": "2015-09-18T02:07:10", "url": "https://files.pythonhosted.org/packages/33/57/62b1615d2a35ed34fb9d25ecfd27a39b6a0d7ca3ff4911a9ae632a838c82/dsrtp-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "499339c510cf3299953911bc7ac8c862", "sha256": "d176fff8db75d66ccf7fef2f866469c1ec6909c3d8d1f622cfdd8e93cdde89f6" }, "downloads": -1, "filename": "dsrtp-0.1.1.tar.gz", "has_sig": false, "md5_digest": "499339c510cf3299953911bc7ac8c862", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42434, "upload_time": "2015-09-18T02:17:39", "url": "https://files.pythonhosted.org/packages/f9/22/c3b71faed6a6ff2304587e68de86f71c8614cdd4d518a969e4202e832d6d/dsrtp-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "149828b27632229754d3420425fb58f3", "sha256": "c42ee62e73b4ad7319fb2f3845fd52e44bd46e284f1cde92a869d6376293c007" }, "downloads": -1, "filename": "dsrtp-0.2.0.tar.gz", "has_sig": false, "md5_digest": "149828b27632229754d3420425fb58f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66607, "upload_time": "2015-09-18T20:53:19", "url": "https://files.pythonhosted.org/packages/c3/a4/53cf10bd04eafe6beb9330532c2f3ee8c5bac2dff15a724e750d5118b9eb/dsrtp-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "149828b27632229754d3420425fb58f3", "sha256": "c42ee62e73b4ad7319fb2f3845fd52e44bd46e284f1cde92a869d6376293c007" }, "downloads": -1, "filename": "dsrtp-0.2.0.tar.gz", "has_sig": false, "md5_digest": "149828b27632229754d3420425fb58f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66607, "upload_time": "2015-09-18T20:53:19", "url": "https://files.pythonhosted.org/packages/c3/a4/53cf10bd04eafe6beb9330532c2f3ee8c5bac2dff15a724e750d5118b9eb/dsrtp-0.2.0.tar.gz" } ] }