「hack」タグアーカイブ

O.MGケーブル – 挿したパソコンが遠隔操作されるUSBケーブル

マイク・グローバさん(@_MG_)が開発を進めているO.MG Cableは、PCを遠隔操作するためのツールを組み込んだUSBケーブルです。

見た目は何の変哲もない普通のUSBケーブル。

PCに挿すと、リモートのスマートフォンアプリから、PCに対してキー入力ができるようになります。デモでは、PCの利用者がスクリーンロックを解除した状態で、任意のウェブサイトをブラウザに開かせていますが、キー入力が遠隔でできるということは、ほぼなんでもできてしまうと言っていいでしょう。

パソコンに外部機器やスマートフォンをつなげるUSBポートが、パソコン乗っ取りなどの攻撃のターゲットとなりやすいのは昔から知られています。

駐車場にUSBメモリをばらまいたら45%の人が自分のPCに挿してファイルを開いてしまった」というような実験もありますし、挿したらPCを破壊できるUSBメモリなんてものも作れたりします。

企業の情報システム部でもUSBポートに指定の機器以外を挿さないよう指導したり、ポート自体を物理的に塞いで使えなくしたりという対策を取っているところもあります。

そんなわけで、出自のはっきりしないUSBデバイスを挿すのはよろしくない、という認識の人は多少は増えていると思われるのですが、今回の O.MG ケーブルの場合、ケーブルの先に挿すのはおそらく自分のスマートフォンなどで、挿す理由も充電のためだったりするかもしれません。

しかし、ケーブル自体に信号を横取りし書き換える機能が入っているのであれば、乗っ取り側からすればそれで十分、というわけです。USBケーブルがどこから来たものか、企業支給のものだったり自分が新品未開封の商品を買って開封した手つかずのものか、というところまで確認しないと危ないかもしれない、となると、管理はさらに大変になりますね。

回路設計からはんだ付けまで勉強しながらo.mg ケーブルを改善しているグローバさんには、ハードウェア・ソフトウェア・開発機材などさまざまな面から協力者の手が挙がっていて、量産化へ向けて前進しているということです。設計や内部のソフトウェアはオープンソースとして公開されるそう。

via New Offensive USB Cable Allows Remote Attacks over WiFi

css-only-chat CSSだけで動くブラウザチャット

ケビン・クッチャさん(Kevin Kuchta)のkkuchta/css-only-chat は、JavaScript を使わない非同期ウェブチャットサーバーです。

二つ(以上)のブラウザからこのサーバに接続し、アルファベットをクリックしてメッセージを作り送信すると、同じサーバに接続した他のブラウザでも即時表示される、いわゆるブラウザチャットです。しかし面白いのは、このページで JavaScript は使われていないというところ。

送信側

CSS の :active 疑似クラスを使うことで、ある領域をクリックした際に、はじめて画像ファイルを読み込ませることができます。つまり、ボタンが押されたタイミングを画像ファイルの読み込みでサーバ側から検知できるということ。

「同じボタンが2度目押された時は(画像はもうブラウザ側にロード済なので)サーバはわからないのでは?」となりますが、たとえば “a””a” と押した時は、接続しっぱなしの状態で、元のボタンを隠し、新たに「”a”を押した」という情報を持った別の画像ファイル名を持つボタンを表示しているようです。これをすべてのボタンに対して行うことで、ボタンが持つ画像ファイルのパスが、過去のすべてのタイプ内容を保持することになります。

受信側

表示はどうやって更新してるのか、も解説されています。接続しっぱなしの状態で、これまで送った html が不要になったら、style タグを送って過去の要素を display:none で隠し、新たにページ内容を追記します。

これを、自身か他のブラウザから新たなデータが届くまで待機しながら繰り返しているということ。じゃあソースコードはとても長くなるのでは、と思って Chrome でソースを表示しようとしましたが、何も表示されません。Firefox では何千桁もある一行のソースコードを確認できました。

今のところデモサイトは用意されていないので、試すには自分で動かす必要があります。

via Hacker News

Pythonによる自動化の結果、ニューヨーク中でタダメシが食えるようになったエンジニアの話

いかにして私はPython/自動化/AI/インスタグラムを使いニューヨーク市で無料の食事をできるようになったか(How I Eat For Free in NYC Using Python, Automation, Artificial Intelligence, and Instagram)という記事が面白かったのでご紹介。

ニューヨーク在住のデータサイエンティスト、クリス・ブエッティさん(Chris Buetti)が明かした、3万フォロワー超の人気アカウントを育てた秘密。

データサイエンス/ソフトウェア開発の知識、自由な時間とインスタグラムの知識があれば再現可能だといいます。

Instagramを育てる

Pythonスクリプトで、毎日、一日に数回、ニューヨークに関する写真をInstagram に自動投稿させます。ブログ主によると、Instagram の「発見」ページに掲載してもらうにはこれが大事だそう。一日も欠かさず、何週間も続けることで掲載されやすくなるそうで、ほとんどの人力Instagramer はこれで競争から脱落してしまうということ。

人気が出そうな写真を機械学習で選ばせる

投稿内容の画像ですが、当初は、他のInstagramユーザーの新着投稿から画像をスクレイプし、オリジナルへのリンクをつけて投稿していたそうです。

ニューヨークの写真を投稿している50人のInstagramユーザーのページをスクレイプし、写真だけでなくキャプションやイイネの数も保存します。

キャプションから宣伝目的と思われる文章、「購入」とか「限定」といったものがあれば外し、再生回数やイイネの数が多いものをフィルタすることで、質の高い評判を呼んでいる写真だけを選び取らせます。

また、コメントが投稿できなくなっている投稿については、写真を取り込まないようにしたそうです。コメント欄が閉じられている投稿は、リスクが高いと判断してとのこと。

当初はルールベースでやっていたこのフィルタを、さらに機械学習に置き換え、自分で目視で良い/悪いのデータセットを作ったりの手間も掛け、結果として「より人気を得る写真」のみを転載するボットが完成したということ。

他人の写真勝手に再利用するのは問題なのでは、と思いますが、スクレイプ元にリンクをして「問題があれば言ってくれれば消します」と書いておくと、ほぼ苦情は来なかったそう。

また、最新版のボットでは、他のInstagrammer の写真をコピーするのは止めて、ロイヤリティーフリーの素材サイトをスクレイプした画像を投稿するように変更したそうで、今後は著作権侵害だと言われるリスクも減らしているよう。こちらは十分な独自のフォロワーを確保した後だからこそ可能なのかもしれませんが。

コメントやタグを機械学習で作らせる

写真に添えるコメントは、当初、どんな写真につけても通用しそうな文章のパターンをリスト化し、それをランダムで出していたそうです。

例として「ここどこか知ってる?」「ニューヨークで好きなバーをコメントして!」「死ぬまでニューヨークを楽しめ」みたいなコメントが出ています。

次にクレジット。出典を示すことで画像を再利用したことへの苦情が減ると考えたのか、誰の写真かというのをコメントに書くことに気を配ったようです。まずは引用元のアカウントを書きますが、引用元のアカウントが撮影した写真とは限りません。そこで、引用元のコメントにあるクレジット情報を正規表現で抽出したり、写真にタグをつけたユーザー名を抽出したりすることで、可能性のあるユーザーを列挙しているようです。これも自動です。

写真をコピーされたことへの苦情どころか、「シェアしてくれてありがとう!」という反応すら来るようになったのだとか。

ハッシュタグは、一枚の写真に最大30個がつけられるそうです。知らなかった。そして、おそらく、良いタグをつけるほど広まるのにも有利なのでしょう。ということで、100個のタグ候補リストを作り、そこからランダムで30個を選びつけさせています。これも手動ユーザーにとっては面倒で徹底できないところでしょう。

また、公開後にはつけたタグとイイネの相関も調べて、人気がでそうなタグを探すということもしているとか。

成果を刈り取る

インスタグラムのダイレクトメッセージやメールで、「メインディッシュ無料にしてくれたらポジティブなレビューを投稿するよ」と提案すると、ほとんどのレストランが無料の食事やギフト券を確約してくれるそうです。多くのレストランではこういったプロモーションのための予算が取ってあり、あまりにうまくいったものだから友人や家族で手分けして食べに行ったりしたそうです。

現在は、レストランに売り込みして無料サービスを受け取るDMやメールを送るためのスクリプトも動かしているそうで、こちらも自動化達成されていますね。

さて、実際にどんな Instagram アカウントなのか気になると思いますが、@beautiful.newyorkcity がそれ。現在は3万人を越えたフォロワーがいるようですが、無料の食事にありつくにはこれぐらいで十分なのですね。

コメント欄はいつも同じような当たり障りのない事を、しかも何度も繰り返しているだけなのですが、多数のアカウントをフォローしている人は読んでないか、気にもしていないのかもしれません。「みんなが見てるよ。みんながイイネしてるよ」という状態が、さらに多くのイイネを呼び、それをプラットフォームが推薦することでさらに成長のスパイラルが加速していく、といったところでしょうか。

先週、『Instagramが「いいね!」数公開を中止を検討、群衆心理の抑制を狙う』という記事が出ていましたが、ソーシャルメディアのイイネ/Like の数は、今やこういった操作のターゲットになってしまっているのかもしれません。

via Eater

賞金付きクイズアプリの答えを求めるbot

HQ というオンラインクイズの iPhone アプリがあり、アメリカで流行しつつあるそうです。

一日2回開催される、12問のトリビアクイズに全問正解すると、その回の賞金を正解者で山分けできる、というサービスで、アプリに登場する司会者に特徴があり、家族・友人・同僚などを巻き込みやすい形になっているのが広まっている秘密のようです。

そんなクイズアプリに対して、前記事のようなプログラムによる解法をデモしたのが、トビー・メラーさんんのこちらのブログ記事

デモ動画はこちら。02:00 前後から、アプリの出題(画面右側)に対して、画面中央に開いたコンソールが、3択の回答を表示しています(小さくて見づらいので、キャプションで強調表示されていますが)。

回答が提案されるプロセスは以下の通り

  1. iPhone のアプリ画面を QuickTime で MacBook に映す
  2. Automator で問題と回答3択のスクリーンショットを撮る
  3. Google Vision API でテキスト化
  4. Googleカスタム検索API で、”問題文”や”問題文” AND 回答候補 を検索
  5. 検索結果の先頭9個の抜粋文に、回答語が出てくる回数をカウント
  6. 抜粋に回答が出ない場合は、URLを開いてページ全文から回答語をカウント

この単純な方法で、7秒以内に正答を得ることができているそうです。

なお、実際のゲームでこういったプログラムを使うのは、HQ アプリの利用規約に触れるということで、メラー氏は録画したゲーム画面を使って、こういったことが可能だ、という検証のみを行ったということです。

HQ アプリの方でも、不正な参加者を無くすべく、画像を保存するユーザーを弾いたりと対策を実施しているようですが、なんとなればiPhone の画面を別のカメラで撮影したっていいわけです。大なり小なり賞金が出る、という時点で、検証ではなく本気でこういう解法を使ってくるユーザーが出るのは避けられなさそうに思います。

HQ - Trivia & Words

カテゴリ: ゲーム, 教育, トリビア
言語: EN
価格: 無料
バージョン: 1.4.16

開発者: Intermedia Labs
公開日: 2017年8月26日
評価(全バージョン):
(33人のレビュー)
評価(現バージョン): 評価なし

スクリーンショット

screenshot 0screenshot 1screenshot 2screenshot 3screenshot 4screenshot 0screenshot 1screenshot 2screenshot 3

CSSスクロールで(マリオ風)横スクロール、(マリオカート風)キャラクター操作

CSSだけで(JavaScript無しで)動くページを作る、というお題でこんなもの

“A”キーと”D”キーで車が左右に動いています。

こちらが作者のステファン・クックさん(Stephen Cook)による解説ページで、13行のhtml以外はすべてCSS、画像ファイルも使っていないということです。

CSS内に定義したデータから絵を描くのは、グラデーションとbox-shadow を使っています。1ピクセルごとに色を指定しているんですね。

キー入力の方はというと、こちらのCSSだけで検索エンジンを作るという記事(デモはこちら)にあるように、inputフィールドの value 属性に反応させればと思ったそうですが、ユーザーの入力に応じて value の値がアップデートされるということは無く、こちらの検索デモでは1行のJavaScriptを使っていることがわかりました。

クックさんは数週間前に間違ってブラウザのJavaScriptをオフにしてしまい、未だに戻す方法を見つけられていないということで、JavaScript を使わない方法を探さざるを得なかったよう。たいへんですね。

疑似セレクタ :valid, :invalid で、フォームフィールド内のタイプ内容がaを含むかどうかを場合分けし、さらにフォームフィールドにプレースホルダーを表示してるかどうかの :placeholder-shown と併せて、キー入力に応じて3値を見分けることにしたそうです。

レースゲームとして背景が動くところは、アルシデス・ケイロスさん(Alcides Queiroz)が公開していたマリオ風横スクロールにヒントを得たということです。

See the Pen Mario made only with CSS gradients – no JS, no embedded images/data URIs, no external images and using a micro HTML =) by Alcides Queiroz (@alcidesqueiroz) on CodePen.

こちらの解説では、CSSグラデーションで各ピクセルを時間に応じて変化させるというのを全ピクセルに対して行うことで、CSSだけでの横スクロール表示を実現しているようです。ソースコードを見ると、Stylus で描画するスプライトのデータをひたすら大量のCSSコードに展開しているのがわかります。生成後のCSSを見るとすごいことになってます。

via TheNextWeb

Galaxy S8の虹彩認証、早くも写真で突破される

目のパターンを読ませて本人しか使えないようにする虹彩認証、自分の体でスマートフォンをアンロックできるのでとても便利そうな機能ですが、サムソンの新機種 Galaxy S8 の虹彩認証が、写真とコンタクトレンズで突破できてしまう、という検証動画が公開されてしまいました。

カオス・コンピューター・クラブ(Chaos Computer Club, CCC)なるグループが公開したこの動画では、誰もが手に入る道具だけを使っての再現方法が紹介されています。

正面写真の撮影は夜間モードで。

プリンターで印刷した本人の写真そのままではなく、上にコンタクトレンズを置いてます。レンズの球面が効いてるんでしょうか。

指紋認証の時も、寝ている人の指紋を型取りして、なんていうハックがあったかと思いますが。普通に正面から写した写真でアンロックできてしまうのでは、単体の鍵としてはあまり使えないかもしれませんね。認識の部分の改善に期待したいところです。

[追記 2017-05-27] Gizmodo に対してサムスンから、ニュースは認識しており、テスト等で厳しくチェックしているが、もし新たな問題があるならできるだけ早く解決するよう努力する、といった内容のコメントが返されたということです。

via Motherboard