Pyritの実行環境をサクッと構築する

なにこれ

家の無線APのパスフレーズ(WPA2)の強度を測りたかったので,Pyrit入れようとしたらmakeが上手く出来なくて,「う〜〜ん?」ってしたりしなかったりな話.

こういうのやる時の決まり文句だけど,自分のお家のネットワーク機器に対して行っています.

書くこと

  • Pyritのインストール方法
  • GPUの認識(Nvidia

書かないこと

  • 4-way handshake周りの話
  • パケットのキャプチャ方法
  • GPUの認識(Radeon*1

環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTImON="Ubuntu 16.04.3 LTS"
$ uname -mr
4.10.0-42-generic x86_64

構築

pyritではパケットの収集が出来ないので別途用意する.
makeが上手く通らなかった.
apt で全部出来そうだったのでそっちでやることにした.

$ sudo apt search pyrit

pyrit/xenial,now 0.4.0-5 amd64
  GPGPU-driven WPA/WPA2-PSK key cracker

pyrit-opencl/xenial 0.4.0-1 amd64
  OpenCL extension module for Pyrit

pyrit-openclなるパッケージがあった.
最初は気にしていなかったけど,後で調べた所,Nvidia,AMD Radeonのコアを使って計算速度を向上させるらしい.これも使ってみる.
というかこれを使わないとCPU onlyで計算する羽目になるので,必須.

$ apt install pyrit pyrit-opencl
とりあえず突っ込んだPyritは動作した.CPUでは計算が出来たが,GTX760の認識をしない.

なんでかなぁと弄っていたらcudaのインストールをしていなかった.そりゃ動かないな.
wgetで引っ張ってきた.
$ sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
これで認識してくれる.
環境変数の設定もした気がするけど,覚えてない.

$ pyrit list_cores
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
The following cores seem available...
#1:  'OpenCL-Device 'GeForce GTX 760''
#2:  'CPU-Core (SSE2)'

認識した.
ベンチマークを走らせる.

$ pyrit benchmark
Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
Running benchmark (38188.5 PMKs/s)... \
Computed 38188.48 PMKs/s total.
#1: 'OpenCL-Device 'GeForce GTX 760'': 40630.6 PMKs/s (RTT 2.8)
#2: 'CPU-Core (SSE2)': 793.8 PMKs/s (RTT 3.0)

PMKs/sというのが一秒間に計算されるパスフレーズの数.
RTTってなんだ?
辞書を用意して解析させる.

実行

$ pyrit -r [.cap] -i [.lst] attack_passthrough
Parsing file '[.cap]' (1/1)...
Parsed 2236 packets (2236 802.11-packets), got 1 AP(s)

Picked AccessPoint 00:00:00:00:00:00 ('[ESSID]') automatically.
Tried 6523830915392 PMKs so far; 43534 PMKs per second.

Password was not found. Retry the attack with '--all-handshakes'.

not foundらしい. ちゃんと動いているのか気になったので,パスフレーズの入ったファイルを読ませてみた所succeededと言われ正しいパスフレーズが出てきた.

まとめとか

  • Pyritのコマンドで strip というのがあって,4-way handshakeが含まれるパケットのみのファイルに再構成してくれた. 不要なパケットを削ぎ落とすのに有効.

  • 上には書いてないけどcrunchを使う際は

$ crunch [min] [max] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()'"=_`:;?~|+-\/[]{}<> | pyrit -r [.cap] -i - attack_passthrough

と書くと,pipeが効くので総当りが可能(やりたくはない)

おわりに

6000~7000円のグラボで毎秒4万近くのパスフレーズを解析出来るのか...といった感じ.
結構長いフレーズなのでまず破られることはない思うけど,今から4年前のミドルレンジモデルのグラボでこれだから,最近のでやったらもっと結果出るだろうし気を付けていこうな.っていう気持ちになった. 定期的な変更は面倒だし,家族用のAPにもEnterprise認証を使おうかなぁ.

*1:探せば結構あったし、僕がRadeon持っていないので

2段階認証の設定をした

今までやってなかったけど、した。

とりあえず自分の使っているサービスで認証方式に対応してるものは全てやった。Twitterは電話番号1つに対して1つのアカウントにしか与えられなかったので少し困ったが、SMSが使えるSIMカードが一枚あったので、とりあえず全てのアカウントで認証できるようになった。

GoogleChromeが入ってる端末で一斉に認証が切れたのでうわぁ…と思いながら通した。

この時に初めて知ったけど、SMSは受信料を取られないとのこと。

自然なリファクタリング

古いHDDから中学生の頃に書いていた結構な量のコードが発掘された。CやPHPもあったが、殆どがRubyだった。 詳細が分からないのでとりあえず全部PrivateRepositoryに置いてみた。
中には当時書いていたTwitterClientがあって、APIが1.0のままだから現在では動かせないが読めるものだったので読んでみた。微妙な銘々規則や変数名、明らかにコピペされた箇所、起きそうもない例外に対しての冗長、雑な例外処理(これは致命的で笑った)。見ていて結構恥ずかしくなった。
下位のディレクトリに、仕様だと思われるWordファイルが見つかった。今の僕ならどうやるかなぁ、とふと気になたのでちょっと悩むといい感じの設計が見えてきた。
400行近いコードの刷新と、API1.1(というかオレオレAPI)対応が主にやったことだけど意外と時間がかかった。40分くらいで綺麗になって、ちゃんと動くものが仕上がった。同じ機能が148行で提供できた。どうせなら140行で書き上げたかった。*1
改善するのにコードだけでは不十分だというのが分かったので、今後は仕様書ちゃんと書こうと思う。
今回のコード発見では結構面白い気付きがあって、コードや仕様を読んでいて「ここは良くないなぁ」「これは使えるなぁ」っていうのの選択がポンポンできたということ。7年前の僕では出来ていなかったことが、今の僕にはできていて、成長しているのかもしれないなぁと実感した。特に、良くない所を見つけ出す嗅覚(?)と、それに対する改善方法を即座に思い付ける様になっていたことが嬉しかった。
7年間あれば書籍が増えてインプットや知見も増えるし、他人との出会いで触発されたりして、そりゃあ変わるよねってことで。
僕自身も僕や周りの人たちによってリファクタリングされているような、そんな感覚が心地よかった。
数年先の僕ならもっと綺麗で、もっと軽量で、もっといいものを書けたりするんだろうか?と思いながら、現在でも開発の続いている僕の大好きなプログラミング言語で書かれた、僕の大好きなClientのプロジェクトファイルに手を付けることにした。

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

*1:よく考えたらTwitterは140文字だ。

Redmineの親チケットの期日を変更できない

のが気になったのでとりあえず検索した。

親チケットの特定の項目の値が変更できない — Redmine.JP

結果として子チケットの中で最も期日の遅いものに合わせていることが分かった。(そりゃーそうだよねって感じ)親チケットに期日を直接与えることも設定次第では可能なことが分かったけど、よっぽとな理由がない限りデフォルト設定のままで良さそう。

 

コップ本の話

 

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

 

 Kindle版買ったけど、殆どの本では使える検索機能とか色々使えなかったのでしんどい。大人しく書籍版を買おうか悩んでいる。ただそうなると総額8000円の出費なので痛い。痛みに耐えれる経済力が欲しい。

Scala書けるようになればペイできそうなので買うんだろうけど…。

持ち歩けるホワイトボード(ヌーボード)貰った

どうした

ヌーボードというノート型ホワイトボードを頂いて、使ってよかったので共有したくて書く。

ヌーボードとは

ノート型のホワイトボード。 4枚、両面で計8ページ使える。
ページとページの間に半透明(半透明だけどちゃんと文字は透過する)のフィルムがあって、閉じていても擦れて書いた事が消えないようになっている。
閉じてるときは開かないように、右下にあるゴムバンドによって抑えが効く。

CANSAY nu board ヌーボード A4判 NGA403FN08

CANSAY nu board ヌーボード A4判 NGA403FN08

出会い

バイト先で1人に1冊支給されるので使っていたけど、私用では持って無かったのでずっと欲しかった。
買うのはなぁって思っていたので貰えてとても喜んでいる。

詳細

  • ホワイトボードマーカーが1本付いてくる
    • Pilot ボードマスターS
    • P-WMSRF8というカートリッジを買えば交換可能
    • 極細なので書いてていい感じ(主観)
  • A4以外にも新書サイズやA3サイズがある
  • 表紙が紙っぽいけど、たぶんこれプラスチック

むすび

小さめのホワイトボードにしては若干値段が高く感じるかもしれないけど、ちょっと書いて持ち歩けることや、サッと消せるホワイトボードの利便性を併せ持った製品なのでとても買いだと思う。
自分でも新書サイズのものを買ったので、周りに布教させたい。

CANSAY nu board LIGHT (ヌーボード・ライト) イエロー NULT01YW04

CANSAY nu board LIGHT (ヌーボード・ライト) イエロー NULT01YW04

CANSAY nu board ヌーボード 新書判 NGSH03FN08

CANSAY nu board ヌーボード 新書判 NGSH03FN08

Zenfone3 7.0にしたらシャッター音が消えない問題(解決済)

設定方法

設定 

音 振動 

ボリュームの同期をオフ

カメラ再起動

 

どうした

Zenfone3(海外版)にAndroid7.0(ヌガー)が降ってきた。30分くらいで更新が終わって色々弄っていたところ、純正カメラアプリでシャッター音が消せないので試行錯誤した。

結局ボリューム同期という機能によってシャッター音も連動してオンに成るようだったので、同期切ったら止まった。参考までに。