One of these days I am going to start on a rather unusual USB application using an ATMega88. I know it is easy to make the AVR act as a simple HID device and near impossible to make it host a HID device, but what I want to do is something in the middle of the two.
I want to transparently read keyboard data in order to store keystrokes. AKA... keylogger.
When I say transparently, I mean for the AVR to simply sniff out keyboard data and store the relevant info to an eeprom. I know there will be a LOT of traffic on the USB port, but there should be a way to just filter out keyboard data without having my device register as another HID. I think this is also called a USB sniffer of sorts.
I have a long way to go before starting on the hardware, but I think this can be done using some clever hacks and tricks. It may even be possible to use some other clock rate than the usual 12MHz since the "sniffer" will be searching for clock pulses, not trying to sync with them.
The PS2 keylogger took only a few hours to design and code, but i can imagine I have a bit to chew on this project.