honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

ATOMCamの検知画像を自由に保存したり飛ばしたりするhack

現在のATOMCamのアプリは、24時間連続録画による分刻みの録画がmicroSD内に残りますが、
動き・音声検知した動画はかならずクラウドにアップされ、ローカルには残りません。
仕組みとして、検知した動画は/tmp/alarm_reocord.mp4という固定ファイルに一旦保存され、
クラウドにアップされると消去されてしまうからです。
※よく考えると、検知動画14日以上を有料化プランするような話もあったので
技術的なものに加え、その方法のほうが都合がいいのかもしれません…
というわけで、この検知ファイルをローカルに保存しつつ、
例えば自分のNASやslackなどに投稿するためのhackスクリプトです
hackなので、そのうち使えなくなるかもしれません。
※公式で実装してくれるのが一番うれしいんですがね

making tar script

#!/bin/sh

# making Test.tar script

cd /media/mmc
mkdir work
cd work
touch factory
mkdir Test
touch Test/factoryTestProcess
touch Test/singleBoadTest
touch Test/checksum

cat > Test/test.sh << EOF
#!/bin/sh

/media/mmc/pre.sh

/system/bin/hl_client &
/system/bin/iCamera_app &

/media/mmc/post.sh

EOF


chmod a+x Test/test.sh
tar cfv Test.tar Test factory
cp Test.tar /media/mmc

mmc/pre.sh

#!/bin/sh


echo "exploit pre app functions" > /dev/ttyS1

cp -r /bin /tmp/bin
busybox rm /tmp/bin/rm
mount /tmp/bin /bin
cp /media/mmc/norm.sh /tmp/bin/norm.sh
ln -s /tmp/bin/norm.sh /bin/rm

mmc/post.sh

#!/bin/sh
echo "exploit post app functions" > /dev/ttyS1

mmc/norm.sh

#!/bin/sh

if [ -e $1 ]; then
  echo "$1 is file parameter"
        FILE=$1 
        OPT=$2
fi
 
if [ -e $2 ]; then
  echo "$2 is file parameter"
        FILE=$2
        OPT=$1
fi

if [[ "$FILE" = "/tmp/alarm.jpg" || "$FILE" = "/tmp/alarm_record.mp4" ]]; then

	FMT=`date +"%Y%m%d_%H%M%S"`
	echo $FMT > /dev/ttyS1
	mkdir /media/mmc/alarm_files/

	str=`echo ${FILE} | awk -F "/" '{ print $NF }'`
	echo "basename:${str}"

	OUTPATH="/media/mmc/alarm_files/"$FMT"_"$str
	echo "outpath:$OUTPATH" > /dev/ttyS1
	cp $FILE $OUTPATH

fi

busybox rm $1 $2

カメラアプリ内でrmが呼ばれていることを利用して、ファイルを横取りします。
引数処理が適当なので自分でrmコマンドを使おうとすると変になるけど
全体の動作としてはちゃんと動きます(そのうち直す)

f:id:honeylab:20200607022127p:plain