SAMIT16.11を開催しました

今回のテーマ

Cプログラムをハックしよう!

開催日時

今月のSAMITは低レイヤーなテーマでやりました. SAMIT初のセキュリティ講座でした.

connpass.com

今回やったこと

午前

  • 環境構築
  • Linuxのセキュリティ機構について
  • Stack Overflowの実践
  • Shell Codeの任意実行

    午後

  • Format String Attackによるメモリの読み書き

内容

脆弱なCプログラムを書き,実際に自分で書いたプログラムの脆弱性をつく演習をやりました. 今回は攻撃の手口を知りセキュアなプログラムを心がけることを学ぶ講座でした.

午前

最初は受講者の環境構築から始まりました. デバッガーであるPEDAをインストールしました.

Linuxに適用されているセキュリティ機構の説明を聞きつつ, 今回は脆弱性をつく為にそれらのセキュリティ機構を停止させました.

最初の演習ではStack Overflowという脆弱性で変数を書き換える演習を行いました. C言語で脆弱なプログラムを作りPEDAや逆アセンブルを使って 書き込めるアドレスの特定などを行いました. 特定したアドレスを元にStack Overflowを行い変数の書き換えを行いました.

次の演習はShell Codeを実装して,他のプログラムに埋め込む演習を行いました. まずはC言語でShell Codeを実装して,そのC言語版Shell Codeのバイナリを逆アセンブルしました. そのアセンブラを元にヌル文字を含まないアセンブラでShell Codeを実装して午前が終わりました.

懇親会

懇親会は本学の学食を利用しました.

f:id:seminarAtMIT:20161119221821j:plain

午後

午後は午前に作ったアセンブラ版Shell Codeを埋め込む脆弱なプログラムを作りました. プログラムでバッファオーバーフローを引き起こしShell Codeを実行しました.

最後の演習はFormat String Attackによるメモリの読み書きでした. Format String AttackはC言語のprintf仕様の脆弱性をついた攻撃です. Format String Attackを行うことでprintf関数で変数の値の読み書きを行いました.

f:id:seminarAtMIT:20161119221751j:plain

SAMIT16.07開催しました

今回のテーマ

LaTeX神,降臨!

開催日時

今月も開催当日は雨でした.
しかし,Monthly SAMIT史上最多の受講者数となりました! 参加者の方々ありがとうございました.

connpass.com

今回やったこと

午前

テンプレートを用いたLaTeXによるレポートの書き方

午後

TeX及びLaTeXのマクロを用いた簡単なプログラミング

内容

今回はLaTeXによるレポートの書き方をこちらで用意したテンプレートを使って説明しました.
説明に使ったテンプレートは参加者全員に配布して自由に使えるようにしました.
また,午後からはTeX及びLaTeXのマクロを用いた簡単なプログラミングを行いました.

LaTeX環境の構築は今回の講座の範囲外なので
今回はWeb上でLaTeXのソースをコンパイルできるサービスを用いました.
使用したサービスは以下のOverleafというサービスです.

www.overleaf.com

午前

今回は本大学の1年生が授業で初めてのLaTeXによるレポートの提出をする為,
LaTeXによるレポートの書き方を説明しました.
レポートの書き方はこちらで用意したテンプレートを用いて行いました.
主に以下の内容について教えました.

  • タイトル
  • 節(section,subsection,subsubsection)
  • 特殊文字,ロゴ(エスケープシーケンス,LaTeX,TeX)
  • 箇条書き(itemize,enumerate,description)
  • 数式(equation,align)
  • 図表(figure,table,here,includegraphics,tabular,minipage)
  • ソースコードの載せ方(breakitemibox,verbatim,minted,listing)
  • LaTeXgnuplotの図を直接記述(gnuplot-lua-tikz)

最初にみなさんにOverleafを紹介しました.
Overleafのセットアップ(platexを使用可能にするなど)をした後,説明をはじめました.
説明だけで,演習はありませんでした.
午前の演習は午後に行うTeXプログラミングの演習をレポートにまとめるという形式にしました.
説明を全て覚えておく必要がないようにテンプレート及び必要なスタイルファイルを配布してそのまま使えるようにしました.

f:id:seminarAtMIT:20160729225850j:plain

懇親会

今回は初めての日曜日開催だったので学食は定休日でした.
今回は近くのHottoMottoを利用しました.

f:id:seminarAtMIT:20160729230056j:plain

午後

受講者の対象を広げる為に午後からはTeXプログラミングを行いました.
最初に必要なTeX及びLaTeXのコマンドを解説しました.
解説後はみなさんに実際に演習としてユークリッドの互除法を実装してもらいました.
最終的には

\GCD{50}{5}

というコマンドを使うとPDF上には5と出力されるようなコマンドを実装することがゴールとなっています.
1年生も含めてみんなよく出来ていたのでよかったです.

f:id:seminarAtMIT:20160729230553j:plain

宣伝

ポスターは今回はR棟演習室前,いくつかの研究室に貼りました. また,本学の食堂に宣伝用の三角柱を置きました.

f:id:seminarAtMIT:20160729230950p:plain

次回

次回は夏休み明けの開催を予定しています.なので10月の開催になります.
次回は数値解析をやろうと考えています.

SAMIT16.06開催しました

今回のテーマ

ラムダオプショナルストリームアタック!

開催日時

開催当日は大雨警報がでるほどの土砂降りでした.
今回から会場はV棟301号室に変更しました.

connpass.com

今回やったこと

  • Java8の新機能を使ったプログラミング方法を学びました.

内容

今回はJavaのバージョンの中で最新であるJava8で追加された新機能の紹介とその使い方を学びました. Java8で追加された新機能は主に以下の3つです.

これらの使い方を演習を交えながら分かりやすく解説しました.

午前

今日は大雨にも関わらず4人講座を受けに来てくれました.午前はラムダ式とストリームの説明をしました. また,それに準ずる便利なメソッドも紹介しました.今回出てきたメソッドは以下の通りです.

  • filter
  • map
  • range
  • foreach
  • count
  • reduce

ラムダ式とストリームを使った演習問題として,GPA方式の成績判定やFizzBazz問題などをやりました. f:id:seminarAtMIT:20160626002702j:plain

懇親会

懇親会は御多分に漏れず本学の学食を利用しました.V棟から学食へは外へ出ないと行けないので土砂降りの中移動するのは大変でした. f:id:seminarAtMIT:20160626002730j:plain

午後

午後からはOptionalの解説を行いました.今まで煩わしくて危険だった例外処理(try ~ catch)をOptionalに置き換えるとどういいのか, そして,どのように書けばいいのかも解説しました.最後は演習問題を行いました.

宣伝

ポスターは今回はR棟演習室前,いくつかの研究室に貼りました. また,本学の講義である「オブジェクト指向言語」で宣伝をさせてもらいました. f:id:seminarAtMIT:20160626002541p:plain

次回

次回はそろそろ本学の一年生が講義でLaTeXに触れる頃なので
LaTeXの書き方講座を行おうと思っています.

SAMIT16.05開催しましました

開催日時

春休みが開けて今年度最初のMonthly SAMITとなりました.詳細は以下のConpasssのページからご覧ください.

connpass.com

今回やったこと

  • Ubuntu16.04を仮想環境でインストールしました.
  • 講義で使うemacs,LaTeX,gnuplotを導入しました.

内容

Ubuntu16.04が4月21日に出たので1年生向けにUbuntuのインストール講座を行いました.

講座の名前は「おうちDEリテラシー演習」です.

本学の情報電子工学系学科の講義の一つにUbuntuを扱う演習があります.

これから課題が多くなってくるのでわざわざ演習室に行って課題をやる必要がないように自分のノートパソコンにUbuntu環境を導入するという目的 の元今回の講座を開きました.

午前

講座に来てくれた人は去年から大幅に減少してたった2人でした(泣).

しかし,少人数だったこともあって去年のように足並みが揃わないなどのトラブルが起こりませんでした.

今回はリスクが低い仮想環境でのインストール行いました.仮想環境にはVM Ware Playerを使いました.

インストールは順調に進み,一人は午前中に終わりました.そしてその人はTOEICのテストがあるので午前中に帰って行きました.

懇親会

懇親会は学食の昼ごはんを講師二人(自分含め),参加者一人で食べました.さみしかったので写真はありません(笑)

午後

参加者一人に講師二人付いてLaTeXemacsgnuplotの導入を行いました.

ポスター

ポスターは今回はR棟玄関前,演習室前に貼りました. f:id:seminarAtMIT:20160530202850p:plain

次回

次回はJava8の内容をやりたいと思っています.

主な内容としてはラムダ式,ストリーム,Optionalについて話そうと思っています.

SAMIT 16.01開催しました

開催日時

2016年初めてのSAMITを行いました.イベントの詳細は以下のDoorKeeperのページをご覧ください.

d42c5003dbf3a526460ea8cfbe.doorkeeper.jp

今回やったこと

  • ポインタの概念を最初から
  • 型を意識しながらポインタを学んだ

内容

今回はイベントで発表する人が何とインフルエンザで来れないということがありました.その連絡が来たのがイベントが始まる1時間半前でした.スライドを作っていたのは発表者だったので僕たちはスライドの内容をさらっと見ただけでイベントが始まりました.一部,発表者にしか意図がわからない部分もありましたがトラブルなくイベントを終えることができました.

午前

午前はC言語に出てくる型のサイズを見てみたり変数がどのようにメモリに配置されるのかを見てみました.また,ポインタとは「変数の先頭アドレス」と「型の情報」を持っているという講義とは全く違う教え方をしました.また,Coffie Breakとしてポインタがなぜ必要なのかを機械語まで落とし込んで説明を行いました.

懇親会

懇親会は学食でお昼ごはんでした.イベント会場と懇親会会場が同じ建物だと移動が楽でいいですね. f:id:seminarAtMIT:20160123151307j:plain

午後

午後からはポインタと配列の関係を教えました.配列は「先頭アドレス」と「型の情報」,そして「配列全体のサイズ」を持っているということを教えました.だから配列とポインタは似ているということを教えました.また,「配列型ポインタ」と「配列へのポインタ型」との違いも教えました.その他にも関数ポインタや線形リストなどの発展型の問題を教えました. f:id:seminarAtMIT:20160123151444j:plain

第4回SAMIT開催しました

開催日時

11月空いて一ヶ月ぶりのMonthly SAMITを行いました. イベントの詳細は以下のconnpassのページをご覧ください。
http://connpass.com/event/22287/

今回やったこと

  • JavaScriptの文法など基礎的なことを学んだ
  • JavaScriptを使って簡易的なタイマーをみんなで作った

内容

今回はイベントを開始する前にちょっとしたトラブルが有りました. スライドを使って説明する人が集中講義で来れなかったり,会場の鍵を受け取る為の証明書を前日に取るのを忘れてしまったりしました. よって会場が開けられませんでした.(ちょっとしたトラブルではない)
会場を急遽変更しました.ちょうど会場としていい感じの会議室が開放されていたのでそこを会場にしました.

午前

午前はJavaScriptの文法の基礎を行いました.大きなトラブルもなくみんな足並み揃えて学ぶことが出来ました.ブラウザで動くので楽ですね! f:id:seminarAtMIT:20151208160634j:plain

懇親会

懇親会はもちろん学食です.大学会館が会場ではなかったので雪が降っている中頑張って学食までみんなで歩きました. 学食を食べ終わった後は会場の隣の僕の研究室でコーヒーを飲みながらブレイクタイムを過ごしました. f:id:seminarAtMIT:20151208160703j:plain

午後

午後はタイマーを作りました.すごく簡単な作りだったのでみんな無事に作ることが出来ました.

まとめ

今回は前途多難なトラブルが続いたものの当日は滞ることなくイベントを開催することができてよかったです.また初の試みとして今回のSAMITはポスターによる宣伝も行いました.ポスターを貼っても参加者が増えなくて不安でしたが前日に参加登録をしてくれた2人がポスターを見ての参加だったのでポスターの意味があってよかったです. f:id:seminarAtMIT:20151208162326p:plain

次回もポスターをR棟演習室前に貼るのでぜひ見てみて参加を検討してみてください!

次回

次回のMonthly SAMITは1月9日開催予定です。次回はみんなが理解に苦しむC言語のポインタを懇切丁寧に解説しようと考えています. プログラミング演習の期末テストを控えている一年生の方やC言語のポインタをなんとなくではなく理解したい方などはぜひ参加をしてみてください.

Weekly SAMITの宣伝

  • 時間: 毎週木曜日 16:15〜17:45の90分間
  • 場所: R棟2階ラウンジ(3階のラウンジでやっている場合もあります)
  • 内容: その週のお題をみんなでもくもくとやるもくもく会形式です.広く浅くやっています.ぜひ参加してみてください!

    これまでやってきた内容

  • UbuntuPython(3系)の環境構築とプログラミング
  • アセンブラの概要と解説
  • 純粋関数型言語Haskellの仕組み(主にモナド)とプログラミング
  • C言語のプログラムを逆アセンブルして読んでみる
  • Wolfram Languageの紹介
  • C++による関数合成の紹介
  • シュルスクリプト入門

第三回SAMIT開催しました

開催日時

  • 2015年10月24日10:00~16:00
  • 室蘭工業大学 大学会館第2・3集会室
    夏休み挟んで後期始まってからの初めてのMonthly SAMITを行いました。第三回です。
    イベントの詳細は以下のconnpassのページをご覧ください。
    http://connpass.com/event/21723/

今回やったこと

  • Github pagesを使って簡単なWebページの作り方を学んだ
  • Github pagesを使ってHow to use Github/Git/HTMLのページを各自作った

内容

今回は雨が降っていたからか参加人数が少なかったです残念... さて、今回は午前は講義、午後は演習という形で勉強会を進めていきました。

午前

午前はGitとは何かとGithubGithub pagesの説明を行いました。全員でGithub pagesのアカウントを作り htmlを簡単に直書きしてコミットを行ったうえで自分のスマートフォンなどでアクセスしてみたりなどいろいろ試してみました。 f:id:seminarAtMIT:20151024214356j:plain

懇親会

さて、今回もありました。本学の学食での懇親会! 今回は人数が少なくてただの友達で昼飯来た感じみたいになってしまいましたが「懇親会」です! f:id:seminarAtMIT:20151024214759j:plain

午後

午後は3人1組または2人1組でGithub pagesによるWebページの作成を行いました。完成したサイトを全員でアクセスしてサイト作成者が説明をするという形で発表会が行われました。f:id:seminarAtMIT:20151024214508j:plain

まとめ

Gitによる共同開発を実感させるために手頃なGithub pagesは大きな効果だったと思います。HTMLの直書きは大変ではあったけどみんなきちんとそれなりのサイトができていたのでよかったです。中にはネタに走っている人もいたり(?)

次回

次回のMonthly SAMITは11月開催予定です。次回はWeb系のことをやろうと思います。次回が今年最後のMonthly SAMITになると思うので皆さんぜひ参加してください!

宣伝

毎週金曜日の16:15~17:45の間にWeekly SAMIT なるものをやっています。こちらもみなさんぜひ来てください。3週間周期くらいでやる内容が変わるという浅く広くやっています。

これまでやってきた内容

第1週