This documentation is under active development and discussion!
Welcome to the MemType documentation, here you’ll learn everything about the MemType hardware, firmware, software tools and usage for any user level.
If you fancy one, you can get it from our tindie store!
Technically speaking the MemType is an open source
hardware password keeper.
This means it is basically a device focused in securely
open source part means that we share all the
software source files, hardware design files and documentation under the
Having the passwords stored in a password keeper has several advantages:
No reusing same pass in different apps or webs.
More secure and long passwords can be used, no need to remember them.
No more forgotten passwords.
We like hardware password keepers but we couldn’t find one that satisfied our
usability needs, also they were very expensive! That’s why we decided to make
loaded with features and with a
reduced BOM that results in a
low cost device that’s also great for
DIY makers and
Encrypted storagein the device using NOEKEON written in pure assembler!
AES encrypted backupson the PC using the MemTypeTool GUI.
Plug it into a
no drivers or software for using it.! Works as a HID keyboard.
Works anywhere!. While others only work on webs or certain apps, the MemType can be used anywhere from webs, apps, terminals or anywhere it’s allowed to type using a keyboard.
One click login. It stores and
types for younot only the
passwordbut also the
userwithout any interaction from your part, and it also submits it!
enter the password when it’s asked, for example in
sshor login forms where the user and password are asked in two steps.
Dynamic storage. You’re
not limitedto a certain number of credentials, just fill the 2KB storage with them.
Assign namesto the credentials so you can find them easy and fast to use them.
Manage the device with the MemTypeTool GUI software, super easy and simple!
Truly multiplatform. The MemType works on
any device with usbkeyboard capability like tablets, smart tv, and phones.
Any keyboard layout. Load the keyboard layout you’ve got working in your OS using the MemTypeTool GUI.
Truly Open SourceSoftware and Hardware.
The data structure used by the MemType to store
credential. Appart from passwords and usernames it also stores a
field that stores the key combination to move from the user input to the
password input, called
hop. It also includes a field for storing the key
combination to submit the login form or command, called
submit. To help you
find the credential you need, each of them has a name stored in the
The name that’ll be shown while using the device.
The username of the login.
The sequence of keyboard keys to move from the user input field to the password one. Usually tab, sometimes Enter
The password that’ll be typed into the password input field.
The sequence of keyboard keys to validate the login. Usually Enter.
credential is applied, the MemType generates the key sequence like you
were typing it into your keyboard, excluding the name by the order of the table above.
In a login form, you focus the username field and then move the MemType joystick up and down looking for the credential you need. When you find the right credential, enter to apply it and the MemType will erase the credential name, type the username, move to the password input field, type it and submit. All this process is done much times faster than any person can type.
There are some cases where you may need a
delay in a certain point, for example
when the login form asks for the user, validates it and then asks for the password.
Such delays can be made by the MemType using one special character when editing
the credential. This and more is explained in the Advanced uses section.
It’s easy to see how this credential structure can be used to
securely store and
type other kind of data like commands or
credit card numbers.
When buying online it’s faster and more secure to let the MemType type the credit card number than pulling out the creditcard with the number printed on it.
A way of accomplishing it would be by having all the fields empty except
password field that would contain the
credit card number and the name.
N_O_D_E Video review
If you want a great video introduction and review of the MemType, check the following awesome video made by N_O_D_E.
Compare to others password keepers
text editor and connect the MemType to the
USB port of your computer.
You’ll see the
red led turning on indicating it’s being
powered correctly and it’s
On the text editor it will write a
welcome message indicating it’s firmware
You don’t have to delete what it writes, it deletes it’s own text to write new
that’s how the MemType communicates with you.
Now you can unlock it entering the
PIN, by default it’s
0000. To enter the PIN
up increases the number.
towards the connector accepts the number.
the opposite joystick movement to cancel.
We’ll refer to these movements up, down, enter and back respectively.
You should have now the pin entered:
One more enter and it’ll validate and show the name of the first credential and the green led will be on. If the PIN is incorrect an error message will be displayed:
The MemType comes preloaded with 3 dummy credentials so you can play the first time. Move up and down to see their names, apply one with the enter movement on the joystick, see the details with one back movement and lock the device with one more back movement (2 in total) turning the red led on again.
That’s the basic usage of the MemType, now to be useful it has to contain the
credentials you’ll use, setup a different PIN, and be loaded with the same
keyboard layout as your operating system or you’ll see strange characters. To do
all this management on the device there is an easy to use Graphical User
Interface software called MemTypeTool GUI.
The MemTypeTool GUI can be downloaded from : https://github.com/oyzzo/MemTypeTool
It is developed using python 2.7 , pyqt4, and libusb so it should work anywhere you can get this dependencies running. It has been tested on Windows, Linux and MacOS.
To run the
|It has been tested in windows up to 8.1. It has been reported to not work in windows 10.|
|Using a linux virtual machine can be a workaround for the moment.|
Install python 2.7.
Add python to your path:
Download and install PyQt for python 2.7.
Download, unzip and install libusb:
python setup.py install
Plug in the Memtype and let windows install the drivers for the device (we’ll change them in the next step).
Download and extract libusb-win32:
Execute install-filter-win (find it inside extracted folder, under /bin/x86 or
other if your windows is 64bits).
Select Install Filter, next.
Select Memtype (pid a033) and click Install
Done!!! you can check it with the testlibusb-win found next to install-filter-win:
Example ubuntu installation steps:
apt-get install python apt-get install python-pyqt4 pip install pyusb
You can use the
Setting the keyboard layout
Using the GUI you can change the
MemType keyboard layout to match your
keyboard layout. The current available layouts files are located under
Setting the P.I.N.
Reading from device
read the credentials from the MemType to do any action to them and write
them back, or make an
backup by Exporting encrypted file.
Writting to device
When you’ve got everything looking OK in the MemTypeTool GUI you have to
the credentials to the MemType device so you can use them.
Another option would be to simply store them by Exporting encrypted file.
Adding credentials is easy, when you’ve got your new credentials created remember Writting to device.
Editing is essential, edit to have your passwords in the credentials, usernames and any other field so you can forget them!
Delete by clicking into the
bin icon of any credential. The
changes will not
take effect until you
write to the device.
Exporting encrypted file
You can have backups in your computer, or have one AES encrypted file containing all the credentials for a given user role in your company.
|Don’t forget the file password or there’ll be no way of getting back the credentials from that file.|
Importing from encrypted file
As easy as exporting, enter the file password and your credentials will be ready to be edited.
Adding delays to credentials
Using the MemType
Use a credential
Lock the device
The MemType library (
libsmttool) is a
python library that allows
with the MemType in python. It allows all the operations that can be realized
with the MemTypeTool GUI as it’s based on libsmttool.
It can be found in this github: https://github.com/oyzzo/MemTypeTool/tree/master/libsmttool.
It also can be found under the
libsmttool directory when downloading the
It’s composed of two modules, the
noekeon.py file and the
This library depends on:
As the memtype uses internally the noekeon algorithm for encrypting the credentials, this algorithm has to be used in the MemTypeTool GUI to decrypt them back.
This file provides a python implementation based on the noekeon specification.
NOEKEON is an iterated block cipher with a block and key length of 128 bits.
The public methods implemented in the library are:
The Number of Rounds is defined by
NUMBER_OF_ROUNDS and fixed to
WorkingKey format is 4 elements of 32 bit length each.
State is the information to be encrypted / decrypted in
4 elements of 32
MemType command library implementation.
Public methods implemented in
memtype Class Communicates with the device.
connect Open USB connection with device.
disconnect Close USB connection with device.
info Read info from device and return deviceInfo object.
write Write credentials to memtype credential reserved memory area, credential data must be encrypted with the right PIN.
read Read credentials from memtype, must be decrypted with the right PIN.
writePinHash Writes PIN hash into memtype, pinToHas function can be used to generate the hash.
readPinHash Reads the PIN hash from the memtype.
writeKeyboardLayout Writes a keyboard layout into the memtype device.
isLocked Returns TRUE if the memtype has not been unlocked with PIN.
validatePin When the memtype is unlocked, checks if a PIN corresponds to the PIN hash and returns TRUE, FALSE otherwise.
decryptCredentialList(cl, key) Decrypts a credential list according to device implementation.
encryptCredentialList(cl, key) Encrypts a credential list according to device implementation.
Can I make a MemType myself?
Yes! It’s a great DIY project!. You can make your PCB using the design files or order one from OSHpark, buy the components, solder them, compile the firmware and burn it into the microcontroller!
How many credentials can be stored?
The capacity of the credentials storage on the MemType is
2KB. Credentials are stored dinammically so
it’ll depend on the lengthof the name, username, password etc…
Can I make a backup of my credentials?
Having a backup of the credentials is always a good idea. You can export an encrypted file from the
MemTypeGUIcontainning all your credentials.