SYN floodのコードをgithubで公開

SYN floodのコードをgithubで公開しました。
gitはやっと「一人」で作業するには問題ない程度になりました。

Linux Kernelが送信先からの[SYN,ACK]セグメントに対し[RST]セグメントを送信するのはIP_HDRINCLを設定していない
うんぬんかんぬんでは無く、[SYN,ACK]セグメントの宛先ポートにクライアントがいないためのようです。
(中断すべき3way handshake, このコードはTCPスタックとは別のレイヤーにいるため)
実際の動作時はすべてのIPヘッダのアドレスはIPスプーフィングで偽造しているため問題なし。
TCPの3way handshakeの様子を確実に見るためには送信源アドレスをオプションで自ホストのアドレスに設定して下さい。
(See --help)

C++歴が短いし(言い訳)、コードはアレなのでごめんなさい。

pfpacket/SYN-flood
https://github.com/pfpacket/SYN-flood

Wikipedia - IPスプーフィング:
http://ja.wikipedia.org/wiki/IP%E3%82%B9%E3%83%97%E3%83%BC%E3%83%95%E3%82%A3%E3%83%B3%E3%82%B0

Wikipedia - SYN flood:
http://ja.wikipedia.org/wiki/SYN_flood

SYN floodは一昔前までは有効なDoS攻撃の一つでしたが、ご存知のようにSYN cookie等の回避策が数々出てききたこと、
またコンピュータ自体の性能も格段に上がったことなどにより、
たとえSYN floodが有効な攻撃手段だったとしても1台のホストで"どうこう"できはしません。

自分のメインのノートパソコン:

CPU: Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz (x4,HTT)  RAM: 4GB

の上でsshサーバーを動かして試してみた結果、ほとんどわからないような負荷しか掛けられませんでした。

しかしサブノート:

CPU: Pentium3 600MHz  RAM: 256MB

Windows XPのacceptするだけのプログラムを対象に試したところ、
CPUの使用率は100%になりマウスカーソルは動かず、フリーズ状態になりました。

=応用=
このコードを使えばポートスキャナーで有名なNmapの-sSオプションすなわち、SYN port scanが実現できます。
Asioのpingのソースのと同じようにすれば実装できるでしょう。

=注意=
このコードでサーバーを落とせるとは思えませんが念の為「悪用厳禁」です。