End-to-end encrypted file transfer for Android. An Android Magic Wormhole client.

Overview

wormhole-william-mobile

This is a Magic Wormhole client for Android. (Perhaps someday this will also support iOS).

Some current limitations:

  • Receiving directories are kept in zip form.
  • Send only supports sending a single file.

Installing the APK

Available from the Play store: https://play.google.com/store/apps/details?id=io.sanford.wormhole_william

Prebuilt APKs are provided with each release. You can install this to an android device that has developer mode enabled by running:

apk install wormhole-william.release.apk

Building

In order to build this you will need a local install of the android SDK. Set the environment variable ANDROID_SDK_ROOT AND ANDROID_ROOT to the path of the android SDK. Currently this project is hard coded to use platform android-30 (in the make file), so you will need to have that installed (or edit the make file for whatever you have). You will also need a modern version of Go. Probably >= 1.16.

Run make and see what happens!

This project uses https://gioui.org/ for its UI. It uses https://github.com/psanford/wormhole-william for the underlying wormhole implementation.

Screenshots

Receive 1

Receive 2

Send Text 1

Send Text 2

Send File

Issues
  • Receive location?

    Receive location?

    Where was my received file saved to? It wasn't in downloads, and browsing around I couldn't find it. If you're not going to put it in Downloads, it would be great if a configuration option was available to specify the download location. Otherwise, great app!

    opened by pepa65 20
  • Version 1.0.7 crashes on startup on Android

    Version 1.0.7 crashes on startup on Android

    I've reported this issue also using "send feedback" on my Android phone. It's a Sony Xperia F5321 phone with Android 8.0.0. Version 1.0.6 works, but 1.0.7 crashes as soon as you launch it. I will try to send the "adb logcat" output once I figure out how to do that.

    opened by uyar 11
  • Corrupt sends with v1.0.4

    Corrupt sends with v1.0.4

    I was trying to use this Android tool to send a file to my Linux laptop and I'm pretty sure it's corrupting the transfer.

    I have a 2,693,769 byte binary file (tgz file) that on the other side of the wormhole ends up with an extra 375 bytes of seeming garbage at the end. I tried slicing that suffix off and passing it to the Linux "file" command and it doesn't have a detected structure.

    I'm wondering if there's a uninitialized buffer read or incorrectly sized buffer involved?

    opened by rboyer 4
  • App is not accessible for screen readers

    App is not accessible for screen readers

    Currently the application is inaccessible to screen readers like TalkBack.

    I believe this is a current limitation with Gio. I'll check with them on where accessibility features fall on their roadmap.

    opened by psanford 3
  • Can't write files after receiving

    Can't write files after receiving

    Every time I receive a transferred file the app crashes and I see the following error in the logs:

    java.lang.SecurityException: Unsupported path /storage/emulated/0/Download/<redacted filename>
    

    Environment: v1.0.3 from the GitHub release on LineageOS 17.1 (Android 10) on a Sony Xperia XZ1C

    I've also seen the app crash in the same way on a Pixel 2 running stock Android 10 but can't check the logs to verify it's the same crash (but it looks like it).

    On both devices the app didn't ask for any permissions. Newer Android versions have locked down writing to the SD card more tightly so the app might need to request the storage permission in order to work. See https://developer.android.com/training/data-storage

    opened by pR0Ps 2
  • use regular text box for receive code and allow spaces instead of dashes

    use regular text box for receive code and allow spaces instead of dashes

    I think two small changes would greatly improve usability of receiving files:

    1. Make the code field a regular text box to allow swipe-typing and autocomplete. The words are all dictionary words, so this would greatly speed up entry. Even if making the change would get rid of the number bar, I think it would still be a net improvement since there's only one digit but two full words to type in the default codes.
    2. Allow typing spaces instead of dashes, and just replace spaces by dashes before using the code. Typing a space is much easier than a dash on the android keyboard (in fact with swipe-typing you don't even need to explicitly type a space), and there's no reason to strictly require dashes.
    opened by dnr 1
  • Support QR Code Scanning of a transfer code

    Support QR Code Scanning of a transfer code

    https://github.com/psanford/wormhole-william/pull/37 adds support to generate QR Codes when sending a file. Add support for scanning a QR Code in the mobile app.

    The format for the encoded string in that branch is wormhole:${RendezvousURL}?code=${code}

    enhancement 
    opened by psanford 1
  • Add app as a share target

    Add app as a share target

    Thank you for making the app, very cool!

    It would be lovely to have the app as a share target. So, you can for example share an image from a reddit app or the files app straight into this to send to another device without having to open it and browse to the file manually.

    enhancement 
    opened by watermelonpizza 1
  • Fix download access for android 10

    Fix download access for android 10

    For android 10 we need requestLegacyExternalStorage and we need WRITE_EXTERNAL_STORAGE.

    We now will prompt for WRITE_EXTERNAL_STORAGE after you click accept (if we don't already have it).

    I'm not really sure why this works on android 11 but fails on android 10.

    opened by psanford 0
  • Support scanning QR Code for receiving files

    Support scanning QR Code for receiving files

    QR Codes can be generated from the wormwhole-william cli tool via the --qr flag.

    The code embeds the relay url, but currently we are ignoring that and just using the relay set in the config.

    opened by psanford 0
  • Support android share intent

    Support android share intent

    This adds initial support for android the share intent. Instead of opening the app and choosing a file, you can share the file from a different app.

    The implementation is a little awkward. Normally you would receive this intent in the main application activity. Gio owns that so we can't do that in this case. So instead we make a new activity that receives the event and then switches to the main activity.

    Currently nothing prevents you from sharing from the UI and from a share intent concurrently. The UI doesn't support this at all so the first action will just disappear (although the messages will probably get messed up).

    We should add proper state management for this.

    Fixes: #2

    opened by psanford 0
  • Unable to type in receive codes

    Unable to type in receive codes

    All of the text input fields in the app seem to break when I try to input a string matching [0-9]+-[a-z]+. For instance, if i start typing 1-a, the a never appears in the text box, all I can type is 1-. This is obviously especially problematic for the recv code field, but the send text field has the same issue.

    I'm using version 1.0.8 on a Pixel 3a running LineageOS 18.1.

    opened by duxovni 6
  • add keyboard suggestion support

    add keyboard suggestion support

    IME support has been added to gio for android: https://lists.sr.ht/~eliasnaur/gio/%3CCAFcc3FSWbqzHkWpzsOBLD9J3GmDgD5S6wO6ZqVoRKLq41GkObQ%40mail.gmail.com%3E

    We should be able to use this to auto-complete words from the standard wormhole dictionary.

    opened by psanford 0
  • Crashes upon picking file

    Crashes upon picking file

    I'm running the app in Graphene OS (Android 12). The app opens fine, but crashes immediately when I try to choose a file. It also didn't request any permissions, not that it matters. It still crashes the same even if I give it all the permissions available. Any way I could debug this further?

    opened by PacoBell 2
  • ios and desktops

    ios and desktops

    any plans to extend support of the File Picker ?

    I think i saw somewhere talk of a file reader package as part of GIO x repo happening, but not sure.

    Would be cool if this file transfer tool worked on other Os's

    opened by gedw99 9
Releases(v1.0.8)
Owner
Peter Sanford
Peter Sanford
Cossack Labs 1k Aug 4, 2022
erchive is a go program that compresses and encrypts files and entire directories into .zep files (encrypted zip files).

erchive/zep erchive is a go program that compresses and encrypts files and entire directories into .zep files (encrypted zip files). it compresses usi

Christopher Walters 1 May 16, 2022
Secretsmanager - Secrets management that allows you to store your secrets encrypted in git

I created secretsmanager to store some secrets within a repository. The secrets are encrypted at rest, with readable keys and editable JSON, so you can rename a key or delete it by hand. The cli tool handles the bare minumum of requirements.

Tit Petric 20 May 6, 2022
A simple Go script to brute force or parse a password-protected PKCS#12 (PFX/P12) file.

A simple Go script to brute force or parse a password-protected PKCS#12 (PFX/P12) file.

Evi1cg 32 Jun 12, 2022
Find secrets and passwords in container images and file systems

Find secrets and passwords in container images and file systems

null 1.4k Aug 14, 2022
Take a list of domains and scan for endpoints, secrets, api keys, file extensions, tokens and more...

Take a list of domains and scan for endpoints, secrets, api keys, file extensions, tokens and more... Coded with ?? by edoardottt. Share on Twitter! P

gilfoyle97 529 Aug 5, 2022
Curl & exec binary file in one step. Also a kind of stealth dropper.

curlNexec ?? Certainly useful , mainly for fun, rougly inspired by 0x00 article Short story curlNexec enable us to execute a remote binary on a local

Ariary 107 Aug 2, 2022
Analyse the content of ipa file.

HelloIPA 对苹果 ipa 包内容进行分析 IsPayloadAppInfoPlist 是 Payload 目录下 app 包中的 Info.plist 文件 GetInfoPlistFileContent 获取 Info.plist 文件内容 GetBuildNumberFromIPA 从

Tylan 3 Jul 20, 2022
sign Apple’s mobileconfig file to solve the ‘unsigned’ problem

amcs(apple mobile config signature) sign Apple’s mobileconfig file to solve the ‘unsigned’ problem the project rely openssl https://github.com/openssl

null 7 Apr 2, 2022
ZipExec is a Proof-of-Concept (POC) tool to wrap binary-based tools into a password-protected zip file.

ZipExec ZipExec is a Proof-of-Concept (POC) tool to wrap binary-based tools into a password-protected zip file. This zip file is then base64 encoded i

Tylous 915 Aug 11, 2022
Allows you to replace a secret in a file using secrets manager

secrets inserter Allows you to replace a secret in a file using secrets manager. ::SECRET:secret-name:SECRET:: will be replaced with your secret-name

null 0 Dec 12, 2021
Incident Response - Fast suspicious file finder

FastFinder - Incident Response - Fast suspicious file finder What is this project designed for? FastFinder is a lightweight tool made for threat hunti

Jean-Pierre GARNIER 143 Aug 7, 2022
Grafana Arbitrary File Reading Vulnerability

GrafanaArbitraryFileRead Usage 1. show info ❯ go run main.go -s [INF] VulnInfo: { "Name": "Grafana Ar

z3r0yu 25 Feb 2, 2022
Let's Encrypt client and ACME library written in Go

Let's Encrypt client and ACME library written in Go. Features ACME v2 RFC 8555 Register with CA Obtain certificates, both from scratch or with an exis

null 5.4k Aug 6, 2022
Let's Encrypt client and ACME library written in Go

Let's Encrypt client and ACME library written in Go. Features ACME v2 RFC 8555 Register with CA Obtain certificates, both from scratch or with an exis

null 5.5k Aug 8, 2022
coyim - a safe and secure chat client

CoyIM - a safe and secure chat client CoyIM is a new client for the XMPP protocol. It is built upon https://github.com/agl/xmpp-client and https://git

CoyIM messenger client 561 Aug 7, 2022
Generate client secret for Apple get token call

Generate client secret for Apple get token call A util to generate client secret used in Apple get token call. Create a config.json file with the foll

Yu Ke 0 Jan 6, 2022
Stobox Securities Chain client based on the bsc fork

Stobox Securities Chain The goal of Stobox Securities Chain is to bring programmability and interoperability to Binance Chain. In order to embrace the

Stobox chain 7 Dec 24, 2021