2018年3月1日木曜日

CloudPebbleでapngを扱う時の注意点


久しぶりに覚書です。前にPebbleTimeでWatchfaceを作った時の色々でwindows上で作業するなら仮想マシンでやるしかないみたいなことを書きましたが、手軽さで言えばブラウザ上で開発できるCloudPebbleに軍配があがりますよね(サービス終了すると使えなくなるのが痛いですが)

最近はこちらを使うことが多くなってきたので、色々とメモです。

apng(animated PNG)を取り込んで使う時


watchface上でapngを使いたい場合は必ずRESOURCE TYPEを「Raw binary blob」に設定してください。それ以外では読み込みに失敗します(エラーは出ないまま画像は表示されないという形になります)。
余談ですがapngで透過を設定しても反映されず、エミュレータ上では白塗りになりました。ダメなんだろうか…
アニメーションの切り替え速度はあまり早いと切り替わらずに白や黒になります。


 

2017年10月4日水曜日

さくらVPS 512MBメモリでハニーポットをやってみる


ノリで借りてしまいました。さくらインターネットの現時点で一番安いVPS。512MBメモリ20GBSSDの構成で700円程のやつです。

とりあえずハニーポットを触ってみたかったので、設定してみることに。


ハニーポットを選ぶ

 「低対話型サーバ側ハニーポット」として、ssh特化のハニーポットソフトウェア「Cowrie」を選択しました。 始めは「Dionaea」を検討していたのですが、リンク切れを起こしていたのでちょっと保留(forkはあった)。


サーバー準備

勢いで借りたサーバーの起動準備ができたらスタート。CentOS7が乗っていたので、そのままCentOSで行くことに。

rootログイン、sshd_configでのrootログイン禁止、adduserでの別ユーザー生成くらいをやってから、CowrieのINSTALL.mdを参考に作業開始。

説明だとapt-getなのですが、CentOSだとapt-getが無いのでyumで。libssl-devが無いので調べるとopenssl-develが代用できそうなので、そちらをインストール。

また、Cowrie専用のユーザが必要ということで、そちらも用意。
virtualenvは色々設定した後にdesactivateで抜けます。

設定ファイルcowrie.cgfは、ポート番号の設定くらいで。
転送先のポートなどの設定が決まったら、firewall-cmdを利用してファイアウォールでポート転送の設定を。

このタイミングで何回か自分の環境からssh接続で応答なしが出ましたが、Cowrieを起動していないのにポート転送の設定を適用してしまっていたとか、そういう情けないミスが原因でした。

ダミーユーザについてはそのままに(後からログ見るとユーザ名adminが多かったのでそれも追加してもいいかもしれない)

ポート設定後は、~/cowrie/bin/cowrie startで起動。エラーが出ましたがメッセージを確認すると、いくつかパッケージ導入を失敗していたことが原因だったのですぐに解決。

起動後は、確認の為にログイン。偽のログイン先にあるディレクトリが「Richard」で面白味に掛けたので、~/cowrie/data/fs.pickleを調べると偽ディレクトリの設定があったので、適当なものに変更。


ログを見る

ログは~/cowrie/log/cowrie.logです。
設置してからすぐにユーザ名rootでアクセスがあり、入るなり「/gweerwe323f」というものを打ってきました。感染済みかどうかを調べているのでしょうか。
あの手この手で/gweerwe323fを探した後は、\x47\x72\x6f\70(Grop)という指定で色々書いたり消したりしているみたいです。

他には、ユーザ名adminで何回が接続しに来ていました。adminの方が数が多そうに見えるので、こちらも開放して何をするのか見てみるつもりです。

最安プラン雑感

応答が悪いだとか、処理が遅いだとか、そういうものはまだ感じていません。OSとCowrieを動かすためのもの達で、20GBの40%は埋まっています。ログがどれくらいの速度で増えていくのかまだ分かりませんが、そんなに悪くはないのかなと。

2017年7月16日日曜日

Pebble TimeでWatchfaceを作った時の色々

色々終わってしまってて遅いのですが。ここ数日でまたPebble TimeのWatchfaceを作っていました。どうせなので作業手順を晒しておこうという感じです。ドット絵を用意して、アニメーションとしてWatchfaceに組み込んでみた話になります。



0. 環境
WindowsでPebbleの開発を行うなら、やはり公式ガイドで説明されているように仮想マシンを用意するのが一番良い手ですね。重いのは仕方ないとして。

使った環境はVirtual boxでのUbuntu 16.04で、割り当てメモリは1024MB、ストレージは16GBです。
動きが貧弱なので、基本的にWindows側で素材を作ってから仮想OSを立ち上げて、設定しておいた共有フォルダ経由で移動させて…という形を取っていました。


以前、Window10のBash on Ubuntu on Windowsを使ってPebble開発ができるというネタを書きましたが、いくつかWatchfaceを使ってみて止めておいたが良いなと感じました。
SDKを突っ込んで作ることはできますが、折角Pebbleに用意されている「Pebbleと接続している端末のIPアドレスを指定してインストール」の機能や「実機のログを取得」が使えないというのが勿体無いです(このあたりは、SSLErrorとあるのでネット周りが改善すれば使えそうですが)。後はQEMUで用意されているエミュレータが使えないというのも若干痛いというのも。





1. 素材の作成
アニメーションを付ける為、Edge(ドット絵を作れるエディタ)で必要なものを作り、透過やディレイを設定してからgifの形で保存。ちなみに使える色はColor Pickerで確認できます。なおこちらに乗っていない色も自動で補正してくれるので、あまり気にしなくても良い気がします。

ドット絵である必要がなければ、そのままGIMPから開始して良いと思います。


2. GIMPでgif読み込み、再保存
Edgeで作成したgifをそのまま持っていくと最終的にPebbleで実行時に「failed to load palette」で落ちるので、GIMPで形式を変更します。
そのまま対象のgifをインポートした上で、ツールバーから「画像」->「モード」を選択し、「RGB」に変更します。 多分変更前は「インデックス」になっていると思います。
変更後はgifとしてエクスポート。

3.gif2apngでapngを作成
Pebbleはgifには対応せず、apngという形式を要求しているので、そちらに変更します。
gif2apngは、http://gif2apng.sourceforge.net/ からダウンロード。公式ガイドではgif2apngはCUIで実行していますが、GUIでも問題ありません。ただし、必ず変換前に右下の設定ボタンから設定画面を開いて、
Compression Method: zlib
Optimization palette: unchecked
という設定をするのを忘れずに。CUIでは「-z0」のオプションを付ければOKです。
なお、apngの拡張子はpngです。


4.フォントの用意
システムフォント(デフォルトで用意されているフォント)を使いたくない場合は、拡張子がttfのフォントファイルを用意します。ただ、システムフォントの一覧を見ると結構数があるようです。

5. 仮想OSの起動とプロジェクト作成
ここで仮想OSの方を起動します。起動後はpebble new-project watchface <name>でプロジェクトを作成します。作成後は「resources」というディレクトリを作成して、そこに、ホストOSで作成した素材を保存します。
Virtual boxなら設定すればドラッグ&ドロップでホストOSからデータを持ち込めるはずなのですが、どうも上手くいってないので、共有フォルダの設定をした上で
sudo cp /media/<filename>/<data> <path>
と打ってデータをゲストOSに持ち込んで、chmodで権限を変更して使っています。

6. コードを書く,package.jsonの編集
普段からEmacsなので、ゲストOSで作っていますが、別にこれもホストOSで書いてからゲストOSに持ち込んでもいいのかなという気はしています。
package.jsonには、素材の分だけmediaに登録します。

7.ビルド,インストール
ビルド後は、buildディレクトリの中にpbwファイルが作成されます。これが本体です。
buildが正常に終了しているのであれば、pebble installします。
実機にインストールしたい場合は、実機と接続している端末(iPhone/Android)のPebbleアプリをsettingsからdeveloperを選択して、実機を通信待機状態にし、そのうえでpebble install --phone <IP address> します。
IPアドレスは、端末アプリのdeveloperを選択すれば確認できます。

エミュレータの場合は pebble install --emulator <version> とすれば動きます。ここではPebble Timeなので、pebble install --emulator basaltです。
(自分の環境だとかなり時間がかかってしまった為、これは実機でいいと思いました)
ちなみに、どちらの場合も--logsオプションを付けるとログが出力されます。実行時エラーは大体これで分かります。
動作確認ができ、ストアに登録する予定があるならば、この時点で
pebble screenshot <FILENAME>
と入力してスクリーンショットを取っておくと良いと思います。


8.ストアに登録
せっかくなのでストアに。 
固有のUUIDが必要なので、https://www.uuidgenerator.net/ でUUID(version 4)を生成。
(もともとpackage.jsonにUUIDは書いてあるのですが、自動生成されてるか分からなかったので念の為)
https://dev-portal.getpebble.com/developerにアクセスして、開発者用のアカウントを登録。後は書いてある通りに設定すれば簡単に登録できます。
なお、Package.jsonで指定した対応端末の分だけスクリーンショットが要求されます。面倒だったので、Basalt(Pebble Time)のスクリーンショットを使い回して登録しましたが。
Publishでストアに登録して、30分程で登録画面にストアへのリンクが表示されます。