Linux下如何抓指定IP的包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下如何抓指定IP的包相关的知识,希望对你有一定的参考价值。

从本机的指定IP端口接收网络数据包,转发到指定的IP端口 要不要写程序 用什么命令呢 菜鸟求详解
不要想那么复杂 用简单C程序或者linux命令可以实现吗

用tcpdum命令可以抓指定IP的包,具体命令为:

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port 22 and src net 192.168.1.1 -w ./target.cap

参数解析:

tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。

-i eth1 : 只抓经过接口eth1的包

-t : 不显示时间戳

-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包

-c 100 : 只抓取100个数据包

dst port  22 : 抓取目标端口是22的数据包

src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.1

-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

扩展资料

tcpdump语法格式:

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

tcpdump主要参数说明:

1、-a 尝试将网络和广播地址转换成名称。

2、-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。

3、-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。

4、-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。

5、-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。

6、-e 在每列倾倒资料上显示连接层级的文件头。

7、-f 用数字显示网际网络地址。

8、-F<表达文件> 指定内含表达方式的文件。

9、-i<网络界面> 使用指定的网络截面送出数据包。

10、-l 使用标准输出列的缓冲区。

11、-n 不把主机的网络地址转换成名字。

12、-N 不列出域名。

参考技术A 用tcpdump吧,最简单

从本机的指定IP端口接收网络数据包(假设本机ip是192.168.1.2,本机接收端口是80)
tcpdump -s 0 host 192.168.1.2 and src port 80 -w zb_recieve.erl

转发到指定的IP端口(假设对端主机ip是192.168.1.7,对端接收端口是8080)
tcpdump -s 0 host 192.168.1.7 and dst port 8080 -w zb_send.erl

存下的zb_recieve.erl和zb_recieve.erl文件建议传回windows主机,用windows下的tcpdump打开分析,比较好看追问

你能帮我下一下具体步骤吗?我新手

追答

命令都列出来了哦,你把命令中的ip和端口改为实际的就ok了,运行后想结束的时候ctrl+c就能中断了,如果数据包量大的话,运行的时候注意看磁盘空间,别因为没空间宕机了

追问

-bash:tcpdump:command not found 怎么是这个啊

追答

哈哈,你系统没装tcpdump,你是什么linux?到tcpdump官网(http://www.tcpdump.org/#latest-release)上下载一个适合的版本安装一下就好了,tcpdump还是很实用的工具,以后会常用的。

追问

我没装 我连的公司的Linux主机 用C编码可以把 你能否讲解下呢

追答

你先确认一下是否已经安装的tcpdump,可以用whereis tcpdump看看。

如果确认没有安装tcpdump,是否能通过直接或间接的方式传文件到公司的linux主机?可以的话你就从官网上自行下一个tcpdump安装文件,传到主机上安装。主机的linux发行版本可以cat /etc/issue查询。

然后就可以用tcpdump来抓包了。

如果不能传文件到公司linux主机的话,我也没辙了。看看其它高人有没有办法把。

本回答被提问者和网友采纳
参考技术B linux下有命令可直接执行抓包的,命令如下:
1、tcpdump -vv -i ethN -s 10240 -w /root/abc.cap host ip
2、上述命令中,ethN,是你要抓的本机网卡,一般是eth0,可使用ifconfig查看使用的哪个网卡
-s 指定的是抓包数量 -w指定的是抓到的包写到哪个位置 host ip即为抓取哪个ip 的包
参考技术C 直接在终端中输入抓包命令,tcpdump -i any -s 0 host ip and port duankou -w name.pcap.该命令中host的ip根据实际填写ip地址,端口根据时间填写端口,例如tcpdump -i any -s 0 host 192.168.1.12 and port 1457 -w zhuabao.pcap。生成zhuabao.pcap文件,该文件用wireshark打开。追问

转发到指定的IP如何弄呢

参考技术D iptables吧,这大致是最简单的方案;
你不嫌麻烦的话,也可以使用libpcap一类的网络数据包处理库自己写(有点麻烦,不推荐)

linux如何抓包

参考技术A 楼主,下个wireshark就可以了。在控制台root权限下就可以运行,还是有图形界面的,抓起来很方便 参考技术B 装个wireshark,root用户下运行就可以了,有图形界面的。

以上是关于Linux下如何抓指定IP的包的主要内容,如果未能解决你的问题,请参考以下文章

linux如何抓包

网络抓包 tcpdump 使用指南

Ubuntu下wireshark抓不到包

在linux命令行环境下如何抓取网络数据包?

linux服务器被攻击如何进行抓包来进行分析

如何在linux下安装抓包工具