Ipdump
- 1. 37
47
53
ipdunp(コ ピー).C Page l
:1/1**iも お,1:;ヽ 事1り
Tl彗言ア1'サ,1夢言1歩
琴言
*キ
│::I需:│:す
**********:*********
副 :
晰 21Ю
"年
明 縮
制作・著作 榊 螺 α議お 血 商 品あ
51*
161#include くstring.h〉
1871111:│::: `:││:11ゝ
h〉
‖1使]×
『:言[言::言:::を:]]:::讐:1纂纂11
│:li IIE:li':::3[曇 換菫:警li晨言警春と量」≧[号i
│:│:*料*二塁:il奎塁塁五這曇│き 看侵議で書羞型叢言:奮
ご墨ぎ子を1夕
171ル:::**************************│
│:│ll鷲 │‖:なヨ│:bll〉
361#includeくsignal.h〉
381#define MAXSiZE 8192
391#define cMAX 256
401#define oPTNU‖ 9
411#define ON 1
鑑 ││::科 1::[[_lF 9enO″ /* Mac OS Xの デ フオル トフイEン タフエース名 */
:││││11権 :i!:`ili:[Itstm.h〉
馨閣1斜 ‖:{職 識読夕11)
笙1撫 嬬:轍鸞,ギ :「
D
::││IIil!1:_1::::'71`:11ゝ
h〉
::│l11:│││: li:i′llil;ゝ
h〉
::││││:li:: 11:│││:l;if_ether.h〉
鍮 析扮 雛
砒 肌 呻 咄 硼 :
露1壼lel11砲
11た
7:13k:思F各 昌t:`お 1籍efitt liLfE屯諏
'(b)そ
filte7.fig[IP_ADDR]?¥
こ61 :=1'
:││11:[:│::lit ::│ ′:│::馨 辱程13兄 留製:′
発ls廿 鵬t filt針 I
瑠耶葺鮮歯γ狂サ子I孝
'ラ
歩影‐‐・
JI緒
elitt liLfE曲
'こ
3)i:│「
::iilgiIIJ苦
[〕∫:iti冨 ユ
││:iillミ
_:1:I・ ゅ.?¥
謝 #面 ne FILTEげ 0ぶ 胤 淋 1
5「
uⅥ ……‐・・¨ ヽ一′ヽ
1ぽ欝諄i島::│:1:dli rl再 llli♂ :露d→ ?¥
::1擬efineFlLTELTCPω l't:::Flg"ぬ ち
∼
識
…
│ II鳴 封政臨」期 群諾rD畔
))¥
薔61 :11'
冷抹ぅな、、
││IIdefineFILTER_UDP⊂
p) (111「
震
1畷1玉:。::』lll:iモ :::.::rt)?¥
))¥
771ト
78
- 2. ipdunp(コ ピー).c Page 2
#ifndef __linux
int open_bpf(char *ifname, int *bufsize);
#endif ‐
│!││ ││││::│ll:lli:1:│::il:;:l:r軍
:::,:r *i:h):
V:│::│ll:」 翠tξ :li::tt:躙 r*把8:
void print_top_mini(struct tOphdr *top):
V:│:駈1島::l`:l[‖ :│』::り出aluお むif,iit ieO;
char ■lnac_ntoa(u_char *d);
:l:: :│::モ :::111ltfil:,│;
char *ip_ftoa(int flag):
vold help(char *cmd);
Ft minCnt ar齢
,char ttrⅣ)
int si
int c:
char ifname[CMAX]=
int opt[OPTNU‖ ];
extern lnt optind;
#ifndef__llnux
:│[u:lfbl:五 ldr *bp;
int bufsizei
#endif
struct filter fiiteri /*フ ィルタする情報
79
80
8︲
82
83
84
85
86
87
88
89
90
9︲
92
93
餌
95
96
97
98
99
00
01
02
“
“
05
06
07
08
09
︲O
H
︲2
︲3
︲4
︲5
︲6
︲7
8
0
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
/*BPFヘ ッダ構造体
/*BPFで の受信データの長さ
/*BPF内部のバッファサイズ
/
り
/
/
′
′
/
/
/
/
′
′
/
/
′
/
/
*
*
*
*
*
*
*
*
*
数
夕
字
グ
変
プ
文
ラ
ル
リ
た
フ
バ
ク
し
名
の
一
ス
得
ス
ン
ロ
イ
取
一
ヨ
グ
デ
で
エ
シ
の
卜
0
フ
プ
0
ツ
pt
タ
オ
pt
ケ
tO
ン
示
to
ソ
ge
イ
表
ge
/*
/*
/*
/*
/*
*/
一
値期初のンヨヽン
R
R
プ
鰤
OF
オ
*/
〓
〓
卜
値
門
ッ
R
;
⋮
⋮
⋮
⋮
R
R
;
期
DD
l
を
〓OF瑚
〓ON瑚瑚
〓ON
〓OF可釧巾暉鰤
る
l
夕
d
夏
載剛囲Ш団Ш剛剛凹剛つter‘f︲ter・fi
/*
opt
opt
opt
Opt
囃
opt
opt
麒
麒
/*
=
fil
油
詰 計 (3gitOpt・
電Q argv,Ъ d rdhftっ )卜 EOD I
case 'a' : /* all */ `
.
opt[ALL] = ON: 1 ‐‐ ‐‐
break; ・・ :‐ : ‐
- 3. ,│:Jl‐ ■
︱
メ
一
︱
︰
︱
︰
■
1
1
■
,
→
¨
一
■
l
´
´
一一
1
・
イ
・
●
一
一
■
一
・
■
一一
一
.
一
.
一
.
1
・
´
・
¨一
一
.
´
ぃ
●
.
■
一
一
●
︰
一■
ヽ
■
,
一
●
一
一
一
一”
一L
一,
〓
一
︼
,
■
●
い一
一
﹁
¨
■
ヽ す
︱
一一
,
一
,
一
一
・
″
一
]
¨
一
一
一
一
一
一
一
一
t
■
一¨
一¨
一〓
¨
﹁
︱
¨﹂
一
∴
,
一
一
一
一
・
・
・
・
4
,
ユ
ヽ
一
一 ■
, ■
●
い一
一
﹁
¨■
ヽ す
︱
一一
,
一
,
一
一
・
″一
]
¨
一
一
一
一
一
一
一
一
t■
一¨
一¨
一〓
¨
﹁︱
¨﹂
一
∴
,
一
一
一一
・
・ ・
・4
,
ユ
ヽ
一
,
t
,
す
一T
,
I
一
︰
︱
一
一、
一■
一
■
一
一
・
一・
■
¨
一
一
¨
一
・一
・
ヽ
・
″
一し
い一.一
一
‘
一
一
ヽ一
一
一′
︲
■
一一
ヽ一
一¨
一一
.
一
ネ
.
一
・
.
.
.
.・
一
・
一■
一
.
一
■
一
A
r
一ヽ一
〓
一
^r
■
●
・
一
一
一
¨一
■
一
.、
一一一一
一
一︶一
一
.
.
一一
一一.
﹁
一
・
一
一
一
一
﹁一
一
一一
、
一一
一一一
一
´
.
一
.
一
一
一
一
“
﹂
一
ヽ一
一
一・
・
.
■
´
´
一
﹁■
一
■
一
・
●
一
ヽ
﹁
一
一
一
■
一
一
ネ■
¨
一
¨
,
■
一
‘
〓
一一,
■
“
枠
一・¨
●
ゴ
い
一
︲
﹁
.
■
ギ
﹂一
一一
■
,
.一■
一
●
F
●
一■
一
■
ヽ■
1
1
一■
一
一
一
一
一
,
パ
一
﹂一一
一・一一
一一..
,
.一一
一
■
一
一
一
一
一・一・・
.
・一・一
・一
,
一
.
.一
一
一・・
・一
一
一
....
一
・
・
・
・
・・
一・・一
一・
一
一
一一
一
一
一
一
一一
一.
一・
一
.
一一
¨
一一
一
一
¨
,一
〓
....
一一一
・.一一
一一一一
一
一﹁
一
´一一一
一.一一
一■
一
一
一
一
一
,
・
一 ■
′
,
, 〓
一
^■
一●
・
・
ヽ
一 ●
一●
︶
■
,
■
,
●
, “
・
^
・・¨
・・・
・
︶
摯
・諄
摯
一
種
′.
一・・
・・・・¨・・
・
・¨
r
・・・
,
・・
・一・一一
.〓
一
一
・・・・
・一・
・
・.一
・
・・・・
・・・・・・・
・・・・・
r
・
・・
・
・
・・
一一t一
一一一
一一一
一一・一
一一一
・
・一
・.一
一一
〓
.r
一
一一一
一
一一 一一
﹁一.
.一 ・・ ・ ..
・・ 一 一一
・一
ヽ一 一一
一一
■
′
レ
・︲>;
,︰ne
コp価p
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
l
- 4. ipdullp(コ ピー).c Page 4
struct ether_header *eth;
struct ether_arp *arp;
struct ip *lp;
struct icmp *iomp:
struct tophdr *top:
:1:IC:u単1:‖1lsiり:il
void *p;
vold *pO:
int len:
int disp;
struct timeval tvi
struct tm tm;
/ホ [thernetヘ ッダ構造体 */
/*ARPパ ケット構造体 ‐ */
/*IPヘ ッダ構造体 */
/*ICMPパ ケット構造体 */
/*TCPヘ ッダ構造体 */
/*UDPヘ ッダ構造体 ‐│ ホ/
/*データ受信バッファ */
′:会孝τ?務露畠蒼裏芋泰甲ず
`ン
タ‐:′
/*受 信したデータの長さ */
/*画 面に出力したかどうかのフラグ */
/*パ ケットをダンプした時刻 */
/*localtimeで の時刻表示 */
#ifndef__!inux
/* BPFか らの入力 */
r/1b騒
雰′(79Jを ‐ 取り出しイ
⇒)│ぁ iン 形 o4澪 │‐
「 晩 │ifp`∫
):髪
1,:ad″
)'ad(s'・
buffl‐ bufsi晨
‐‐
}覇鮒揖鷺:鰭卜材│も│‐
■bp = (struct bpf_hdr ホ) ((char *) bp + bp― 〉bh_hdrlen + bp―〉bh=caplen); ‐‐
l bp = (Struct bpf_hdr *)BPF_WORDALICN((int) bp); .
■ ' │
/*パケットダンプの時刻をセット*/
memopy(&tv. &(bp―〉bh_tstamp), sizeof tv):
夕♀C:││:撃
離:癸りT舌ダ峯世糸λうソを培電I*/ 「
p = ,0 = (char *) bp + bp― 〉bh_hdrlen;
len = bp― 〉bh_caplen:
#ifdef DEBUG
/*BPFヘ ッダ構造の値を表示 */
printf(″ bpf_le■ =%d,″ , bpf_len):
::││:││:│:│!ilililii″ , :::::│:。
::│:l;i;
#endif
/*次のwh‖ eループのための処理 */ .
bpf_len ―= BPF_WORDALICN(bp― 〉bh_hdrlbn + bp― 〉bh_cap10n): :
#else
/*Linux S00K_PACKETか らの入力 */
if((len=read“ ,buff,脚SIZD)〈 0{ ― │
perror(″ read″);
九l奪;IfサじIL刻 をセットツ ー ■gettimeofday(&tv, (struct timezone *) 0); ‐│ │ :
夕1° :1吉:撃:3[災 り151:第峯世糸7ずTを1よ り11/ .p = pO = buff:
#endif
‐ │ ‐│‐ 1 11 ‐ 1 11 1‐
/*
*パケット解析ルーチン
*/
disp=OFF: /*画 面に出力するかどうかフラグ */ : ‐
/*Ethernetヘ ッダ構造体の設定 */
:ttts縄::ICts:ll:It:i::霊〕d:あ : ■・ ■
if(ntohs(eth― 〉ether_type)==ETHERTYPE_ARP)I
arp = (struct ether_arp *) p:
if (opt[ARP] == ON && FILTER_ARP(arp))
l :::tSi::∫
││:hifel,_::ther―
type) == ETHERTYPE_IP)
, += ((int) (lp―〉ip=hl) 〈く2):
if (lFILTER_IP(ip))
continuei
if (opt[:P]== ON && opt[TCP] != ON && opt[UDP]
プらトコノと
'^
准象 ヘ
I= 0‖ && opt[I囲
あ 4
- 6. 399
40111
402
415
437
i pdulnp(コ ピー).C Page o
3911 */
3021chhr■ llac」toa(u_char*d)
翻轟eim脚_HACS■_59
:甜 1胆:lム :了 ♂器ボ ざモit‖ XたMcsTR]: /*文 字列に変換 したMACア ドレスを保存 */
3961 ______″ ″^^″^^‐ “^A― ・″An… 、い0¨・い0_″
:::I Snprintf(:lli,り :1キI,C:I】i,″‖::II%::li10:I:l':X il102x l%02x
4001 return stri
器:1/1 void print_ethernet(struct etheLheader*eth)i
1駆 │:お
雙能
Ethernetヘ ッダ0表示
螢遇1 131き :lrutt ether_heater*eth: Ethernet´ ヽッタFl韓 運三1本 ^ヽ
くつJく インタ
1♀ :│:戻
り壊し
劇:│ぼd printetherntttstruct ether■ e“er tttD
11111 int type = ntohs(eth― 〉ether_type): /* Ethernet`'・ イプ */
翻
rp舟
鮮占墨翼湿3 Ethemtt Fram`鶏 つ;
綱:ld:Lnゴ 像樋mtt Framざ 称つ;
1:♀ l printf(1+― ――――――――――――――――――――――――すこラ
II 「「 ―
「「1- 「
″
1::│::IIIIに1-53:ITF:[lEI111う
I五
五
'こ
こ:T::l:l;、 _Li_」 L_il.″
:::│ ::li:li:l_:lilililll:11」
:L_里里1=112:│::::≧ 11191=J1211と と1_____″
1:;│::11:│こ│― 冨17:こ
画 藤
;:II11 :::::::l:、 ^二 __.、 、・・
″
4281 :│キ
1:li::_lilili_111211il:li12=11211211二
≧11121=:1211と と:_二
三二_″
1561 r'…
…`″十一―
「=「
‐‐ ‐一 ‐■―・FYn″ ):
機l rp絆 鮮占I翼乙こう│… pF予 ムモ子ピ│こ こiLthi %5ul¥n″ ,typ● :
4331 eise
4341 ::iilltf`11_1lL呈
1121_1こ 221____2益121準 │¥,i' type);
4361〕
鴛創奪v“ d「 htF“ 帥鵬t ether_arp粕 げ
霧別 :機
能
AR「 パケ ツ トの表示
競:│ :弓
1言 :な
lruct ethё r_arp*arp: ARPパ ケ ッ ト囀専造クトヘのポインタ
麟91ぶd ri雌印
“
廿戯ether」ゅ轟ふ
競:II static char*arp_op_ntte□ ={
競創:戻
り壕し
4501
″Ondefine″
1`II
″そ瀬う
:良
じこubpl)″,
凝露F籠21詰争矢τL写ぜTeり
])
1::l if.pく O H ttPpP_MAXく o"
::l1 2[:11:s::1212221i_全 11111と 1________+― ―――――――――――――――――――――――一+¥n″):
46:│ :l11:│(二
1 lIF3 77:こ 1 瓦II玩二TT:T「i7:11:IT15反
罵511玩151T軍罵7:
l::│ li:│:i:::2,を ::再:::L:15':'IF=IRPII17::I:ll::li:│::lilキ
liillll:
お二l r‐
`
ntohs(arp■ 〉pa_hdl・ ar_hrd).
1::l printf(∫ 1121ill12:i31軍 11111lIE二2生三軍三上EEEllttEIIEll_1111_1_lIII¥iレ ,:′ :
Ether)″
- 7. ipdump(コ ピー).C Page 7
:│││:││:│:!:::ill:l:::!!lllillliliI:::::II::lililllllillili:Thdr.ar_。
p),
:│││::│:1_::::::_!!lil!1::lil,=里 121上 121≧112=E12≧1二
=_._=__―
;
″
+― ――――――――――――――――――――――――+¥n″):
printf(″ I Source IP Address: %15si¥n″ ,
inet_ntoa(*(struct in_addr *) 3arp― 〉arp_spa));
printf(″ +― ―――――――――――――――――――――――――――
・ ″
+― ――――――――――一―――――――――――――+¥n″):
printf(II Destinatl♀
:│!19,All:露::a(arp_〉arp_tha));
printf(#│二
三二I三二三二III三二三二II三二二三二II二軍7言
ラ
テT 「
printf(″ I Destination IP Addressi %15sl¥n″
inet_ntoa(*(struct in_addr *) &arp― 〉arp_tpa));
l printf(″
+――――――――――――――――
print_ip(struct ip *ip);
* IPヘ ッダの表示
*引 き数
* struct ip*ip: IPヘ ッダ構造体へのポインタ
*戻 り値
* なし
*/
1°
│││││││:FI:1:::litil!11と
:lTl_1薦
T:::::I:::ス :モ F::11:IT薫
::::::i:│:11);
ip―〉ip_v, ip―〉ip_hi, ip_tt
:「 11:;(Ii TII再 lTTT:FT+ 13二 i FF:%3sl FO: %5ul¥n″ ,
ntohs(ip―〉ip_id), ip_ftoa(ntchs(lp― 〉ip=off)),
::11:│(l1211::21≧
11:lif:7111=2E菫
ili::::::::::::::::::I::::lil:│:・
‐
::111:{li:::li::lil:::i:::liliiil_1と
_&(ip―
〉ipll':│;,;'__二
___+¥ni);
::11::│'1 5111TIIII:ス
TF ス
II「ここy lt15sl¥n″
,
inet_ntoa(*(struct in_addl_1と
_11lEI≧ l呈
=J211≧
1_1_____+¥n″ );
l printf(″
+― ―――――――――――――――――――――――
/*
* char *ip_ftoa(int flag);
*機能
* IPヘ ッダのフラグメン トビッ トを文字列に変換
* static変 数を使用 しているため、非リエン トラン ト関数
*引 き数
* int flag; フラグメン トフィール ドの値 ‐
*戻 り値
* char* 変換された文字列
*/
char *ip_ftca(int flag)
{ __ _ _
I£1織lCIIF鵬 凸臥x(11】 :も f:'シ sI:Lf f1057グ
メント,フ ラグを琴す文字
static char str[lLFLG MAX+1]: /*戻 り値を格納するバッファ ・static char str[
ld
能
vo
機
*
*
*
4ソ 9`
イ
,
寿勢多イオtl
ろiiⅢ
:‐
4教
乏ふtt、 ヽら
static char strHP_FLG_MAX+1]: /*戻 り値を格納するバッファ
unsigned int mask = Ox8000;
ク 形登多変int i:
/
′
/
/
/
*
*
*
*unsi
for(1=0:
if (((flag
str[i]=
e:se
str[i]=
l
str[i]= '¥0'
i〈 IP_FLG_mAX;i+十 )I
く〈i) & mask) != 0)
f[i]:
'0':
- 8. i pdullp(コ ピー).c Page 8
return str: ‐・ ‐■・
, │ │ ‐││ ‐│ . │ 1 1■ 1
1
/*
* char ホip_ttoa(int flag);
*機能 ‐ ‐・
・ 11■ ■ │
* IPヘ ッダのTOSフ ィール ドを文字列に変換
* static変 数を使用 しているため、非 リエン トラン ト関数
*引 き数
* int flag; 10Sフ ィール ドの値 ‐ 「 ■ ■・
*戻 り値
* char* 変換された文字列
*/ ‐
lhar*ip―
ttoa(int flag) . ― ‐ 1
static int ´f[]= 〔'1', '1', '1', 'D', 'T', 'R', 'C', 'X'I:
/*TOSフ ィール ドを表す文字
聯胎胸脚e悛
常犠亀‐れ1'
Чfl鮒ぜ千iil!沸
薔:ぶ
+iL I)
eise
l Str[i]='α
:
str[i]= '¥0';
return str:
l
/*
1 lltt print_icmp(struct i,Tp*1'mp)1 ‐_‐ ‐│
* iCMPヘ ッダ・データの表示
*引 き数
*戻 り稽
ruct iCmp*icmp; ICMPヘ ッダ構造体 ‐■ ■ : 11.● :
* なし .
*/
1°
id printi呻
“
truct i呻
ザm ‐‐・ ―
7
8
9
0
1
2
3
4
5
6
7
8
59
60
6︲
62
63
64
65
66
67
68
69
70
7︲
72
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
98
99
∞
01
02
03
餌
05
06
07
08
09
︲0
■
2
3
4
5
6
7
8
9
0
1
2
3
4
4
4
4
5
5
5
5
5
5
5
5
5
5
,
7
7
7
7
7
7
7
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
ハ
ー
ー
ー
ー
ー
ー
ー
ー
ー
2
2
2
2
2
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
/
/
/
/
*
*
*
*
St'::1。 °
1::│;ち羊
pe_name[] = {
″
Undefine ,″
Undefine ,″
Destination unreachable″ ,
″
Source Ouench″ ,
″
Redirect (change route)″ ,
″
undefine ,″
Undefine ,
#[:::fi::ツ
iSt″
'
“
Undefine ,″
Time Exceeded″ ,
″
Parameter Problem″ ,
:│││:ii:││:│:│!:il::″ ,
″
Address Mask Request″ ,
;1111::R″MaSk Reply″ , ‐‐
l;
#define lcHP_TYPE_‖ AX (sizoof
int type = icmp― 〉icmp_type;
/* Type o ■/ ‐. 1 . :
/* Type l */
/* Type 2 */
/* Type 3 */ . ‐
′: :サ:: : :′
/* Type 6 */
′│ │::: : i′
/* Type 10 */
/* Type ll */
/* Type 12 */
/* Type 13 */
/* Type 14 */
′ユI予 :: │: 1′
/* Type 17 */
/* Type 18 */
′:I`l:おち7手を表す長拳列:/
り撃1鵬 4り鷺,f typ■
name[o])
脚 翼著銀 景臨 I膜│″ Fぶ二a鵬 腱″.; ・
‐
::11:;{#│ T,5:T 153i 3553T 1511 5吾 :IIIIttT ―
――-13こ
i軍 古γl″
);
printfル 響I≧ 1型E・ttIB♀二19聖I≧ l聖軍22111_112'E`l聖 :≧ l聖
=:L:絆 ;:
- 9. ipdump(コ ピー).c Page 9
*)
if
*
ホ
*
*
1
/
6 2 5
6 2 6
6 2 7
6 2 8
6 2 9
6 3 0
6 3 ︲
6 3 2
6 3 8
6 3 4
6 3 5
6 3 6
6 3 7
6 3 8
6 3 9
卸
6 4 ︲
6 4 2
6 4 8
6 4 4
6 4 5
6 4 6
6 4 7
6 4 8
6 4 9
6 5 0
6 5 ︲
6 5 2
6 5 3
6 5 4
6 5 5
6 5 6
6 5 7
6 5 8
6 5 9
6 6 0
6 6 ︲
6 6 2
6 6 3
6 6 4
6 6 5
6 6 6
6 6 7
6 6 8
6 6 9
6 7 0
6 7 ︲
6 7 2
6 7 3
6 7 4
6 7 5
6 7 6
6 7 7
6 7 8
6 7 9
6 8 0
6 8 ︲
6 8 2
6 8 3
6 8 4
6 8 5
6 8 6
6 8 7
6 8 8
6 8 9
6 9 0
6 9 ︲
6 9 2
6 9 3
6 9 4
6 9 5
6 9 6
6 9 7
6 9 8
6 9 9
畑
7 0 ︲
7 0 2
1響RIキ 富腎:首::i百。:tl:nlΨ
=彎
:躍鷺:::n::l鷹 eFi■ %5u・ l¥洵
`
::ilifll:│:::1権 :縫
E::=1‐
} :│,iti(lin:│」
R:::│。ng)
tohs(icmp― 〉icmp二 id)t ntohs(iCmp― 〉icmp_seq)):
――T■
=+¥nr);
e:le if (icmp― 〉icmp二
ifp∫
IRI早マ
)lC':三
:?db F'° %ttl Neit MIり :
l15ul¥n″ ,
・ ‐
ntOhs(icmp― 〉icmp_pmvoid)i_ュ
121i`19聖EI≧12型2三12至上里1翌ととi:幸1')iprintf(″ +― ――――――――――――■
=―
‐――――――‐
%101ul¥n“ :
ntohl(icmp― 〉iOlnp_vo:0);
l printf
liet_ntoa(*(struct in_addr
cllp― 〉icmp_type=5)〔
Router IP Addressi
“
c呻→I:[出:む
“
D;
:lliti〔
″li貫::1を │:Tll
l :I::tif:tT:品 F二
'T:話
FII,Fこ
ニ
ニ
TTテ 1 ――――――――――――‐―+¥n″);
%101ul¥n″ ,printf(11 U,useci・ (lnsigned:ong)ntohi(iom堕 ≧聖里型21Jととi_____一―+¥n″):printf(″ +― ―――――――――――――――――――――――
:│IIl亀ili:ilililiFiMl[,li:'言11‐FII‐
111′
群1継i齢‖(structtcphdri": _..‐ ■break;
Ca:FillPI::,マ
::lict udphdr *) p);
break:
l
│
/:濃
罷TI11し ::』L讐l::I[ti:1菫 重││:│:で 返送される部`))
ilittructtcphdr*tcpl TCPヘ
ッダ構造体
* な し
ぼd"htt卿m tstrtt tophdr社●
"〔
printf(IPrOt0001:
:「 11:;(F:1212221i_IgI111と 1――――――――――――――――――――――+― ―――――――――――――――――――――――=+¥n″ )
brintf(″ I Source Porti %5ul Destination Porti %5ul¥n″・ ‐
ntOhs(tcp→ th_sport)i ntonS(tOp― ntLdpOrt))「
printf(″ t―
――一―――――――――――――――――――――+―――――――――――‐――――
::11:││`i二 :::i[III 雨 こ罵::7TL二
__.___+__L__「 __T= TT 175TET軍
F'「lln″
)
(lnsigned long)
printf(″ +― ――――――――一―――
ntohi(top― 〉th_Seq));
――――――――――
―
―――+¥n″)
ユニ■1_+■_■ ■
=____Ll_________―
―――…+¥n″)
*
〓
I
l
,
/
4
1
void print_tcp(struct tcphdr *top):
機能
TcPヘ ッダの表示
:
引き
欝ruct tophir *tcp: TcPヘ ッダ構造体
*戻 り値
* な し
1:lli鷺
1冨:::::i言clttitt°
pl
brintf(″ t―
―――― ―――――――――――+¥n″)
brintf(11。
,:そ[::_;:il:pOrt), ‖::Isti::1,:li::。;:∫ ;: %5ul¥nr
- 10. i pdulnp(コ ピー).c Page 10
*戻 り椙
t flag; TCPの コントロニルフラグ
* char* 変換された文字列
*/
ta真 ¶ 鷲 llf冒 :中 ≒ ● 写・
#define TCP_FLC_‖AX (sizeof f / sizeof f[0])
static char str[TCP二 FLC_‖AX + 1]:
unsigned int mask = 1 くく(TCP_FLG_‖AX - 1);
int i:
for(i=0:iく TCP_FLC_MAX:i‐ ){
if(((flagくくi)&mask)l=0
str[i]=f[i]:
eise
str[│]= '0' ;
ltr[│]=,YO':
return str:
l
/*
* vold print_udp(struct udphdr *udp);
:「 ll:;(二 1 3:II:吾:: 1こ 罵:こ
「1 +―
――――-1-「
1 1「「「藉T3TこT軍 再'11半
n‐ )
:「 111:(:1里 i:il:IT:│::│こ │12111::::≧
lL=2:1と とil_こ
=二
_=,15TIT軍
1'「
+Ynr)
:;IRI:(111:::│:lTll:::テ │:││::│::i:llil:│と::IET―
―――瓦
::T軍:ラ
+¥n´,
::11[i(:iE:│:li::│:-12E=二
│,111嘉≧1奎±111壁 Ll_112Li`11壁 1奎::│!I)i
printf(912Li`112:≧ 11=2望 里と1_112'Ell軍 PI≧11=翌二塁ことi二 ____._=_■ ■■_― +¥nr)
l
/*
1機能
*tCp―ftoa(int flag):
‐.
*引 き裏
Pヘ ツダのコン トロールフラグを文字列に変換
/
4
ノ
/
′
/
*
*
*
アフ
ク
ツ
ス
バ
マ
る
す
す
出
納
り
格
取
数
を
を
変
値
グ
プ
リ
ラ
一
戻
フ
ル
*
*
*
/
/
′
/
03
“
“
06
07
08
∞
︲0
︲1
12
︲3
︲4
︲5
6
7
8
9
0
1
2
3
4
5
6
7
28
29
30
3︲
32
33
34
35
36
37
38
39
“
4︲
42
43
4
45
46
47
48
49
50
5︲
52
53
54
55
56
57
58
59
60
6︲
62
63
64
65
66
7
8
9
0
1
2
3
4
5
6
7
8
9
0
・
1
1
1
1
4
1
2
,
彙
∠
,
5
‘
2
9
1
∠
9
6
I
Y
6
7
4
′
7
1
1
7
7
4
′
7
う
1
7
n
v
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7
'F'I;か TCPフ ラグを表す1文 字 :プ
*機能
* UDPヘ ッダを表示
*引 き数
*戻 り値
uct udphdr*udp: UDPヘ ッダ構造体へのポインタ
* なし
*/
ヽだD
前景色を青に */暉!墨:ボEll弾:
brintf(″ Protocoli UDPヽ
::111:(II 3:こ
「:: F:IIi
:│111:(:12::│::l:≧
望L=呈22111L_112LE:│::i:│IF12211と と二=「
,こ こT薫 スラ│¥nr):
:;111:│::││:│::│;;IL型
11):L」
::│』:::::│llil‖││:::「豪―:ラ
… …………+¥n″);
printf(″ Protocoli UDP¥n″ ):
prinif`It-1-― ――1 7 ― ―一rr―
――十一―――――――=二
■■‐‐ ―=― ‐―――・―・+¥n
%5ul Destination Port: %5ul¥n″
l
/*
* void dump_packet(unsigned char *buff, int len):
*機能 │
* Ethernetフ レーム先頭から16進 数ダンプ(ア スキー文字表示)
*引 き数
1 ‖lli阜:1l Char*buffi 多じび事急蒸77毅
先頭アドレス
*戻 り値
* なし
*/ ‐
rid dm―
packet(ulnsiened char ttuff=int io?.:│
ジ竜ЙI、 Lt17:
- 12. ipdw (コ ピー).c Page 12 1「 018q 。_(_bC)彎 剛bq:
:::l iち
`1円
││メ│::1181躙│も イ十L)く のI
:::│]'pl:円:l∫::::iご 18:「18‖ 1為 イナLバ 切t ぃ餞交t― よキ`:ι :l ini ll:│
8611 1oturn ‐1:
8621 1 l爾 二ヽす濯‖ゞ群;曹 V叫謂1鍛
863
l (0' =+ i :■ Ol 〉1 10 = i) lol l卜8【
ヽぼてくヽ離轟61・ `
│こ 8'
即時モー ド1/ }(‐ ti●31〉 i380Fキ │〉 i li tt)101 i38'
=1: ´^、
r i(it]11● d.`101` )linilq l18::::│ ク=臀 Fモ
ー ド1/
'`tな
い
ill,i17 1麗:
鍵,l it`1胃│が│::1‖ 測腱│‖‖::腋穫,″ ,│)く
゛I
:(‐
`)11‖ 1ヽ q l l鍵
│:::│ ::器I寓 :
0091} iOi
“
pl :_ __ ヽま疑豊毯藤灘①群Q書量 *、 li薔:
3711 return bpfd:
:;:ILndif
餞 甲 郡 慮:韓 氏酔「
魯曜二『 1覇
警
:遇 1機llil._ _
, 14 )111111 1腱 :
│( ■)1ま f!:ヽ ■ leel
鮒 │lil:距│:華
│││ :lii::│:│::卜lill:l:,:::│1鶴 輻 輝
t貯
:ll]鮨
鷺 iI:│ 1露│
_ 30iO IS08
8751v● id helptohar相 哺
87611
301「 i5FinT(:モ abrr,″ default:%s― p arp ip iolnp top udpVn″ ,omd):
88211endif
8831}
ltOt
,omd): :(` .)1よ
nil:i° │:::
{ │卜08
1303
1(` 11¥ )11■ 1lq 1008
_鵬 囃理雨L桐護:盤
:(3ヽ 131,」 4オ │「:1 9臓 s「 111■ 、slo,lQ(1 1loqo l,: ■18:8
爵欝 =│卜 1念
さtく ヤーtヽ 118 , こ18
叢 弯Iト ホ 1313
滲え― ■ヽやく 卜 :う 嬌sf:キ :ヽ 、金lo ■ 11:8
矢 卜で 、て、・ア、e構 内1電 傘lol121■ づ●鸞: ■ 1813
麟 ヤ露 =10:3
やヽ 警で人 トキこ 卜、ヽ ま,│ ,1038
‐■│:,8
“
ェlol雄 1,1,oH3■1:■ 18鋤 1麟d´,oooま
弯ll::
li l轟
瞭墨轟食号
[I∫lill :、
:1彎:::│ギ
││││li ll:│
13S8
1・
、1ヽ 一■o、1ヽ 卜■てヽ ヽハ やR18ギ . e'3
1 (・・1 1卜 〉i ,0 ; 1) lol 1008
お
'(お
1橘1161ゃ
`‡
│‖ :qら
1彗 dll樹
I・│: │:::
i130ヽ d 388
1 ‐卜88
1388
} (こ =く │) 11 1008
1(` ■Yl'311■ lo l),Is「 ,1lobli111鶴
::t l:::
l ieC8
,鑓
`*宝難0矢 卜や 、て、,′
、①輔内113■ │:事3
13118XA総・ 9112)静 蜃ヰ IS事 8
:(osi31彗 d* ‐│:」
(:綺
t話::::l111`I:押l:鷲:│キ:ボキ11:::l・
1: │:ま
:
1倫ud)lolloo 13卜 8
:「 ―Ftl」101 13)8
: │ヽ 卜8
i3卜 8
`
・ 宝戴① き人一
=(贅 く 卜 *` leヽ8
鳩耐 r」鶴二鋳#隋lI鱗
熙IF欄:(lud)ヽ olloq 1838
:「 ―nlulol '卜 e3
1 1ee8
:(l●d,oms■ _1li.111
`
`IV′
),r "nllゎtサ 111ギ ,1lobla)11■ 1lql l:認
1,キ
k― チ3り ooool鍮nll■ 1 1888