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主机的话,我也没辙了。看看其它高人有没有办法把。
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的包的主要内容,如果未能解决你的问题,请参考以下文章