我搜索过并发现有相关问题。不幸的是,我找不到与此直接或密切相关的任何内容,其中大多数都与android有关,并开始了一个新项目。
我有一个设备,我们称之为“相机”。此相机连接到计算机并通过设备上的2.5毫米音频插孔充电,并插入PC上的USB。现在这个“音频插孔”与音频无关。它仅用于数据和计费。现在在PC上,您可以从他们的网站下载相机的应用程序,并与设备进行通信。在PC上,在Windows和Linux下,设备安装,但不安装驱动器进行数据访问或任何东西。您只能通过他们的应用程序传输数据。这很好,他们的应用程序运行良好,但我希望自动化这个过程,他们没有能力这样做。
在嗅探一些连接并挖掘日志后,我发现它似乎是与摄像头的串行连接。在日志和拼凑的嗅探流量我得到了。
DEBUG - Console is ready now
DEBUG - Writing to CLI: sys info
DEBUG - Done writing to CLI: sys info
DEBUG - Starting console match
DEBUG - "buildinfo=root@localhost.localdomain (/mnt/windows-share/src/yugi)"
DEBUG - "buildinfo=root@localhost.localdomain (/media/sf_build/CAMERA/flex/src/yugi)"
DEBUG - "Camera System Program, Ver: 1, Compiled June 11 1909, 12:42:17."
DEBUG - "Battery Voltage: 4293 mV"
DEBUG - "Battery charge level: 50%"
DEBUG - "Charger status: FAST CHARGE"
DEBUG - "BT Device Name: CAMERA"
DEBUG - "BT Device Address: 000000:000000"
DEBUG - "Hardware Board Revision: 0xE "
DEBUG - "CL HW Board Revision: 0xE "
DEBUG - "Hardware BT Stub PsKey: 0x970E "
DEBUG - "Camera: CAMERA CC9Y129"
DEBUG - "BT Firmware Revision: 1"
DEBUG - "Link Key: 00000000000000000000000000000000"
DEBUG - "GUID: 00000000000000000000000000000000"
DEBUG - Console is ready now
DEBUG - Directory path "0:/DCIM/100VIDEO"
DEBUG - "0:/DCIM/100VIDEO"
DEBUG - Scanning successful
所以这似乎是应用程序向设备发送命令。由于没有串行通信注册到主机操作系统,我试图让终端连接到设备是不成功的,相机的驱动程序只是让应用程序看到所述相机。现在挖掘驱动程序,一个名为“flex.dll”的.dll似乎就是那个做通信部分的人。在文本编辑器中打开它(是的我知道,不知道它是如何完成的,但我对逆向工程一无所知)我得到这样的东西。
pattern=QT_PLUGIN_VERIFICATION_DATA
version=4.8.5
debug=true
buildkey=Windows msvc release full-config TFlexGen1::sendBuf partial write
TFlexGen1::sendBuf TFlexGen1::recvBuf orientation taser-cam-flex build-info
fw-update fw-updt-end-signal file-size del-video get-video
rec-quality video-buffer mic dev-mode ann-file video-list device-clock
fw-multi-updt flex-bt-version flex-boot-version fw-version serial-num ,
not-found Could not mount file system Could not mount file system with drive ID == -1
Failed reading status getting sense Failed to read response to inquiry Error sending inquiry
Error setting up control transfer TFlexGen1::initStorageIFace Could not remount file system
flex-hw-version Read 50K from CLI, something is wrong. fail readCmdStr exit on stop thread
readCmdStr failed Done writing to CLI: Writing to CLI: reboot play 62
我发现的另一件事是名为QTcore,QTNetwork和其他QT文件的文件,但我无法确定它们是否在通信中发挥作用,或者仅仅是应用程序功能本身。但是,如果我删除了flex.dll,则错误日志会开始报告QTplugin丢失。
另外,在发送每个cli命令之前,我也会得到一些名为SREX的提示。我还修改了日志中的ID和其他识别信息。
现在,我的最终目标是制作一个linux(甚至是windows,但我认为linux将是最好的路径)系统来自动读取设备,如应用程序,并自动将文件从相机复制到计算机系统上作为我的插入了相机。现在我已经考虑过制作一个自动识别并点击相应应用程序命令的程序。我将在一天中插入多个摄像头并拔掉电源插头我不确定这是多么可靠。
我最大的问题是只能访问应用程序使用的相同cli。我已经尝试过串口(当设备插入并运行应用程序时没有出现新的端口),usb端口,我能想到的唯一的东西就是某种基于USB的SSH?我不知道,即便如此,我也遇到了如何让终端甚至指向类似的问题。
我只是在这里挠头,不知道还能做什么。