Skip to content

Commit

Permalink
Wording adjusted
Browse files Browse the repository at this point in the history
  • Loading branch information
tejado committed Mar 30, 2019
1 parent 580d12f commit 8b9198f
Show file tree
Hide file tree
Showing 10 changed files with 290 additions and 283 deletions.
33 changes: 20 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Authorizer [![Build Status](https://travis-ci.org/tejado/Authorizer.svg?branch=master)](https://travis-ci.org/tejado/Authorizer)
A Password Manager for Android with USB Keyboard emulation.
A Password Manager for Android with Auto-Type over USB and Bluetooth, OTP and much more.

The idea behind Authorizer is, to use old smartphones as a hardware password manager only. To avoid manual typing of long and complex passwords everytime you need them, Authorizer pretends to be an USB keyboard (e.g. over an USB On-The-Go adapter). With a button press inside the App, it will automatically enters the password for you on your pc, laptop, tablet or main smartphone.
The idea behind Authorizer is, to use old smartphones as a hardware password manager only. To avoid manual typing of long and complex passwords everytime you need them, Authorizer provides Auto-Type features over USB and Bluetooth. It pretends to be a keyboard (e.g. over an USB On-The-Go adapter) and with a button press inside the app, it will automatically type the password for you on your pc, laptop, tablet or other smartphone.

<a href="https://f-droid.org/packages/net.tjado.passwdsafe/" target="_blank">
<img src="https://f-droid.org/badge/get-it-on.png" alt="Get it on F-Droid" height="80"/></a>
Expand All @@ -14,8 +14,9 @@ The idea behind Authorizer is, to use old smartphones as a hardware password man
Authorizer is based on [PasswdSafe](https://sourceforge.net/projects/passwdsafe/) a Password Safe port for Android smartphones and [FreeOTP](https://github.com/freeotp/freeotp-android).

## Features
* USB Keyboard emulation
* Different keyboard languages ([scancodes](https://en.wikipedia.org/wiki/Scancode))
* Auto-Type over USB
* Auto-Type over Bluetooth (experimental)
* Different keyboard languages ([HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-112))
* English (US)
* English (GB)
* German
Expand All @@ -36,25 +37,31 @@ This feature can be enabled over the general App preference "Enable GPG backup o

#### OTP integration
Besides standard username & password entries, Authorizer also supports two-factor authentication (2FA) over one-time passwords (OTP). Time-based (TOTP) and HMAC-based (HOTP) one-time passwords are supported.
The OTP secret can be added to a password entry manually or by scanning a QR code. Afterwards, a press on the empty token field ("------") will generate a new OTP. It is also possible, to send the OTP automatically over USB by adding {OTP} as a placeholder directly in the username or password, e.g. {OTP} in the password "myPa$sword{OTP}" will be replaced with a newly generated OTP.
The OTP secret can be added to a password entry manually or by scanning a QR code. Afterwards, a press on the empty token field ("------") will generate a new OTP. It is also possible, to auto-type the OTP over USB or Bluetooth by adding {OTP} as a placeholder directly in the username or password, e.g. {OTP} in the password "myPa$sword{OTP}" will be replaced with a newly generated OTP.
Like username, password and other data, the OTP secret is stored in the password file.

#### Additional placeholders
In addition to the {OTP} placeholder, Authorizer also supports {TAB} and {RET} for the tabulator and return key. Adding these to the username and/or password will result in sending the respective key (tab or return) instead of the placeholder.
Example: if "peter{TAB}{OTP}" is set as the username and it will be send over USB, "peter" will be typed followed by the tabulator key followed by a newly generated OTP.
#### Additional Auto-Type placeholders
In addition to the {OTP} placeholder, Authorizer also supports {TAB} and {RET} for the tabulator and return key. Adding these to the username and/or password will result in auto-typing the respective key (tab or return) instead of the placeholder.
Example: if "peter{TAB}{OTP}" is set as the username, "peter" followed by the tabulator key and a newly generated OTP will be auto-typed.

## Roadmap
* Bluetooth support
* NFC support
* Smartcard emulation (e.g. OpenPGP cards, etc.)
* CTAP + CTAP2 integration for U2F and WebAuthn
* Redesign of the App
* Replacing Android Keyboard Gadget with FunctionFS HID integration (Kernel >=3.18 required)
* Refactoring the HID Keyboard Layout code

## Requirements
* For Auto-Type over USB: an Android Kernel compiled with [Android Keyboard Gadget](https://github.com/pelya/android-keyboard-gadget) is required
* For Auto-Type over Bluetooth: Android Pie or higher is required. Tested devices:
* Samsung Galaxy S8: WORKING
* HTC One M8 (LineageOS 16.0): not working

## Requirements for USB Keyboard emulation
* Android Kernel compiled with [Android Keyboard Gadget](https://github.com/pelya/android-keyboard-gadget)

## Contributions & Community
Contributions are highly welcome.
For support & development discussions around Authorizer, feel free to join our [private Mattermost](https://mm.ramrod.top/signup_user_complete/?id=uhqbkjwkdt865p5i6q75nodmrc).
For support & development discussions around Authorizer, feel free to contact me.

## Proof of Concept
Proof-of-Concept app for USB Keyboard emulation: [Authorizer-PoC](https://github.com/tejado/Authorizer-PoC)
Proof-of-Concept app for Auto-Typing (USB Keyboard emulation): [Authorizer-PoC](https://github.com/tejado/Authorizer-PoC)
4 changes: 2 additions & 2 deletions authorizer/src/main/java/net/tjado/passwdsafe/PasswdSafe.java
Original file line number Diff line number Diff line change
Expand Up @@ -794,7 +794,7 @@ public void useFileData(@NonNull PasswdFileData fileData)
String password = copyStr.get();
if (password.contains(SUB_OTP)) {
PasswdSafeUtil.showErrorMsg(
"Password QuickSend not possible as it contains an OTP!",
"Password Quick Auto-Type not possible as it contains an OTP!",
this);
return;
}
Expand All @@ -821,7 +821,7 @@ public void useFileData(@NonNull PasswdFileData fileData)
}
} catch (SecurityException e) {
PasswdSafeUtil.showInfoMsg(getResources().getString(
R.string.usbkbd_root_rejected), this);
R.string.autotype_usb_root_denied), this);
} catch (Exception e) {
PasswdSafeUtil.dbginfo("PasswdSafeRecordBasicFragment", e, e.getLocalizedMessage());
}
Expand Down
Loading

0 comments on commit 8b9198f

Please sign in to comment.