This project involves developing a kernel driver application to monitor the keystrokes typed on a PC (in any application) and apply decision rules to the key sequences for output to another program.
The general requirements are:
- Works on any Windows XP, Vista or Windows 7 machine
- Works with anti-virus/anti-spyware software installed (assume user or administrator will configure anti-virus/spyware software as needed)
- Captures identification information from PC (username, MAC address, or IP address)
- Collects keystrokes for processing according to specified rules (defined below)
- Processes keystrokes collected based on these rules
- Passes information to another program or device based on events that are derived from the rules
- Does not store the keystrokes typed except under specified rules
The program will keep track of up to 20 "monitoring threads" of key strokes, focused primarily on number keys. Each thread will start with one of 4 specific numbers and monitor up to the next 19 keys to see if the numbers fit a specific pattern. The keystrokes will be adjusted for corrections (for example, a backspace) so that the numbers being matched to the pattern are the keys the user intends to type. (For example, "34[backspace]56" = "356".
The threads will overlap. So, for example, if the numbers that start a thread are 1, 2 or 3, the following string contains 4 threads:
1435462564176887645 (the 1, 3, 2 and 1 each start a new thread).
These threads will be monitored until one of several conditions are reached:
1) the number count reaches 20
2) there are two or more alpha characters ("a", "b", "C", etc.) typed
3) a time duration is reached (for example, 30 seconds since the start of that thread)
4) the pattern is matched (Luhn algorithm - [url removed, login to view])
When the pattern is matched, the program sends the identity of the PC along with the time of the pattern matching and the values that match to another program.
Deliverables include the source code. Preferred languages are C and C++. You are welcome to use an open source key logger to start with as long as you identify the source so we can verify the license requirements.
The description above has some small details changed for security purposes. The actual details of the project will be provided once the project is awarded.
Once completed the code will also be modified to include other number patterns. The developer should structure the code to accommodate this and may be selected to adapt the program for this purpose in another project.
We will require an NDA as a condition of being awarded this bid.
Project is listed as "small project" so you can bid as low as you like, but bid what you think it will require.
We are modifying the requirements of this project as follows:
1) Kernel driver is not required. This can be a standard application as long as the processing demand on the PC is very light. There should be no impact on the performance of the PC.
2) Only one thread is to be tracked at a time. Essentially we are looking for strings of numbers typed by a user with some parameters (keys typed, mouse clicks, etc.) that separate the strings.
3) No pattern matching is required. Each time a string meets the criteria required, the program will output the string to another program for analysis.
4) Time tracking required. For each string of digits to be reported, the time of the first key typed, the interval between keys and the total interval from the start to the end of that string is to be reported.
5) Configuration requirements. We want the program to be configured to the circumstances in which it will operate. So the meaning of different keys, the number of keys of be tracked, certain time thresholds and the length of strings to be acted on will all be configurable. (Six variables in all right now.)
Feel free to adjust your bid according to these new requirements.
9 freelancers are bidding on average $1783 for this job
You are basically asking us to write you a virus, which is not an easy task as it can be detected and reported to Kaspersky Labs. Nonetheless it can be done.