yyp٩( 'ω' )و

色々触って遊んでます

職場のMacで寿司を流せないので家のMacにvimのpluginを入れて寿司を流す

まえがき

職場のMacがTouchbar付きのものになったので寿司を流したかったのですが、怒られそうなので家のMacvimで寿司を流して楽しみます🍣

プラグインマネージャーインストール

vimプラグインを入れるにはプラグインマネージャーが必要らしい。
入れたいプラグインリポジトリに行くと、NeoBundleと書いてあるのでNeoBundleを入れます。
インストールはREADMEに従って行いました。

github.com

curlでインストールスクリプトを取ってきて実行します。

$ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh > install.sh
$ sh ./install.sh
Please add the following settings for NeoBundle to the top of your .vimrc file:

と表示されるので、"NeoBundle Scripts-----------------------------で始まるブロックを.vimrcに追記します。

一度.vimrcを保存して閉じて、もう一度vimを起動すると、下記のように聞かれるので、yを入力します。

Not installed bundles:  ['vimshell', 'ctrlp.vim', 'vim-colorschemes', 'vim-fugitive', 'neosnippet.vim', 'neosnippet-snippets']
Install bundles now?
(y)es, [N]o:

下の方にNeoBundle Updateのように表示されるので、しばらく待ちます。
vim操作ができるようになったら、保存して終了します。

プラグインマネージャーのインストールは終わりです。

プラグインインストール

今回入れるプラグインはこちらです。
職場のMacのTouchbarで寿司を流せないのでvimで流して楽しみます。

github.com

READMEに従って.vimrcに下記を追記します。

NeoBundle 'pocke/sushibar.vim'

set statusline=%!sushibar#sushibar()
set laststatus=2

NeoBundleで始まる行をどこに書くかで詰まりました…
call neobundle#begincall neobundle#endの間に書く必要があるんですね…

保存して閉じて、もう一度vimを起動します。

寿司が流れました!
gifとかの撮り方がわからないので貼れないのが残念ですが、操作するたびに寿司が流れて楽しげな感じになりました。

まとめ

今回作ったvimrcはこちらです。

github.com

遊び心のあるものが結構好きなので、他にも色々試してみたいと思います🍣

treeコマンドが便利な話

まえがき

ディレクトリ構成を書くことがたびたびあるのですが、いちいち記号を探すのが面倒だったのでtreeコマンドを導入しました。

treeインストール

任意のパッケージ管理ツールでインストールします。
今回はMacに入れます。

環境は下記です。

  • OS: macOS Mojave
  • OS version: 10.14.5

brewでインストールします。

brew install tree

インストール終了後、treeを実行すると…

tree                                                                                                                                                                                               [master]
.
├── README.md
├── ansible
│   ├── check-connect-host.md
│   ├── execute-playbook-specific-host.md
│   ├── execute-playbook-specific-task.md
│   ├── show-hosts-list.md
│   ├── step-execute-playbook.md
│   └── use-variable-by-lookup.md
(略)

こんな感じで出てきます。
-Lで表示するディレクトリの深さも指定できます。

tree -L 1                                                                                                                                                                                          [master]
.
├── README.md
├── ansible
├── aws
├── bash
├── git
├── linux
├── mac
├── markdown
├── network
├── nodejs
├── pip
├── terraform
├── vim
├── windows
└── yum

14 directories, 1 file

表示するディレクトリも指定できます。

tree -L 1 ./aws                                                                                                                                                                                    [master]
./aws
└── search-resources-all-region.md

0 directories, 1 file

まとめ

いちいち記号を探す面倒から解放されました…!
環境によってはむやみにパッケージをインストールできないこともあるので、その時に別の環境で実行して記号を探すという使い方もできそうです(あんまりしたくない)

zshを導入したい(願望)

まえがき

bashを使っているのですが、zshの補完機能が良いと聞いたのでzshに切り替えたいなと思っています。
ですがzshrcを作る際に面倒がってしまい、事故りました…

環境

  • OS: macOS Mojave
  • OS version: 10.14.5

zshに切り替える

デフォルトで入っているzshに切り替える

Macにはデフォルトで何種類かシェルが入っています。
下記コマンドで確認できます。

$ cat /etc/shells

入っているのはだいたい下の6つかなと思います。

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

zshもデフォルトで入っているので切り替えてみます。
下記コマンドでログインシェルを切り替えます。

$ chsh -s /bin/zsh

一度ログアウトして再度ログインすると、zshになります。
何かしら失敗してたらログインできなくなる可能性があるため、新しいタブを開いてログインしてみるのがおすすめです。

バージョンを確認してみます。

% zsh --version
zsh 5.3 (x86_64-apple-darwin18.0)

Release notesによると最新版が5.7なので若干古いですね。

zsh.sourceforge.net

zshrcを作ろうとする

面倒だったので.bashrcを.zshrcにコピーしてみたところ、プロンプトがだめな感じになりました…そりゃそうか…
そして.zshrcを空にしてsourceしても戻らず…
色だけつけるように.zshrcに追記してみます。

autoload -Uz colors
colors
PROMPT='%{$fg\[red\]%}[%n@%m]%{$reset_color%}'

source .zshrcで読み込みますが変わらず…
ちゃんとした.zshrcを作り直すしかなさそうです…

あとがき

zshに切り替えるのはとても簡単でした。
ですが億劫がってしまったためにプロンプトがおかしなことになるという事故が発生してしまいました…
解決したらまた記事に書こうと思います(戒め)
zsh本体についてはbrewで最新版を入れることもできるようなので、こちらも試してみたいな〜と思っています。

「ハッキング・ラボのつくりかた」ホストOS環境構築(Macの場合) 後編

前編はこちら
「3-11 AutoPlayの設定を確認する」から進めていきます。

環境

前編と同じです。
* OS: macOS Mojave
* OS version: 10.14.4
* VirtualBox: 5.2.28
* Kali Linux: 2019.2

ホストOSの基本設定

3-11 AutoPlayの設定を確認する

Macの場合、デバイスをアタッチしても自動実行はされないはずなので、特に何もしません。
Finder等探しましたが、該当しそうな設定箇所はありませんでした。
ただ、少し古いOSだとある可能性はなくはないですね…

3-12 共有フォルダーの"Thums.db"の作成を抑止する

"Thumbs.db"はMacでは生成されないので、スキップします。
Macの場合".DS_Store"というファイルがこれに似た機能を持っていると思われます。
ファイルやフォルダがロックされるということはなさそうなので、今は何も設定せずに先へ進みます。
必要になったら設定したいと思います。

3-13 右クリックのショートカットメニューをカスタマイズする

「送る」メニューに追加する

ファイルやフォルダを右クリックした際、Windowsの場合は「送る」という項目が出てきます。
Macの場合、右クリックした際に表示される「共有」がこれに当たるかと思います。
【手順】
1. 適当なフォルダやファイルを選択した状態で右クリック
1. 「共有」> 「その他」を選択すると、機能拡張の設定画面が開きます。
1. ここで必要なものにチェックを入れたり、チェックを外したりしてカスタマイズ。
Windowsの「送る」に比べ、選択できるものが少ない気がします。
他にいい方法を見つけたらまた設定したいと思います。

右クリックのメニューに項目を追加する 以降

Windowsの場合、レジストリキーを操作することで右クリックのメニューをカスタマイズできますが、Macの場合、「システム環境設定」からカスタマイズできます。

【手順】

  1. メニューバーのリンゴマークをクリックして「システム環境設定」を開く
  2. 「キーボード」を開き、「ショートカット」タブを開く
  3. 左のメニューから「サービス」を選択
  4. 下にスクロールしていくと「ファイルとフォルダ」という項目があるので、必要なものにチェックを入れる (不要なものがあればチェックを外す)
  5. iTerm等のターミナルソフトを入れていれば「ファイルとフォルダ」に表示されているはずなので、チェックをつける(ターミナルを直接開く方法は分からないです…)

3-14 ストレージ分析ソフトで無駄なファイルを洗い出す

Macの場合、下記の手順でストレージの状況を確認できます。

【手順】

  1. メニューバーのリンゴマークをクリックして「このMacについて」を開く
  2. 「ストレージ」タブを開き、「管理」をクリック
  3. 「おすすめ」メニューが表示されるので、お好みで設定する
  4. 自分で確認して整理したい場合は左メニューからファイルを確認できます

「おすすめ」については「ゴミ箱を自動で空にする」は設定してもいいと思います。
「不要なファイルを削除」は不要そうなファイルを判断して表示してくれます。
そこから本当に不要なものを削除できるので便利です。
他の2つについては私は使っていないです。

3-15 ランチャーを導入する

Macの場合Launchpad(親指と3本の指でつまむようにする)がデフォルトで入っているので特に何もしません。
(私の場合、Launchpadはあまり使わず、Spotlight検索(⌘+Space)を使っています)

3-16 ハッキング・ラボにおけるGit

プライベートリポジトリでコードを管理します。
私は普段からGitHubを使っているので、GitHubのプライベートリポジトリを使おうと思います。

github.com上でプライベートリポジトリを作ります。

f:id:mizukichi3:20190528225233p:plain

この時に"Private"を選択します。
リポジトリを作ったらMac側にcloneします。
私はhome配下に作業用ディレクトリを作成して作業をしているので、そこにcdしてcloneします。

$ cd ~/<directory>
$ git clone git@github.com:<username>/<repository-name>.git

ファイル等リポジトリの中身についてはおいおい追加していきます。

3-17 クラウドストレージの活用

代表的なクラウドストレージサービスとして下記の3つが紹介されています。

  1. Dropbox
  2. Google Drive
  3. OneDrive

私はすでにGoogle Driveを同期しているので、そのままGoogle Driveを使っていきたいと思います。

3-18 Prefetch機能を有効にする

コンテンツキャッシュが似たような機能を持っているかなと思ったのですが、調べていくうちに別物ということがわかりました。
Prefetch機能に当たるものは見つけられませんでした…

コンテンツキャッシュも面白そうな機能だったので、仕組みについて解説している公式ドキュメントを貼っておきます。
複数台Apple製品を運用している環境だとなかなか便利そうです。

support.apple.com

3-19 WindowsPython環境を構築する

MacはデフォルトでPython2系が入っていますが、3系も入れて混在環境を構築します。
バージョン混在環境作るの苦手なんですよね…
pyenvやvirtualenvを使う方法などありますが、今回はvirtualenvを使います。
こちらの記事を参考に進めていきます。

qiita.com

homebrewでpython3を入れます。

$ brew install python3

バージョンを確認して、3系が入っていたらOKです。

$ python3 --version
Python 3.7.2

pip3でvirtualenvをインストールします。

$ pip3 install virtualenv

環境構築時に行うのはここまでです。
以下は開発とかをするときに行います。
まずpython3を使って開発をするときに使用するディレクトリに移動します。
例えばgitのローカルリポジトリを分けていたら、そのリポジトリに移動します。
その後virtualenvを実行します。

$ virtualenv --python=/usr/local/bin/python3 --no-site-packages env

アクティベートします。

$ source env/bin/activate

こんな感じでpython2, 3の混在環境の構築は完了です。

3-20 BIOS(UEFI)画面を表示する

起動する時にショートカットキーを押すと使える機能*1が似ているかなと思ったのですが、Macの場合、そもそもBIOSに入れないみたいですね…
今後わかったらまた書きます…!

まとめ

後編も終了です。
これから第2部で色々やってみたいと思います〜
余談ですが、この辺の設定をAnsilbe等の構成管理ツールでできたら楽そうだな〜と思ったんですが、そもそもMac用のモジュールがなさそうで、難しそうですね…

第2回 SECCON Beginners CTF Write-up

まえがき

初めてCTFに参加しました。
解けたのは下記2問。
- Misc: [warmup]Welcome
- Reversing: [warmup]Seccompare
正直今回は初参加だし、全然解けなくてもいいや〜と思っていたので、ちょっとでも解けてよかったです。

CTFとは?

CTFとは、"Capture the Flag"の略で、プログラムに埋め込まれているFlagを自分の持っているIT知識を駆使してGetする競技です。
何人かでチームを組んでも、一人で参加してもいいみたいです。
問題の分野はその会によって違いますが、今回参加したSECCON Beginnersは下記5分野でした。

  1. Web
  2. Pwnable
  3. Reversing
  4. Crypto
  5. Misc

細かい説明はwikipediaさんへ…
セキュリティ周りの知識が必要なので、その辺りに興味がある人は楽しいと思います。

環境

  • OS: macOS Mojave
  • OS version: 10.14.4
  • VirtualBox: 5.2.28
  • Kali Linux: 2019.2

    【Misc】[warmup]Welcome

    「SECCON Beginners CTFのIRCチャンネルで会いましょう。」とあります。
    何のことかよく分からずしばらく別の問題に取り組んでいたのですが、ルールを確認しようと思ってスコアサーバのRulesページをみたら、IRCへのリンクがあります。
    これをクリックすると"Connect to freenode IRC"ページに飛ぶので、必要事項を入力して"Connect"をクリックします。
    すると、IRCのページの一番上にFlagが表示されています。
    f:id:mizukichi3:20190526203439p:plain これでFlagゲットです。

    【Reversing】[warmup]Seccompare

    Kali Linuxsshし、Seccompareのファイルをwgetします。

$ wget https://score.beginners.seccon.jp/files/seccompare_44d43f6a4d247e65c712d7379157d6a9.tar.gz  

圧縮されているので解凍します。

$ tar xvzf seccompare_44d43f6a4d247e65c712d7379157d6a9.tar.gz  
./._seccompare
./seccompare

"seccompare"と"._seccompare"というファイルが生成されました。
どんなファイルか確認します。

# seccompareファイル  
$ file seccompare  
seccompare: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=4a607c82ea263205071c80295afe633412cda6f7, not stripped  
# ._seccompareファイル  
$ file ._seccompare 
._seccompare: AppleDouble encoded Macintosh file

"seccompare"の方は実行するファイルみたいです。
"._seccompare"の方はMac用にエンコードされたファイルみたいです。
grepしてファイルの中にflagがないか見てみます。

# 今回のflagの形式で検索  
$ grep ctf4b ./ -r
ヒットなし  
# "flag"という文字列で検索  
$ grep flag ./ -r
Binary file ./seccompare matches

"seccompare"ファイルの中に"flag"が含まれているようです。
stringsで"seccompare"ファイルの文字列だけ出力します。

$ strings seccompare  
/lib64/ld-linux-x86-64.so.2
libc.so.6
puts
......  
usage: %s flag
correct
wrong

flagという文字列がありました。
ファイルの権限を変えて、実行してみます。

$ chmod 755 seccompare  
$ ./seccompare 
usage: ./seccompare flag

引数が必要みたいです。
適当に引数を与えて再度実行してみます。

$ ./seccompare flag
wrong

どうやら正誤判定をしているらしいというところまで分かりました。
ltraceでトレースしながら実行してみます。

$ ltrace ./seccompare flag
strcmp("ctf4b{5tr1ngs_1s_n0t_en0ugh}", "flag")                          = -3
puts("wrong"wrong
)                                                           = 6
+++ exited (status 0) +++

strcmpは文字列の比較をするC言語のコマンドみたいです。
"ctf4b{5tr1ngs_1s_n0t_en0ugh}"と引数を比較しているみたいです。
引数"ctf4b{5tr1ngs_1s_n0t_en0ugh}"を与えてみると…

$ ltrace ./seccompare ctf4b{5tr1ngs_1s_n0t_en0ugh}
strcmp("ctf4b{5tr1ngs_1s_n0t_en0ugh}", "ctf4b{5tr1ngs_1s_n0t_en0ugh}")  = 0
puts("correct"correct
)                                                         = 8
+++ exited (status 0) +++

correctでした!flagゲットです。

まとめ

他の問題にも挑戦したのですが、分かりそうで分からなくて、「俺にもっと力があれば…!」という気持ちで取り組んでいました。
サーバは6/9までオープンしているそうなので、他の方のWrite-upなどを見つつやってみたいなと思います。

GitHub PagesにGBStudioで作った自己紹介を載せる

まえがき

GitHub Pagesを作る

公式ドキュメントがあるのでこれに沿って進めます。

pages.github.com

リポジトリを作る

GitHub上で<自分のID>.github.ioリポジトリを作ります。

ローカルにクローンする

自分のローカル環境にリポジトリをクローンします。

git clone https://github.com/username/username.github.io

閲覧できるか確認する

確認用のhtmlファイルを作り、GitHubから閲覧できるか確認します。

  1. "Hello World"と表示されるindex.htmlを作ります。
cd username.github.io
echo "Hello World" > index.html
  1. GitHubにpushします。
git add --all
git commit -m "Initial commit"
git push -u origin master
  1. https://username.github.ioにアクセスして"Hello World"と表示されればOKです。
    今回作ったのはこちらです。

https://mizukichi3.github.io/

ここにGBStudioで作った自己紹介を載せてみたいと思います。

GBStudioで作ったものを載せる

GBStudioのファイルをgithub.ioリポジトリにコピー

GitHub Pagesに載せたいGBStudioのプロジェクトのファイルを全て.github.ioリポジトリにコピーします。
下記にアクセスすると…!

https://mizukichi3.github.io/web

ゲームっぽい何かが表示されました。
まだちゃんと作っていないので動きが変だったりするのですが、面白いですね!

「ハッキング・ラボのつくりかた」ホストOS環境構築(Macの場合) 前編

まえがき

CTFをやってみたくて、「ハッキング・ラボのつくりかた」を見ながら環境構築をしています。 最初は自力で環境構築をしようとしたのですが、なかなかまとまった情報が得られなかったので…

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習

こちらの第3章「ホストOSの基本設定」がWindowsを想定したものだったので、Macの場合にやったことを書いてみます。
あくまで私の場合なので、これがベストかどうかは分かりません。ご了承ください。

環境

ホストOSの基本設定

3-1 ファイルの拡張子を表示する

私の場合、ファイルをGUIで扱う場合はFinderを使っています。
なのでFinderでファイルの拡張子を表示するように設定します。

【手順】

  1. Finderを開く > メニューバーのリンゴマークの横の"Finder"をクリック > "環境設定"を開く
  2. Finder環境設定画面で「すべてのファイル名拡張子を表示」にチェックをつける

これでファイルの拡張子を常に表示できるようになりました。

3-2 ファイルやフォルダーの隠し属性を解除する

先頭に"."がついているファイルをFinderでも表示できるようにします。

【手順】

  1. ターミナルを起動
  2. defaults write com.apple.finder AppleShowAllFiles TRUEを実行する
  3. kilall Finderを実行してFinderを一回終了させて設定を適用する

Finderを再度起動し、Homeディレクトリで".bashrc"等がうっすら表示されていればOKです。

3-3 コントロールパネルをすぐに開けるようにする

MacWindowsのコントロールパネルにあたるものがあんまりよく分かっていないです…
「システム環境設定」あたりでしょうか…
「システム環境設定」だとしたら、リンゴマークをクリックしてすぐに開けるので、特に設定は必要なさそうです。
今後他の設定が必要になったら、個別に設定していきます。

3-4 スタートメニューの主要リンクをカスタマイズする

これも「スタートメニュー」に該当するものがMacでは何なのか分かっていないです…
でもここで設定しているのはよく使うものへのリンクなので、Dockをカスタマイズすることでできそうです。
記載があるのは「ドキュメント」「ダウンロード」「ネットワーク」「エクスプローラー」なので、該当するものが分かれば設定していきます。
* ドキュメント: 該当するものが分からないためデフォルトでDockになければFinderを追加。 * ダウンロード: デフォルトでDockに追加されているが、なければ「ダウンロード」を追加。
* ネットワーク: 「システム環境設定」の「ネットワーク」に当たると思われるが、これだけを追加することはできなさそうなので「システム環境設定」をまるごとDockに追加。
* エクスプローラー: Finderで賄えそうなのでスキップします。

3-5 メインPCのフォルダー構成を考える

Macの場合「アプリケーション」フォルダがあるので私は全部そこに入れています。
dmgをデスクトップに置いて実行→アプリをアプリケーションフォルダに入れて、dmgは削除という流れです。
パーティションに関しては、システムに影響を与える恐れがあるので一旦スキップします。

3-6 ホストOSとゲストOS間でファイルをやり取りする

ここではアプローチが5つ紹介されています。

  1. ファイルサーバーを利用する
  2. ゲストOSでFTPサービスを有効にする
  3. Windowsのファイル共有機能を利用する
  4. VirtualBoxのファイル共有機能を利用する
  5. VirtualBoxドラッグ&ドロップ機能を利用する

他に私が思いついたものとしては、AWS S3を利用する方法です。
例えばMacからVirtualBoxVMに送りたいファイルがある場合、MacからS3にアップロードして権限などを適切に設定すればVMでダウンロードできるようになります。(ざっくり)
ただ、S3は料金がかかってしまうため*1、今回はこの方法は不採用で…
「まとめ」にある1と3と4の方法を次の項以降でやっていきたいと思います。
1. ファイルサーバーを利用する→9-2
1. Windowsのファイル共有機能を利用する→3-8
1. VirtualBoxのファイル共有機能を利用する→3-7

3-7 VirtualBoxのファイル共有機能を利用する

ホストOSの設定

Macで共有フォルダーを作成し、設定を行います。

【手順】

  1. VirtualBoxと共有する用のディレクトリを作成 $ mkdir ~/shareで作成しました。
  2. VirtualBoxの共有フォルダの設定をする
    • VirtualBoxのスタート画面で該当のマシンを選択した状態で「設定」をクリック
    • 「共有フォルダー」で下記のように設定
      • フォルダーのパス: /Users/USERNAME/share (Mac側のフルパス)
      • フォルダー名: share (VirtualBox側の名前)
      • 読み込み専用: チェックしない
      • 自動マウント: チェックする
ゲストOSにGuest Additionsを適用する 以降

このあたりはMacでもWindowsでも変わらないので、割愛します。
デスクトップにCDアイコンが表示されなかったのですが、こちらのQiitaとFAQを参考に解決しました。

qiita.com

s-akademeia.sakura.ne.jp

3-8 メインPCの共有設定を見直す

Macでは/Usersディレクトリの共有はデフォルトでオフになっているみたいです。
Finderで/Usersディレクトリを見てみると、下記のフォルダがあると思います。

  • ユーザ名のフォルダ
  • ゲスト
  • 共有

右クリックで「情報を見る」で確認してみて、「共有フォルダ」のチェックがされていなければOKだと思います。
フォルダ共有でのデータのやり取りは基本的にしない方向で進めたいと思います。

3-9 Windows Updateを管理する

やることとしては、

  • アップデートの自動更新を解除する
  • 更新データがあったとしてもしばらく様子を見て、問題がなければ手動で適用する

です。
Macの場合、自動で更新が走ることはないと思うので、特に何もしません。

3-10 アンチウイルスの設定を見直す

Macの場合デフォルトではアンチウイルスソフトは入っていないと思います。
私もアンチウイルスソフトは入れていないので、ここはスキップします。

まとめ

前編はここで終了です。
また近いうちに後半を進めていきたいと思います。

*1:AWSアカウントを作って1年以内であれば無料利用枠があります。アカウント作りたての場合この方法もいいかもしれません。https://aws.amazon.com/jp/s3/pricing/