作者 主題: [問題]tcpdump進階的 filter 語法?  (閱讀 6339 次)

0 會員 與 1 訪客 正在閱讀本文。

Hawker

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 於: 2003-08-23 20:13 »
小弟今日碰到一個蠻麻煩的 filter 語法:如何 sniff IP 範圍在 192.10.0.0 ~ 192.31.255.255 的封包呢?
小弟唯一想到的作法是:tcpdump dst net 192.10 or dst net 192.11 or ... or dst net 192.31,總覺得這樣的語法有點笨,想請教大家有沒有進階( or Smart ?)的語法呢?希望能不吝賜教,謝謝!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17472
    • 檢視個人資料
    • http://www.study-area.org
[問題]tcpdump進階的 filter 語法?
« 回覆 #1 於: 2003-08-23 23:55 »
我也不太清楚,不知道能否用 supernet 呢?
算一算 192.10 到  192.31 可用的 mask 吧...
我沒試過。

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #2 於: 2003-08-24 00:59 »
172.10~31 共 22 個 C 這種很難切
我想最多是 172.16/20 (16c) + 172.10/22 (4c) +172.14/23(2c)
so
tcpdump src or dst net 172.16/20 and src or dst net .....

語法上不會有錯,但結果對不對要你試了才知道  :D

Hawker

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #3 於: 2003-08-24 10:16 »
引述: "abelyang"
172.10~31 共 22 個 C 這種很難切
我想最多是 172.16/20 (16c) + 172.10/22 (4c) +172.14/23(2c)
so
tcpdump src or dst net 172.16/20 and src or dst net .....

語法上不會有錯,但結果對不對要你試了才知道  :D


整晚研究的心得:
如果要 sniff 172.10.0.0 ~ 172.31.255.255 的 IP,可以用下列的語法:
shell>tcpdump  src and dst net 172 and \( ip[17] \> 9 \) and \( ip[17] \< 32 \)

用 subnet 方式應該也是解法之一,小弟受教了,謝謝 Abel 與 netman

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #4 於: 2003-08-24 10:32 »
yaeh~~
我也受教了~~
確實,用 IP field 直接寫也是一個好方法~~
不過....src or dst 似乎沒有考慮到哦 ~~


來篇教學如何呢 ?
我相信很多人都想學會 tcpdump 如何用,用的好

Hawker

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #5 於: 2003-08-24 12:53 »
引述: "abelyang"
yaeh~~
我也受教了~~
確實,用 IP field 直接寫也是一個好方法~~
不過....src or dst 似乎沒有考慮到哦 ~~


呵...小弟今早整理了一下昨晚的研究筆記,從混亂的筆跡中再仔細回想一次,發現上次的語法有個錯誤, 它並沒有做到 src and dst, 僅有 dst 而已, 如果要做到 src or dst, 語法應該如下:

tcpdump net 172 and ( ip[13] > 9 or ip[17] >9 ) and ( ip[13] < 32 or ip[17] < 32 )

如果要做到 src and dst, 直接將上述語法括弧中的 or 都改成 and 即可! :wink:

引述: "abelyang"
來篇教學如何呢 ?
我相信很多人都想學會 tcpdump 如何用,用的好

 :) ....承蒙 Abel 兄抬愛, 等小弟手邊的工作忙完後, 當會分享 tcpdump 的心得!
接下來得去征服 rrdtool 了, 弄不出像樣的報表, 很難跟上面交代, 唉~~~~~

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #6 於: 2003-08-24 13:48 »
嗯~
rrdtool 也不簡單哦~~
至少我覺得它裏面有些英文還真得給他用力看
才會看得懂

恰巧不才剛好懂~~
有什麼問題可以來討論看看...

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #7 於: 2003-08-24 16:59 »
除了 tcpdump 外,我想 ntop 也是一個不錯的東西
另外,還有一個可以利用的程式是 snort,
snort 雖然被視為 IDS , 但是其實也是一個 sniffer
你可以用像 rule 方式,將 tcp/ip 的資料記到資料庫去

var sniffer_subnet [[172.16/20,172.10/21]
...
alert tcp $sniffer_subnet any <> any any {msg:"I got you!";}

因為你若用 tcpdump sniffer 這麼大一段網路 , read (-r) 資料時是一個很大
的負擔,但若用 ntop 或 snort 將資料導到資料庫去,將有助於後續的處理.
你也可以寫像這樣,當有人寄信時,才啟動某些記錄動作,
這樣的做法顯然會更有彈性些
activate tcp $sniffer_subnet any -> $MAIL_SERVER 25 (flags: A; content: "RCPT"; activates: 1;  msg: "got a mail";)
dynamic tcp $sniffer_subnet any -> $MAIL_SERVER 25 (activated_by: 1; count: 5;)

你參考看看~提供你一些可行做法~
snort db struct 很好弄懂, protocol header,payload 都會記下來

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[問題]tcpdump進階的 filter 語法?
« 回覆 #8 於: 2003-08-26 07:49 »
引用
承蒙 Abel 兄抬愛, 等小弟手邊的工作忙完後, 當會分享 tcpdump 的心得!
接下來得去征服 rrdtool 了, 弄不出像樣的報表, 很難跟上面交代, 唉~~~~~

http://phorum.study-area.org/viewtopic.php?t=18496
Hawker 就看你的了哦~~不然 tcpdump 那一段會有很多人不懂的.... :o