gpt4 book ai didi

python - BadUSB 中的 SCSI 命令

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:04 24 4
gpt4 key购买 nike

我已经阅读了phison的源代码(关于badusb,python文件)。但我无法理解程序向 SCSI 设备发送什么命令。在阅读了有关 SCSI 命令的内容后,我仍然找不到以“06h”开头的操作码(存在类似的设置设备 ID 的操作码) https://www.seagate.com/staticfiles/support/disc/manuals/scsi/100293068a.pdf以上是我找到的SCSI命令。以下是读取和写入的命令:

```
def get_info(self):
'''
Performs a SCSI call to read version info from the device.
Returns bool.

The object's following attributes are set:
data, version, run_mode, chip_type, date, f1f2
'''
self.data = self.SCSI_device.read('\x06\x05\x00\x00\x00\x00\x00\x00\x01',528)

if not self.data or self.data[0x17A:0x17C]!='VR':
return False

self.version = struct.unpack('BBB', self.data[0x94:0x97])
self.f1f2 = struct.unpack('BB', self.data[0x9A:0x9C])
self.date = struct.unpack('BBB', self.data[0x97:0x9A])

if self.data[0xA0:0xA8]==' PRAM ':
self.run_mode = 'BROM' # BootROM
elif self.data[0xA0:0xA8]==' FW BURN':
self.run_mode = 'BN' # firmware burner
elif self.data[0xA0:0xA8]==' HV TEST':
self.run_mode = 'HV' # hardware verify
else:
self.run_mode = 'FW' # firmware

self.chip_type = struct.unpack('>H', self.data[0x17E:0x180])[0]

data = self.SCSI_device.read('\x06\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',512)[0:6].encode('hex').upper()
self.chip_id = '-'.join(data[i:i+2] for i in range(len(data))[::2])

return True
def run_firmware(self, firmware):
'''
Loads firmware onto device. Returns bool.
'''
# rebooting
self.brom()
sleep(2)

# sending firmware
self.load_file(firmware,'\x01','\x00')
ret = self.SCSI_device.read('\x06\xEE\x01\x00\x00\x00\x00\x00\x00', 72)
sleep(2)
self.load_file(firmware,'\x03','\x02')
self.SCSI_device.read('\x06\xEE\x01\x01\x00\x00\x00\x00\x00', 72)
self.SCSI_device.read('\x06\xEE\x00\x00\x00\x00\x00\x00\x00', 72)
self.SCSI_device.read('\x06\xEE\x00\x01\x00\x00\x00\x00\x00', 72)

# executing
self.brom()
sleep(2)
return True

def pram(self):
'''
Called to run a burner or firmware. Returns int result.
'''
return self.SCSI_device.write('\x06\xB3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '')

def brom(self):
'''
Sets device into boot mode from firmware mode. Returns int result.
'''
return self.SCSI_device.write('\x06\xBF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '')
```

最佳答案

根据this它是特定于供应商的。

关于python - BadUSB 中的 SCSI 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47086505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com