Linux下tcpdump命令的使用问题...

freshman_fantom_ywj 2011-12-09 04:21:13
最近要使用这个命令来控制抓包,有几个问题:

1. 如果想抓从一个IP段到另一个IP段(不是整个网络)的包 ,有什么简便的表达式没, 我现在知道的就只有:
tcpdump src \(<host1> or <host2> or <host3>... \) and dst \( <dhost1> or <dhost2> or <dhost3>... \)

2. 我想用-w <filename> 将包存到一个文件里, 但额外的是想有没有参数 可以控制这个保存文件的最大容量,当超过这个最大值是就停止执行tcpdump !

3. 尝试后台想用 execvp("tcpdump","-c 3000 -i eth0 host 192.168.1.1",NULL); 这个函数去启动tcpdump, 但是无意中发现 如果参数中 加上"> tcpdump.file" 这个重定向到文件的参数的话 ,execvp 会执行失败. 求解...

呵呵, 有点纠结 , 坐等回复!
...全文
324 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 forestdb 的回复:]

dst net net
True if the IPv4/v6 destination address of the packet has a net-
work number of net. Net may be either a name from the networks
database (/e……
[/Quote]
谢谢了, 不过这是匹配一个网段吧... 我想匹配随意给定的IP段, 例如 : 192.168.1.5 ~ 192.168.1.50 ... 一直没想出什么好办法 看Tcpdump文档都看了好几天了.
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 forestdb 的回复:]

前两个问题都可以通过man page解决。
man tcpdump可以发现[ -C file_size ],猜猜都能知道什么意思吧。
另外可以发现,src dst属于expression,而man pcap-filter有完整的列表,可以选取自己需要的。

至于execvp,这属于系统编程的范畴,简单的说,如果是编程来重定向,需要先
fd = open("tcpdump.file")
……
[/Quote]
受教了, 谢谢哈 !!!
ForestDB 2011-12-12
  • 打赏
  • 举报
回复
dst net net
True if the IPv4/v6 destination address of the packet has a net-
work number of net. Net may be either a name from the networks
database (/etc/networks, etc.) or a network number. An IPv4
network number can be written as a dotted quad (e.g.,
192.168.1.0), dotted triple (e.g., 192.168.1), dotted pair (e.g,
172.16), or single number (e.g., 10); the netmask is
255.255.255.255 for a dotted quad (which means that it¡¯s really
a host match), 255.255.255.0 for a dotted triple, 255.255.0.0
for a dotted pair, or 255.0.0.0 for a single number. An IPv6
network number must be written out fully; the netmask is
ff:ff:ff:ff:ff:ff:ff:ff, so IPv6 "network" matches are really
always host matches, and a network match requires a netmask
length.

src/dst 192.168.1

net net mask netmask
True if the IPv4 address matches net with the specific netmask.
May be qualified with src or dst. Note that this syntax is not
valid for IPv6 net.

net net/len
True if the IPv4/v6 address matches net with a netmask len bits
wide. May be qualified with src or dst.

net 192.168.1.0 mask 255.255.255.0
net 192.168.1.0/24
  • 打赏
  • 举报
回复
还是没有找到办法 解决怎么表示一个IP段的问题.... 纠结啊!
ForestDB 2011-12-09
  • 打赏
  • 举报
回复
前两个问题都可以通过man page解决。
man tcpdump可以发现[ -C file_size ],猜猜都能知道什么意思吧。
另外可以发现,src dst属于expression,而man pcap-filter有完整的列表,可以选取自己需要的。

至于execvp,这属于系统编程的范畴,简单的说,如果是编程来重定向,需要先
fd = open("tcpdump.file")
dup2(fd, STDOUT_FILENO)
完成重定向,然后再execvp。

很明显LZ想做package caputure相关的动作,推荐一个库libpcap。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq120848369 的回复:]
net net mask mask
如果 IP 地址 匹配 指定 网络掩码(netmask) 的 net, 则 逻辑 为 真. 本原语 可以用 src 或 dst 修饰.
net net/len
如果 IP 地址 匹配 指定 网络掩码 的 net, ……
[/Quote]
用网络地址 加上 网络掩码 能确定某段IP么? 不能吧.
qq120848369 2011-12-09
  • 打赏
  • 举报
回复

net net mask mask
如果 IP 地址 匹配 指定 网络掩码(netmask) 的 net, 则 逻辑 为 真. 本原语 可以用 src 或 dst 修饰.
net net/len
如果 IP 地址 匹配 指定 网络掩码 的 net, 则 逻辑 为 真, 掩码 的 有效位宽 为 len. 本原语 可以用 src 或 dst 修饰.
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]

exec是执行一个二进制程序, 重定向是shell的功能, 而你执行的不是shell而是tcpdump这个程序, 所以重定向没用.


[ -C file_size ] 好像是那么个作用,不过描述里更加复杂一些, 和-w配合不知道什么效果。

不会
[/Quote] 哦 原来执行失败是因为 这样, 开始愣没想明白! 谢谢了
qq120848369 2011-12-09
  • 打赏
  • 举报
回复
exec是执行一个二进制程序, 重定向是shell的功能, 而你执行的不是shell而是tcpdump这个程序, 所以重定向没用.


[ -C file_size ] 好像是那么个作用,不过描述里更加复杂一些, 和-w配合不知道什么效果。

不会

课程简介:Re:《 Linux 网络管理命令 》  ---------------------------------------内容提要: 01/22)命令 ifconfig:配置或显示网络接口信息02/22)命令 ifup:激活网络接口03/22)命令 ifdown:禁用网络接口04/22)命令 route:显示或管理路由表05/22)命令 arp:管理系统的arp缓存06/22)命令 ip:网络配置工具07/22)命令 netstat:查看网络状态08/22)命令 ss:查看网络状态09/22)命令 ping:测试主机之间网络的连通性10/22)命令 traceroute:追踪数据转发路由状况11/22)命令 arping:发送arp请求12/22)命令 telnet:远程登录主机13/22)命令 nc:多功能网络工具14/22)命令 ssh:协议详解15/22)命令 wget:命令行下载工具16/22)命令 mailq:显示邮件传输队列17/22)命令 mail:发送和接收邮件18/22)命令 nslookup:域名查询工具19/22)命令 dig:域名查询工具20/22)命令 host :域名查询工具21/22)命令 nmap:网络探测工具和安全/端口扫描器22/22)命令 tcpdump:监听网络流量            本人在教学和实战过程中发现,即便是有一定运维经验的人,可能已经能够搭建一定复杂度的Linux架构,但是在来来回回的具体操作中,还是体现出CLI(命令界面)功底不够扎实,甚至操作的非常‘拙’、处处露‘怯’。       对一个士兵来说,枪就是他的武器,对于一个程序员来说,各种library(工具库)就是他的武器;而对于Linux运维人员来说,无疑命令行工具CLI(命令界面)就是他们的武器;高手和小白之间的差距往往就体现在对于这些“武器”的掌握和熟练程度上。有时候一个参数就能够解决的事情,小白们可能要写一个复杂的Shell脚本才能搞定,这就是对CLI(命令界面)没有理解参悟透彻导致。       研磨每一个命令就是擦拭手中的作战武器,平时不保养不理解,等到作战的时候,一定不能够将手中的武器发挥到最好,所以我们要平心、静气和专注,甘坐冷板凳一段时间,才能练就一身非凡的内功!       本教程从实战出发,结合当下流行或最新的Linux(v6/7/8 版本)同时演示,将命令行结合到解决企业实战问题中来,体现出教学注重实战的务实精神,希望从事或未来从事运维的同学,能够认真仔细的学完Linux核心命令的整套课程。       本课程系列将逐步推出,看看我教学的进度和您学习的步伐,孰占鳌头! 注:关于教学环境搭建,可以参考本人其它课程系列,本教学中就不再赘述!     《参透 VMware 桌面级虚拟化》    《在虚拟机中安装模版机(包括应用软件等)》    《SecureCRT 连接 GNS3/Linux 的安全精密工具》  

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧