问题:通过Android应用程序,能够以编程方式验证arduino flash的内容,以确保它没有被恶意更改
我可以在android adb shell中使用下面的命令,使用avrdude来完成这项工作
avrdude -C/data/data/com.myapp.avrdude/local/etc/avrdude.conf -v -patmega2560 -cstk500v2 -P/dev/ttyACM0 -b115200 -D -Uflash:v:firmware.hex:i这在arduino上工作得很好,但当我想对使用FTDI芯片的电路板做同样的事情时,问题就来了。当它连接到android设备时,它不会显示在/dev/ location中。
在linux机器上,arduino设备显示为/dev/ttyACM0,FTDI设备显示为/dev/ttyUSB0。问题是,FTDI设备不会出现在android上,因此上面的avrdude命令变得无用。
我不想按照指定的here为FTDI构建内核驱动程序
我认为最可行的方法是为avrdude找到/构建一个简单的java包装器,它可以在更高的级别上与usb设备交互,这样我就可以利用FTDI java library来执行命令来验证闪存。
这种方法可行吗?如果不是,解决这个问题的最好方法是什么?
发布于 2018-11-11 03:59:49
查看FTDI站点,看起来可能有一些FTDI in的驱动程序:FTDI Android Driver,然后您很可能会再次在java ha中构建avrdude。
我经常使用avrdude时,使用arduino...mainly远程重新格式化/升级3D打印机上的固件从raspberrypi...
我会去的
1)查看Arduino驱动程序...
2)如果fail...Maybe尝试在java中运行C程序?这样你就可以在你的应用中打包avrdude了?
3) XY问题->为什么不看看其他avenues...The真正弹出恶意固件的唯一方法是通过对设备的物理访问和具有先前源代码的用户(您可以设置锁定位以防止读取EEPROM)。甚至可以在启动时使用时间戳和UUID 1024位AES令牌/JWT之类的东西来验证构建?
https://en.wikipedia.org/wiki/Java_Native_Interface发布于 2018-11-12 01:46:09
当avrdude不是由FTDI支持构建的时候,为JNI构建将不会有任何帮助。
我已经下载了avrdude-6.3.tar.gz并运行了./configure --enable-linuxgpio
Configuration summary:
----------------------
...
DON'T HAVE libftdi1
DON'T HAVE libftdi
...在寻找它的时候:
$ sudo yum whatprovides */libftdi1它给了我:
libftdi-devel-1.1-4.el7.x86_64 : Header files and static libraries for libftdi
Filename : /usr/include/libftdi1sudo yum install libftdi-devel还会安装libconfuse。它还需要flex和bison。
参见AN_357 Android D2XX Demo Application for FT4222H。
还有一些针对ARM libft4222-linux-1.4.1.231.tgz的构建
..。它将进入jniLibs/armeabi目录。
这取决于它是哪种芯片组,但TN 134 FTDI Android D2XX Driver声明:
JNI提供了一个
类和一个包装器,它们可以轻松地包含在应用程序中。该类提供了对所有经典D2XX函数的访问,包括EEPROM函数。
它甚至还附带了一个video install guide。
还找到了用于avrdude的Arduino build-script。
https://stackoverflow.com/questions/53099360
复制相似问题