linux-网络数据包抓取-tcpdump
用法格式:
tcpdump [-i 网卡] [选项] '表达式'
选项说明如下:
- -i:interface 监听的网卡。
- -nn:表示以ip和port的方式显示来源主机和目的主机,而不是用主机名和服务。
- -A:以ascii的方式显示数据包,抓取web数据时很有用。
- -X:数据包将会以16进制和ascii的方式显示。
- 表达式:表达式有很多种,常见的有:host 主机;port 端口;src host 发包主机;dst host 收包主机。多个条件可以用and、or组合,取反可以使用!,更多的使用可以查看man 7 pcap-filter。
举例说明:
监听网卡eth0
$ tcpdump -i eth0
这个方式最简单了,但是用处不多,因为基本上只能看到数据包的信息刷屏,压根看不清,可以使用ctrl+c中断退出,如果真有需求,可以将输出内容重定向到一个文件,这样也更方便查看。
监听指定协议的数据
$ tcpdump -i eth0 -nn 'icmp'
这个是用来监听icmp协议的数据,就是ping命令使用的协议。类似的,如果要监听tcp或者是udp协议,只需要修改上例的icmp就可以了。ping下监听的机器,输出如下:
linux使用tcpdump抓包示例
每一行的各个数据表示的含义:
抓到包的时间 IP 发包的主机和端口 > 接收的主机和端口 数据包内容
监听指定的主机
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
这样的话,192.168.1.231这台主机接收到的包和发送的包都会被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
这样只有192.168.1.231这台主机发送的包才会被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
这样只有192.168.1.231这台主机接收到的包才会被抓取。
监听指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用来监听主机的80端口收到和发送的所有数据包,结合-A参数,在web开发中,真是非常有用。
监听指定主机和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多个条件可以用and,or连接。上例表示监听192.168.1.231主机通过80端口发送的数据包。
监听除某个端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
如果需要排除某个端口或者主机,可以使用“!”符号,上例表示监听非22端口的数据包。
小结:
tcpdump这个功能参数很多,表达式的选项也非常多,非常强大,不过常用的功能确实不多。详情可以通过man查看系统手册。
另外在抓取web包的时候,发送网页内容都是很奇怪的字符,发现是apache开启了gzip压缩的缘故,关闭掉gzip压缩就可以了。在ubuntu 12.04下,编辑vim /etc/apache2/mods-enabled/deflate.load文件,将加载模块deflate_module的语句注释掉,然后重启apache就OK了
小技巧:
可结合tcpdump(命令) + wireshark(图形化)
操作:
- 在服务器上进行tcpdump -A -w /tmp/tcp.cap 指定输出外部文件
- scp /tmp/tcp.cap 拷贝文件到你本地
- wireshark & 启动wireshark
- 通过 File -> Open 打开拷贝下来的文件,这样就可以利用进行数据包分析了
- 剩下来的事就非常方便了
最新文章
- Linux学习之四--Nginx
- windows 下ssh 客户端
- vi 命令 用法
- java 集合4(迭代器)
- JavaScript的角色巨变和Web技术的发展
- ORACLE 变量定义
- Android开发UI之布局文件LinearLayout
- android js 互调
- Docker制作基础镜像
- CVE-2012-0158 分析
- java sort排序原理
- 【开发工具之eclipse】8、The word is not correctly spelled。强迫症看着很难受
- python windows 安装gensim
- 常用markdown语法入门
- Java 正则校验整数,且小数点只能是2位
- 无法加载 DLL“ParkCOM.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 终结者
- 使用sift特征点进行knn最近邻匹配
- centos7安装Hive2.3.0
- Mac怎样改动开机password
- 【BZOJ】2705: [SDOI2012]Longge的问题
热门文章
- Java解析JSON文件的方法 (二)
- 利用Selenium和Browsermob批量嗅探下载Bilibili网站视频
- Python 线程池的实现
- NSBundle介绍
- UVa 129 困难的串
- Spark编程进阶
- fold change(ratio)
- Bonferroni校正法
- js函数对象
- 404 error on preview ... ";buffer_id(29) is not valid (closed or unsupported file format)";