SlideShare a Scribd company logo
拡張可能な
パケット解析ライブラリ開発
サイボウズ・ラボユース第5期 成果報告会
@slankdev	
  
3/30/16 サイボウズ・ラボユース成果報告会 1
自己紹介
oTwitter:	
  @slankdev
oGitHub:	
  	
  slankdev
oサイボウズ・ラボユース第5期生
(第6期もお世話になります)
oセキュリティ・キャンプ 2015	
  修了生
oパケットとかネットワークとか好き
3/30/16 サイボウズ・ラボユース成果報告会 2
サイボウズ・ラボユース 第5期
o内容
◦ 開発テーマ:	
  C/C++によるソフトウェア開発
◦ メンター: 光成 滋生さん
oLibPGENを開発
◦ 読み方: りぶぴーじぇん
◦ パケット解析のライブラリ
◦ https://github.com/slankdev/libpgen
3/30/16 サイボウズ・ラボユース成果報告会 3
注意
oここでの”解析”は少し広義な意味として使います。
3/30/16 サイボウズ・ラボユース成果報告会 4
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 5
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 6
LibPGENとは
oC++11で開発しているパケット解析のライブラリ
oLinux,	
  BSDで動作
oパケット解析についてのあらゆる作業をサポート (後述)
o拡張がしやすい設計
◦ 新たなプロトコルに対しての拡張が容易 (後述)
3/30/16 サイボウズ・ラボユース成果報告会 7
LibPGENの設計
o 大きく分けて三つのコンポーネントに分かれてます
3/30/16 サイボウズ・ラボユース成果報告会 8
• IO
• データをネットワークインターフェースやpcap,	
  pcapngファイルに
入出力するクラス群
• pgen::net_stream,	
  pgen::pcap_stream …etc
• Core
• パケットやアドレスのバイナリを解析したり、変更したりする部分
• pgen::ethernet,	
   pgen::ip,	
  …etc
• Module
• Core,	
  IOを使って書かれたモジュール群
• めんどくさい作業をまとめてやってくれるクラスや関数群
• 説明は省略
LibPGEN:	
  IO
o幾つかのインターフェースを触れる
◦ ネットワークインターフェース
◦ pcapファイル
◦ pcapngファイル も完全対応ではない (最新版は知りません)
oストリームクラスとして実装
oOSごとの実装の違いを吸収
3/30/16 サイボウズ・ラボユース成果報告会 9
OSのごとの実装の違いを吸収
oread(2)の挙動がBSDとLinuxで違う
◦ Linux:	
  	
  1回のreadでパケット1つ読む
◦ BSD	
  	
  :	
  	
  	
  1回のreadでバッファに溜まっている全てのパケットを読む
oそもそもファイルディスクリプタの開き方が全然ちがう
◦ Linux:	
  PF_PACKETアドレスファミリでsocket(2)
◦ BSD	
  	
  :	
  BPF(/dev/bpfN)を直接open(2)
oまだ理解仕切れていない。。。
3/30/16 サイボウズ・ラボユース成果報告会 10
この説明は割愛しますが、
面白いので興味があれば懇親会で
3/30/16 サイボウズ・ラボユース成果報告会 11
BSDとLinuxの違いの
説明はないので雰囲気で
感じ取ってください
PF_PACKETでのreadの挙動
3/30/16 サイボウズ・ラボユース成果報告会 12
User	
  Land
Kernel	
  Land
Net	
  IF
Packet
Packet
Packet
Packet
copy
BPFでのreadの挙動
3/30/16 サイボウズ・ラボユース成果報告会 13
User	
  Land
Kernel	
  Land
Net	
  IF
PacketBPF	
  Hdr
PacketBPF	
  Hdr
PacketBPF	
  Hdr
copy
PacketBPF	
  Hdr PacketBPF	
  Hdr
PacketBPF	
  Hdr
LibPGENでの実装 (BSD用)
3/30/16 サイボウズ・ラボユース成果報告会 14
User	
  Land
Sub	
  User	
  Land
Kernel	
  Land
Net	
  IF
PacketBPF	
  Hdr
PacketBPF	
  Hdr
PacketBPF	
  Hdr
PacketBPF	
  Hdr
PacketBPF	
  Hdr
PacketBPF	
  Hdr
copy
copy
Packet
Special	
  Thanks,	
  KOZOS	
  Sakai
3/30/16 サイボウズ・ラボユース成果報告会 15
感じ取る時間終わりです
LibPGEN:	
  Core
o現在このライブラリで一番大事なところ
oパケット解析などをサポートするクラス群
oパケットのバイナリ生成、既存のバイナリを解析、
既存のバイナリを編集などのことができる
3/30/16 サイボウズ・ラボユース成果報告会 16
LibPGEN:	
  Core
o使用用途
◦ ゼロからパケットのバイナリを
組み立て
◦ 既存のバイナリを変更
◦ 長さを変えたり途中に追加な
ど柔軟に
oパケットクラスとして実装
3/30/16 サイボウズ・ラボユース成果報告会 17
Packet	
  Class
ffff ffff ffff 703e aceb 27a5 0806 0001
0800 0604 0001 703e aceb 27a5 0000 0000
0000 0000 0000 0ad2 7c7e 5b2a 0100 2d1a
ac19 1bff ffff 0000 0000 0000
aaaa aaaa aaaa 703e aceb 27a5 0806 0001
0800 0604 0002 703e aceb 27a5 0000 0000
0000 0000 0000 0ad2 7c7e 5b2a 0100 2d1a
ac19 1bff ffff 0000 0000 0000 4920 6c6f
7665 2070 6163 6b65 742e
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 18
簡単に使う
o ARPing の実装
◦ ARPリクエストでpingの動作を実装
◦ 使うクラス、関数など
◦ pgen::arpクラス,	
  ARPパケットを実装したクラス
◦ pgen::module::detect関数,	
   パケットの種類をフィルタリング
◦ pgen::net_streamクラス,	
   NETIFへの送受信
◦ Usage:	
  	
  ./arping interface	
  targetIP
◦ LibPGENを使うことが目的
3/30/16 サイボウズ・ラボユース成果報告会 19
ARPing プログラム
oソースコードはこんな感じ
3/30/16 サイボウズ・ラボユース成果報告会 20
ARPing プログラム
oソースコードはこんな感じ
oちゃんと分割して説明します
3/30/16 サイボウズ・ラボユース成果報告会 21
ARPing プログラム
3/30/16 サイボウズ・ラボユース成果報告会 22
ここはどうでもいい
ARPing プログラム
3/30/16 サイボウズ・ラボユース成果報告会 23
ここが重要!
ARPing プログラム
3/30/16 サイボウズ・ラボユース成果報告会 24
少し重要
ARPing プログラム
3/30/16 サイボウズ・ラボユース成果報告会 25
どうでry)
ARPing プログラム
o使ってみるとこんな感じ
3/30/16 サイボウズ・ラボユース成果報告会 26
ARPing プログラム
o使ってみるとこんな感じ
oプロトコルの知識があれば、ネットワークプログラミングの
多少複雑なことを知らなくていい
3/30/16 サイボウズ・ラボユース成果報告会 27
ARPing プログラム
o使ってみるとこんな感じ
oプロトコルの知識があれば、ネットワークプログラミングの
多少複雑なことを知らなくていい
oこれだけでは他のライブラリとかモジュールでも簡単
3/30/16 サイボウズ・ラボユース成果報告会 28
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 29
LibPGEN:	
  拡張性
oライブラリが既知のプロトコルに関する解析は簡単
oライブラリが未知なプロトコルに対してどうするか
oWiresharkとかは簡単にdissectorが追加できる
oじゃあそうしよう
3/30/16 サイボウズ・ラボユース成果報告会 30
拡張性
o新たなプロトコルに関するパケットクラスの実装が簡単
oちょっとだけパケットクラスの構造が分かってればOK
3/30/16 サイボウズ・ラボユース成果報告会 31
拡張性
oパケットクラス
◦ プロトコルごとのヘッダのインスタンスを持つ (has-­‐a)
oヘッダクラス
◦ ヘッダの要素を持つ (UDPヘッダならsrc_portとかdst_portとか)
3/30/16 サイボウズ・ラボユース成果報告会 32
Packet	
  Class
Header	
  Class
Header	
  Class
Header	
  Element
Header	
  Element
Header	
  Element
Header	
  Class
新プロトコルのパケットクラスの実装
o拡張するユーザは新たな
ヘッダクラスを実装
oそのヘッダのバイナリ解析
のコードのみを追加
3/30/16 サイボウズ・ラボユース成果報告会 33
新 Packet	
  Class
既存のHeader	
  Class
新 Header	
  Class
既存のHeader	
  Class
パケットクラスの継承関係
3/30/16 サイボウズ・ラボユース成果報告会 34
pgen::packet
pgen::ethernet
pgen::ipv6pgen::tcppgen::udp pgen::icmp
pgen::ippgen::arp
パケットクラスの継承関係
3/30/16 サイボウズ・ラボユース成果報告会 35
pgen::packet
pgen::ethernet
pgen::ipv6pgen::tcppgen::udp pgen::icmp
pgen::ippgen::arp
pgen::XXX
パケットクラスのメンバ関数
o基底パケットクラスのメンバ関数 (一部)
◦ uint8_t*	
  raw() 生パケットのバイナリのポインタ
◦ size_t length() パケットの長さを返す
◦ compile() バイナリを生成raw()に反映する
◦ analyze(buffer,	
  bufferlen) バイナリを解析
o拡張する開発者はこれらの実装を意識しなくていい
3/30/16 サイボウズ・ラボユース成果報告会 36
ヘッダクラスの継承関係
3/30/16 サイボウズ・ラボユース成果報告会 37
pgen::header
pgen::ethernet
_header
pgen::ipv6_headerpgen::tcp_headerpgen::udp_header pgen::icmp_header
pgen::ip_headerpgen::arp_header
ヘッダクラスの継承関係
3/30/16 サイボウズ・ラボユース成果報告会 38
pgen::header
pgen::ethernet
_header
pgen::ipv6_headerpgen::tcp_headerpgen::udp_header pgen::icmp_header
pgen::ip_headerpgen::arp_header
pgen::XXX_header
ヘッダクラスのメンバ関数
oヘッダクラスのメンバ関数 (一部)
◦ virtual	
  write(buffer,	
  bufferlen)	
  =	
  0	
  	
  ヘッダのバイナリを書き込む
◦ virtual	
  read(buffer,	
  bufferlen)	
  =	
  0	
  	
  	
  ヘッダのバイナリを読み込む
◦ virtual	
  size_t length()	
  =	
  0 ヘッダの長さを返す
3/30/16 サイボウズ・ラボユース成果報告会 39
ヘッダクラスとパケットクラスの関係
oパケットの
バイナリ解析を行う場合
oanalyze()は
各ヘッダクラス::read()を
上から呼び出して解析
oバイナリ生成も同じ構造
3/30/16 サイボウズ・ラボユース成果報告会 40
Ether
IP
UDP
Trailer
ethヘッダ::read()
ipヘッダ::read()
udpヘッダ::read()
udpパケット
::analyze()
ヘッダクラスとパケットクラスの関係
oパケットの
バイナリ解析を行う場合
oanalyze()は
各ヘッダクラス::read()を
上から呼び出して解析
oバイナリ生成も同じ構造
3/30/16 サイボウズ・ラボユース成果報告会 41
Ether
IP
UDP
Trailer
ethヘッダ::read()
ipヘッダ::read()
udpヘッダ::read()
udpパケット
::analyze()
新プロトコルでパケットクラスの実装
3/30/16 サイボウズ・ラボユース成果報告会 42
Ether
IP
UDP
Trailer
ethヘッダ::read()
ipヘッダ::read()
udpヘッダ::read()
新プロトコル
パケット
::analyze()
新
プロト
コル
新プロトコル
::read()
開発者はヘッダクラスの
実装のみを気に掛ければいい
UDPパケットクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 43
UDPパケットクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 44
決まり文句だけの
関数で1~4行程度
UDPパケットクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 45
決まり文句だけの
関数で1~4行程度
ここのみを新たに
実装すればいい
UDPヘッダクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 46
UDPヘッダクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 47
UDPヘッダの要素
ヘッダ長の
最大値と最小値
UDPヘッダクラスの構造
3/30/16 サイボウズ・ラボユース成果報告会 48
決まり文句だけの
関数で1~4行程度
バイナリ解析など
のコードでここだけ
しっかり実装
UDPはチェックサム
があるので、それ用の関数
まとめると
oパケットクラスの実装はほとんど以下の作業のみ
◦ XXX_header::read(const void*	
  buf,	
  size_t buflen);
◦ XXX_header::write(void*	
  buf,	
  size_t buflen);
o新たなプロトコルのパケットクラスを実装するときも同じ
oクラス設計である程度開発者を束縛して、
必要な仕事のみに専念できるように設計
3/30/16 サイボウズ・ラボユース成果報告会 49
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 50
少しがっつり使う
o新たなプロトコルのパケット解析
oプロトコルを自己定義
oその通信を解析できるパケットクラスを実装する
3/30/16 サイボウズ・ラボユース成果報告会 51
少しがっつり使う
3/30/16 サイボウズ・ラボユース成果報告会 52
ズンドコプロトコル
oズンドコプロトコル over	
  UDP
o勝手にいろいろ改変してる
oズン、ズン、ズン、ズン、ドコ
の順に受け取ると”キヨシ“を
を返すプロトコル
3/30/16 サイボウズ・ラボユース成果報告会 53
client	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  server
ズン
ズン
ズン
ズン
ドコ
キヨシ
ズンドコプロトコル
oサーバは
ズンズンズンズンドコの順に通信を受け付けたら
最後のドコを送ったホストにキヨシを返信
oそれ以外は受け取ったメッセージをエコーする
oヘッダフィールドは以下とする
3/30/16 サイボウズ・ラボユース成果報告会 54
type	
  (16bit) msglen (16bit)
message	
  (msglen byte)
type	
  
0	
  :	
  ズン
1	
  :	
  ドコ
2	
  :	
  キヨシ
内容
oデモ用にこのプロトコルで通信するサーバを用意
oサーバ側で別のプロセスで”キヨシ”を当てた端末を表示
3/30/16 サイボウズ・ラボユース成果報告会 55
Client	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Server
ズン、ドコ、ズン、ドコ
ここで観測
内容
oあらかじめパケットをキャプチャ,	
  pcapngで保存
oそのパケットを解析して、
キヨシを当てているホストを羅列する
3/30/16 サイボウズ・ラボユース成果報告会 56
準備
opgen::zundokoパケットクラスの実装
◦ 要するにpgen::zundoko_headerクラスの実装
oサーバクライアントの設計実装 (省略)
o解析するスクリプトをLibPGENを使って作成
3/30/16 サイボウズ・ラボユース成果報告会 57
準備
3/30/16 サイボウズ・ラボユース成果報告会 58
KIYOSHIを当てた端末を
表示するスクリプト
pgen::zundoko_headerクラス
3/30/16 サイボウズ・ラボユース成果報告会 59
pgen::zundokoパケットクラス
3/30/16 サイボウズ・ラボユース成果報告会 60
pgen::zundoko_header::read()
3/30/16 サイボウズ・ラボユース成果報告会 61
←この辺にバグがありました。
ごめんなさい。
pgen::zundoko_header::write()
3/30/16 サイボウズ・ラボユース成果報告会 62
実験中
3/30/16 サイボウズ・ラボユース成果報告会 63
実験中
3/30/16 サイボウズ・ラボユース成果報告会 64
実行結果
o以下の2つの端末がKIYOSHIを当てたらしい。
o本題はここじゃ無い
3/30/16 サイボウズ・ラボユース成果報告会 65
まとめ
o新たなプロトコルの解析が簡単にできる
oくだらない?	
  いや楽しい。
3/30/16 サイボウズ・ラボユース成果報告会 66
Agenda
oLibPGEN
◦ LibPGENとは、その設計は
◦ 簡単に使う
◦ 拡張性
o少しがっつり使う
◦ 新たなプロトコルに関するパケット解析
o今後の展開と総まとめ
3/30/16 サイボウズ・ラボユース成果報告会 67
今後の展開
o他にもパケットで遊ぶために必要な機能を検討中
◦ 使う系
◦ ARPテーブルの実装
◦ TCPプロトコルスタックの実装 ←
◦ ルータの実装 ← 絶対この辺楽しい
◦ 様々なプロトコルのサポート
◦ より拡張しやすい設計
◦ Winでも使えるように
◦ 高速にIOとか
◦ 同期、非同期、なにそれ
3/30/16 サイボウズ・ラボユース成果報告会 68
ラボユースまとめ
oビシバシたくさん指摘し
てくださるので学ぶこと
が多い
o鬼軍曹…
3/30/16 サイボウズ・ラボユース成果報告会 69
ラボユースまとめ
o光成さんのコードレビュー、設計の考えが最も大きな収穫
o前にも増して無力さ痛感
◦ コードを読む力
◦ 英語力
◦ エディタ力
◦ スマートなコードを書く力
3/30/16 サイボウズ・ラボユース成果報告会 70
ラボユースまとめ
oサイボウズ・ラボ社様のサポートで楽しく春休みを過ごすこ
とができました
o特にメンターとしてご指導をしてくださった光成さん、
ありがとうございました。
oセキュリティ・キャンプ講師陣、修了生の方にも意見やアド
バイスをいただきました、ありがとうございます。
oGithub:	
  slankdev/libpgen
3/30/16 サイボウズ・ラボユース成果報告会 71
3/30/16 サイボウズ・ラボユース成果報告会 72
aabb ccdd eeff 0011 2233 4455 0800 4500
2800 0001 0000 4006 b9a2 c0a8 b302 c0a8
6501 3039 3039 0000 0000 0000 0000 5001
2000 961c 0000
ありがとうございました

More Related Content

What's hot

OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
slankdev
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみようRyu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみよう
Masaru Oki
 
Kernel vm13lt
Kernel vm13ltKernel vm13lt
Kernel vm13lt
slankdev
 
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)hiroshi oshiba
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
Taichi Ishitani
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
Masaru Oki
 
Open stack+lagopus できるかな
Open stack+lagopus できるかなOpen stack+lagopus できるかな
Open stack+lagopus できるかな
Masaru Oki
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのか
Masaru Oki
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
Masaru Oki
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya Trac
Kazuya Hirobe
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
Taichi Ishitani
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
Masaru Oki
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
Hiroshi Miura
 
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
boropon
 
SECCON2014 crypt200
SECCON2014 crypt200SECCON2014 crypt200
SECCON2014 crypt200
boropon
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
Yagi Shinnosuke
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
Takaaki Hoyo
 
Nmap 9つの真実
Nmap 9つの真実Nmap 9つの真実
Nmap 9つの真実
abend_cve_9999_0001
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
Fuminobu Takeyama
 

What's hot (20)

OSC2017Hokkaido
OSC2017HokkaidoOSC2017Hokkaido
OSC2017Hokkaido
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみようRyu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみよう
 
Kernel vm13lt
Kernel vm13ltKernel vm13lt
Kernel vm13lt
 
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
Ryuの遊び方(pica8も併せてもっと楽しく)(2014/1/23修正版)
 
CSRを自動生成する!
CSRを自動生成する!CSRを自動生成する!
CSRを自動生成する!
 
Lagopus performance
Lagopus performanceLagopus performance
Lagopus performance
 
Open stack+lagopus できるかな
Open stack+lagopus できるかなOpen stack+lagopus できるかな
Open stack+lagopus できるかな
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのか
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
20090124shibuya Trac
20090124shibuya Trac20090124shibuya Trac
20090124shibuya Trac
 
Nltk for biginer
Nltk for biginerNltk for biginer
Nltk for biginer
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
 
圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題圧縮・伸張・アーカイブサポートの現状と課題
圧縮・伸張・アーカイブサポートの現状と課題
 
Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-Trend Micro CTF Asia Pacific & Japan -defensive100-
Trend Micro CTF Asia Pacific & Japan -defensive100-
 
SECCON2014 crypt200
SECCON2014 crypt200SECCON2014 crypt200
SECCON2014 crypt200
 
Pcapngを読んでみる
Pcapngを読んでみるPcapngを読んでみる
Pcapngを読んでみる
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
Nmap 9つの真実
Nmap 9つの真実Nmap 9つの真実
Nmap 9つの真実
 
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
今さら聞けない Linux コマンドラインツールテクニック その1 rev. 2
 

Viewers also liked

サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会
Komei Kamiya
 
いでよ、電卓!
いでよ、電卓!いでよ、電卓!
いでよ、電卓!
Masato Kinugawa
 
サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料
masahiro13
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
lestrrat
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
slankdev
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料sn_monochr
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)Shinichi Awamoto
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
kotaro_hirayama
 
世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
Ryoma Sin'ya
 
kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道
Yusuke Amano
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
slankdev
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションsn_monochr
 
Tcj2013用
Tcj2013用Tcj2013用
Tcj2013用
Koichi Ise
 
Info talk2013
Info talk2013Info talk2013
Info talk2013
Koichi Ise
 
2進数フレンズ
2進数フレンズ 2進数フレンズ
2進数フレンズ
shugo manabe
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
Akira Kanaoka
 
DAVIX - Data Analysis and Visualization Linux
DAVIX - Data Analysis and Visualization LinuxDAVIX - Data Analysis and Visualization Linux
DAVIX - Data Analysis and Visualization Linux
Raffael Marty
 
Mki2014公開用
Mki2014公開用Mki2014公開用
Mki2014公開用Koichi Ise
 

Viewers also liked (20)

サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会
 
いでよ、電卓!
いでよ、電卓!いでよ、電卓!
いでよ、電卓!
 
サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料サイボウズ・ラボユース成果発表会資料
サイボウズ・ラボユース成果発表会資料
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
High Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many CoreHigh Performance Networking with DPDK & Multi/Many Core
High Performance Networking with DPDK & Multi/Many Core
 
中間成果報告会 発表資料
中間成果報告会 発表資料中間成果報告会 発表資料
中間成果報告会 発表資料
 
ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)ラボユース最終成果報告会(Web公開版)
ラボユース最終成果報告会(Web公開版)
 
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
『健全なフロントエンド開発をしよう 〜Railsに乗っかるという選択編〜』 アップ用
 
世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装世界最速の正規表現JITエンジンの実装
世界最速の正規表現JITエンジンの実装
 
kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道kintoneフロントエンド開発 モダン化への道
kintoneフロントエンド開発 モダン化への道
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーションサイボウズ・ラボユース 最終成果報告会プレゼンテーション
サイボウズ・ラボユース 最終成果報告会プレゼンテーション
 
Sdnj2013
Sdnj2013Sdnj2013
Sdnj2013
 
Tcj2013用
Tcj2013用Tcj2013用
Tcj2013用
 
Info talk2013
Info talk2013Info talk2013
Info talk2013
 
2進数フレンズ
2進数フレンズ 2進数フレンズ
2進数フレンズ
 
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
 
DAVIX - Data Analysis and Visualization Linux
DAVIX - Data Analysis and Visualization LinuxDAVIX - Data Analysis and Visualization Linux
DAVIX - Data Analysis and Visualization Linux
 
Mki2014公開用
Mki2014公開用Mki2014公開用
Mki2014公開用
 

Similar to サイボウズ・ラボユース成果報告会

InfiniBand on Debian
InfiniBand on DebianInfiniBand on Debian
InfiniBand on Debian
Taisuke Yamada
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
Toshiki Tsuboi
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
mganeko
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
MITSUNARI Shigeo
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
Kazuo Asano (@kazuo_asa)
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
Shinya Takamaeda-Y
 
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
Kodai Terashima
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
Ryuichi Ueda
 
How to deploy & operate OpenStack Production
How to deploy & operate OpenStack ProductionHow to deploy & operate OpenStack Production
How to deploy & operate OpenStack Production
VirtualTech Japan Inc.
 
Kansai mrb gr_sakura
Kansai mrb gr_sakuraKansai mrb gr_sakura
Kansai mrb gr_sakura
Kosuga Masakatsu
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUG
Hideki Saito
 
IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023
Takayuki Shimizukawa
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
Tozo Tanaka
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
Yuya Rin
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Kuniaki Igarashi
 

Similar to サイボウズ・ラボユース成果報告会 (20)

InfiniBand on Debian
InfiniBand on DebianInfiniBand on Debian
InfiniBand on Debian
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
GoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティスGoBGP活用によるSD-WANプラクティス
GoBGP活用によるSD-WANプラクティス
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3WebRTC mediasoup on raspberrypi3
WebRTC mediasoup on raspberrypi3
 
Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方Cybozu Tech Conference 2016 バグの調べ方
Cybozu Tech Conference 2016 バグの調べ方
 
Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6Starting qt5beta at_raspberry_pi Qtnagoya#6
Starting qt5beta at_raspberry_pi Qtnagoya#6
 
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみようPythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
PythonとPyCoRAMでお手軽にFPGAシステムを開発してみよう
 
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
How to deploy & operate OpenStack Production
How to deploy & operate OpenStack ProductionHow to deploy & operate OpenStack Production
How to deploy & operate OpenStack Production
 
Kansai mrb gr_sakura
Kansai mrb gr_sakuraKansai mrb gr_sakura
Kansai mrb gr_sakura
 
OSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUGOSC2013 Tokyo/Spring JOSUG
OSC2013 Tokyo/Spring JOSUG
 
IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023IKEv2-VPN PyHackCon2023
IKEv2-VPN PyHackCon2023
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 

Recently uploaded

ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
miyp
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
Toru Miyahara
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
K Kinzal
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
Masatsugu Matsushita
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
Toru Miyahara
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
Yuuitirou528 default
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Toru Miyahara
 

Recently uploaded (7)

ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料「VRC海のおはなし会_深海探査とロボットのお話」発表資料
「VRC海のおはなし会_深海探査とロボットのお話」発表資料
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 

サイボウズ・ラボユース成果報告会

Editor's Notes

  1. 本名、城倉弘樹と言います。法政大学理工学部の新三年生です。 twitterとかgithubはslankdevというアカウントでやっているので、良かったらフォローしてください。 パケットとかネットワーク関連のことが大好きです。
  2. ラボユースでは光成さんにご指導をいただきながら、 C++のソフトウェア開発でLibPGENっていう パケット解析のライブラリを開発しています。 ソースとか見たり文句とかアドバイスを見てくれると嬉しいです。
  3. 注意なのですが、ここ使う解析という言葉はかなり広義な意味で使用します。ご理解お願いします。
  4. 発表はこのような流れで進めていきます。 まず開発したライブラリにかんして少し紹介して、 実際に少し使うときの話をしていこうと思います。
  5. ではまず、LibPGENについて概要を説明します。
  6. LibPGENとは、C++11で開発しているパケット解析のライブラリです。 LinuxとBSDで動作します。 パケットを作ったり変えたりパケット操作全般を簡単にC++からいじれるようにしています。 あと、ネットワークインターフェースやpcapファイルなどにデータを送受信する機能とかもあります。 LibPGENは拡張しやすいライブラリに使用ということで設計していて、それについては後述します。
  7. 設計は大きく分けて3つのコンポーネントに分けることができて、下から データの入出力をまとめたIOと、パケット解析をまとめたCoreと それらを使ったModuleとして分けています。 Moduleは今回は説明を割愛します。
  8. まず、IOから。 現在は3つのインターフェースにデータを読み書きできるようにしています。 pcapngを扱えるツールは現在はあまりなく wiresharkもpcapngフォーマットのすべての解析をできるわけではないので、 いいと思います。 あとここでOSごとの実装の違いをある程度吸収しています。
  9. ここではreadの説明はしない。  read実装が違うとだけ、説明
  10. 使用用途は ゼロからパケットのバイナリを組み立てる 既存のバイナリを解析、変更する 長さを変えたり、途中にデータを挿入したり、 ということもサポートしまいた。
  11. 次はといあえず簡単に 使ってみようと思います。
  12. Usage: ユーセェジ
  13. この辺はさらっと説明する。一つ一つは説明しない。
  14. 光成さんのコードレビューと設計についてのアドバイスが最も大きな収穫でした。 他にもまだまだたくさんの能力が足りていないことを痛感したので、 これからも頑張りたいです。
  15. スクリプト言語で使えよ