前回の記事でArduinoからスケッチデータを読み取る方法を紹介した。
逆アセンブリしてスケッチの内容を解析する事は簡単ではないが、読み取ったデータを他のArduinoに書き込んで複製する事は容易に出来る。
読み取りを防止したい場合、マイコンには読み取りやスケッチの上書きを防止するFUSE設定がある。
設定は上記記事同様、Arduino as ISPでターゲットを接続し、avrdudeコマンドで行う。
avrdudeのパス(C:\Program Files (x86)\Arduino\hardware\tools\avr\bin)へ移動し、下記コマンドを実行する。
avrdude -C "..\etc\avrdude.conf" -v -v -p atmega328p -c avrisp -b 19200 -D -u -U lock:w:0x00:m -P COM8
-p はマイコンの種類、-P はシリアルポートを指定する。 スケッチを読み出そうとするとプログレスバーが動いて読み出している様に見えるが、0バイトのファイルが生成される。
プロテクトを外すにはブートローダーを上書きする事でリセットされるので、その後通常のUSB接続とスケッチ書き込みを行う。
ロックビットの確認は下記コマンドで行える。
avrdude -C "..\etc\avrdude.conf" -v -v -p atmega328p -c avrisp -b 19200 -D -u -U lock:r:con:h -P COM8