keylogger

Dependencies:   SDFileSystem USBHost mbed

Committer:
USER10
Date:
Wed Dec 13 05:59:27 2017 +0000
Revision:
0:15bb427106c2
keylogger;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
USER10 0:15bb427106c2 1 #include "mbed.h"
USER10 0:15bb427106c2 2 #include "USBHostKeyboard.h"
USER10 0:15bb427106c2 3 #include "SDFileSystem.h"
USER10 0:15bb427106c2 4
USER10 0:15bb427106c2 5 //キーボード取得データをTX1、RX1からシリアル通信で送信させる
USER10 0:15bb427106c2 6 //SDカードに入力したデータを保存
USER10 0:15bb427106c2 7 //保存形式はcsv
USER10 0:15bb427106c2 8 //保存場所はディレクトリ「keylog」内の「log」ファイル
USER10 0:15bb427106c2 9
USER10 0:15bb427106c2 10 DigitalOut led(LED1);
USER10 0:15bb427106c2 11 DigitalOut led2(LED2);
USER10 0:15bb427106c2 12 DigitalOut led3(LED3);
USER10 0:15bb427106c2 13
USER10 0:15bb427106c2 14 int i=0;
USER10 0:15bb427106c2 15
USER10 0:15bb427106c2 16 Timer t; //タイマー宣言(繰り返しタイマー割り込み)
USER10 0:15bb427106c2 17
USER10 0:15bb427106c2 18 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SDファイル用通信ポートの指定
USER10 0:15bb427106c2 19
USER10 0:15bb427106c2 20 //Serial pc1(p13, p14); //シリアル通信ポートの指定(tx1, rx1の順)
USER10 0:15bb427106c2 21 Serial pc(USBTX, USBRX);
USER10 0:15bb427106c2 22
USER10 0:15bb427106c2 23 void onKey(uint8_t key) {
USER10 0:15bb427106c2 24 //pc1.printf("%c", key); //1文字PCへ送信(TX1、RX1のシリアル通信)
USER10 0:15bb427106c2 25 pc.printf("%c", key);
USER10 0:15bb427106c2 26 i++;
USER10 0:15bb427106c2 27 t.stop(); //キーを押すごとにタイマーストップ
USER10 0:15bb427106c2 28 //リセットしていないのでラップタイム計測状態となる
USER10 0:15bb427106c2 29 FILE *fp;
USER10 0:15bb427106c2 30 fp = fopen("/sd/keylog/log.csv", "a"); //「log.csv」ファイルを書き込み形式で開く
USER10 0:15bb427106c2 31 fprintf(fp, "Key[%d], :,0x%x,:,%c,:,%0.2f\r\n", i, key, key, t.read()); //左から 入力順番:アスキーコード:入力した文字:経過時間 となる
USER10 0:15bb427106c2 32 fclose(fp);
USER10 0:15bb427106c2 33 t.start(); //タイマースタート(一周後からはリスタート)
USER10 0:15bb427106c2 34 }
USER10 0:15bb427106c2 35
USER10 0:15bb427106c2 36 void keyboard_task(void const *) {
USER10 0:15bb427106c2 37
USER10 0:15bb427106c2 38 USBHostKeyboard keyboard;
USER10 0:15bb427106c2 39
USER10 0:15bb427106c2 40 while(1) {
USER10 0:15bb427106c2 41 while(!keyboard.connect())
USER10 0:15bb427106c2 42 Thread::wait(500);
USER10 0:15bb427106c2 43
USER10 0:15bb427106c2 44 keyboard.attach(onKey);
USER10 0:15bb427106c2 45
USER10 0:15bb427106c2 46 while(keyboard.connected()) //キーボードが切れるまで待つ
USER10 0:15bb427106c2 47 Thread::wait(500);
USER10 0:15bb427106c2 48 }
USER10 0:15bb427106c2 49 }
USER10 0:15bb427106c2 50
USER10 0:15bb427106c2 51 int main(){
USER10 0:15bb427106c2 52 mkdir("/sd/keylog", 0777); //「keylog」ディレクトリ作成
USER10 0:15bb427106c2 53 FILE *fp;
USER10 0:15bb427106c2 54 fp = fopen("/sd/keylog/log.csv","w"); //「log.csv」ファイルを読込形式で開く
USER10 0:15bb427106c2 55 fclose(fp);
USER10 0:15bb427106c2 56
USER10 0:15bb427106c2 57 Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 256 * 4);
USER10 0:15bb427106c2 58 while(1) {
USER10 0:15bb427106c2 59 led=!led;
USER10 0:15bb427106c2 60 Thread::wait(500);
USER10 0:15bb427106c2 61 }
USER10 0:15bb427106c2 62 }
USER10 0:15bb427106c2 63
USER10 0:15bb427106c2 64 //led2 = 1; //キーを押すごとにled2を点灯
USER10 0:15bb427106c2 65 //t.reset(); //キーボードを切断してタイマーリセット