タグ

ブックマーク / devm33.hatenadiary.org (6)

  • Boost.Asioの各種socketでsocket optionを有効にする - ブログのタイトル

    Boost.Asioでsocketのsocket optionを有効にする方法は2つあるんですが(もっとあるかも) 1. socketのnative_handle()を呼び出す。 native_handle() http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/reference/basic_socket/native_handle.html を呼び出してファイルディスクリプタ(ソケットハンドラ)を取得し、 自分でsetsockopt()を適用する方法。ただし、これは環境依存コードになるのでやめた方がいい。 2番目が正当なやりかた。 2. socketのset_option()にSettableSocketOptionをみたすオブジェクトを渡す。 SettableSocketOption - Type Requirements

    Boost.Asioの各種socketでsocket optionを有効にする - ブログのタイトル
  • 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/S

    SYN floodのコードをgithubで公開 - ブログのタイトル
  • How to extend Boost.Asio - ブログのタイトル

    この記事はC++ Advent Calendar 2012 12日目の記事です。 Boost.Asio、みなさんもお使いのことと存じますが、あれこのソケットなかったっけ? とかこれもAsioで使いたいなぁと思ったことはありませんか? そんな時のためにこの記事ではBoost.AsioのProtocol, socket option, serviceの拡張を扱います。 基礎知識: I/O service: ご存知boost::asio::io_service I/O object: 実際にAsioを使う人が触るobject。socketやtimerなど。(例: boost::asio::tcp::socket, boost::asio::deadline_timer等) Service: boost::asio::io_service::serviceを継承しI/O serviceに登録される

    How to extend Boost.Asio - ブログのタイトル
  • TCP Header class - ブログのタイトル

    とりあえず前の投稿の内容 + 下記のtcp_header.hpp とで一応SYN flood らしきものが作れました。 ただシステムコールレベルで socket(AF_INET, SOCK_RAW, IPPROTO_TCP) を使用していて、IP_HDRINCL を有効にしていないためか、 カーネルが勝手にRST を送信してSYN floodで重要なsyn -> ack -> 放置、のはずがRSTで終了されるので攻撃になってない状態です。 以下が tcp_header.hpp ですが将来的にはTCP Header optionにも対応したいので冗長な部分が多々有りますが、 気にしない方向で... ー 追記 ー io_service.reset() よばないといけないよね... tcp_header.hpp は途中でLinuxかそれ以外で分岐してますがLinuxでないとコンパイルが通らないと

    TCP Header class - ブログのタイトル
  • *[プログラミング]boost asio raw socket programming 2 - ブログのタイトル

    ようやく自分の頭の中でboost.asioのローレイヤーネットワークプログラミングが明らかになってきました。 まず基。 asioではraw socket生成にbasic_raw_socketを使います。 これはLinuxの生のシステムコールを使用した場合の raw_socket = socket(AF_INET, SOCK_RAW, int protocol); にあたります。 ここでbasic_raw_socketのテンプレート引数として1つ前の記事のようなクラスを与えてやります。 これでユーザーが定義した独自のローソケット用socket, resolver, endpointが作れます。 boost::asio::io_service io_service; // ソケット作成 boost::asio::ip::rawtcp::socket(io_service, boost::as

    *[プログラミング]boost asio raw socket programming 2 - ブログのタイトル
  • boost asio raw socket programming - ブログのタイトル

    ブログ書くの久しぶりですね。 最近、boost.asioでrawソケットいじれたれたらいいなぁと思ってずっとicmp/ping.cpp を見てました。 icmpだけできてもあれなんで、他のプロトコルも追加してみたいなと思い資料を探していたのですが、 http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/reference/Protocol.html こいつを満たせばいいですかねぇ。 てことでまず boost/asio/ip/icmp.hpp // // ip/icmp.hpp // ~~~~~~~~~~~ // // Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boos

    boost asio raw socket programming - ブログのタイトル
    y_uuki
    y_uuki 2012/08/21
  • 1