{"id":13611540,"url":"https://github.com/google/ssl_logger","last_synced_at":"2025-09-28T23:32:37.204Z","repository":{"id":44006777,"uuid":"95790766","full_name":"google/ssl_logger","owner":"google","description":"Decrypts and logs a process's SSL traffic.","archived":true,"fork":false,"pushed_at":"2020-10-20T11:32:22.000Z","size":12,"stargazers_count":1103,"open_issues_count":1,"forks_count":212,"subscribers_count":45,"default_branch":"master","last_synced_at":"2025-01-07T16:09:07.636Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/google.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-29T15:17:05.000Z","updated_at":"2025-01-05T05:12:22.000Z","dependencies_parsed_at":"2022-07-09T14:46:14.047Z","dependency_job_id":null,"html_url":"https://github.com/google/ssl_logger","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fssl_logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fssl_logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fssl_logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/google%2Fssl_logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/google","download_url":"https://codeload.github.com/google/ssl_logger/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234575214,"owners_count":18854924,"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":"2024-08-01T19:01:57.276Z","updated_at":"2025-09-28T23:32:32.171Z","avatar_url":"https://github.com/google.png","language":"Python","funding_links":[],"categories":["Python","Python (1887)","\u003ca id=\"7bf0f5839fb2827fdc1b93ae6ac7f53d\"\u003e\u003c/a\u003e工具","Networking","Powered by Frida"],"sub_categories":["\u003ca id=\"b346105580b0240d693020ce8719ebca\"\u003e\u003c/a\u003e未分类"],"readme":"# ssl_logger\n\nDecrypts and logs a process's SSL traffic.\n\nThe functionality offered by *ssl_logger* is intended to mimic [Echo Mirage](http://resources.infosecinstitute.com/echo-mirage-walkthrough/)'s SSL logging functionality on Linux and macOS.\n\n## Basic Usage\n\n`python ssl_logger.py [-pcap \u003cpath\u003e] [-verbose] \u003cprocess name | process id\u003e`\n\nArguments:\n\n    -pcap \u003cpath\u003e                 Name of PCAP file to write\n    -verbose                     Show verbose output\n    \u003cprocess name | process id\u003e  Process whose SSL calls to log\n\nExamples:\n\n    ssl_logger.py -pcap ssl.pcap openssl\n    ssl_logger.py -verbose 31337\n    ssl_logger.py -pcap log.pcap -verbose wget\n\n## Full Example\n\n```\ngeffner@ubuntu:~$ # Make a local pipe for input to our openssl client\ngeffner@ubuntu:~$ mkfifo pipe\n\ngeffner@ubuntu:~$ # Create our openssl client, which will receive input from our pipe\ngeffner@ubuntu:~$ openssl s_client -ign_eof -connect example.org:443 \u003e /dev/null 2\u003e /dev/null \u003c pipe \u0026\n[1] 98954\n\ngeffner@ubuntu:~$ # Begin writing the request to our pipe\ngeffner@ubuntu:~$ printf \"GET / HTTP/1.0\\nHost:example.org\\n\" \u003e pipe\n\ngeffner@ubuntu:~$ # Begin logging the SSL traffic for our openssl client process\ngeffner@ubuntu:~$ python ssl_logger.py -verbose 98954 \u0026\n[2] 98962\nPress Ctrl+C to stop logging.\n\ngeffner@ubuntu:~$ # Write the final line-feed to our pipe to complete the HTTP request\ngeffner@ubuntu:~$ printf \"\\n\" \u003e pipe\nSSL Session: 1820201001719DF42ECCA1D289C3D32E0AA0454B50E8AF00E8A65B0108F209A8\n[SSL_write] 100.97.20.44:45836 --\u003e 93.184.216.34:443\n00000000: 0A                                                .\n\nSSL Session: 1820201001719DF42ECCA1D289C3D32E0AA0454B50E8AF00E8A65B0108F209A8\n[SSL_read] 93.184.216.34:443 --\u003e 100.97.20.44:45836\n00000000: 48 54 54 50 2F 31 2E 30  20 32 30 30 20 4F 4B 0D  HTTP/1.0 200 OK.\n00000010: 0A 41 63 63 65 70 74 2D  52 61 6E 67 65 73 3A 20  .Accept-Ranges: \n00000020: 62 79 74 65 73 0D 0A 43  61 63 68 65 2D 43 6F 6E  bytes..Cache-Con\n00000030: 74 72 6F 6C 3A 20 6D 61  78 2D 61 67 65 3D 36 30  trol: max-age=60\n00000040: 34 38 30 30 0D 0A 43 6F  6E 74 65 6E 74 2D 54 79  4800..Content-Ty\n00000050: 70 65 3A 20 74 65 78 74  2F 68 74 6D 6C 0D 0A 44  pe: text/html..D\n00000060: 61 74 65 3A 20 54 68 75  2C 20 32 32 20 4A 75 6E  ate: Thu, 22 Jun\n00000070: 20 32 30 31 37 20 31 35  3A 31 36 3A 35 32 20 47   2017 15:16:52 G\n00000080: 4D 54 0D 0A 45 74 61 67  3A 20 22 33 35 39 36 37  MT..Etag: \"35967\n00000090: 30 36 35 31 22 0D 0A 45  78 70 69 72 65 73 3A 20  0651\"..Expires: \n000000A0: 54 68 75 2C 20 32 39 20  4A 75 6E 20 32 30 31 37  Thu, 29 Jun 2017\n000000B0: 20 31 35 3A 31 36 3A 35  32 20 47 4D 54 0D 0A 4C   15:16:52 GMT..L\n000000C0: 61 73 74 2D 4D 6F 64 69  66 69 65 64 3A 20 46 72  ast-Modified: Fr\n000000D0: 69 2C 20 30 39 20 41 75  67 20 32 30 31 33 20 32  i, 09 Aug 2013 2\n000000E0: 33 3A 35 34 3A 33 35 20  47 4D 54 0D 0A 53 65 72  3:54:35 GMT..Ser\n000000F0: 76 65 72 3A 20 45 43 53  20 28 72 68 76 2F 38 31  ver: ECS (rhv/81\n00000100: 38 46 29 0D 0A 56 61 72  79 3A 20 41 63 63 65 70  8F)..Vary: Accep\n00000110: 74 2D 45 6E 63 6F 64 69  6E 67 0D 0A 58 2D 43 61  t-Encoding..X-Ca\n00000120: 63 68 65 3A 20 48 49 54  0D 0A 43 6F 6E 74 65 6E  che: HIT..Conten\n00000130: 74 2D 4C 65 6E 67 74 68  3A 20 31 32 37 30 0D 0A  t-Length: 1270..\n00000140: 43 6F 6E 6E 65 63 74 69  6F 6E 3A 20 63 6C 6F 73  Connection: clos\n00000150: 65 0D 0A 0D 0A                                    e....\n\nSSL Session: 1820201001719DF42ECCA1D289C3D32E0AA0454B50E8AF00E8A65B0108F209A8\n[SSL_read] 93.184.216.34:443 --\u003e 100.97.20.44:45836\n00000000: 3C 21 64 6F 63 74 79 70  65 20 68 74 6D 6C 3E 0A  \u003c!doctype html\u003e.\n00000010: 3C 68 74 6D 6C 3E 0A 3C  68 65 61 64 3E 0A 20 20  \u003chtml\u003e.\u003chead\u003e.  \n00000020: 20 20 3C 74 69 74 6C 65  3E 45 78 61 6D 70 6C 65    \u003ctitle\u003eExample\n00000030: 20 44 6F 6D 61 69 6E 3C  2F 74 69 74 6C 65 3E 0A   Domain\u003c/title\u003e.\n00000040: 0A 20 20 20 20 3C 6D 65  74 61 20 63 68 61 72 73  .    \u003cmeta chars\n00000050: 65 74 3D 22 75 74 66 2D  38 22 20 2F 3E 0A 20 20  et=\"utf-8\" /\u003e.  \n00000060: 20 20 3C 6D 65 74 61 20  68 74 74 70 2D 65 71 75    \u003cmeta http-equ\n00000070: 69 76 3D 22 43 6F 6E 74  65 6E 74 2D 74 79 70 65  iv=\"Content-type\n00000080: 22 20 63 6F 6E 74 65 6E  74 3D 22 74 65 78 74 2F  \" content=\"text/\n00000090: 68 74 6D 6C 3B 20 63 68  61 72 73 65 74 3D 75 74  html; charset=ut\n000000A0: 66 2D 38 22 20 2F 3E 0A  20 20 20 20 3C 6D 65 74  f-8\" /\u003e.    \u003cmet\n000000B0: 61 20 6E 61 6D 65 3D 22  76 69 65 77 70 6F 72 74  a name=\"viewport\n000000C0: 22 20 63 6F 6E 74 65 6E  74 3D 22 77 69 64 74 68  \" content=\"width\n000000D0: 3D 64 65 76 69 63 65 2D  77 69 64 74 68 2C 20 69  =device-width, i\n000000E0: 6E 69 74 69 61 6C 2D 73  63 61 6C 65 3D 31 22 20  nitial-scale=1\" \n000000F0: 2F 3E 0A 20 20 20 20 3C  73 74 79 6C 65 20 74 79  /\u003e.    \u003cstyle ty\n00000100: 70 65 3D 22 74 65 78 74  2F 63 73 73 22 3E 0A 20  pe=\"text/css\"\u003e. \n00000110: 20 20 20 62 6F 64 79 20  7B 0A 20 20 20 20 20 20     body {.      \n00000120: 20 20 62 61 63 6B 67 72  6F 75 6E 64 2D 63 6F 6C    background-col\n00000130: 6F 72 3A 20 23 66 30 66  30 66 32 3B 0A 20 20 20  or: #f0f0f2;.   \n00000140: 20 20 20 20 20 6D 61 72  67 69 6E 3A 20 30 3B 0A       margin: 0;.\n00000150: 20 20 20 20 20 20 20 20  70 61 64 64 69 6E 67 3A          padding:\n00000160: 20 30 3B 0A 20 20 20 20  20 20 20 20 66 6F 6E 74   0;.        font\n00000170: 2D 66 61 6D 69 6C 79 3A  20 22 4F 70 65 6E 20 53  -family: \"Open S\n00000180: 61 6E 73 22 2C 20 22 48  65 6C 76 65 74 69 63 61  ans\", \"Helvetica\n00000190: 20 4E 65 75 65 22 2C 20  48 65 6C 76 65 74 69 63   Neue\", Helvetic\n000001A0: 61 2C 20 41 72 69 61 6C  2C 20 73 61 6E 73 2D 73  a, Arial, sans-s\n000001B0: 65 72 69 66 3B 0A 20 20  20 20 20 20 20 20 0A 20  erif;.        . \n000001C0: 20 20 20 7D 0A 20 20 20  20 64 69 76 20 7B 0A 20     }.    div {. \n000001D0: 20 20 20 20 20 20 20 77  69 64 74 68 3A 20 36 30         width: 60\n000001E0: 30 70 78 3B 0A 20 20 20  20 20 20 20 20 6D 61 72  0px;.        mar\n000001F0: 67 69 6E 3A 20 35 65 6D  20 61 75 74 6F 3B 0A 20  gin: 5em auto;. \n00000200: 20 20 20 20 20 20 20 70  61 64 64 69 6E 67 3A 20         padding: \n00000210: 35 30 70 78 3B 0A 20 20  20 20 20 20 20 20 62 61  50px;.        ba\n00000220: 63 6B 67 72 6F 75 6E 64  2D 63 6F 6C 6F 72 3A 20  ckground-color: \n00000230: 23 66 66 66 3B 0A 20 20  20 20 20 20 20 20 62 6F  #fff;.        bo\n00000240: 72 64 65 72 2D 72 61 64  69 75 73 3A 20 31 65 6D  rder-radius: 1em\n00000250: 3B 0A 20 20 20 20 7D 0A  20 20 20 20 61 3A 6C 69  ;.    }.    a:li\n00000260: 6E 6B 2C 20 61 3A 76 69  73 69 74 65 64 20 7B 0A  nk, a:visited {.\n00000270: 20 20 20 20 20 20 20 20  63 6F 6C 6F 72 3A 20 23          color: #\n00000280: 33 38 34 38 38 66 3B 0A  20 20 20 20 20 20 20 20  38488f;.        \n00000290: 74 65 78 74 2D 64 65 63  6F 72 61 74 69 6F 6E 3A  text-decoration:\n000002A0: 20 6E 6F 6E 65 3B 0A 20  20 20 20 7D 0A 20 20 20   none;.    }.   \n000002B0: 20 40 6D 65 64 69 61 20  28 6D 61 78 2D 77 69 64   @media (max-wid\n000002C0: 74 68 3A 20 37 30 30 70  78 29 20 7B 0A 20 20 20  th: 700px) {.   \n000002D0: 20 20 20 20 20 62 6F 64  79 20 7B 0A 20 20 20 20       body {.    \n000002E0: 20 20 20 20 20 20 20 20  62 61 63 6B 67 72 6F 75          backgrou\n000002F0: 6E 64 2D 63 6F 6C 6F 72  3A 20 23 66 66 66 3B 0A  nd-color: #fff;.\n00000300: 20 20 20 20 20 20 20 20  7D 0A 20 20 20 20 20 20          }.      \n00000310: 20 20 64 69 76 20 7B 0A  20 20 20 20 20 20 20 20    div {.        \n00000320: 20 20 20 20 77 69 64 74  68 3A 20 61 75 74 6F 3B      width: auto;\n00000330: 0A 20 20 20 20 20 20 20  20 20 20 20 20 6D 61 72  .            mar\n00000340: 67 69 6E 3A 20 30 20 61  75 74 6F 3B 0A 20 20 20  gin: 0 auto;.   \n00000350: 20 20 20 20 20 20 20 20  20 62 6F 72 64 65 72 2D           border-\n00000360: 72 61 64 69 75 73 3A 20  30 3B 0A 20 20 20 20 20  radius: 0;.     \n00000370: 20 20 20 20 20 20 20 70  61 64 64 69 6E 67 3A 20         padding: \n00000380: 31 65 6D 3B 0A 20 20 20  20 20 20 20 20 7D 0A 20  1em;.        }. \n00000390: 20 20 20 7D 0A 20 20 20  20 3C 2F 73 74 79 6C 65     }.    \u003c/style\n000003A0: 3E 20 20 20 20 0A 3C 2F  68 65 61 64 3E 0A 0A 3C  \u003e    .\u003c/head\u003e..\u003c\n000003B0: 62 6F 64 79 3E 0A 3C 64  69 76 3E 0A 20 20 20 20  body\u003e.\u003cdiv\u003e.    \n000003C0: 3C 68 31 3E 45 78 61 6D  70 6C 65 20 44 6F 6D 61  \u003ch1\u003eExample Doma\n000003D0: 69 6E 3C 2F 68 31 3E 0A  20 20 20 20 3C 70 3E 54  in\u003c/h1\u003e.    \u003cp\u003eT\n000003E0: 68 69 73 20 64 6F 6D 61  69 6E 20 69 73 20 65 73  his domain is es\n000003F0: 74 61 62 6C 69 73 68 65  64 20 74 6F 20 62 65 20  tablished to be \n\nSSL Session: 1820201001719DF42ECCA1D289C3D32E0AA0454B50E8AF00E8A65B0108F209A8\n[SSL_read] 93.184.216.34:443 --\u003e 100.97.20.44:45836\n00000000: 75 73 65 64 20 66 6F 72  20 69 6C 6C 75 73 74 72  used for illustr\n00000010: 61 74 69 76 65 20 65 78  61 6D 70 6C 65 73 20 69  ative examples i\n00000020: 6E 20 64 6F 63 75 6D 65  6E 74 73 2E 20 59 6F 75  n documents. You\n00000030: 20 6D 61 79 20 75 73 65  20 74 68 69 73 0A 20 20   may use this.  \n00000040: 20 20 64 6F 6D 61 69 6E  20 69 6E 20 65 78 61 6D    domain in exam\n00000050: 70 6C 65 73 20 77 69 74  68 6F 75 74 20 70 72 69  ples without pri\n00000060: 6F 72 20 63 6F 6F 72 64  69 6E 61 74 69 6F 6E 20  or coordination \n00000070: 6F 72 20 61 73 6B 69 6E  67 20 66 6F 72 20 70 65  or asking for pe\n00000080: 72 6D 69 73 73 69 6F 6E  2E 3C 2F 70 3E 0A 20 20  rmission.\u003c/p\u003e.  \n00000090: 20 20 3C 70 3E 3C 61 20  68 72 65 66 3D 22 68 74    \u003cp\u003e\u003ca href=\"ht\n000000A0: 74 70 3A 2F 2F 77 77 77  2E 69 61 6E 61 2E 6F 72  tp://www.iana.or\n000000B0: 67 2F 64 6F 6D 61 69 6E  73 2F 65 78 61 6D 70 6C  g/domains/exampl\n000000C0: 65 22 3E 4D 6F 72 65 20  69 6E 66 6F 72 6D 61 74  e\"\u003eMore informat\n000000D0: 69 6F 6E 2E 2E 2E 3C 2F  61 3E 3C 2F 70 3E 0A 3C  ion...\u003c/a\u003e\u003c/p\u003e.\u003c\n000000E0: 2F 64 69 76 3E 0A 3C 2F  62 6F 64 79 3E 0A 3C 2F  /div\u003e.\u003c/body\u003e.\u003c/\n000000F0: 68 74 6D 6C 3E 0A                                 html\u003e.\n```\n\n## Dependencies\nThis program uses the [frida](https://www.frida.re/) framework to perform code injection.\n\nFrida can be installed as follows: `sudo pip install frida`\n\n## TODO\n\n - Add support for processes that communicate via SSL without using [libssl](https://wiki.openssl.org/index.php/Libssl_API).\n - Allow user to run *ssl_logger* before starting the process to be logged.\n\n\n## Disclaimer\n\nThis is not an official Google product.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fssl_logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogle%2Fssl_logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogle%2Fssl_logger/lists"}