なかっちゃんtech blog

勉強会とか日々の勉強の記録

HackerzLab.博多vol10に参加してきた

2回目の参加してきました.全然解けませんでしたww.これじゃいかんなあって思いなが復習しなきゃなーって思いつつ,レポート書いてました.レポート書き終わったんでささっとまとめて行きますね.

シーザ暗号解析

何文字ずらすかわかんなかったんで「どうしようかなープログラム書こうかなでも時間ないし」ってことで後回しにしました.んで解説でご紹介していただいたツールをここに置いときますね.perlとかで書いてみたいですね.有るものを違う言語で自分の手で作るのもだいぶ訓練になりそう

jad コマンド

javaの逆コンパイルのコマンドですね.ソースコードがそのままでてきてびっくりしました.ここまでの精度でもとにもどるのかーって思いました.

javap

僕はこっちのコマンドで解析しました.こっちのほうが「逆コンパイルだー」って感じがして僕は好きですw

コンパイルデコンパイル

皆さん意味は同じと取るんでしょうけど言葉の意味合いとして何か違和感を感じたので少し調べてみました.ここで言葉の意味を幾つか

んー期待していたとおりにの文言で出てこないですね.今僕の中で詰まっているのは

バイナリからソースコードを生成 することと バイナリからソースコードを取り出す ことは必ずしも同義ではないのではないだろうかと思うんですよ.実際にjavaでやってみました.

public class HelloWorld {
    public static void main (String[] args) {
        System.out.println("Hello World !!");
    }
}
import java.io.PrintStream;

public class HelloWorld
{

    public HelloWorld()
    {
    }

    public static void main(String args[])
    {
        System.out.println("Hello World !!");
    }
}

参考までにC言語は半分もどればいいとかいう話が…..(出処怪しい)

では本題にもどりましょう.上の2つの結果を見ていきましょう.最初のは有名所でHello Worldですね.んで逆コンパイルしたものが下になるんですけど,まあそりゃあそうなるだろって感じですし僕も,「へーこの精度で戻るんだ」って感想です.だからこそ100%すべて戻るみたいないい方をしていないかなと,自分自身で再確認しつつ「元のソースコードを見るためには逆コンパイルしたらいいよ」ではなく「元のコードと同じ動作をするコードの見本が見れるよ」くらいが正しい日本語ではないでしょうか.いやわかっている人はいいんですけど,それを知らない,わからない人に対してさも全く同じようなコードが生成されるような言い方はご法度ではないでしょうか(少し教育的な話にもなるんでしょうけど).今回違和感を覚えたので少しやってみました(文句はいくらでも受け付けます,)

SQLインジェクション

はい有名所ですね.しかし実際に調べたこともなかったのでこれを期にいろいろ調べてみた.はいそもそも定義いってみよう

だそうです.またこれが調べたら出てくる出て来る.これ自分で調べても理解はしていただけそうですね.まあSQL文を悪意のある人の思うように動くように書き換えるんですね.基本的にユーザーの入力したデータをSQL文に組み込むと思うのでそこをうまく活用したのかって感じです.例えば

SELECT * FROM hoge WHERE id= $ID AND password = $PASS 

こんなSQL文があったとしましょう(適当な文ですいません).ここで IDにコメントの “–"を入れると,

SELECT * FROM hoge WHERE id="admin" -- AND password =fuga

ってなるわけですから後ろの方全部無視なんですよね 参考

これは管理者としては阻止しなきゃいけない案件ですねー(NOSQLについても書こうと思ったけどやめた)

htpassword

でたBasic認証のやつ.ここにいろいろ書かれてますよーってやつですね.参考ここで力尽きたので…….

Serverless Frameworkと出会った

最近全然更新してないですね(東京から帰ってきてから更新してないじゃんということに書き出す前に気づいた。)言い訳はしませんが、個人的にかなり大きなことがあったのでなんかもう書く気にすらならなかった(ネタもなかった)。

じゃあ今日はServerless Frameworkの話していきたいと思います。AWSもからむのでLambdaのお話もします。ただホント説明を受けたくらいなのでいろいろなサイトを見ながら書いてます。

Serverless Frameworkとは

一言で言うとサーバレスでいろんなことができる(そのまま)ってイメージですかね。ちまたじゃ注目を浴びてるみたいですね。
公式サイト
github

そもそもServerlessとは

最初聞いたときは"すっげーサーバいらねえんだ なんかブロックチェーンみたいやな"(なおブロックチェーンもよくわかってない)って思ったんですけどんなわけないですよね。 んで引用[1]に書いてあった、"Why The Future Of Software And Apps Is Serverless"のそもそもServerlessとはなんぞねと言うところだけ抜き出してきました。

Thinking Serverless

The phrase “serverless” doesn’t mean servers are no longer involved. It simply means that developers no longer have to think that much about them. Computing resources get used as services without having to manage around physical capacities or limits. Service providers increasingly take on the responsibility of managing servers, data stores and other infrastructure resources. Developers could set up their own open source solutions, but that means they have to manage the servers and the queues and the loads.

Multiply this effort by the number services an app might consume (task processing, message queues, SMTP servers, payment services), hosted services quickly start to look like the future of computing.

エンジニアがサーバーの事考えなくてもええよーって意味ですね。AWSGoogle Platform,Azureのこと知ってたのになんでわかんなかったんかなw
今まで発生していたインフラ側のトラブルがほぼ無くなるわけですね。(AWSはS3がこの間トラブってましたがそれでもかなり高い稼働率)しかも使用する会社としてはそこの責任は自社にはないので"治るまでまってくださいーい"で終わるわけですね。そりゃあ流行るわな

それを踏まえて何ができるの?何が動いてるの?

こっから先はAWSのお話ですすめて行きます。(僕自身がAzureとかいじる予定はないので) あとわかりやすいサイトを[3]においておきますね。先輩から聞いたお話や調べたもののまとめですけどわかりやすくまとめるとなんらかのトリガーによってAPI Gatewayを経由してLambda Functionを呼び出し処理を行うって感じになるんですかね(用語の説明は下にしますね。)この説明はServerlessFrameworkを使ってAWSで実装するときのイメージになりますね。我ながらすっごい抽象的なことしか言えないですね(これから勉強するんだからそりゃそう)まあ処理によってはAPI Gatewayを通らないこともあるんですかね(DBの更新をトリガーにするとかしたらそうなりそう)できることはLambda Functionでできることはなんでもできるって感じですかね?

API Gateway

調べてたらAPIの意味がそもそもちゃんとわかってないなってわかったので下に書いた。 じゃあ気を取り直して行きましょう。引用[4]がわかりやすかったです。APIの管理システムなんですね。さあそれを聞いたらなおさら頭は混乱してきた。"なんでAPIを管理するシステムを通る必要があるの?参照でもしてるのかな あとこの感じだとさっきのAPI Gatewayを通らないものがあるってのも怪しい感じですね"(今の脳内)

API

http://it-trend.jp/words/api 規約、関数の集合のことなんですね。

Lambda

任意のトリガーに対して任意のコードを実行してくれるサーバくらいの認識でいいのかな。 知識も語彙力もないのでこれ以上のことがかけないです

REST API

でてきてないけど(自分用) ここ

これに関しては1年間くらいかけてやっていくことになるのでゆっくり成長していきます。

追記 Socket Proxis

これ便利ですね。大学のLANに入り込むのもいちいちいろいろソフトを起動しなくていい sshの"-D"optionでポート指定してProxis設定すればいいというお話kyutechのみなさんお試しを(iscのアカウントで入り込めばいい)

引用

[1]サーバなのに?サーバがない?サーバレスアーキテクチャの使いどころ

[2]Why The Future Of Software And Apps Is Serverless

[3]サーバーレスアーキテクチャという技術分野についての簡単な調査

[4]5分でわかるAmazon API Gateway

東京旅行を終えて

Facebookでもちょこちょこチェックインしていましたが2月24日から3月1日まで東京、横浜、静岡と弾丸で行ってきました。

ScalaMatsuriを終えて

さんざんひとりでに盛り上がっていましたが「採用担当者、CTO ぶっちゃけ座談会」を聞いて自分の中でしっかり気持ちが固まりました。いい意味で決意できました。まずScalaをする前にきちんとC,Javaの勉強をしようと思いました。(まあバイトでrailsも触りますが)大学生という少し特殊な時間の中で学問をきちんと学ぶときにScalaをやるのはすこし的はずれかなという結論に至りました。(ScalaMatsuriでお話された方々はほんとうに優秀でScalaをガンガン使っていらしゃったし、学生のうちからScalaを扱ってる方を否定するわけではなく僕の生き方として)今はScalaをするんじゃなくてもっとよく使われている根本を学びたいなとおもいました。座談会でも言われいましたが今Scalaができるかどうかではなくて、技術の根っこを理解してそれを自分の中で整理し、その言語の考え方を抑えることをやりたいと思っています。本当にいい機会になりました、自分の勉強不足を感じました。

ps: 司会の方が英語と日本語をどんどん切り替えてお話されていたのかっこいーなーってすごい思いました

新しい目標

Webapp

Javaで一つwebappを作ろうかなと思っています。2年後期で自分がいる界隈があまりに課題の管理ができていなかったこと、課題が多すぎてパンクしていたことを踏まえてそれを解決するようなアプリを開発していこうと思います。LINEで通知とか来たらうれしいな。

ksnctf

きままにCTFしようと思いました(まあ気分転換にでも)

paiza

ちゃんとプログラミングしますw

最後に

東京からの疲れがまだまだ抜けていないのでここらへでいおわりますね。

Ruby on Rails触ってみました

テストも落ち着きました.あとは英語1つだけなので実質春休みみたいなところはあります.来週には東京です.いやー楽しみです.ScalaMatsuri楽しみです.

なんでScalaって言ってたのに急にRailsをいじってるんだ(しかもRubyですらない)と思われそうですがまあバイトでじゃあやってみよーってなったので(笑) しかし環境ろくにできてなかったので最初に環境作成からです.(これがまた1時間かかった)

Rails環境構築

Apple Command Line Tools

結論からいくとこいつが1時間もかかった犯人です.ここからDLできます.これは一体なにがまとまっているToolなんだろうか調べてもいろんな問題の解決に導いているツールですねw(なんで今まで入れてなかったんだろう).実際,この中のどのツールが解決に導いたかはわかんないです.

homebrew

これもまた普段からつかってるのに全然メンテナンスしてないから問題いっぱい抱えてました.libxml2が入ってないエラーとPATHの問題でした.

 export PATH="$HOME/.rbenv/shims:$PATH"

を追加してhomebrewが普段から抱えている問題を解決しました.(これに関しては完璧に普段の自分が悪いですねw)

rails install

これはまあ上記の問題を解決したらいっぱつで

sudo gem install rails

で一発ですね.

ps:エラー文読むって大事ですね

最初はもちろんHello World

今回はこの本の3版を参考にさしました.こちらに原文のまま載ってますね.この順番に行きました.

rails new railsbook
rails generate controller hoge

あー Dive into Codeの勉強会で やったなあそういえばって感じです.とりあえずsqlite3でしたっけ?DB周りくらいまでいって本日は終了でした.

今日のメインはRailsより環境構築だった感じがすごいする.はいテスト終わりであんま記事は書かないでおこう.

HTTPSと表皮効果

今回は2つのお題がつながっているようでつながっていないような話です.

HTTPS

最近ブラウザでSHA-01だと怒られるようになりましたね.詳細はこのサイトがよかったの で 管理者たるもの証明書周りはちゃんとしなきゃなー(自動化してない)(自分への戒め

Let’s Encrypt

僕は自宅サーバー時代からお世話になってますねーなんせ無料でいい感じですから今でもgitbucketに使ってますよ.(ちなみにブログにプログラム載せるときはこのリポジトリ使っていきますね)

ACMEプロトコル

今日はこれのお話がしたくてですね. Let’s Encrypt専用のプロトコルなんですね.うちのサイトはここのツールを使って証明書周りをやってます.まあ所詮無料と言うことで使われるところはかぎられますけどねー(笑

表皮効果

あとですねLANケーブルのことについて勉強してたんですけどなんでより対線があるかって話であれ受信と送信用で流れる電流の向きを逆にすることで磁界をお互いに打ち消す合うようにできてるんですね.へーって感じでした. このサイトが良い説明してくれていたのでちょっとだけ(こっから電磁気ガンガンはいりますね)

まあここで Maxwell’s equationsより (texをやろうと努力しましたが折れました)
f:id:kaoru1615:20170208223921p:plain ※画像は http://www.geocities.jp/sugachan1973/doc/funto105-no410.html より

まあこれで説明終わりでもいいんですけど(これは自然はこういう風になってるのでまあツッコミどこもなく) ③'の式に"これを使う"て書いてあるんで僕の解釈だけすこしいれましょうか,磁界にたいしてナブラの外積(rot)をとると電流がでてくるんですよね.これが導線中心部の抵抗(電流の打ち消しとでも言うのでしょうか)になっているんですね.わかりやすく言うと電界が発生してそれを妨げるように電流が発生する,その電流がもとの電流と逆なんで打ち消す位の感覚ですね.

というわけで今回は今話題のSHA1のながれでHTTPSとそれをささえるLANケーブルがなぜより対線なのかという理由でちょっと電磁気してみました.

ps:話題と言えばWordPressやばそうですね,サイトをもっているかたはさっさとアップデートしてくださいね

未踏講演会に参加してきました

お話聴いてきました

第11回未踏塾講演会 - 未踏塾プロジェクト

まあ学内でやってくださったので行く手間もなくよかったです.じゃあこっからいろいろ書いていきますね.

言葉的なあれ

一番悪いことと一番いいことはつながっている
かんたんなことを秘密にする
社会もOSI参照モデルとおなじで上に行くほど抽象度がたかくて下に行くほど具体度が高い

なにも考えない

以前打ち上げで言われた"大人は学生が考えてる以上に何も考えてない"って言う言葉が身にしみますね.考えすぎなのは昔からですがこれがまあまずいのでしょうって.講演聞きながらなんでこんなに純粋に好きなことを追っかけられるんだろうって,思ったんですけど自分のなかでの解決なのでまあその程度なのですが(これからすごい失礼なこと書きますが)たぶん"このことが知りたい"って思ったらそれ以上にこまごま考えずに行動するんだろうなって思いました.僕はここでいろいろ考えて結局しないのかなってそれが違うんだろうなって.

感想

まあまずさすが未踏というかはい…すごいです.ってのが講演聴いてたときの感想ですね.ここまで好奇心で行動できるってすごいなって思いました.HackerzLabの打ち上げとはまた違うことを感じました.なんというか登氏もおっしゃられていましたが"おもしろいと思ったことについて追いかける"っていう追いかけ具合が違うというか,じゃあ話を聴いて俺はなにしたいんだろうって思いました.いろんなことには手をだしてるけどまだ定まってないんですねよ.やりたいことはいっぱいありますがあるだけで行動できてないなって,これから俺じゃなにをしようかなってせっかく大学にいるんだから今しかできないことをしようって思ってます.(まあこれをみて某友人にまーたぶれるんかいとか言われるの怖いんですが) ほんとになにしたいんだろう,好奇心は大学にはいって高校のときよりも旺盛になりました(笑.じゃあ次は行動をする練習かな.人の真似でもいい,自分のペースでいいから次はこれをやろうって.

東京行くまでに本2冊仕上げる を目標にやっていこうとりあえずShell Scriptとセキュリティまずここから初めていこう

ぜんぜん自分のなかでまとまらないんで講演の内容とかは書いていません.とりあえず忘れちゃいけないことをここに書きました.

HackerzLab.博多に参加してきました

ご無沙汰に外の勉強会に行ってきました.そこでのお話をすることと自分がわかっていないことの復習を兼ねていきます.(復習と言ってもその用語自体の詳しい説明はしてないですけどw)

HackerzLab.博多とは

Facebookをここに笑
詳細はリンクをどうぞ.一番メインのところを載せときますね.

Hackerz Lab.博多とは次世代のホワイトハッカー育成の為の団体です。 私たちと一緒に次世代のホワイトハッカーを目指してトレーニングしてみましょう。

この一文につられて勉強会に参加しました.博多にこんな勉強会があったのかwと思いました.

CTF

暗号

今回の問題はシーザー暗号でした.まあそれ以外の暗号も幾つか調べてみました.(いうほど調べてない)

シーザー暗号

base64の親戚かと思って調べて見たら違うんですねw単純に文字列をずらすだけなんですね.文字列をずらす文字数も変わっていいんですね.一応wikipediaの引用を

シーザー暗号は単一換字式暗号の一種で、平文の各文字を、辞書順に3文字分シフトして暗号文を作る暗号である[4]。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた[3]。文字のシフト数は固定であるが、3に限る必要はない。例えば左に3文字分シフトさせる場合、「D」は「A」に置き換わり、同様に「E」は「B」に置換される。シーザー暗号はヴィジュネル暗号などの部品として使用されることがあるほか、現代でもシフト数を13にした方式としてROT13が使用されることがある[5]。シーザー暗号は他の単一換字式暗号と同様、容易に解読されるため、今日の通信セキュリティにおいては効果的ではない[1]。

やっぱシフトする数は3がデフォルトなんですね.暗号としては本当に基本的なやつですよね.ROT13とかあったなぁ.

秘密鍵暗号,公開鍵暗号

これに関してはセキュリティの別記事にて書こうかなと思っています.

base64

ここを参照しました.どこぞの団体のCTFでお初におめにかかりボコボコにされた記憶が笑
今こうやって振り返るとこんな変換方法だったんだなという感じです.今ならすっと入ってきますね.文字列の最後が ==ならbase64を疑えという話でした.今度プログラム実装してみたいなぁ.

Exif情報

画像がきたら位置情報を探るんだろうなーくらいは感覚的に思いましたけどまあ見事ビンゴですね. ただExif情報という名前は初めて聞きましたね.

Exchangeable image file format(エクスチェンジャブル・イメージ・ファイル・フォーマット)は、富士フイルムが開発し、当時の日本電子工業振興協会 (JEIDA)で規格化された、写真用のメタデータを含む画像ファイルフォーマット。デジタルカメラの画像の保存に使われる。略称はExifで「エグジフ」(もしくは「イグジフ」)。 カメラの機種や撮影時の条件情報を画像に埋め込んでいて、ビューワやフォトレタッチソフトなどで応用することができる。Exif2.2ではExif Printという規格を組み込んでおり、撮影時の条件情報を元に自動的に最適化を行って、的確な状態でプリント出力を可能にしている。また撮影者や著作権情報、コメントなど付随することが出来る。 対応画像形式はJPEGTIFFJPEG XR(HD Photo)。

SNSとかに写真を載せてこれを元に場所がバレるみたいな話はききますね.ほんとに怖い.

正規表現

オートマトンの講義でも若干ふれたなぁって感じで教科書を引っ張りだしました.講義でやったのは任意の文字列を受理するオートマトンのお話でした.これだと^\s$なんてそりゃあ知らねえなぁって思いました.(下手したら.で全部の文字列受理で終わっちゃう)

MSに一覧が載っていたので載せますね.これからShellScriptをいじっていくのでのちのちきちんとお勉強することにはなるでしょ.今回の行数カウントで今回はきちんと正解できましたが行の中にtabとかあったら心配になるような回答を用意したのでうんー って感じですね

ホスティングクラウド業者,OSの特定

実際の問題の中ではここを使って回答しました.ホスティング業者ってまあ特定できるんですね.しっかしAWSとかって特定できるのかなぁ,グローバルIPからわかるんですかねえ,たぶんそうだななんか特定できねえかなこれは調べてみます.

はい次はOSの特定ですね.これで思ったのはnmapおまえこんなに強いコマンドだったのか所詮開いてるポート調べるだけのやつかと思ってたごめんよ.ですねw

パケット解析

Wiresharkすげえ

一昔まえは全然使いこなせなかったのですがまあ最低限は使えるようになったかなーって感じですね.パケット監視が趣味にならないように注意しなきゃ

感想

書いてる時点でむっちゃ眠いんで若干?手抜きですがまあまた見ても少し調べれば感覚戻るかなって感じで書きました.これからもできるだけ参加していきます.