Looking for an experienced mobile Android developer to modify an existing open source mobile password application called “Keepass2Android” to store a password database file using Bluetooth classic on our CyberGate card. The communication between the phone and card will be Bluetooth classic. Currently the Android application stores the data locally. We want all password data to be saved to our card and not kept on the phone.
The code base for the application is located here:
[url removed, login to view]
The passwords are stored in a database file format that was developed by an open source project called KeePass [url removed, login to view]
The password manager application will keep the password database file in memory. No copy of the database file will be persisted locally for security reasons. When it’s updated, or modified in any way, the password database file will be sent to the CyberGate card. Every time the application starts, it will download a copy from the CyberGate card, load it into memory, and display to the user.
*** Please specify cost and estimated duration in your proposal.
The CyberGate card is a credit card-size computer that has a CPU, flash memory, dual-mode Bluetooth, and a battery.
We want to use “Storage Provider” feature for remote storage of the KeePass database file. The plug-in must keep the database file in memory and store on the card when changes are made. No local copy of the file is persisted to the file system of the Android device. For security reasons, we do not want a local copy of the database file stored locally on the file system.
This project requires an understanding of Bluetooth communication and the sending and receiving of low-level communication using data packets. We are using SPP (Serial Port Profile) to send and receive data. We have exposed an API on the card to allow the sending and receiving of data. This is called the CyberGate FTPx API.
CyberGate FTPx API
This will be using a custom protocol that is very close to FTP commands over Bluetooth. We call it FTPx, since we have some product specific header information. The primary FTP commands we will use is STOR, RETR, LIST, DELE.
STOR: This method is used to store files on the card.
RETR: This method is used to download files from the card.
LIST: This is used to list the contents of a folder
DELE: This is used to delete a file
The CyberGate API full documentation:
[url removed, login to view]
Protocol Packet Format
The string command packet that is sent to the card over Bluetooth is in the following format.
First byte command channel 01 or 02. Next two byte total length including header and suffix. Called Least Significant bit and Most Significant bit.
(End of String): First byte carriage return. Second byte line feed. Third and fourth byte checksum. Which is currently not used.
0D 0A 00 00
This is an example of sending a LIST command to the card. Notice the packet structure includes a header and suffix.
________Command or data channel
| ____Total length including header
| | and suffix string ( "00 1E" == 30 characters)
01 00 1E
01 00 1E 4C 49 53 54 20 2F 61 70 70 73 2F 76 61 75 6C 74 2F 64 61 74 61 2F 2A 0D 0A 00 00
...150 Opening connection
....Jdrw-rw-rw- 1 root root 0 Jan 00 1980 SomeFile
.....226 Transfer Complete
We will provide a CyberGate card and charging cable for development purposes.
Git and GitHub will be used for source control. Some example source code and access to our technical support team will be available to answer questions.