{"id":17086211,"url":"https://github.com/kach/scotty","last_synced_at":"2026-05-03T16:32:58.679Z","repository":{"id":66653324,"uuid":"58293218","full_name":"kach/scotty","owner":"kach","description":"Specify Characters On a TTY - Readline for binary input","archived":false,"fork":false,"pushed_at":"2016-05-08T17:03:42.000Z","size":6,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-23T14:36:59.561Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kach.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2016-05-08T02:33:58.000Z","updated_at":"2020-01-03T23:25:56.000Z","dependencies_parsed_at":"2023-02-28T16:31:06.035Z","dependency_job_id":null,"html_url":"https://github.com/kach/scotty","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kach/scotty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fscotty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fscotty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fscotty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fscotty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kach","download_url":"https://codeload.github.com/kach/scotty/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kach%2Fscotty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32577122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-10-14T13:27:55.156Z","updated_at":"2026-05-03T16:32:58.634Z","avatar_url":"https://github.com/kach.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"SCOTTY(1)                           scotty                           SCOTTY(1)\n\n\n\nNAME\n       scotty - Specify Characters On a TTY\n\n\nDESCRIPTION\n       Much  like  readline(3)  for  binary data: ScoTTY lets you quickly send\n       arbitrary binary strings to standard output.\n\n\nMOTIVATION\n       Often, you want to send a binary string on the command line. For  exam-\n       ple,  you  may  be  sending  shellcode  over  netcat(1)  or  seeing how\n       figlet(1) behaves with accented Unicode characters.\n\n       Unfortunately, specifying binary data is rather tricky.  Using  echo(1)\n       is one option. However, there are pitfalls. For example, echo(1) adds a\n       trailing newline unless you use the -n option (which several  implemen-\n       tations  such as that of sh(1) fail to support). Also, escaping charac-\n       ters (with the -e option) gets difficult after more than one  layer  of\n       backslashes, since the shell itself also tries to do some escaping.\n\n       A  better  option might be printf(1) but it isn't interactive: you must\n       specify the string to be printed in the command, and so you cannot mod-\n       ify  the payload based on the output of the command you want to pipe it\n       to. You might try cat(1) with argument - to read  from  stdin  interac-\n       tively,  but  this  doesn't  allow arbitrary binary input and so we are\n       back where we started.\n\n       With ScoTTY, you can do things like\n\n              $ scotty | nc evil.site.com 1337\n\n       and then pipe whatever binary data you wish.\n\n\nINSTALLATION\n       Using the attached Makefile should suffice on  most  Unix  systems.  On\n       OSX,  the  attached  Ruby file acts as a Homebrew Formula. Binaries for\n       Linux and OSX are available on the Releases section of this repository.\n       Scotty  has  no dependencies, so it is highly portable and can be user-\n       installed to a home directory, or even copied to a server  with  scp(1)\n       or equivalent.\n\n\nKEYBINDINGS\n       ^D     [D]one with message (send current message to stdout)\n\n\n       ^C     [C]lear current message (press twice to [C]ancel session)\n\n\n       ^X     Erase a character\n\n\n       backspace\n              Erase a character\n\n\n       ^L     C[l]ear  and redraw (in case the terminal output breaks for some\n              reason).\n\n\n       \\      Input an ANSI-C string escape character (supports  \\a,  \\b,  \\e,\n              \\f, \\n, \\r, \\t, \\v and \\x** for a raw hex value)\n\n\n       \\!     Input  from shell (brings up a prompt for sh(1) and inserts std-\n              out value into buffer).\n\n\nMISC OTHER TRICKS\n       You can set an environment variable to a binary string with\n\n              export SOMETHING=$(scotty)\n\n       You can \"silently\" read (e.g. a password) with\n\n              scotty 2\u003e\u003e /dev/null | auth\n\n       If you are piping to a program that requires a TTY for stdin,  you  can\n       trick it using a pty. One way to do this is with script(1) as shown:\n\n              $  scotty  |  script  -q  /dev/null python -c \"import sys; print\n              sys.stdin.isatty()\"\n\n              True\n\n\n\nScoTTY                            APRIL 2016                         SCOTTY(1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkach%2Fscotty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkach%2Fscotty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkach%2Fscotty/lists"}