ラベル ESP-WROOM-02 の投稿を表示しています。 すべての投稿を表示
ラベル ESP-WROOM-02 の投稿を表示しています。 すべての投稿を表示

2020年1月8日水曜日

ESP8266を用いたwifi位置偽装装置の電流値測定

ESP8285を用いてモバイル電源で動作する位置偽装装置の開発を予定している

モバイル電源の使用にはESP系チップの高い消費電流がネックとなる
定格とは別に位置偽装装置システムにおける実消費電流を調査する

ESP8266の動作と消費電流

パワーオン時に200~300mAのピークがあると言われている
いったん起動してしまえばデータシートどおりの動作をする
起動時に電源の電流容量が不足すれば電圧降下によって起動できないケースがでてくる
自己復旧できないのでこれは問題

測定対象システムの概要

位置偽装ユニット
ESP8266を6基、RN-41-SMを1基使用
ESP8266はwifiサーバとして動作し、30秒おきに設定が変更されリスタート
RN-41は30秒おきに接続先からマクロを受け取る

実測定結果(起動時)

5回測定のピーク電流が1200mA弱
300mA×6を覚悟していたが実動作上はタイミングが重複するわけではない模様
(元からサーバをbeginするタイミングはズラしている/効いているかは不明)
測定モレするようなスパイク状のピークがあった場合は見逃してしまうので注意

電源端子のあたりで測定
測定例

測定結果(動作中)

動作を10分継続した場合のピーク電流は600mA弱
定常電流との振れ幅は100mA未満
こちらは想定よりも高め

考察

起動時のピーク電流さえやり過ごせば1Aもあれば良い
・ESP8266を二群に分けてディレイ電源供給
 →ピーク電流は900mA程度?
・ESP8266をリレー形式で1つずつディレイ電源供給
 →ピーク電流は700mA程度?
剛腕戦略をとるならば2Aのモバイル電源を用意すればいい

消費電力は定常電流に3.0Vをかければいいので定常ピークで考えても1800mW程度
モバイル運用しても問題ない程度の消費電力と言える

INA219ブレイクアウトボード+M5Stackで簡易電流測定

以下は簡易電流測定器を作成したメモ

動機は電流測定無しでESP8266系チップを弄るのに限界を感じたため

INA219ブレイクアウトボード

今回はAdafruit製のブレイクアウトボードを使用
測定した電流をI2C経由で読み取り可能
(同様の模造品が沢山あり、そちらでも問題無いハズ)

電流測定したい箇所にVin+とVin-を使って挟み込む(GND側がVin-)
電圧も測定したければ測定対象と更にGNDを接続する
困ったらAdafruit

M5Stack

ディスプレイがあり、microSDカードが読み書きできるため使用
(ただし今回はまだSDカード出力は実装していない)
GPIO21(SDA)、GPIO22(SDL)を用いればI2Cライブラリを使用可能
(SDA、SDLポートが別途あるが、内部で結線されている)

作成方法(配線)

M5Stackの上部端子(メス/2.54mmピッチ)に
・GND
・3V
・GPIO21(SDA)
・GPIO22(SDL)
が並んでいるのでこれをINA219に結線すればよい

INA219の各端子に2.54mmピッチのピンを立てる
都合の悪いことにSDAとSDLの位置が逆
今回は極細配線で強引にクロス接続した
(本当は中継基板を作ってそこでクロスさせた方が楽で賢い)

Vin+とVin-にアクセスしやすいように端子台とメス端子をハンダ付けして終了

INA219(4ピンオス)を上部端子(8ピンメス)に挿して運用すると事故原因になる
このためダミー4ピンオスを追加して8ピンオスとしている
(ダミーは結線せず、根本で切断)

結線:SDAとSDLのクロスが強引
結線:SDAとSDLをこね回した結果のコゲが痛ましい

作成方法(プログラミング)

INA219ブレイクアウトボードはArduino用ライブラリが存在
(Adafruit_INA219.h)
機種依存が無いためM5Stackでもそのまま流用できる
Adafruit社ページからDLしてArduinoライブラリにインポート
(あるいは『ライブラリ管理』から『INA219』で絞り込んで導入)

M5Stackの画面表示はサンプルスケッチ参照のこと

SDカードに吐き出す部分を作ればロガーになるがひとまず測定のみ実装
ピーク電流を比較・更新する以外はAPIの結果をそのまま表示しているだけ

測定回路のGNDをM5StackのGNDに接続する必要あり/写真の使い方では電圧測定値は無効
マルチメータで確認

2019年9月23日月曜日

ポケモンGoBOT(位置偽装装置)稼働3年目

以前に作成したポケモンGoBOTは現在も稼働中(3年目)である
以下は現時点の構成、稼働状況についてのメモ
 20ヵ月目の過去メモ

システムを構成する3点セット

位置偽装ユニット

6基のESP-WROOM-02と1基のRN-41-SMからなる位置偽装ユニット
前回から構成の変更なし
かなりの稼働時間にもかかわらず未だに一基の故障もない

画像は以前のもの

GoPlus+サーボモータ制御ユニット

自動化したGoPlusとサーボモータ制御用マイコンをUSB電源に繋いだユニット
前回とほぼ同じ
以前にGoPlus自動再接続機能を追加したが、動作が不安定であるためオミットした

左が制御ユニット/別件で使用したためGoPlusは基盤むき出しで使用

スマホ揺らしユニット

スマホ(ここではiPodtouch)を揺らすユニット
サーボの損耗が激しいため置台を軽量化した
(保護ケースの背面中央にサーボホーンを接着しただけ)
また、モータ固定用のゴム台が破損したためユニバーサルプレートで新造した

保護ケースにサーボホーンが接着されているのがわかる
ある程度の接地面が無いと揺らしたときに倒れる

クライアント

wifiアンテナを除去したiPodtouch(第7世代)に有線LANアダプタを付けたもの
ライトニング端子に直接接続できるアダプタ(ノーブランド)に変更
性能は懐疑的であったが問題なく動いている

アダプタ自体の作りは非常にラフ/LANケーブル挿抜だけで外装が外れそうになる

位置偽装の知見

・同一端末複数アカウントのチェックが緩い(もしくは無い)
 キラポケモン等の要素追加に伴い、同じ環境で別垢キャラを育てている
 (TL39程度)
 現時点で警告やbanは無い

・wifiアンテナ除去+有線LANの効果が非常に高い
 現在の環境ではiPodtouchから見えるAPは位置偽装ユニットの6基のみ
 位置偽装に理想的な状態を作ることができている
 
 ※ただしここまでアンテナ依存なのは珍しい設計
 アンテナが無い基部のみでもある程度の受信能力を持つ
 他のスマホでアンテナ除去しても受信能力がここまで下がることはない

・APの情報が経時で使えなくなる問題
 一度構築した位置偽装用AP群のデータが経時で使えなくなる問題は健在
 以前はこの問題に対して
 『位置偽装によって位置情報データベースを汚染しているのでは?』
  (→周囲にあるAPを偽装先の位置情報と結びつけてしまう)
 という予想をしていた
 現在の環境では位置偽装ユニット以外のAPは検知できないので想定は成立しない
 位置情報データベース自体が逐次更新されているものと思われる

3年2か月分のスコア




2018年5月5日土曜日

ポケモンGoBOT(位置偽装装置)その後

以前に作成したポケモンGoBOTだが未だに稼働中(20か月目)である
以下は現時点の構成、稼働状況についてのメモ

位置偽装ユニット

6基のESP-WROOM-02からなるユニット
以前は制御ユニットとしてArduino pro mini(3.3V)を用いていたがオミット
現在はPCとのシリアル通信用にRN-41-SMに換装している
これはPCのシリアルターミナルから偽装情報を投げるのが一番便利だったため

ガワはセリアのペンケース
ESPのRXをRN-41-SMのTXと結線/配線はチップの裏側

RN-41-SMはRS-232C関連の機能を使わなければ3.3VでOK
電源投入後はPCからBlueToothデバイスとして認識される
接続後はシリアルポートが増えるので、そのポートに対してシリアル通信するだけ
(通信速度やプロトコルは事前に適宜変更しておくこと)

ESP-WROOM-02は非常に堅牢でかなりの稼働時間にも関わらず故障率0
えらいぜ

GoPlus連打ユニット

以前はサーボモータでGoPlusを連打していたが全自動方式に変更
(GoPlusのLEDとタクトスイッチの配線を直結)
電源はUSB端子経由の5.0Vをレギュレータで3.0V降下して使用
ボタンは頻繁に押すため配線を引っ張り出してケースに外付け

昇降ユニットと同じケースにまとめてある
ボタンをケース外に引っ張り出すと非常に便利

iPod昇降ユニット

スマホの置台をサーボモータで揺らすユニット
以前はSG-90で上下に揺らしていたがこれは筋悪であった
負荷が重く、誤作動原因の故障も含めて20ヵ月で5個焼損
サーボをより大型のMG995に変更し、揺らす方向も左右に変更

ユニバーサルプレートで平置き台を作成
置台の裏側にサーボをポン付け/サーボは十分な重さの台に固定
iPodTouchを置いたところ/これがサーボで30°程度定期的にスイングする

MG995および制御用AVRは5.0V駆動可能なのでGoPlusユニットと電源を共有
(ただし、500mAを越える可能性があるため充電器の使用が前提)

クライアント(iPod Touch)

一年を超えたあたりでバッテリーが妊娠してホタテ貝オープン状態
バッテリーを交換した
稼働20ヵ月で一番のコスト

位置偽装の知見

・一番のノイズ源は自宅の無線ルータ
 複数チャンネルの十分な電波強度があるAPで位置偽装における一番のノイズ源
 偽装APを何個立てても現在位置からピクリとも動かない場合はほぼこれが原因
 以下のような施策が必要になる
 ・MACアドレスの定期的な変更
 ・電波強度のダウン
 ・未使用チャンネルの無効化
 ・クライアントから距離をとる

・使えなくなるAPへの対策が無い
 偽装装置運用中に構築済の偽装データが使えなくなることが頻発する
 おそらくはデータベースが偽装データで更新されてしまうため
 (偽装先のAP情報と周囲にある実際のAP情報が結び付けられた)
 データベース更新のタイミングや規則性については全く分からない
 一度使えなくなったデータが復活する場合があるのは確認済

約20ヵ月分のスコア






2016年11月14日月曜日

続:ポケモンGOPlusをエネループで動かす他

ポケモンGOPlusをエネループで動かすの後に少し手をいれた
以下関連するメモ


・エネループ3本(3.6V)→3.0V変換に用いたLDOレギュレータについて

3.0V変換はニーズが少ないからか、秋月にはTO-220タイプの製品が登録されていない
マルツから以下を購入
 LDOレギュレータ(出力3.0V)【BA30DD0T】

定格電圧が3.0~25.0Vとなっており、電圧の降下したエネループでも問題無し

コンデンサは秋月の3.3Vレギュレータに付属していたものをそのまま流用
(※本来は容量を計算、精査して選択すること)
秋月のレギュレータは配線図まで懇切丁寧に同梱されているのが嬉しい


・ポケモンGOPlusを固定する方法について

タミヤのユニバーサルプレートにビスで柱を立てて置き台としていたのだが振動時の音が酷い
緩衝材で置き台を作った

レギュレータを交換/配線も整理
硬化後はスーパーボールくらいの固さ
緩衝材はおゆまるを使用
ある程度の量を温め、丸めた状態でユニバーサルプレートに押し付ける
冷めて硬化する前にポケモンGOPlusを押し付けて高さの調整を行う
押しつける際に配線を痛めるのでテープで保護するか、配線の無い円盤に入れ替えること

2016/12/19追記:
 続きのメモ『ポケモンGOPlusをエネループで動かす:実用編』を追加

GOPlusのメモここまで/以下は別件のメモ


・ブレッドボード上に組んだプロジェクトのケースについて

セリアの樹脂製ペンケースがロングサイズのブレッドボードにジャストサイズ
(ただし背の高い部品を挿すとフタが閉まらない)
本体側の素材は穿孔しやすいので電源プラグの埋め込みも楽

以下は位置偽装に用いたESP-WROOM-02を6つ使ったプロジェクトでの使用例
制御用の3.3VのArduino Pro mini互換機を追加している
電源は外付けの3.3V ACアダプタから供給され、ペンケースを開孔してプラグを設けている

ボード連結用のツメを切った方がいいかも
なかなかいい感じ
適度な弾性があるので開口時に割れにくいのが良い
ケースのフタが透明でボード上のLEDなども目視できるのが良い
安くて見栄えが良いのでおススメ

2016年8月30日火曜日

解決:ESP-WROOM-02のソフトAPが頻繁にハングアップする問題

ESP-WROOM-02のソフトAPが頻繁にハングアップする問題に悩んでいたが解決した

大ハマりのオチってこんなパターンが多い

原因はArduinoIDEのesp8266用パッケージが古すぎたこと
IDEのツール→ボード→BoardsManagerからesp8266用パッケージをアップデートすればOK

電源容量やAPIの仕様を散々調べたオチがこれで脱力してしまった
これまで30分おきにリセットして強引に運用していたのがバカみたいだ

位置偽装の検証では動作不良の監視のためにPCから操作していたがそれも不要になる
単純なシリアル出力で良いのでArduinoなどのマイコンに置換したい
(もしくはESP-WROOM-02の1基に行わせたい)

2016年8月5日金曜日

改良編:外部機器を用いたスマホの位置偽装

前回完成したものをブラッシュアップしたメモ

今度こそこれで完成としたい

前回の問題点:
周囲のAPを遮断しきれない点が一番のネック
どれだけ頑張って偽装しても本来の測位をされてしまった時点で台無しになる


改良の概要:
再現用AP(群)と偽装対象のスマホを電波を遮断する容器に密閉してしまう
完全な遮断は無理だがこのシステムに必要な程度の減衰は十分望める


必要なもの(前回用いたものは省略):
・電波遮蔽用の容器
再現用APとスマホが入る容積があること
電波を遮蔽する素材でできており、密閉できること
ケーブルを引き込む開口加工が容易であること
以下は実用性のあったもの
1.100均のクーラーバッグ
アルミシートで表面が覆われており適度な容積がある
何より安価で入手しやすい
難点は保温性があること
スマホが発熱するためこれは都合が悪い
2.100均一のアルミシート
樹脂シートにアルミを蒸着させたもの
単独で使ってもよいし、他の容器をさらに包んでもよい
保温用途に裏地が厚いものは避けたい
3.クッキー缶や茶筒
密閉性が高く堅牢である
より効果を上げるには継ぎ目をアルミテープで目張りするとよい

画像はバッグタイプだが角型の方が使いやすい

出来ればペラペラのものを選ぶ


・必要に応じた各種ケーブル等
密閉してしまうため当然ながら画面を見ることはできないし、操作もできない
HDMIケーブルやUSBマウスなどを用意すること
また、スマホと自宅Wifi間も相応に減衰してしまうのでできれば有線LAN接続すること
マクロによる完全放置ならば不要

・タッパなどの絶縁容器
偽装用APが基盤むき出しの場合に使用
遮蔽用の容器は伝導性があるため、そのままではショートの恐れがある
絶縁容器によって保護すること


改良の方法:
前回のシステムを絶縁容器で包むだけ!
必要に応じてケーブル穴を開けること
スマホの温度上昇に気を付けていきなり長時間放置しないこと



2016年8月3日水曜日

運用編:外部機器を用いたスマホの位置偽装

完成した外部機器を用いた位置偽装でいろいろ遊んでみた
以下は得られた知見について

なお、ゲーム等では位置偽装はBAN対象であるため使用しないこと
ちょっと楽しくなってきた

知見とかTIPS:

・止まるよりも動き続けた方が良い
動き続けた方(一定間隔で偽装先を変更した方)が明らかに偽装の精度が上がる
前回の測位と同じ位置にいるよりは近くの別の位置にいた方が信頼される様子

・近距離ならGPSオンでも使える
本来の位置から半径200m程度ならば問題なく偽装できた
(SIM抜き/GPSおよびWifiの測位を許可)
これより距離が離れると本来の位置へのテレポートが頻発する
(ただしアプリの位置測定アルゴリズムに依存する話)

・基地局を使った測位には勝てない
SIMを挿して基地局を用いた測位を行った場合は使い物にならない
本来の位置へのテレポートが頻発して偽装の用をなさない
GPSに対して測位のスピードが速く、精度も高い様子

 ・細かい調整が難しい
メートル単位の調整は難しい、というか無理
選択するAPを変えて運よく目標位置になることを祈るしかない
APの電波強度の強弱まで制御するならば調整可能か?

・アルミテープ加工したスマホの外観が酷い
毒電波を気にしてる系ユーザー、もしくは板チョコ弄ってるアレな人にしか見えない
外に持ち出すときは絶対にアルミテープを剥がすこと


手前の銀色の塊が加工済スマホ(裏面)

nomapのオプトアウトには時間がかかる
ただちにデータベースへ反映されるわけではない
位置偽装では自宅のwifiが一番のノイズ源
モバイルwifiならば気にしなくてもよいのだが

・運用によるテレポート回避
遠隔地を偽装する場合は
APによる再現開始→アプリ起動→アプリ操作→アプリ終了→APによる再現終了
ただしどうやっても短時間で移動不可能な距離の連続偽装は行わないこと

・シリアル通信経由でのMACアドレス変更
APのファームを毎回ビルドするのは不合理なのでMACアドレスは外部から変更可能にしておく
シリアル通信でコマンドを投げる方法が一番楽

・シリアル通信のブロードキャスト(もどき)
 再現用APの数だけシリアル通信ポートを準備するのも不合理
 送信側のTXに対して各APのRXを同時に接続することで簡易的なブロードキャストが可能
 各APに対して同じコマンドを同時に送信することができる
(注1:ここでは電気的なリスクは考慮していないので注意)
(注2:逆の接続(送信側のRXに対して各APのTX)を行っても混信するだけで使えない)
コマンドの中にどのAPへの命令なのかを埋め込むこと

シリアル通信による移動指示、ループ指示
ブロードキャストしたコマンドでMACアドレスが変更可能になったらかなり実用度が上がる
各場所におけるMACアドレス変更コマンドを列挙してtxtファイルにする
これをTeraTermなどのターミナルにD&Dするだけで位置設定が可能になる
また、マクロを用いることでループ処理やコマンド間のウェイト制御が可能


 実用的な使用方法:

・近所を永久ロングウォーク
近所の周回コースを測位しておき、コース上を延々とループするように位置偽装する
移動距離がポイントになるようなケースで使用する
万一本来の位置を測位してしまってもテレポートする距離は短くバレにくい
ありえない移動速度にならないように適宜ウェイト調整が必要になる

 ・長距離テレポートピンポンダッシュ
遠隔地に偽装した後、ごく短い操作を行った後即座にアプリを終了する
チェックポイント到達に意味があるケース、そこでスタンプなど短い操作を行うケースで使用
遠隔地で偽装し続けることは難しいが、短時間で操作が終了するならば問題は起きない
次回アプリ起動時に矛盾が起きないように気を付けること
(東京のチェックポイント通過→アプリ終了→5分後に大阪でアプリ起動、など明らかに異常な記録が残る)

・バス停を家の前にもってくる
家の近くにあるポータル的なものへ位置偽装を行う
自宅から外出せずに近所のポータルへ直接アクセス可能になる
数百メートル程度の位置偽装ならばリスクがかなり低く効果が高い
ただしごく近所のAPを偽装するためトラブル要因になりかねない
再現用APの出力を極力落とすこと

2016年7月31日日曜日

完成:外部機器を用いたスマホの位置偽装

以下の方法で位置偽装を行った
前回引っかかった問題について解決したためここにまとめる

なお、ゲーム等では位置偽装はBAN対象であるため使用しないこと

精度がイマイチなのでゲームとかはroot取って偽装した方がマシだと思う


概要:
wifiアクセスポイント(以下AP)を用いた位置測定方法に対して任意位置の偽装を行う
偽装したい場所のAP環境を再現することで測位を誤認させる

GPSおよび基地局測位が有効だと矛盾が生じるため、かならずwifi『のみ』の測位であること
外部機器を用いたアプローチで実現するため、偽装用アプリの使用やroot化等は行わない


必要なもの:
・スマホ
偽装を行うスマホ本体
できるだけwifi受信感度が『弱い』ものが好ましい(後述)
GPSは非搭載でもよい
今回はAndroid機で実験しており、iOS機でどうなるかは不明

・偽装対象のアプリ
GPSオフかつSIM無しでも動作すること

・複数台のwifiAP
必ずMACアドレスが変更可能であること
数は多ければ多いほどよい
今回はESP-WROOM-02を用いた
ソースコードはサンプルにわずかに手を入れる程度なので割愛

・アルミテープ
厚みのあるアルミ箔に接着剤がついたもの
ホームセンターなどで購入可能
準備できなければ銅箔テープやアルミホイルでもよい

・wifi測定用のアプリと実行環境
周囲のwifi環境を調べるスマホ用アプリケーション(Wifi Analyzerなど)
APの電波強度とMACアドレスが調べられる機能があること
適当なスマホにインストールして測定可能な環境を構築しておくこと
PC用アプリとノートPCを使ってもよい


実現方法:
1.偽装したい場所の調査(フィールドワーク)
偽装したい場所に行き、アプリを用いて周囲のAP環境の測定を行う
各APについて以下の情報を取得する
・SSID(APの名前)
・MACアドレス(BSSID)
・電波強度
精度を上げるならば測定位置を中心に10m程度移動して複数回測定すること

2.APの精査
測定したAPを精査して環境再現に用いるAPを選ぶ
以下の条件で絞り込みを行うこと
・電波強度が強いものを選ぶこと
電波強度が強いほどその場所から近いAPといえる
・同じ機器からは一つのみ選択
連番のMACアドレスは同じ機器のマルチSSIDに対して振られたもの
・モバイルルータは弾くこと
モバイルルータには位置情報の結びつけが無いため避ける
SSID名から類推すること
・店舗のAPを選ぶこと
店舗のフリーAPはその場所との結びつきが強く、位置測位に用いるのに向いている

3.再現用APの準備
前項で精査したAP情報を用いてAPを立てる
この際、SSIDはコピーせずに適当な名前を付けること
(測位には用いられないため/実在するAPのSSIDを用いることは避ける
MACアドレスのみを用いて再現を行う
再現用APはインターネットに接続しなくてもよい
また、MACアドレス照会に返答する以外の機能は不要
立てるAPは多いほどよい
外部からAPにアクセスされないように極力電波強度を下げること

4.スマホへの加工
スマホのwifi受信感度を『下げる』加工をする
これは周囲のAPの電波をなるべく掴ませないようにするため
周囲のAPの情報から正しい測位をされてしまうことを防ぐ
再現用APは至近距離から電波を出せるので受信感度を下げても問題ない

スマホのwifiモジュール付近にアルミテープを包むように貼る
(wifiモジュールの配置はスマホの上部であることが多い)
実際に受信感度が下がることをwifi設定画面等で確認すること

5.効果のプレ確認
googleマップアプリを用いて位置情報が偽装されているかを確認する
マップアプリは偽装検知が緩い(もしくは無い)ため確認に向いている
ここでうまく偽装できてないようならば他のアプリでも無理
APの精査をやりなおすか再現用APを増やすこと

6.アプリの動作確認
目的のアプリで位置情報が偽装されているかを確認する
失敗する場合はAPの精査をやりなおすか再現用APを増やすこと


TIPS:
・自宅に無線AP名を『~_nomap』に変更すること
googleの測位データベースから除外するため

・偽装はできるだけ近場にすること
どれだけ受信感度を下げても周囲のAPを完全にシャットアウトはできない
このため偽装中に突然本来の位置を測位してしまう場合がある
遠隔地に偽装していた場合は長距離テレポートがサーバ側に検知されてしまう
一方、測位を数100mずらす程度ならば検知されても誤差として処理される希望が持てる

・アルミテープ最強伝説
最初はアルミホイルを使っていたがうまくいかなかった
アルミテープは隙間なく目張りできるので作業しやすく効果が高い



続続:スマホの位置情報偽装について調べたメモ


以下、前回から追加調査を行ったメモ
ニセAPを作る方法を掘り下げている

現在、部分的には成功しているが実用には至っていない

偽装方法の概要:
偽装したい場所のWifiアクセスポイント(以下AP)環境を再現する
Wifiを用いた位置測定APIを騙すことで位置情報の偽装を行う

偽装の手順:
1.偽装したい場所でWifi環境の測定を行う
スマホに市販のWifi測定アプリをインストールする(Wifi Analyzerなど)
偽装したい場所に行き、アプリを用いてWifi環境の測定を行う
各APについて以下の情報を取得する
 ・電波強度
 ・MACアドレス

2.偽APを立てる
前項で取得したAPから電波強度が強いものをピックアップする
同じ機器と思われるAPから複数ピックアップするのは避けること(MACアドレスが連番)
ピックアップしたAPのMACアドレスを付加した偽APを立てる
偽APの数は多ければ多いほど良い
このとき、外部から掴まれないように極力電波強度を下げる
また、適宜パスワードを設定すること
偽APはMACアドレスをチェックする以外では用いられないのでスタンドアロンで良い

以上で一応位置測定APIを騙すことができる
ただし、周囲のAPの数が多い場合はそれに負けてしまう
成功したように見えても次の測位では周囲のAP情報に基づき本来の位置に戻ってしまう

偽APにより他人の測位に影響を与える可能性があることを考えると筋が悪い方法といえる
掘り下げるかどうかは悩むところ
偽APをごっそり増やしてみる?

2016年7月30日土曜日

続:スマホの位置情報偽装について調べたメモ


以下、前回から追加調査を行った結果のメモ
スマホに対する位置偽装を前提とする

位置情報偽装方法のメリットデメリット:

1.開発者用の機能を利用する
いわゆる疑似ロケーションを使う方法
原則Androidのみ
位置情報の偽装に意味があるアプリケーションではほぼキックされる
疑似ロケーションを隠す方法もあるがrootを取る必要がある

2.位置情報取得APIをフック
これもroot前提
rootをとれば相当のことができるがリスクを考えれば避けたい

3.BluetoothタイプGPSのフリをする
前回の調査結果は古い情報であった
現行Androidでは外部GPSはサポートされていない
一部アプリケーションではSPP経由の情報を取得して使用可能
ただし疑似ロケーションをONにしなければならず、位置偽装としては1.と変わらない

iOSでは正式サポートされているものの、iOS間のプロトコルは非公開
単純にSPPで位置情報を投げつけてもiOSはその情報を拾わない

4.APのフリをする
これはいけそう、というか手元のテストでは偽装できた
ポイントは複数のニセAPを用いること
単一のニセAPではいくら出力が強くても周りの正常なAPに負ける
これは位置情報検出APIの仕様が複数APを必要とするためだと思われる

滑らかな移動の再現はかなり難しい
アプリ側がある程度のショートテレポートを許容していないと無理

周囲の正常なAPの情報も拾われているため、厳密な偽装検知を行うアプリにはバレるかも

ニセAPの出力が高すぎると周囲にも誤情報をバラまくため酷いことになる
また、ニセAPの情報でGoogle側のデータベースが更新されてしまう恐れがある

2016年2月25日木曜日

スイッチサイエンスからESP-WROOM-02 Arduino互換ボード発売

スイッチサイエンスからESP-WROOM-02開発用ボードの新型が発売

ESP-WROOM-02 Arduino互換ボード

パッと見arduino leonardoっぽい

今回のウリはArduinoとピン形状(≠ピン配置)を揃えたところ
Arduino Uno用シールドを装着可能

ただしATMega328とESP8266ではピンアサインが異なるため、スケッチの修正が必要となる
また、そもそものIOピン数が少ないため、一部シールドは動作自体ができない

DCジャックが付いているのでAC電源からの給電が可能



参考/ArduinoUnoとのピン配置比較
上はArduinoUnoとのピン配置比較
デジタルIOピンの並びが異なる点と、アナログIOピンの数が少ないことがわかる
また、一部のピンはジャンパによる選択方式となっている

目当てのシールドがある場合を除いてあまり用途が見つからない感じ
むしろDCジャックからの安定給電できるメリットの方が大きいかもしれない

どちらも必要なければ現行機種でいいかと






2016年2月9日火曜日

EPS-WROOM-02サンプルプログラムのメモ(ESP8266SSDP)

前回の続き

EPS8266SSDP:

 SSDP(Simple Service Discovery Protocol)のライブラリ(ESP8266SSDP.h)のサンプルプログラム

・SSDP

 SSDPプロトコルを用いてフィリップスのIoT照明機器hueを制御するスケッチ…らしいが
 いかんせんhueもブリッジも現物が無いので動作確認ができない

 このプロトコルを用いたWebサービスを使うときのためにSSDPって言葉だけ頭の片隅に残しておこう

2016年2月8日月曜日

ESP-WROOM-02サンプルプログラムのメモ(ESP8266mDNS)

前回の続き

サンプルスケッチ呼び出し方法


ESP8266mDNS:

 マルチキャストDNSライブラリ(ESP8266mDNS.h)のサンプルプログラム

・DNS_SD_Arduino_OTA

 無線(OTA:Over The Air)経由でESP-WROOM-02のファームアップデートを行うスケッチ
 (※ArduinoIDEからOTA経由のアップデートを行う場合はセットアップが必要(ここでは割愛))

 接続したい無線アクセスポイントのssidとpassにソースを修正すること

 OTA経由で別のスケッチにアップデートした場合、OTA経由でアップデートする機能は失われる
 (当たり前だが)
 

・mDS_Web_Server

 ウェブサーバのサンプルスケッチ
 接続してきたクライアントに対して簡単なhtmlを生成して返す
 接続したい無線アクセスポイントのssidとpassにソースを修正すること

 起動後、シリアル出力にて割り当てられたipアドレスを表示するので
 同一ネットワーク上に接続されたPC(あるいはスマホ等)のブラウザにこのアドレスを入力する

 ブラウザに
   Hello from ESP8266 at 192.168.XXX.YYY
 という表示がされたら成功

 html形式に変換するだけで自由に出力可能なので使い道が多いサンプルスケッチ
 ブラウザで接続するだけなのでアクセスも簡単 

2016年2月5日金曜日

ESP-WROOM-02サンプルプログラムのメモ

Arduino for ESP8266環境ではArduinoIDEからESP-WROOM-02の開発が可能
そしてArduino同様にESP-WROOM-02のサンプルプログラム(スケッチ)が多数収録済である

以下はこのサンプルプログラムに関するメモ


使用方法:
 
 ArduinoIDEからサンプルプログラムを使う方法
 (Arduinoでの使用方法と同じなので読み飛ばしてもよい)

 
ArduinoIDEでのスクショ
1.ArduinoIDEの上部メニューから『ファイル』→『スケッチの例』→『(分類)』→『(スケッチ名)』を選択

 2.新しいウィンドウに選択したサンプルプログラム(サンプルスケッチ)がロードされる

 3.変更が必要な個所を修正したのちビルド

  (※スケッチを保存する場合は別名で保存すること)


サンプルスケッチのメモ:
 
 以下はサンプルスケッチの解説メモ
  動作確認はすべてスイッチサイエンス製ESP-WROOM-02開発ボード

esp8266:

 ・Blink
  毎度おなじみLED点滅スケッチ
  LEDが接続先のBUILTIN_LEDピンはTXDピン(ピン番号1)
  
  スイッチサイエンスのボードはUSB-シリアル変換が接続されているため挙動は以下のようになる
   ・PCとUSB接続している場合はRX_LEDが点滅する
    (※TX/RXでクロス配線されているため/シリアルターミナル等で接続する必要は無い)
   ・USB経由で給電のみ行う場合はRX_LEDは消灯したまま

  よってUSB接続前提ならばオンボード上のLEDがコントロール可とわかる
   (通信時のLED点滅は抑制できないが)
  USB-シリアル変換機が働いていないと駄目っぽい

  同様にRXDピン(ピン番号3)を指定すればTX_LEDが光るのでは?と思ったがこれは失敗


 ・BlinkWithoutDelay
  millis()を用いたLED点滅スケッチ
   (※millis()/起動してからの経過時間をmsec単位で取得する関数)


 ・CallSDKFunctions
  ESP-WROOM-02のホスト名を取得するテストプログラム
   (※wifi_station_get_hostname()/ホスト名を取得する関数)
  ホスト名はMACアドレスから自動生成される

  生成されるホスト名:
   ESP_XXYYZZ (XXYYZZはMACアドレスの下位3バイト)

  サンプルにはないがwifi_station_set_hostname()関数でホスト名の変更が可能
  
  ホスト名の変更方法:
   以下の関数を実行
   この情報は保存されないため、ホスト名はリセットすると再度自動生成される

   wifi_station_set_hostname("hostname");


本日ここまで

2016年2月3日水曜日

ESP-WROOM-02開発ボードのメモ

スイッチサイエンス製ESP-WROOM-02開発ボード(分かり辛いので適当な製品名を付けて欲しい)のメモ

スイッチを間違いやすい

ボードの特徴:

 ・ESP-WROOM-02モジュールとUSB-シリアル変換ICを同じ基板上にマウントしたボード

 ・5V→3.3Vレギュレータを備えているのでUSB給電で動作可能

 ・ファームウェア書き込みに必要な設定ピンがプルアップ/プルダウン済
   (IO2:H IO15:L)

 ・タクトスイッチによってファームウェア書き込みモード(ダウンロードモード)に切り替え可能
   (プルアップしたIO0にタクトスイッチを接続/デフォルトがHでスイッチを押すとL)

 ・タクトスイッチによってリセット可能
   (プルアップしたRESETピンにタクトスイッチを接続/押すとリセット)


ボードのTIPS:

 ・IO0スイッチを押しっぱなしの状態でRESETスイッチを1回押すとダウンロードモードで起動
   (もしくはIO0スイッチ押しっぱなしでUSB接続開始)
   (外観からはモードの判別不可)

 ・起動後のIO0スイッチはユーザーが自由に使用可能
   (ピン番号0番のデジタルピン扱い/デフォルトがHで押すとL)

 ・3つあるLEDは実質ユーザーコントロール不可(状況により勝手に光る)
           →条件付きでコントロール可 Blink項目参照

   TX   :USB-シリアル変換ICのTXポートに接続
   RX   :USB-シリアル変換ICのRXポートに接続
   POWER:レギュレータの3.3Vに接続

   ※Serial.println()とかで空出力したらTXLED光るのでは?と思ったが失敗
    ターミナル等とシリアル通信が確立していない状態では空出力してもTXにデータが流れない


IO0ピンのスイッチを自由に使えるので、スイッチ1個のみのプロジェクトならば工作の必要無し

以前のプロジェクトもピン番号とピンのレベルを変更するだけで使用可
 
 ESP-WROOM-02プログラミング:ボタンを押したらツイート

  →KEY_PINを5から0に変更
   キー入力時のレベル判定を == HIGH から == LOW に変更
   (※この判定を修正しないとものすごい勢いでツイートを連打してしまうので注意)

2016年1月21日木曜日

ESP-WROOM-02ファーム変更と技適の認証について

スイッチサイエンスが技適についてEspressif Systemsに確認をとったそうな

ESP-WROOM-02開発ボード

ESP-WROOM-02のファームウェアを書き換えた場合、技適はどうなるのか
相変わらず品薄っぽい


結果だけ引用すると

ユーザーによるファームウェアの書き換えが、ESP-WROOM-02の工事設計認証を無効にする可能性について、メーカーのEspressif Systemsに確認をしました。同社は登録証明機関に確認した上で、Arduino core for ESP8266 WiFi chipSDKを使っている限りにおいては、認証には影響を与えないという回答を下さいました。他の開発環境など、ファームを書き換える部分によっては、認証に影響を及ぼし得るとのことですので、ご注意ください。

とのこと

これは朗報

自己責任!自己責任ですぞ!と逃げがちなところをちゃんと確認しにいったスイッチサイエンスは偉い


背景をざっくり説明:
 
 ESP-WROOM-02についてのメモ(3)

 ESP-WROOM-02は珍しく技適を取得している無線LANモジュール
 なので電波法違反などを恐れずに大っぴらに使える

 さらにSDKが公開されているのでファームウェア書き換えが可能
 ユーザーはワンチップマイコンのように遊ぶこともできる

 ここで問題になるのは
  ユーザーが作ったファームウェアに書き換えた場合に認証は無効にならないか?
 ということ
 (基本的にこの手の認証は動作に関わる部分を変えると無効になる)

 これは見るからにグレーゾーンなので今まで話題として避けられていたフシがあった
 (認証無効だと確定してしまったら遊べなくなるので)

 証明機関の見解が判ったのでビクビクせずに大手を振って楽しめるわけ
 



2015年11月13日金曜日

AmazonでESP-WROOM-02開発ボードの取扱いを確認

スイッチサイエンスのESP-WROOM-02開発用ボードのAmazonでの取扱い開始を確認


ESP-WROOM-02開発ボード

買ったのはいいけどまだ手つかず

MicroUSBで接続するだけで給電およびシリアル通信が可能
USBコネクタの隣のボタンはリセットとモード切替用(GPIO 0)

GPIO 2は3.3V、GPIO 15はGNDに接続されているので
(ちゃんとプルアップ/プルダウン抵抗が入っている/偉い)
モード切替用ボタンを押しながら起動するとダウンロードモードで起動する

タッチパネル用リレーもぜひAmazonでの取扱いをお願いします