硬件模拟器

来自ling
跳转至: 导航搜索

问题

  • com口每次拔出后插入都有可能变化,rpa如何确定那个com口是硬件模拟器
  • f514fa/e0 f5 01 04 fa 00 00

需求

其中在指令集的最下方有这个链接: http://blog.csdn.net/u013771867/article/details/51465193

另外客服提供的整套软件的下载地址:https://pan.baidu.com/s/1jJHlnEI

控制器中还给出了以下信息 : 波特率固定为115200,停止位 1 , 无校验位 , 这些参数不可修改。

Dear 马老师, Roger,

鉴于最近北京RPA项目中,遇到网银的安全控件无法通过软件(虚拟键盘)模拟方式输入,现暂时找出解决方案,利用第三方开发的“键盘硬件模拟器”,间接实现U盾密码输入。 但未充分考虑安全方面问题,故请上海团队对此方案进行安全性评估,若硬件可行,还请上海开发团队进行支持性开发。

  • 安全性顾虑有:第三方开发的硬件模拟器是否会盗取客户网银账号和密码
    • 现在使用硬件模拟器时,并未配置任何定位信息,每次使用时当场录入脚本,使用后会重置硬件模拟器。
  • 支持性开发: 现在通过第三方提供的前台软件操控硬件模拟器,但是是否可以直接用exe 调用模拟器(类似超级鹰的解决方案),以提高整体感观。
    • 经了解,这个硬件是可以自主开发的,但是所需要技术能力过强。购买此硬件的客服描述这个硬件:“串口波特率115200,无校验,一个停止位”

以下是硬件购买地址,硬件模拟器的照片和硬件模拟器前台软件截屏:

购买地址: https://item.taobao.com/item.htm?id=561134931813&ns=1&abbucket=15#detail

安装

<?xml version="1.0" encoding="UTF-8" ?>
<service>
  <id>DTT_GTS_RPA_JINSHOUZHI_SERVICE</id>
  <name>DTT_GTS_RPA_JINSHOUZHI_SERVICE</name>
  <description>密码助手</description>
  <executable>C:\Program Files (x86)\deloitte\gts\1.8_32_jdk\bin\java.exe</executable>
  <arguments>-Xrs -Xmx256m -jar "C:\Program Files (x86)\deloitte\gts\gtsinf-jinshouzhi-0.0.1-SNAPSHOT.jar" --server.port=8082</arguments>
  <logmode>rotate</logmode>
</service>
  • 在服务管理中启动DTT_GTS_RPA_JINSHOUZHI_SERVICE服务
  • 打开地址默认地址http://localhost:8082

指令集

USB HID USAGE TABLE文件:Hut1 11.pdf

                                  硬件模拟USB键盘鼠标-指令集

实时控制时:指令前应加 e0 , 指令后加 00 00 ,之间可以多条指令。
         
鼠标【左】【中】【右】键指令格式:

引导码	类码	控制码	结束码	功能
F5	02	01	FA	左键单击(单击放开)
F5	02	02	FA	左键单击(单击不放)
F5	02	03	FA	左键弹起
F5	02	04	FA	右键单击(单击放开)
F5	02	05	FA	右键单击(单击不放)
F5	02	06	FA	右键弹起
F5	02	07	FA	滚轮键单击(单击放开)
F5	02	08	FA	滚轮键单击(单击不放)
F5	02	09	FA	滚轮键弹起

实例1:串口发送e0 f5 02 01 fa 00 00  (鼠标左键单击放开)
实例2:串口发送 e0 f5 02 01 fa f5 02 01 fa 00 00 (鼠标左键双击) 

--------------------------------------------------------------------------------------------------

鼠标移动指令格式:

引导码	类码	控制码	参数1	参数2	结束码	功能
F5	04	01	H	L	FA	光标上移H*100+L
F5	04	02	H	L	FA	光标下移H*100+L
F5	04	03	H	L	FA	光标左移H*100+L
F5	04	04	H	L	FA	光标右移H*100+L

备注:H*100+L 等于鼠标在屏幕上移动的像素点数。
H最大值范围0~255(十六进制为00~ff)
L最大值范围0~255(十六进制为00~ff)

实例1:串口发送e0 f5 04 01 02 00 fa 00 00(鼠标向上移动200个像素点)
实例2:串口发送 e0 f5 04 02 01 1c fa 00 00  (鼠标向下移动128个像素点)

--------------------------------------------------------------------------------------------------

键盘(普通按键)指令格式:

引导码	类码(普通)	参数1	结束码	功能
F5	01	              X	FA	普通按键X键; X可以是任何普通按键的键值,参考下面的键盘普通键值表

实例1:e0 f5 01 04 fa 00 00 (按一下键盘字母A)
实例2:e0 f5 01 04 fa f5 01 05 fa f5 01 06 fa f5 01 07 fa 00 00 (依次按键盘ABCD)
实例2还可以这样写,效果一样,节省了步骤: e0 f5 01 04 05 06 07 fa 00 00

--------------------------------------------------------------------------------------------------

键盘(特殊按键)指令格式:

引导码	类码(特殊)   参数	结束码	功能
F5	03	    X	 FA	特殊按键,参数X只能是以下4个:Ctrl、Shift、Alt 、Windows

键值如下:
左
Ctrl:01 
Shift:02 
Alt:04 
Windows:08 

右
Ctrl:10 
Shift:20 
Alt:40 
Windows:80 

--------------------------------------------------------------------------------------------------

延时指令格式:

引导码	类码	控制码	参数1	结束码	功能
F5	05	01	X	FA	延时X毫秒  X值范围00~ff
F5	05	02	X	FA	延时X秒   X值范围00~ff

实例1:e0 f5 05 01 0a fa 00 00 (模拟器内部延时10毫秒)

--------------------------------------------------------------------------------------------------

组合键指令格式:

引导码   类码   参数0   参数1   参数2   参数3   参数4   参数5   参数6   结束码   功能
F5         07     X0	    X1	 X2       X3       X4       X5        X6      FA        组合键

X0:特殊按键  
X1、X2、X3、X4、X5、X6普通键值

注意:①参数为空时填充 FF 
          ②2个以上的特殊键值是 或 的关系;比如 Shift+Alt ; 【 Shift键值为02 , Alt键值为04   00000010 | 00000100 = 00000110(06)  】


实例1:
引导码	类码	参数0	参数1	参数2	参数3	参数4     参数5      参数6 	结束码	实例功能
F5	07	01	06	FF	FF	FF          FF          FF            FA            Ctrl+C (复制功能)

实例2:
引导码	类码	参数0	参数1	参数2	参数3	参数4     参数5      参数6 	结束码	实例功能
F5	07	01	19	FF	FF	FF          FF          FF            FA            Ctrl+V (粘贴功能)

实例3:
引导码	类码	参数0	参数1	参数2	参数3	参数4     参数5      参数6 	结束码	实例功能
F5	07	06	1B	FF	FF	FF          FF          FF            FA            Shift+Alt+X (截图)
--------------------------------------------------------------------------------------------------

键盘普通键值表:

键盘	键值	键盘	键值	键盘	键值
A	04	1	1E	F11	44
B	05	2	1F	F12	45
C	06	3	20			
D	07	4	21			
E	08	5	22			
F	09	6	23			
G	0A	7	24			
H	0B	8	25			
I	0C	9	26			
J	0D	0	27			
K	0E	Enter	28			
L	0F	Esc	29			
M	10	Delete	2a			
N	11	Tab	2b			
O	12	Spacedar	2c			
P	13	CapsLock	39			
Q	14	F1	3A			
R	15	F2	3B			
S	16	F3	3C			
T	17	F4	3D			
U	18	F5	3E			
V	19	F6	3F			
W	1A	F7	40			
X	1B	F8	41			
Y	1C	F9	42			
Z	1D	F10	43

更多键值,请参考以下链接:http://blog.csdn.net/u013771867/article/details/51465193

使用说明

                                           使用说明

一、为了方便没有编程基础的人员使用模拟器,工作室免费提供一款设置工具

使用方法很简单,具体设置步骤:选择正确的端口并连接端口成功后,在【模拟键盘鼠标】选项中选择需要的键值或设置鼠标参数后点击对应的【添加】按钮,添加后的值会在列表中出现,添加完后点击【设置→按键A】按钮 或【设置→按键B】按钮(将添加在列表的内容保存在模拟器内部存储器),这样就设置好了,按下模拟器上的按键A或按键B,模拟器的USB键盘鼠标模拟端,就会模拟你刚设置的键盘鼠标功能。

当勾选【按键A重复运行】选项时:按下模拟器按键A后,会一直重复执行按键A的功能,想要停止时再按一下模拟器按键A;【按键B重复运行】一个道理。

当点击【运行A功能】按钮时:类似于按了一下模拟器按键A,也会执行按键A功能;【运行B功能】一个道理。

注意:①列表框内不可以自己输入。  
②列表中添加什么内容,设置时就有什么功能,在需要重新设置时可以点击【清空列表】按钮,重新添加你想要的功能。

二、如果你懂编程并会熟悉对串口的操作,以下说明对你有帮助

指令的2种控制方式:①实时控制  ②离线控制

①实时控制:通过串口发送键盘、鼠标指令(参考指令集),模拟器接收到指令后立刻执行该指令,故称为实时控制;实时控制应在指令前加E0,指令后加00 00
注意:实时控制是不会保存指令到模拟器内部,你懂的。

实时控制的实例:e0 f5 02 01 fa 00 00 (这条指令的功能是:模拟鼠标左键单击后放开);f5 02 01 fa是鼠标左键单击后放开的指令,在指令前加了 e0,指令后加了 00 00 ,这就是上面所说的在实时控制时应在指令前加 e0 指令后加 00 00 ; 注意 e0 和 00 00之间可以是多条不同的键盘或鼠标指令,你懂的。 



②离线控制:模拟器设有2个按键,可将指令保存在其中一个或2个分别保存不同指令(指令是保存在模拟器内部存储器,断电不丢失);若将指令保存在按键A,则应在指令前加 F1 ,指令后加 00 00 ; 若将指令保存在按键B,则应在指令前加 F2 ,指令后加 00 00 ;之间也是可以有多条指令。

  设置保存后需要重启模拟器,使用时按下模拟器按键A或B,就会执行保存在按键A或B的指令,保存的指令不会因为断电后丢失,会一直保存,直到你再次修改指令,修改次数没限制,但修改后,前面的指令将会被覆盖,你懂的。
 
注意:每个按键可以保存的指令约500条,设置时应控制好,指令空间不够用时联系工作室人员;存储空间只针对离线控制,实时控制没有存储空间概念,尽情使用。