1 of 24

CuiShark:

A protocol Analyzer

like a Wireshark on TUI

Hiroki SHIROKURA @slankdev

slank.dev@gmail.com

2 of 24

パケットを

見る,

解析,

食べる,

etc...

3 of 24

素晴らしい

!!!!!!!!!!!

4 of 24

まだのひとも

大丈夫!!!

今日から入門

5 of 24

知っている人

6 of 24

知っている人

7 of 24

じゃあ

Cuishark

知っている人

8 of 24

素晴らしい

!!!!!!!!!!!

9 of 24

ってならないと

思うので、今日はその話を!

10 of 24

学生さん!!

(心がまだ学生な�おじさんはだめです)

11 of 24

素晴らしい

!!!!!!!!!!!

お互い切磋琢磨して

頑張りましょう

12 of 24

Hiroki SHIROKURA

  • @slankdev
  • Security Camp 15,16tutor
  • サイボウズラボユース
  • パケリスト (卒業)
  • 高速パケット仙道にすすむ (修行中)
  • ネットワークパケットを読む会に育てられました。

開発物

  • LibPGEN: パケット解析ライブラリ
  • Cuishark: Wireshark TUI版
  • ネットワークスタック
  • 高性能通信基盤

サイボウズ・ラボユース

  • C++ソフトウェア開発
  • 高性能通信, C++11
  • メンター: 光成滋生氏

13 of 24

サイボウズ・ラボユース

  • 各分野で極めて優秀なエンジニアが1年間指導してくれる
  • 年間103万円を上限にサイボウズが奨励金を支払います。
  • 書類/面談による選考 (テーマの有用性 x 応募者の将来性)を評価

世界に通用する日本の�若手エンジニアの発掘と�育成を目指すことを目的とし、�学生の若手クリエイターに�研究開発の機会を提供する

14 of 24

お題目

  1. Cuisharkって何?
  2. 設計と実装
  3. 必要性と用途
  4. デモ
  5. まとめ, 今後の展望, 感想など

ハンズオン形式でできるようにします。

15 of 24

まず始めに

ハンズオン的にできるようにしたいので、眠くなりたくない人は以下を実行

  • 必要パッケージ
    • sudo apt install libpcap-dev libncurses5-dev
    • sudo yum install libpcap-devel ncurses-devel
    • sudo pacman -S libpcap ncurses
  • git clone https://github.com/slankdev/bpf.git
  • git clone https://github.com/slankdev/cuishark.git

うまくいかなかったらごめんなさい

16 of 24

Cuisharkって何?

  • Wiresharkのようなもの
  • GUIを必要とせずにCUI環境で使用できる
  • リッチなフロントエンド
  • Wiresharkのインターフェースを真似
  • コンパクトなのでマルチプラットフォーム
  • Geekに好評で結構強い人たちがStarくれた
  • github star ください

https://github.com/slankdev/cuishark�GitHubで「cuishark」で検索!

17 of 24

Cuishark Design & Implementation

時間があれば詳しく説明します

  • バックエンド: Libpcap
  • フロントエンド: Libncurses5
  • 設計: ほとんどせずに書き始める。。。
  • 実装: 合計3営業日 C++11

画面分割など全て自分で実装していたのでパフォーマンスがよくなかったので、最近修正。

18 of 24

pcap/ncursesとは 引用: wikipedia

pcap (packet capture) とは、コンピュータネットワーク管理の分野におけるパケットスニファのためのAPIである。Unix系のシステムではpcapはlibpcapとして実装されている。WindowsではWinPcapというlibpcapを移植したものが使われている。

curses(カーシス、カーズィス)はUNIX系システムでの端末制御ライブラリである。テキストユーザインタフェース(TUI)アプリケーションを作成するのに使われる。名称は“cursor optimization”に由来する。文字のみを表示する端末(例えばVT100)を表示に使うアプリケーションが画面を管理する機能を集めたライブラリである[1]。

19 of 24

必要性と用途

VTYを実装していた。 (telnetでつなぐリモートshell)

キー入力のデバッグであったら便利だな、と思い、開発開始

wiresharkはでかすぎる、tcpdumpはしょぼすぎる

フォーカスを実行中にかえたいねん

20 of 24

デモ

  • 基本的な使い方
    • 導入
      • download
      • build/install
      • running
      • uninstall
    • 動作させる
      • ペインの移動
      • トグルの開閉
      • スクロール
    • Option
      • Interface (netif, pcap)
      • Filter
  • VTYのデバッグで使用する

21 of 24

感想

短時間で発案/実装まで至ったのは日頃の準備のおかげ

  • 無駄なコードを書かない準備ができていること
  • 前例がないことを把握できたこと
  • 褒めてくれる/楽しみにしている人がいること
  • パケット解析器の実装面の知識/技術があったこと

22 of 24

今後の展望

  1. フロントエンド強化
  2. wiresharkのソースをバックエンド化
  3. wiresharkの色々な機能に対応する

本職じゃない。。。。

でもこういうのなかったみたいでアイディア賞?

23 of 24

実装力/基礎知識/専門知識 の関係

図1. 3つの要素の関係性

24 of 24

これからサイボウズラボユースになりたい人へ

必須ではない、だが確実にあなたを助けてくれる

サイボウズラボユース==よき指導者/ライバルとの出会い

失敗してもへこたれることはない

最高の敗北者になること