{ "info": { "author": "Gernot Vormayr", "author_email": "gvormayr@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: MIT License", "Operating System :: POSIX :: Linux", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet", "Topic :: Security", "Topic :: Software Development :: Libraries", "Topic :: System :: Operating System Kernels :: Linux" ], "description": "fnfqueue\n========\n\n[![Build Status](https://travis-ci.org/notti/fnfqueue.svg?branch=master)](https://travis-ci.org/notti/fnfqueue)\n[![Python Versions](https://img.shields.io/pypi/pyversions/fnfqueue.svg)](https://pypi.org/project/fnfqueue/)\n[![PyPI - License](https://img.shields.io/pypi/l/fnfqueue.svg)](https://pypi.org/project/fnfqueue/)\n\nFast netfilter nfqueue python and C interface. Gets the speed from\n- avoiding memory allocation\n- batching reads (uses `recv_mmsg`)\n\nIt also does not use the callback-like interface of libnetfilter-queue and provides a more python like iterator interface. Additionally, it doesn't assume anything and therefore doesn't automatically set verdicts on packets (unlike python-nfqueue in debian which accepts everything after you return from the callback...)\n\nIt can handle `ping -f` (even `iperf` if the moon is in the right spot) to localhost from within python.\n\nFocus is on a python like interface.\n\nShort example for mangling packets:\n```bash\niptables -A OUTPUT -j NFQUEUE --queue-num 1\n```\n\n```python\nimport fnfqueue\n\nqueue = 1\nconn = fnfqueue.Connection()\n\ntry:\n q = conn.bind(queue)\n q.set_mode(0xffff, fnfqueue.COPY_PACKET)\nexcept PermissionError:\n print(\"Access denied; Do I have root rights or the needed capabilities?\")\n sys.exit(-1)\n\nwhile True:\n try:\n for packet in conn:\n packet.payload = packet.payload # modify the packet here\n packet.mangle()\n except fnfqueue.BufferOverflowException:\n print(\"buffer error\")\n pass\n\nconn.close() # this can be called concurrently to cancel the above for loop\n```\n\nHelp is provided as python docs.\n\nNo C libraries are needed. Needs cffi for building. Kernel and libc must be recent enough to support `nfqueue` and `recvmmsg` (linux 2.6.33, glibc 2.12 - more recent kernels provide better performance).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/notti/fnfqueue", "keywords": "nfqueue netfilter netlink iptables firewall mangle", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "fnfqueue", "package_url": "https://pypi.org/project/fnfqueue/", "platform": "", "project_url": "https://pypi.org/project/fnfqueue/", "project_urls": { "Homepage": "https://github.com/notti/fnfqueue" }, "release_url": "https://pypi.org/project/fnfqueue/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "Fast python library encapsulating the nfqueue netlink interface.", "version": "1.1.1" }, "last_serial": 5550025, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "7b1c2532cf63d625992c813e766d1cee", "sha256": "06f2e53f2231ab081f5cc6c3d1735493db0169369284fca6187f67ce3f2c53d1" }, "downloads": -1, "filename": "fnfqueue-1.0.tar.gz", "has_sig": false, "md5_digest": "7b1c2532cf63d625992c813e766d1cee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11868, "upload_time": "2018-04-29T19:19:25", "url": "https://files.pythonhosted.org/packages/fd/6a/5091fb64da9d8d3b4e1c60cd0d19055b459422f388cb2fd3d8240dbee739/fnfqueue-1.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ce9745ce7f85f4fe6f96050efe82d471", "sha256": "c48f91f314201001d0d7762f38b389a6649bc1006ca282c7a9ba7523a98ea82a" }, "downloads": -1, "filename": "fnfqueue-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ce9745ce7f85f4fe6f96050efe82d471", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12160, "upload_time": "2019-06-14T15:02:02", "url": "https://files.pythonhosted.org/packages/cf/d7/e3db4d85038d33d52d50b8104b1c6154443eb88e291f93578ce7e40fee11/fnfqueue-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e4aae9854b2a546955a5efed88d1e408", "sha256": "b0a839094bbc46d1f1ffd8765b8e3eea13f85c19b54164b6b292c015069ed088" }, "downloads": -1, "filename": "fnfqueue-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e4aae9854b2a546955a5efed88d1e408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12158, "upload_time": "2019-07-18T09:33:37", "url": "https://files.pythonhosted.org/packages/0f/35/a18e58350d72a4bb4963c07802d60fc117462268c4be4b7807ae406ad70e/fnfqueue-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e4aae9854b2a546955a5efed88d1e408", "sha256": "b0a839094bbc46d1f1ffd8765b8e3eea13f85c19b54164b6b292c015069ed088" }, "downloads": -1, "filename": "fnfqueue-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e4aae9854b2a546955a5efed88d1e408", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12158, "upload_time": "2019-07-18T09:33:37", "url": "https://files.pythonhosted.org/packages/0f/35/a18e58350d72a4bb4963c07802d60fc117462268c4be4b7807ae406ad70e/fnfqueue-1.1.1.tar.gz" } ] }