{"id":26852986,"url":"https://github.com/P1sec/pysctp","last_synced_at":"2025-03-30T23:02:09.046Z","repository":{"id":713805,"uuid":"360689","full_name":"P1sec/pysctp","owner":"P1sec","description":"SCTP stack for Python","archived":false,"fork":false,"pushed_at":"2023-07-19T18:34:46.000Z","size":145,"stargazers_count":158,"open_issues_count":5,"forks_count":66,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-04-26T22:03:13.009Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.p1sec.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/P1sec.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2009-11-04T12:59:47.000Z","updated_at":"2024-06-18T19:54:12.172Z","dependencies_parsed_at":"2024-06-18T19:54:10.402Z","dependency_job_id":"a83f906b-5c0d-4c47-a168-951460e1698f","html_url":"https://github.com/P1sec/pysctp","commit_stats":{"total_commits":65,"total_committers":9,"mean_commits":7.222222222222222,"dds":0.6615384615384615,"last_synced_commit":"f32ea6783009d78b27413c26a991ba8b9c9a2c6d"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P1sec%2Fpysctp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P1sec%2Fpysctp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P1sec%2Fpysctp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/P1sec%2Fpysctp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/P1sec","download_url":"https://codeload.github.com/P1sec/pysctp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246390866,"owners_count":20769477,"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":[],"created_at":"2025-03-30T23:01:20.625Z","updated_at":"2025-03-30T23:02:09.012Z","avatar_url":"https://github.com/P1sec.png","language":"Python","funding_links":[],"categories":["Protocols"],"sub_categories":["SCTP"],"readme":"PySCTP - SCTP bindings for Python\n---------------------------------\n\nElvis Pfützenreuter \nInstituto Nokia de Tecnologia (http://www.indt.org.br)\nepx __AT__ epx.com.br\n\nPhilippe Langlois\nP1 Security (http://www.p1sec.com)\nphil __AT__ p1sec.com\n\n======================================================================\nINSTALL\n\nsudo python setup.py install\n\n* to see what this is going to install without actually doing it:\npython setup.py install --dry-run\n\n* to just build and not install:\npython setup.py build\n\nIn case you want to install the module explicitely for Python 2 or 3,\njust replace _python_ by _python2_ / _python3_ in the commands above.\n\n======================================================================\nDEPENDENCIES:\n\nYou can automatically install dependencies for Debian/Ubuntu:\nmake installdeps\n\nOtherwise, necessary would be e.g. on Ubuntu: libsctp-dev and python-dev \n(python2-dev or python3-dev for an explicit version of Python)\n\nSupport for Mac OSX is not tested, but should be doable through the SCTP Network\nKernel Extension (NKE) available at:\nhttps://github.com/sctplab/SCTP_NKE_HighSierra\n\n======================================================================\nINTRODUCTION\n\nPySCTP gives access to the SCTP transport protocol from Python language.\nIt extends the traditional socket interface, allowing\nSCTP sockets to be used in most situations where a TCP or UDP socket\nwould work, while preserving the unique characteristics of the protocol.\n\nFor more information about SCTP, go to http://www.sctp.org or RFC 4960.\nFor discussion, sources, bugs, go to http://github.com/p1sec/pysctp\n\nIn a nutshell, PySCTP can be used as follows:\n\n---------\n\nimport socket\nimport sctp\n\nsk = sctp.sctpsocket_tcp(socket.AF_INET)\nsk.connect((\"10.0.1.1\", 36413))\n\n... most socket operations work for SCTP too ...\n\nsk.close()\n\n---------\n\nThe autotest programs (e.g. test_local_cnx.py) are actually good examples of \npysctp usage.\n\nThe BSD/Sockets SCTP extensions are defined by an IETF draft\n(draft-ietf-tsvwg-sctpsocket-10.txt) and PySCTP tries to map those\nextensions very closely. So, to really take the most advantage of\nSCTP and PySCTP, you must understand how the API works. You can\nfind advice about it in the the draft itself (not incredibly easy\nto understand though), as well the 3rd edition of Unix Network \nProgramming.\n\n\n======================================================================\nDESCRIPTION\n\n1) The \"sctp\" module\n\nThe \"sctp\" module is the Python side of the bindings. The docstrings\nof every class and method can give good advice of functions, but the\nhighlights are:\n\n* sctpsocket is the root class for SCTP sockets, that ought not be used\n  directly by the users. It does *not* inherit directly from Python\n  standard socket; instead it *contains* a socket. That design was\n  followed mostly because UDP-style sockets can be \"peeled off\" and \n  return TCP-style sockets. \n\n  sctpsocket delegates unknown methods to the socket. This ensures that\n  methods like close(), bind(), read(), select() etc. will work as expected.\n  If the real socket is really needed, it can be obtained with\n  sctpsocket.sock().\n\n* As said, \"Normal\" socket calls like open(), bind(), close() etc. \n  can be used on SCTP sockets because they are delegated to the\n  Python socket. \n\n* Users will normally use the sctpsocket_tcp (TCP style) and sctpsocket_udp\n  (UDP style) classes. Some calls that are implemented in sctpsocket but \n  do not make sense in a particular style are rendered invalid in each\n  class (e.g. peeloff() in TCP-style sockets).\n\n2) The \"_sctp\" module\n\nThis is the C side of the bindings, that provides the \"glue\" between\nPython and the C API. The regular PySCTP user should not need to get \ninto this, but power users and developers may be interested in it. \n\nThe interface between Python and C is designed to be as simple as\npossible. In particular, no object is created in C side, just \nsimple types (strings, integers, lists, tuples and dictionaries).\n\nThe translation to/from complex objects is done entirely in Python.\nIt avoids that _sctp depends on sctp.\n\nNOTE: it all has been tested agains lksctp-utils 1.0.1 and kernel\n2.6.10, that come with Ubuntu Hoary. Some newer calls like connectx()\ndepend of testing on a newer environment to be implemented.\n\n\n======================================================================\nLicense\n\nThis module is licensed under the LGPL license.\n\n======================================================================\nCredits\n\nElvis Pfützenreuter \u003celvis.pfutzenreuter __AT__ indt.org.br\u003e\nPhilippe Langlois \u003cphil __AT__ p1sec.com\u003e\nCasimiro Daniel NPRI \u003cCasimiroD  __AT__ npt.nuwc.navy.mil\u003e - patch for new SCTP_* constants\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FP1sec%2Fpysctp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FP1sec%2Fpysctp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FP1sec%2Fpysctp/lists"}