世紀末の墓

お気持ち.log

IT系寄りの雑記

僕のTweetから僕の2018年を振り返ってみる

皆さん、2018年はいかがでしたか? 僕は一瞬でした。

この1年で何があったのか、何ができるようになったのか等々をそれぞれの月に分けて振り返ってまとめていこうと思う。

1月

今年最初のツイートはこれみたい

こんな記事が生えていた
あけましておめでとうございます&2018年の抱負 - 世紀末の墓
なんかやる気に満ち溢れてるって感じ。正直ここに挙げた項目の半分もできてない

正月早々こんなことを言っているので世話ないですね

この辺でインフラ勉強会に入っている

あとは高校最後の課題研究というやつの締め切りに追われている叫びしかなかった。
なんかDeepLearningのhogeをfugaしてました。

2月

2/4にインフラ勉強会でセッションをする(当該ツイートがなかった)

バレンタインに絶望している

お気に入りのヘッドフォンがこわれる

とてもわかる、できるだけやりたいと思ったことはすぐGitHubにリポジトリ建てるようにしました(できてない)

一人暮らしに備えて家具を買いに行っている このデスクと椅子は気に入ってます

2月は大した事してないですね。春休みだったしダラダラ生きてたんでしょう

3月

VTuberのファンゲームが生えてる

大学の入学式とかで使うスーツを買ったみたい それなりに気に入っている

ふふっとした

ここから僕の一人暮らしが始まった.....

残念ながら.........

またVTuberのファンゲームが生える 12月~3月くらいが僕の中のVTuber最盛期でしたな...

3月はこのくらい
引っ越しとかいろいろあって大変だったけど、一人暮らし最of高となっていた

4月

大学生になった

なんか友のiconを描いてる

19歳の誕生日を迎える

この辺から大学の講義に絶望してきている ほんと虚無

フォロワーが500人超えたみたい(現在:730前後)

とてもわかる

4月は大学が始まってあたふたしてて全然技術的なことできてない感

5月

trelloが採用される

困惑がうかがえる 今でもこんな感じだわ

技術書を2つ買っている バイナリの歩き方は半分くらいまでしかできてないな パケットキャプチャの方は全部読み切ってる

こんなこともあった
鍵がわからないスーツケースをロックしてしまい開かなくなってました
これ最終的にはマイナスドライバで鍵ハックして解決でしたけど

この辺でインフラ勉強会のセッションも兼ねて自作PCを手に入れる

5月はバイトをして金をひたすら得ていた印象

6月

とてもわかるなぁ

ついに乞食を始める しばらく固定ツイートにしてたら各位がちょこちょこ送ってくれてうれしかった

この辺でクレカを発行する 毎月クレカの支払いで口座残高80円とかになってます

とてもわかるなぁ DM待ってます!!!!!

なんかイキリ出す ただ、この通りだとは思う

某県警がぼこすか叩かれてましたね.....頑張ってほしいものです

インフラ勉強会半年イベントに言ってた

6月はまあなんかいろいろありましたね

7月

iPadPro+ApplePencilを買う もうちょっと後に新iPadProが出ることをこのころの僕はまだ知らない

今も欲しい DM待ってます!!!

ISUCON8に友達と出る宣言

よくあるよくある

大学のグループワークがクソでキレてる

7月はiPadを導入したことにより身の回りの書類をかなり廃することができました QOL爆上がり

8月

このころ食費を削りまくってガジェット買うみたいな生活してた 今もですが

そもそもいないやろがい

そうなんですよね.... 丁度知った時に引っ越してしまったので定期的に帰省したいと思います まだ行ったことないので来年は通いたいですね

この辺でCSSアニメーションを学び始める

8月の最終週はインターンに行ってました 楽しかったです

8月は夏休みだったというのもあって前半は虚無でした。インターン辺りは充実してましたね

9月

Twitter初めて6年経ったみたい

8月末に行ったインターンについてまとめた

ポートフォリオサイトのためにVPSを借りる

ISUCONぼこぼこにされた

このころはあんまり精神衛生が良くなかった

VSCodeのVim拡張周りで詰んでる

カードの支払額がやばでした

こんなこともありましたね 結局都の高校とかに半強制で応募させてるみたいな話もありますし

くちがわるい

ポートフォリオサイト開発が始まった

やばい台風来てましたね 停電も各所であったし

9月は個人的に虚無だと思ってたんですが、案外そうでもなかったです

10月

なんか言ってますね

これ、めっちゃ機嫌悪かった覚えある いいところに就職するのを見据えて生きるなんてつまらなくないですか そりゃいいところに就職できればいいにはいいんですが

情報のあれこれについて考えている

NFCで自動開錠する仕組みを作ろうとしている

先輩から複合機をもらい受ける QOL爆上がりです

ポートフォリオサイトが生える ↓これ ポートフォリオサイト「The die is cast」を開設しました - 世紀末の墓

大学にうんざりしてきている

Appleの新作発表があった

10月はポートフォリオサイトが生えたんですが、それ以外全然やれてない気がします

11月

かなしいね

mina on Twitter: "tcpflowがどんなもんでどんな風に使えばいいのかみたいなのが理解できたので、十分進捗です" tcpflowを学んでいる

友達のアイコンを書く

kernel/vm北陸に参加してた

11月こそ虚無だった

12月

セキュリティ・ミニキャンプ in 石川 に参加してた ↓その時の記事 セキュリティミニキャンプin石川 2018 参加してきた - 世紀末の墓

ひたすらARがやりてぇと叫ぶおたく

買った、ただ分厚すぎて読みづらかったので後ほど電子版も買っている

Kaliの環境構築してた

ソロでダブルベッドのホテルに泊まる男

無線イヤホンがお亡くなりになる

未踏に応募することにする

家の機器のホスト名を総名づけして、mDNSで名前解決しようとしてる ちなみに旧バージョンのwinのmDNSがゴミで、windows10 1809で改善されているらしいのでupdateして解決

chrome拡張作ろうとしている ただ、僕が作ろうとしていたものがchrome標準で実装されてたのでやめた

年末年始は用があるので実家に帰省 アホみたいにキンキンに冷えたコーラを雪の中で飲んだので鼻水が止まりません

12月はひたすらスマブラしてた記憶があります

総括

なんだかんだ言って裏ではちょっとずつ精進したりしていたんだなぁと感じた。 ただ、今年成長した感が全然ないので来年こそ頑張っていこうと思う。

KaliLinuxでUS配列+日本語入力環境【Anthy】

まず

「Kaliいれたろー」
「日本語環境一応作っとくかー」
「ふむふむ、日本語配列だと簡単なんだねー」
「........」
「US配列はどうすればええんや...」
って感じでちょっと詰まったので備忘録的な感じで。
詰まったついでにAnthyについてもちょっと書く。   

KaliLinux

Linuxディストリビューションの一つで、Debian系の派生。 脆弱性攻撃とかテストする(ペネトレーションテスト)用にたくさんの攻撃ツールやらなんやらが標準で入っている。

ここではインストールは割愛。 各自で調べてください。

環境

VirtualBoxで仮想マシン上で動かしています。

ホストOS:Windows10
ゲストOS:Kali Linux 2018.4のova
↓から持ってきた www.offensive-security.com
キーボード:US配列のテンキーレス

一応、日本語化はしている状態で説明する。
設定>Region&Languageから設定できる。
ここで、キーボードがしっかりUS配列になっているかも確認しておく。

理想

半角英数と日本語(ローマ字)入力を任意のショートカット(Ctrl+Spaceとか)に割り当てる。

やること

ターミナル上で

# apt install task-japanese task-japanese-desktop

を叩いて、再ログイン(再起動でもなんでもいい)。
これは日本語の入力環境をぶち込んでくれる。

すると右下に
f:id:silmin:20181211025557p:plain
こんな感じのマークが現れるようになる。

Leafpad等を開いて入力可能状態になると
f:id:silmin:20181211025651p:plain
こんな感じに表示が変わる。

左から順に

  • 入力方式
  • 入力モード
  • かな入力方式
  • 設定

の項目になっている。 左の設定から決まっていき、1つ目の設定がAnthyならAnthy用の設定が2つ目の設定に来て、2つ目の設定がかな入力(直接入力/ひらがな/カタカナ/半角カタカナ)の場合は3つ目が参照されるみたいなイメージ。
ここで、一番左の項目をAnthy(UTF-8)(王冠マーク)にしておく。 ちなみにここがAnthyじゃないと他の項目も別の様相になる。

ただ、こんなものをいちいちポチポチしていてはクッソ面倒。 設定をいじろう。

一番右側の設定マークをクリックすると設定画面が開く。
f:id:silmin:20181211030313p:plain

詳しくは自分でいろいろ見ればいいと思うが、このAnthyってやつがこの日本語入力機能の名前だと思ってくれていい。 このAnthyには、

  • 直接入力
  • ひらがな
  • カタカナ
  • 半角カタカナ
  • 半角英数
  • 全角英数

が付随する入力モードとして用意されていて、これらを切り替えながら使っていく。 3つ目にかな入力方式としてもいろいろあるけど、基本ローマ字しか使わないと思うので割愛。

僕の場合は - 直接入力 - ひらがな のみで十分なのでその2つの切り替えのみにしておく。
それ以外に関しては各自でやってください。

ここまで来たらあとは簡単で、設定のサイドメニューからAnthyキー設定2を開く。
f:id:silmin:20181211030935p:plain

そこの[Anthy]オン[Anthy]オフのところに、自分が割り当てたいショートカット(僕ならCtrl+Space)を設定する。 適用なりOKなりをクリックして終わり。
[Anthy]のデフォルト設定が
入力モード→直接入力
かな入力方式→ローマ字
になっているので[Anthy]オンにするとローマ字入力できる。 仮に入力モードが半角英数とかだと、ローマ字は関係なく変換可能な半角英数()を入力できる。

実はShift+Spaceにあらかじめ割り振られているみたい。
ちなみに、[Anthy]オンにするとローマ字入力になり、[Anthy]オフにするとデフォの半角英数になる。

あとは

設定項目みればどんな感じかなんとなく察せると思うので、自分好みの設定にしてください。 どう設定したらどう反映されるみたいなのは触りながらつかんでいけると思うし、日本語が入力できればいいのでわかる必要もないかもしれない。正直僕もまだAnthyと仲良くなれてない。

セキュリティミニキャンプin石川 2018 参加してきた

はじめに

僕は金沢の近くに住んでいるのだが、近くで開催ということと実施される講義に特に興味があったので参加した。

www.security-camp.or.jp

参加レポート的な感じで、覚えてる限りでパパっと内容をまとめようと思う。長々書いてもアレですしね。

開催された講義

  • 異常通信分析基礎(午前)
  • GPSをだましてみよう(午後)

の2つ。どちらもネットワーク系で特にGPSに興味があった。

事前課題

セキュリティキャンプは(ミニキャンプも含めて)、応募時に課題的なサムシングがある。
知識とか技術力を見るんじゃなくて、やる気があるかとかその辺を見るためのやつらしい。
正解不正解は問わず、自分で調べて考察することが大事みたい。
今回は講義内容に関連して、「異常通信ってどんなのがある?」「GPSをハックして何ができる?」みたいな感じだった。
もっといろいろあったと思ったけど忘れた。

異常通信分析基礎

ログ解析とかいろいろ

squidのログ解析

Squidは、proxyサーバやwebのログサーバとかに使われるフリーソフト。
デフォルトのフォーマットがクソ見づらくてクソなので、awkで狙った情報だけ持ってきてsortして綺麗に見れるね的なことした。

pcap分析

tcpdumpで作られるパケットキャプチャファイルであるpcap。
こいつはWiresharkで解析されるのがおなじみだと思うけど、ファイルサイズがでけぇと開ききれないから、tcpdumpでフィルター条件を指定して既存のpcapファイルをスリムに絞ることができる。
あとIPアドレスを名前解決してしまうと、攻撃者側に調べているのがばれてしまう可能性があるのでこの機能をオフにする。←これはとても知見だった。

netflow分析

Ciscoかどっかが開発したIPトラフィック情報を集める規格。
サイズがでけぇpcapはWiresharkで開ききれない、が、pcapデータをnetflowデータに変換すると半分以下くらいのサイズに減らせる。
netflowデータの解析にはnfdumpというツールを使う。こっちのほうが軽いし速い。
オプションの設定がちょっと特殊だったけど、慣れればかなり便利そうだった。

実践

ここまでやったことを使って、実際にログファイルを解析して漏洩した情報の原因を探すみたいなやつをやった。 時間無さ過ぎて全然わからんかった。

GPSをだましてみよう

GPSの基本的な話と実践

GPSのしくみ

簡単に言うと、現在位置は地球の周りをぐるぐる回ってる人工衛星複数台からの距離によって算出される。
距離は信号の届いた時間差みたいなやつで見る。
ただ、GPSは

  • 信号が弱い
  • 形式が公開されている
  • 欺瞞信号を見分けられない

というつらみを抱えている。 ので、色んな策を講じて何とかしようとしている。
ただ、今のところ普通に欺瞞信号ばらまけば近くの機器はGPS使えなくなる。
あと、GPSは一般用と軍用があるらしく、軍用は一般用に比べて強度が高いらしい。(複数の周波数を使ってるため切れにくい)
精度はあんま変わらんみたい。

実践

実際にGPS信号を作成して発せられる機器たちを用いて、虚偽の信号を流してそれを地図に表示してみるみたいな感じ。
5人グループでやった。この機器、400ドルくらいらしいので個人でも買えるやーん()
攻撃側と受信側でそれぞれPCを用意して、攻撃側はスクリプトを流し欺瞞信号を発生させ、受信側はteratermのシリアル通信で受信する。 そこで得た位置情報をツールでマップに表示する。 ちなみに、実際に電波を発生させ漏れてしまうと違法になっちまうので、ケーブルで接続した。

途中で、衛星情報は認識してるのに位置情報が出てこないみたいな事態が発生。 チューターの方々と立ち往生状態だったが、メンバーの一人が機器の不具合を発見し無事解決。 彼はプロだった...。無事、表示できて終了。

おわりに

最後はアンケート答えて集合写真撮って終わり。

今回のミニキャンプを通して、ネットワークへのモチベが向上し、GPS周りの興味が高まった。 ネットワークの解析は主にCTFとかでやってるけど、今までWiresharkとかtcpdumpとかしか使ってなかったし、ログ解析とか全然したことなかったので、得た知見を実用レベルまでもっていきたいと思う。 GPSに関して、僕はAR(MR)周りの通信の研究をしたいと思っていて、それに関連して面白いことができそうなので、これから細かく学んでいこうと思う。

全体的な雰囲気は、最初堅かったけどだんだん緩んでいった感じ。 チューターの方の何人かとTwitter交換できたのでよかった。 参加者の人ともっと話したかった感はあった。

ミニキャンプ中のツイートたち

ずっとTwitterしてました()

raspberry pi 3 でサーボモータを動かす

ドアの自動開錠/施錠機構を作りたかったので、ラズパイからサーボモータを動かしていきます。

使ったもの

  • raspberry pi 3 本体 (OS: raspbian)
  • マイクロサーボ SG92R
  • ジャンパー線

配線

まず、サーボモータ側の仕様を見ます
秋月電子のページを見ると、

配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]

とあるのでその通りにします。

次にラズパイ側のピンアサインを調べます。

f:id:silmin:20181023013841p:plain f:id:silmin:20181023013831p:plain

こういう仕様みたいなので、茶色をGNDへ、赤を+5Vへ、橙をGPIO4へ(GPIOならどこでも)、それぞれジャンパー線を介して繋げます。

こんな感じになりました。

今回に関してはブレッドボードを介そうが、直挿しだろうがどちらでもいいです。

プログラム

motor.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

out_pin = 4
GPIO.setup(out_pin, GPIO.OUT)

servo = GPIO.PWM(out_pin, 50)

servo.start(0)


servo.ChangeDutyCycle(2.5)
time.sleep(0.5)

# 90度回転
servo.ChangeDutyCycle(7.25)
time.sleep(0.5)

# さらに90度回転
servo.ChangeDutyCycle(12)
time.sleep(0.5)

servo.stop()
GPIO.cleanup()

参考先↓ bufferoverruns.blogspot.com PWM制御の話とか、周波数とDutyCycleと角度の関係とかが詳しく説明されてるので、知りたかったら読んだらよさそう。 決して、説明がめんどうだから貼ったというわけではない。

実行

$ python motor.py

で動く

ポートフォリオサイト「The die is cast」を開設しました

The die is cast 「人生は運ゲー

僕の座右の銘である「人生は運ゲー」をテーマに据えて作った
silmin.net

f:id:silmin:20181021124436p:plain

人生は運ゲー??

人生ってめっちゃ運要素多いと思う。 産まれる親・国・地域・周辺の人・貧富・障害とかとか、産まれる前から運要素バリバリ絡んでるわけで。 少なくとも当の本人にはそれをどうすることもできない。

産まれた後も、親の挙動・周囲の挙動による自分への影響・事故・病気などなど、自分ではどうすることもできないことは多々ある。理由はあれど、自分が作用できないのであれば「自分にとっては運」と言っていいだろう。

ただ、これは努力経験が無駄と言っているわけではない。この努力や経験が作用できる運要素もまたたくさんあるから。この努力経験は生まれた後の人生から、運要素を少しでも自分有利に近づけるための要素だと思う。だからどちらかというと僕はこっちの方を言いたくて、「人生は運ゲー」と言っている節がある。

例えば温泉を掘り当てる可能性があったとして、「無知のままその辺を適当に掘っている人」と「泉源探査や解析をして金を集めて取り組む人」を比べてみる。この場合、後者のほうが圧倒的に温泉を掘り当てる確率は高いだろう。前者にも確率が0なわけでない。ただ、その確率はとても低く、人生80年を使い切っても余裕で無理だろう。後者は前者に比べたら掘り当てる確率はとても高い。ただ、運要素が全くなくなったわけではない。

つまりはそういうことだ。

サイトの話

運ゲーということで、ダイスやチップやルーレットなどカジノ的な要素を入れてみた。
もう一つ、CSSAnimationを練習したいという目的もあったため、積極的に動かしている部分もある。

僕がどんな人か、やってることなどがわかるようなページになったと思う。

とても拙いHTML/CSSやゴミみたいなファイル構成はまだなんとかしなければならないが。

裏側

VPS Amazon Lightsail
OS CentOS 7.5
サーバ Nginx

vim-plugを導入する

vim-plugとは

Vimプラグイン管理をしてくれるプラグイン
プラグインをどんどん入れていくと煩雑になるので、管理してくれるやつがいると嬉しい
vim-plug以外にもvundle,deni...など色々ある
他と比べて楽だと感じた

環境

CentOS7
Vim version 7.4.1099
Linuxmacなら同じように動くと思う
Windowsは知らない子です

導入

まずcurlでファイルを持ってくる

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

終わったら~/.vim/autoload/plug.vimが作られる

これで導入は終わり

使い方

.vimrcに下記を書く

call plug#begin('~/.vim/plugged')

call plug#end()

~/.vim/pluggedは任意のディレクトリでOK
※pluginなどの標準的な名前は重複する可能性があるのでNG
そこには実際に反映したプラグインが入る

そうしたら実際に使いたいプラグインを書いていく
今回はrust.vimを入れる
※rust.vim: プログラミング言語Rustのハイライトとか諸々のプラグイン
rust.vim
GitHub - rust-lang/rust.vim: Vim configuration for Rust.

上のページに書かれてるようにファイルを持ってくる

git clone https://github.com/rust-lang/rust.vim ~/.vim/pack/plugins/start/rust.vim

終わったら.vimrcに追記

call plug#begin('~/.vim/plugged')

Plug 'rust-lang/rust.vim'

call plug#end()

Plug '[入れたいプラグイン]' のフォーマットでbeginとendの間に書く
'rust-lang/rust.vim'のところはrust.vimのページで指定されている

書いたら保存して一回終了
またvimを起動して(.vimrcを読み込んで):PlugInstallを叩く

f:id:silmin:20180917210620p:plain

するとこんな感じの画面になると思う
ならなかったらもう一度手順確認してvimを起動しなおしてやってみよう

そうしたら指定した~/.vim/pluggedにrust.vimが追加されているはず

これで導入~適用までの一連の流れは終わり
次回からは、必要なプラグインのファイルを持ってきて、指定通りに.vimrcに書いて、.vimrcを読み込んで(vimを再起動して):PlugInstallを叩けばOK

おわりに

これでVimプラグイン周りは結構すっきりしたし、適用されてるプラグインがひと目でわかる(~/.vim/plugged/)ので良い

ISUCON8予選参加記

ルール諸々

isucon.net

使用可能言語

Perl, Ruby, Python, PHP, Go, Node.js, Rust

事前にしたこと

(事前準備なんて)ないです

やること

webアプリのチューニング
鯖が用意されるから、SSHしてコードやDBゴリゴリ速くしようぜっていう感じ

感想

何もしてねぇ

そもそもノリで参加したのはいいものの、webアプリ特有の色々とかAPI仕様とかDBの挙動とか、全然知識ない状態だったので手を付けようにもつけられず、Googleと対話するコンテストになってしまった。
過去問とか結構大事だったみたい。
言語ある程度わかるし行けるっしょでは無理だった。(あたりまえ)

せいぜい小手先の高速化くらいしかできなかった。

抱負

初参加でだめだめだったけど雰囲気がつかめた感じがあった。
過去問とか大事っぽかったし、webアプリ周りの知識をもっと付ける必要がある。
まだまだ学生枠なので、来年は本戦出場していき!

【BEENOS】インターンに行ってきました

タイトル通り、インターンに行ってきたのでその所感等を書いていき

場所

BEENOSさん
beenos.com
この中には複数のグループ会社さんがあって、僕はその中のtenso株式会社さんというところでインターンさせていただいた

期間

2018/8/27~2018/8/31
1週間5営業日

やったこと

1週間ということもあって、実際の業務ではなくAWS周りのことを触らせてもらった
AWSの構築をterraformというやつで書いていく

AWS

Amazon Web Serviceの略
Amazonが提供しているクラウドサービスですね
クラウドならアマゾン ウェブ サービス - AWS

Terraform

インフラ周りの構成をコード化しておいて再現性をもたせようぜっていうやつ
コード化しておくことで何度でも同じ環境が完璧に建てられるし、一回書いたら何回でも使いまわしできるので嬉しい

HashiCorpっていう会社が提供してる
Go言語をラッピングしていてHCL(Hashicorp Configuration Language)という文法で書かれる
www.terraform.io

最終的にできたもの

f:id:silmin:20180913002053p:plain
こんな感じのネットワーク構成ができた
appサーバにはApachePHPを入れてWordpress環境を建てた
Autoscalingでappサーバの数を適宜調整していく感じ
HTTPリクエストはELBで負荷分散し、SSHは直接入れないように踏み台としてbastionを用意した
図にはないが、ルーティングテーブルを書いたりセキュリティグループを設定したりと裏にいくつか隠れている

Terraformよき

これだけでもオンプレで作ったらまあ面倒だし、AWSコンソール(GUI)から作ってもそれなりに面倒
しかしTerraformを使うことでコーディングは確かに面倒だが、汎用性の高い構成を2回目以降はほぼノータイムで建てられることはとても大きい
実際に構築中に何度も破棄と再構築を繰り返し、身をもって体験した

全体としての感想

1週間という短い期間だったが、得られたものは結構あった

技術面

ネットワークの知識はあったが、こういうインフラ周りに今まで大して触れてこなかったため新鮮だった
AWSなんてほぼ初めてである程度知見を吸収できたと思う
Terraformも初めてだったがGoは少しわかるし、AWS以外でも使えるとのことなのでこれからお世話になりそう

それ以外

インターン自体初めてでIT企業ってこんな感じかーって思った
雰囲気もいい感じに緩くて、作業しやすい環境だったと思う
今まで自分は個人での開発経験しかなかったので、多人数で進捗確認しながらじわじわ進めていく感じが新鮮だった(今回も個人だが周りを見ていて)
社内Slackにレビュー依頼や対応依頼とかが飛び交ってて、良くも悪くも手間がかかってるなぁと(金がかかってるので当然といえば当然)

最後に

全体的に楽しかったし、来年の春にも来ていいことになったので楽しみにしている
f:id:silmin:20181021003321j:plain
↑左から、チューターの加治さん、僕、人事の笠松さん
なぜか片足のすそが捲れてるぼく

【write-up】OverTheWire bandit Level0~10 を解いてみた

OverTheWire banditとは

用意されたサーバにsshで入って、その中からflagを探すCTF用のサイト
bandit0にはbandit1にloginするためのpassが隠れていて、bandit1にはbandit2にloginするためのpassが隠れているっていう感じ。

それぞれのLevelにbanditが対応している。
Level2ならbandit2のユーザが使えるみたいな感じ。

一応、各番号のサイトにはflagの特徴や条件等いろいろなヒントが書かれていたりなかったりする。

今回はbandit0~10を復習がてらやってみたので解説
OverTheWire: Bandit

環境

host: windows10
VirtualBox:Ubuntu16.04 LTS
仮想マシンUbuntu環境です。

Level0

書かれている文章を読むとsshして繋げたらおkらしい。
ちなみにアドレスはbandit.labs.overthewire.orgでポートは2220、アカウント名とパスワードは両方 bandit0 でいいらしい。
よって

$ ssh bandit0@bandit.labs.overthewire.org -p 2220

で入って

bandit0@bandit.labs.overthewire.org's password:

って聞かれるから

bandit0

を打って完了です。

Level0 → Level1

ホームディレクトreadmeっていうファイルの中に次のレベルのパスワード入ってるよ
って書かれてるので、念のため

$ ls

してみると、readmeっていうファイルがある。

そしたら

$ cat readme

で、ファイルの中身を見る。
するとなんかすごい文字列がでてくるが、これがキーらしい。
これを次のbandit1のパスワードにするとbandit1に入ることができる。

Level1 → Level2

ホームディレクト- って名前のファイルにキーがあるで。って書かれてる。

愚直に

$ cat -

をすると、- がオプション記号(?)として扱われてしまうのでうまくいかない。

最初に - が来ないようにpath指定してあげればよさそうなので

$ cat ./-

で無事中身を見ることができた。

Level2 → Level3

スペースを含むファイル名のファイルの中にキーがあるで。って書かれてる。

愚直に

$ cat space in this filename

をすると、空白区切りで別のファイル名として扱われてしまう(space というファイル、in というファイル、thisという...)。

これを避けるためにエスケープ文字というものを使う
スペースの前に \ (バックスラッシュ)を付けることで、スペースをファイル名に含まれる空白として認識してくれる。

$ cat space\ in\ this\ filename

ちなみに、Tabキーでファイル名を補完する機能があるため、Tabキー押してあげると自動で入力される。

Level3 → Level4

inhere っていうディレクトリの中にあるよ。って書かれてる。

とりあえず、inhere/に移動してみる

$ cd inhere/

そして中身を確認

$ ls 

あれ、なにも表示されない。

でも問題文にinhere/にあると書かれているので、嘘ではないだろう。
なら隠しファイルの可能性を疑って全表示してみる。(lsだけでは通常隠しファイルは見えない)

$ ls -a

すると、.hiddenというファイルが見える。
中身を見てみる

$ cat .hidden

と、無事キーを入手することができた。

ちなみに、移動せず

$ cat inhere/,hidden

でもOK

Level4 → Level5

inhere/の中の一つだけ読めるファイルにキーが書かれてるよ。とある。

inhere/の中身を見てみると-file00~-file09が格納されている。
この中から読めるものを探すわけだが、読めるということはASCIIで書かれていそう。
なので、ファイルの形式を調べてみようと思う。

$ file inhere/*

で全ファイルの形式がわかる。
すると、-file07だけASCII Textだとわかるので、

$ cat inhere/-file07

でキーが入手できる。

ちなみに

$ cat inhere/*

で全部の中身表示して読めるとこだけ取り出してもいいけど、前ファイルの末尾が偶然アルファベットとかありそうだから非推奨

Level5 → Level6

inhere/の中にあるファイルで、

  • 人間が読める
  • ファイルサイズが1033byte
  • 実行ファイルじゃない

の条件に当てはまるファイルだよ。って書いてある。

実際inhere/をlsしてみるとめっちゃファイルある。これを一つ一つ見ていくのは嫌だし、効率悪い。
ので、一番それっぽいファイルサイズを使ってみる。

#findコマンドを用いる場合
$ find -size 1033c

#find, grepを用いる場合
$ find -ls | grep 1033

すると./inhere/maybehere07/.file02が当てはまってるのでそれの中身みてキー入手。

find -ls
findで見つけたファイルをls -lの形式で出力する
| (パイプ)
左のコマンドの出力を右のコマンドの入力とする

Level6 → Level7

このサーバの全場所から

  • 所有ユーザがbandit7
  • 所有グループがbandit6
  • ファイルサイズが33byte

の条件に合うファイル探してねって書いてある。

これはさっきと同じ感じで、

#find
$ find / -group bandit6 -user bandit7 -size 33c

#find and grep
$ find / -ls | grep bandit7 | grep bandit6 | grep 33

でいける。
find / -lsはこのサーバ内の全ファイルをls -lの形式で列挙。
ls -lの形式には所有グループ、所有ユーザ、ファイルサイズ、権限情報などいろいろな情報が載っている。
それをみてgrepで絞り込む感じ。

Level7 → Level8

data.txtっていファイルのmillionthって単語の次にキーがあるぜ。って書かれてる。

これはもう

$ cat data.txt | grep millionth

しかないね

Level8 → Level9

data.txtの中のものは被りばっかで、被らないものは1つしかないらしい。
その被りないやつがキーらしい。


被りを消してくれるuniqコマンドを使いたいんだけど、連続してないといけないから先にsortしよう。

$ sort data.txt | uniq -u

uniq -u は重複を非表示にしてくれる。

するとキーが出てくると思う。

Level9 → Level10

何個かの'='の後にある読める文字列みたいな感じで書いてある。

中身を見てみるとバイナリで読めない。
でも人間が読める文字列って書いてあるのでstringsコマンドを使って可読部分を表示してもらう。

$ strings data.txt

これでもたくさんあって大変。
grepを使うんだ。

$ strings data.txt | grep '='

すると3つくらい出てくるけど、今までキーになってたみたいなやつがキーになる。

まとめ

一応、Level0~10まで書きました。
ここはまだ全然簡単で、uniqやstringsコマンドを久しぶりに使ったくらいの難易度でした。

気が向いたら11以降も書きます。

【インフラ勉強会LT記】ネットワークの基本の「き」(2018/02/04)

インフラ勉強会って?

インフラ勉強会とは非営利のインフラエンジニアのための勉強会オンラインコミュニティです。
DiscordというVCアプリ(?)を用いて行っています。
詳細はインフラ勉強会 Wikiを参照ください。

LTの内容

ネットワークの基本の部分の

をざっくりと説明しました。

形式

VC:Discord
画面共有:mixer.com

所感

僕の今まで勉強してきたことを、できるだけ初心者向けかつ体系的に伝えられるようにしたつもり。
なんか意外と刺さりが良かったというか好感触だったのでまたやりてぇってなった。

今までここの分野を講義というか人に教えるために整理したことがなかったので、良い復習になった。

ちなみにこのイベント
wp.infra-workshop.tech

まとめ


インフラ勉強会はいいぞ