たいちょーの雑記

ぼくが3日に一度くらい雑記をかくところ

第62回シェル芸勉強会に参加しました

今回、大阪はサテライトが開催ということで現地参戦しました。

下みたいな感じで盛り上がってました

twitter.com

問題と解答

いつものように時間中に解いた答えなどを記録していきます。PowerShell解は気が向いたらやります

Q1

message.pptxからデータを削り出していき、unkoを得る問題

$ cat She*/*62/mess* | grep -aoPe 'u|n|k|o' | uniq | tr -d \\n | grep -o unko
unko

grep-aでバイナリ内を検索します。出てきた文字から連続部分をuniqで圧縮したり、trで改行を消したあと、最後にgrepunkoを取り出すという感じですね。削り出しでいいのでこれで解答としました

Q2

imgディレクトリ以下のファイルがPNGかどうかを判断する問題

$ ls She*/*.62/img/* | awk '{print "xxd", $1, "|head -n1|grep -q PNG && echo",$1,"PNG || echo",$1,"PNGじゃない"}' | bash
ShellGeiData/vol.62/img/img1.png PNG
ShellGeiData/vol.62/img/img2.png PNGじゃない
ShellGeiData/vol.62/img/img3.png PNG
ShellGeiData/vol.62/img/img4.png PNGじゃない

バイナリを直接見る感じでやってみました。でもこれねPNGって書いてあったらだめだねこれね。fileで判断するのが賢いと思います

Q3

PNG画像からプログラム取り出して実行する問題

$ convert She*/*.62/prog* pgm:- | sed 1,3d > a && chmod +x ./a && ./a 
これはUNKOの画像です。

PGMから生成されたというヒントがあったので、PGMに戻してやったあとのヘッダー部分を取り除いた残りの部分をファイルに書き出しました。実はこの部分がプログラムなので実行権限を付けてやれば解けるということですね。

Q4

さっきのような画像を作る問題

$ cat > src.pgm
P5
2 23
255
#!/bin/bash

echo おはようございます

$ convert src.pgm dest.PNG

$ convert dest.PNG pgm:- | sed 1,3d | bash
おはようございます

解答例としても紹介されていたシェルスクリプトを仕込む感じにしてみました。本当はowariとか仕込んでやればよかったんですけど、ファイルサイズがいい感じの素因数分解できなくて諦めました

Q5

message.pptxに書いてあるメッセージを読み取る問題

$ cd She*/*.62/
$ unzip messag* &> /dev/null
$ cat ppt/slides/slide1.xml | grep -oPe '<a:t>[^<]*</a:t>' | sel -gd'<|>' 3
メッセージ
これを読んでいるころは、
シェル芸勉強会に参加されていることでしょう。
どうせ、yes ウンコとかコマンドを
打たさせていると思うと、大変残念です。
どんまいける!

どんまいける!pptxはzipっていうのはいつもそういえばそうでしたって感じになりますね。

Q6

nanika_data.tar内にあるファイルをタイムスタンプ順で並び替え ファイル名 -> 内容 の順番で読みだすと文章になります。ここからいろいろ取り出してくださいという問題

時間内には解けず…。tarの仕様を読んだりTLの解答を試したりしてました。\0が厄介でしたね~~~

LT

今回もLTしました!!!!!!!

github.com

ワタナベにとりつかれてしまったという話をしてしまいました。

takaさんのLTがかなり興味深かったです。勉強になる

おわり

今回も楽しかったです。近くに呻いている人がいるのはいいですね。 企画運営などありがとうございました!