KeeOtp2
KeeOtp2 is a plugin for KeePass. It provides a form to display one time passwords. The TOTP secret keys are stored in a normalized format, so this plugin is fully compatible with the built-in OTP function. It also can be used as a GUI for the built-in OTP function. (The plugin can also migrate saved KeeOtp(1) secrets, to the new built-in function.)
This plugin is based on KeeOtp(1), which was originally developed by devinmartin. Since devinmartins website is no longer available, I have reuploaded the original source code here (or at archive.org).
Installation
- Download the latest release here.
- Copy the KeeOtp2.plgx in the KeePass plugins directory and restart the application.
Alternative Installation
- Using chocolatey in Powershell with
choco install keepass-plugin-keeotp2
Usage
Configure TOTP
Right-click an entry, click on KeeOtp2 and press Configure TOTP.
This will open the configuration window.
Enter the key you have received and press OK.
Now you can see the TOTP by right-clicking an entry, hovering on KeeOtp2 and clicking Show TOTP.
Migrate from KeeOtp1 to KeeOtp2/Built-In OTP
Click on Tools, navigate to KeeOtp2 and press Settings.
There you can migrate all of your entries to KeeOtp2/Built-In OTP by selecting your target format and clicking on OK.
Another way to migrate
Just right-click any entry in your database and click on Timed One Time Password.
Right-click an entry, hover KeeOtp2 and click Configure TOTP. When the configuration window is opened, click on Migrate to Built-In (blue label) in the upper half.
Auto-Type
Hotkey
Default Hotkey: CTRL + ALT + T
You can set a global hotkey to auto-type your TOTP. Therefore you have to click on Tools, navigate to KeeOtp2 and press Settings. There you can activate or disable the global hotkey and set your own key combination.
Placeholder
This plugin supports the built-in Auto-Type function.
Placeholder | Usage |
---|---|
{TOTP} | Was used by KeeOtp(1) (Deprecated) |
{TIMEOTP} | Can be used with KeeOtp2 and built-in TOTP (Recommended) |
Still you can use {TOTP}, but it's rather recommended to use the built-in placeholder {TIMEOTP}.
Global Time
You can configure your specific time for generating TOTPs. Therefore you have three options in the Settings form.
Setting | Description |
---|---|
Use time of system | This will basically use the time of your system |
Fixed time offset (sec.) | This will set a fixed time offset to your systemtime. (For example if you know, your system is running 5 seconds behind or 50 seconds forward.) |
Custom NTP server | This will poll the given NTP server to get the current and correct time. |
Sharing OTP Configuration
You can either share your OTP configuration with a URI string (otpauth://...) or with a QR code.
Therefore you have to right-click the target entry, hover on KeeOtp2, click on Show TOTP and click on Show QR.
Then you can scan the shown QR code or click on Copy URI to copy the URI string to your clipboard.
Troubleshooting
Sometimes the generation of TOTPs will fail. The most common failure is a wrong system time.
The best way to prove this, is by manually checking your system time or let the plugin prove it for you. Therefore you have to right-click a configured entry, hover on KeeOtp2, click on Show TOTP and if the window opens up, click on Incorrect?. Then you can press on Ping NTP server.
If the ping result is over 5 seconds, you should change your time settings. You can do this in the operating system or inside the plugin. Therefore you can check out the section Global Time to set a fixed time offset or a custom NTP server.
Download
You can download the .plgx file here.
Compiling
If you want to compile the project by yourself, you have to clone the repository and run the makeplgx.bat file. This will create a new folder in your cloned repository, called Releases. There you can find your self-compiled .plgx file.
License
Dependencies
Dependencie | Source | NuGet | Author | License |
---|---|---|---|---|
KeeOtp(1) | source/archive | - | Devin Martin | MIT |
Otp.NET | source | NuGet | Kyle Spearrin | MIT |
Yort.Ntp.Portable | source | NuGet | Troy Willmot | MIT |
ZXing.Net | source | NuGet | Michael Jahn | Apache 2.0 |
NHotkey | source | NuGet | Thomas Levesque | Apache 2.0 |
NHotkey.WindowsForms | source | NuGet | Thomas Levesque | Apache 2.0 |
Dependencies (KeeOtp2.Tests)
Dependencie | Source | NuGet | Author | License |
---|---|---|---|---|
xunit | source | NuGet | xunit | Apache 2.0 |
xunit.analyzers | source | NuGet | xunit | Apache 2.0 |
xunit.assert | source | NuGet | xunit | Apache 2.0 |
xunit.core | source | NuGet | xunit | Apache 2.0 |
xunit.runner.visualstudio | source | NuGet | xunit | Apache 2.0 |
xunit.extensibility.core | source | NuGet | xunit | Apache 2.0 |
xunit.extensibility.execution | source | NuGet | xunit | Apache 2.0 |
Icons
Icon | Source | Brand | Author | License |
---|---|---|---|---|
info | Google Fonts | Material design icons | Apache License Version 2.0 | |
lock | Google Fonts | Material design icons | Apache License Version 2.0 | |
qr_code | Google Fonts | Material design icons | Apache License Version 2.0 | |
schedule | Google Fonts | Material design icons | Apache License Version 2.0 | |
settings | Google Fonts | Material design icons | Apache License Version 2.0 | |
help | Google Fonts | Material design icons | Apache License Version 2.0 |