Drkcore

02 01 2012 c Tweet

cでパケットキャプチャを書いてみる

ProductName ルーター自作でわかるパケットの流れ
小俣 光之
技術評論社 / 1974円 ( 2011-07-09 )


同じようなコードの繰り返しで途中で飽きてきたが写経をやり遂げて、パケットキャプチャが動いたらちょっと嬉しい。

チェックサムの計算のしかた

対象となるパケットに対して、16ビットごとの1の補数和ををとり、さらにその1の補数をとる

となっているんだが、なんでコレでうまくいくのか理解できていない

sum = 0;
ptr = (u_int16_t *) data;
for(c = len; c > 1; c -= 2){
  sum += ptr;
  if(sum & 0x80000000){
    sum = (sum & 0xFFFF) + (sum >> 16);
  }
  ptr++;
}

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021