{"id":13632805,"url":"https://github.com/abemassry/wsend-gpg","last_synced_at":"2025-07-23T06:35:28.489Z","repository":{"id":11085767,"uuid":"13433999","full_name":"abemassry/wsend-gpg","owner":"abemassry","description":"Encrypted end to end file transfer","archived":false,"fork":false,"pushed_at":"2018-07-13T00:28:30.000Z","size":26,"stargazers_count":106,"open_issues_count":0,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-02T01:24:07.801Z","etag":null,"topics":["curl","encryption","friends","gpg","hacktoberfest","shell","storage","transfer","wsend-gpg"],"latest_commit_sha":null,"homepage":"https://wsend.net","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abemassry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-09T05:41:21.000Z","updated_at":"2023-12-09T00:51:24.000Z","dependencies_parsed_at":"2022-09-06T16:22:06.618Z","dependency_job_id":null,"html_url":"https://github.com/abemassry/wsend-gpg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abemassry/wsend-gpg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abemassry%2Fwsend-gpg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abemassry%2Fwsend-gpg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abemassry%2Fwsend-gpg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abemassry%2Fwsend-gpg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abemassry","download_url":"https://codeload.github.com/abemassry/wsend-gpg/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abemassry%2Fwsend-gpg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266631573,"owners_count":23959420,"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","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"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":["curl","encryption","friends","gpg","hacktoberfest","shell","storage","transfer","wsend-gpg"],"created_at":"2024-08-01T22:03:16.125Z","updated_at":"2025-07-23T06:35:28.463Z","avatar_url":"https://github.com/abemassry.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"wsend-gpg\n=========\n\nEncrypted end to end file transfer\n\n## Idea\n  We wanted to make end to end encryption as simple as possible using standard tools.  wsend-gpg is a very simple 5 line script to get this done.\n\n## Demo\n\n### Encrypt and Send\n    user@system:~/Documents$ wsend-gpg message.txt\n    Enter passphrase:\n      \n      % Total    % Received % Xferd Average Speed   Time    Time     Time  Current\n                                    Dload  Upload   Total   Spent    Left  Speed\n    100   497  100    66  100   431    222   1452 --:--:-- --:--:-- --:--:--  2233\n    https://wsend.net/ef9f450907eac00f96d389ae2efb50f6/message.txt.gpg\n    user@system:~/Documents$\n\n### Receive and Decrypt\n    user@system:~/Documents$ wget-gpg https://wsend.net/ef9f450907eac00f96d389ae2efb50f6/message.txt.gpg\n    --2013-10-09 11:59:49--  https://wsend.net/ef9f450907eac00f96d389ae2efb50f6/message.txt.gpg\n    Resolving wsend.net (wsend.net)... 66.228.37.175\n    Connecting to wsend.net (wsend.net)|66.228.37.175|:443... connected.\n    HTTP request sent, awaiting response... 200 OK\n    Length: 94 [application/octet-stream]\n    Saving to: `message.txt.gpg'\n\n    100%[==============================================\u003e] 94          --.-K/s   in 0.07s\n\n    2013-10-09 11:59:49 (1.41 KB/s) - `message.txt.gpg' saved [94/94]\n\n    gpg: AES256 encrypted data\n    Enter passphrase:\n    gpg: encrypted with 1 passphrase\n    spider@myst:~/Documents/wsend-gpg$\n\n\n\n## Overview\n\n`wsend-gpg` requires `wsend` and `gpg`.  \n\n`wsend-gpg` uses [wsend.net](https://wsend.net) for backend file handling.\n\n## Install\n\n    wget https://raw.githubusercontent.com/abemassry/wsend-gpg/master/install.sh -O - | bash\n    alias wsend=\"~/.wsend/wsend\"; alias wsend-gpg=\"~/.wsend/wsend-gpg\"; alias wget-gpg=\"~/.wsend/wget-gpg\"\nNote: This install command appends the alias to your .bashrc or equivalent\n\n\n## Source\n### wsend-gpg\n    #!/bin/bash\n    #\n    gpg -c -z 9 --require-secmem --cipher-algo AES256 --s2k-cipher-algo AES256 --s2k-digest-algo SHA512 --s2k-mode 3 --s2k-count 65000000 --compress-algo BZIP2 \"$1\"\n    if [ -e \"$1.gpg\" ]; then\n      $HOME/.wsend/wsend \"$1.gpg\"\n      rm \"$1.gpg\"\n    fi\n  \n### wget-gpg\n    #!/bin/bash\n    #\n    wget \"$1\"\n    filename=${1##*/}\n    filenamed=${filename%.*}\n    gpg \"$filename\"\n    if [ -e \"$filenamed\" ]; then\n      rm \"$filename\"\n    fi\n\n## Features\n\n - Encrypt file\n - Send file right from the command line without having to specify a directory\n - Gives you a url\n - Integrates well with unix pipes\n - Send a file without registering\n - User accounts available with large amounts of storage space\n\n## Usage\n\n   **Usage:**\n   \n     wsend-gpg \u003cfile\u003e\n     wget-gpg \u003curl\u003e\n   \n   **Common Commands:**\n\n   *Encrypt and Send a file*\n\n     wsend-gpg file.txt\n\n   *Receive a file and Decrypt*\n\n     wget-gpg https://wsend.net/ef9f450907eac00f96d389ae2efb50f6/file.txt.gpg\n\n   *Send a file in an email to your friend (if you have the mail command set up)*\n\n     wsend-gpg logfile.log | mail -s \"Here was that log file you wanted\" friend@example.com\n\n   *Remember to use a passphrase that your friend already knows (but don't send it over email)*\n\n   *Register*\n\n     wsend --register\n\n   *Login*\n   \n     wsend --login\n   \n   *Refer a friend (receive 1GB for you and friend)*\n   \n     wsend --refer friend@example.com\n\n   *Get a referral link to send to people*\n   \n     wsend --refer-link\n     \n\n## Pricing \n\n| Account                               | Space     | Price                |\n|---------------------------------------|-----------|----------------------|\n| Unregistered (Anonymous) Account      | 200MB     | Free                 |\n| Free Account                          | 2GB       | Free                 |\n| Supporter Paid Account                | 10GB      | $10/year or $1/month |\n| Enthusiast Paid Account               | 75GB      | $30/year or $3/month |\n| Hero Paid Account                     | 100GB     | $50/year or $5/month |\n \n\n## API\nThe API is REST like in the sense that there is a representational transfer of state.  It isn't REST like in the sense that the only transport method that is used is HTTP POST.\n\nTo get a user id:\n\n    curl -F \"start=1\" https://wsend.net/createunreg\n    \nThis should be saved to a file or a database\n\nTo send a file:\n\n    curl -F \"uid=$id\" -F \"filehandle=@$fileToSend\" https://wsend.net/upload_cli\n    \nWhere `$id` is the id from the previous request and `$fileToSend` is the file you would like to send.\n\nTo see if the user has storage space available to send this file:\n\n  curl -F \"uid=$id\" -F \"size=$fileToSendSize\" https://wsend.net/userspaceavailable\n    \n\nWhere `$fileToSendSize` is the filesize in bytes.\n\nTo register a user:\n\n  curl -F \"uid=$id\" -F \"email=$email\" -F \"password=$password\" https://wsend.net/register_cli\n    \nYou want to protect the password from showing up anywhere as security measure.  For the wsend command line script the password is not echoed and passed directly as a variable.\n\nTo log in a user:\n\n  curl -F \"email=$email\" -F \"password=$password\" https://wsend.net/login_cli\n    \n\n## FAQ\n\n 1. Q: How does this differ from [wsend](https://github.com/abemassry/wsend)\n  \n  A: `wsend-gpg` uses `wsend` for file transfer to get a url for a file.  [wsend.net](https://wsend.net) is used as a backend file store\n\n 2. Q: How is this different from `scp`?\n\n  A: `scp` is useful for transferring from one system to the other using the ssh protocol.  `wsend-gpg` differs in that both systems don't have to be up and running, the transfer is done using the https protocol, and there are always two steps.\n\n 3. Q: Why did you program this in Bash wasn't that painful? Bash isn't meant to do these things, you could have used python with pip, nodejs with npm, or ruby with rubygems.\n \n  A: While it was painful we wanted this script to be ubiquitous as possible and bash was installed on all of our *nix machines.  We do have plans to write this in the languages you mention and will work towards this in the future.  If you would like to write a client in one of these languages it would be something we would both appreciate and support. *Update [node-wsend](https://github.com/abemassry/node-wsend) now available.\n\n\n 4. Q: When are the Enthusiast and Hero accounts going to become available?\n \n  A: As soon as we generate enough income with the Supporter accounts we can purchase more servers and more space.  We do not want to degrade the quality of paid accounts because paying customers deserve the best treatment.  We do not want to offer services that we can't fully 100% support until we are ready to.\n\n 5. Q: What is the max filesize?\n\n  A: For the Unregistered Account it is 200MB, for the Free account it is 2GB, for the Paid accounts it is 10GB. Since wsend-gpg encrypts the file using gpg it might take a long time to encrypt for a large filesize, also the disk is used to store the encrypted file temporarily so make sure you don't run out of space.\n\n 6. Q: I have an unregistered account, why is my file not loading?\n\n  A: We remove files from unregistered accounts when they become 30 days old or space is needed on the server whichever comes first.\n\n 7. Q: I have a free account, why are my files missing?\n\n  A: We remove files from free accounts when they become 30 days old or space is needed on the server whichever comes first.\n\n 8. Q: But why, that doesn't seem right, no other service does this?\n\n  A: The wsend program and service is primarily provided for sending files. We have to maintain the best service possible for paying users, once the paying user-base grows we can support more benefits for the unregistered and free accounts.  This service is not meant to compete with other services that store files for free, it can be used as a quick and easy way to send files.\n\n 9. Q: Can I use the wsend script to interface with another web service?\n\n  A: By all means, its GPL licensed and you can adapt it to whatever service you would like or create your own.\n\n 10. Q: I have a problem but it is not listed here, who should I ask?\n\n  A: While we will try to respond to all requests, you can contact us at https://wsend.net/about If you are a paying user we will definitely respond and will not rest till your problem is resolved.  Just fill out the contact form with your email that is registered to your paid account.  Paid accounts are so important to us because it not only keeps the lights on and the hard drives spinning, it validates what we are doing and it says you support us, you support the community, and you support an open internet where everyone can exchange ideas.  You are also joining us in contributing to something larger than ourselves.\n\n  \n\n### Help\n\nIf you find wsend-gpg difficult to use, please open up a [Github issue](https://github.com/abemassry/wsend-gpg/issues) or if you see an area that can be improved send a pull request! \n\n#### ~.wsend/ directory\n\nIn this directory the executable bash script wsend is stored, along with the README.md documentation, the GPL COPYING licence, a file called version which stores the version and which wsend checks against the github repo to determine whether it should install updates, and a file called .id, which is an identifier for the command line user.\n\n#### version\n\nThis file stores the version and wsend checks against the github repo to determine whether it should install updates.\n\n#### .id\n\nThis file stores an identifier for the command line user\n\n#### README.md\n\nThis file\n\n#### COPYING\n\nThe GPL licence\n\n#### wsend\n\nThe executable bash script, this can send files and also install the ~.wsend/ directory.  The only user file it changes is the .bashrc file by appending the alias to the end.  If you have bash installed but use another popular shell it will install it to that .*rc file\n\n#### wsend-gpg\n\nThe `wsend-gpg` executable bash script from this repo.\n\n#### wget-gpg\n\nThe `wget-gpg` executable bash script from this repo.\n\n\n#### (C) Copyright 2018, wsend.net\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabemassry%2Fwsend-gpg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabemassry%2Fwsend-gpg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabemassry%2Fwsend-gpg/lists"}