# powershorter
**Repository Path**: wyter/powershorter
## Basic Information
- **Project Name**: powershorter
- **Description**: PowerShorter是为电压短路故障注入攻击测试定制的一款专用设备。通过PowerShorter可实现被测设备的瞬时短路,干扰设备正常运行。本仓库给出PowerShorter的控制脚本。
- **Primary Language**: Python
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-12-03
- **Last Updated**: 2024-12-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PowerShorter
## 产品说明
PowerShorter是为电压短路故障注入攻击测试定制的一款专用设备。通过PowerShorter可实现被测设备的瞬时短路,干扰设备正常运行。
PowerShorter具备两个独立的短路引擎。每个引擎监听触发,并输出精确的电平脉冲模式控制,这些电平脉冲模式在通过高速MOS管时实现瞬时短路。
PowerShorter集成了一路继电器、一路固态继电器和两路GPIO,用于被测设备重启等自动控制。
### 设备参数
- 脉冲控制精度: 10ns
- 短路脉冲模式最大配置个数:8
- 模式最大重复次数: 256
- GPIO输出:2路 (3.3V)
- 继电器输出:1路,最大输入 50V 7A
- 固态继电器输出:1路,双向最大输入 12V 3A
- 触发模式:
+ 边沿触发
+ 手动触发
+ 边沿计数触发
### 使用示例
```python
import power_shorter as ps
ps_dev = ps.PowerShorter('com4') # 选择串口
ps_dev.gpio(ps.GPIO.GPIO1, 0) # 控制 GPIO1 输出低电平
ps_dev.relay(ps.RELAY.RELAY1, 0) # 控制 RELAY1 断开,RELAY1 为固态继电器
ps_dev.relay(ps.RELAY.RELAY2, 0) # 控制 RELAY2 断开,RELAY2 为机械继电器
ps_dev.engine_cfg(ps.Engine.E1, [(0, 200), (1, 100), (0, 100), (1, 23), (0, 1)]) # 可以使用trigger_mode参数控制触发模式,pattern_repeat控制毛刺重复
ps_dev.arm(ps.Engine.E1)
s = ps_dev.state(ps.Engine.E1)
assert s == 'armed'
... # 等待上升沿完成触发
assert s == 'glitched'
```
上述代码关键调用是`engine_cfg`,在该示例中,将上升沿作为触发事件。事件发生后,等待2000ns后,短路1000ns,再等待1000ns后,短路230ns,最后进入正常状态。相当于对目标设备完成了两次短路故障注入。pattern列表最多支持8个状态。`trigger_mode`参数可以用于切换触发事件为上升沿/下降沿,`pattern_repeat`参数可用于控制pattern列表的重复次数。例如,在该示例中,若`pattern_repeat`设置为2,则将重复pattern两次,即完成4次短路故障注入。通过设置`trigger_edges`,可监听多个边沿作为触发事件,`trigger_edges`可用于将一些总线协议(如UART)通信作为触发事件时使用。
如需实现可视化故障结果显示,可参考[FaultViz](https://gitee.com/osr-tech/faultviz)。
## OSR-303 for循环完整故障示例
使用OSR-303开发板,我们给出了[OSR-303 FORLOOP 故障注入完整示例](https://gitee.com/osr-tech/osr-303/blob/master/fault_example.ipynb)。