Linux-Centos-tshark抓包小结
前言
因为有Qmsg酱
这样的一个QQ
通知服务,于是我想做一个版本更新通知的东西玩玩,宝塔版本更新通知的我已经搞定了,宝塔是开源的没有加密,分析一下面板代码接口就出来了,刚好最近授权了一个小储云程序,于是也想做一个小储云商城通知更新的程序,代码肯定是加密的请求的数据无从分析啊这!
我百度了一下看到有设置curl
代理的,然后通过fiddler
去监听数据,这PHP文件是加密的,设置个毛线啊!
后来问了一下技术交流群里面有没有做过这种PHP
抓包请求,有个群友给出是直接用fiddler
去抓包,我也提前说了是PHP内的请求,设置代理的方式也不行,那要怎么用fiddler抓,后来一想PHP环境是在本地的话确实是可以用fiddler去抓的,我一直都是使用的sftp代码自动上传的方式去写代码的,没有本地环境(本地环境特别难用,没一个好用的,也推荐大家使用sftp/ftp代码自动上传的方式,PHP本来就是脚本语言不需要编译可以直接运行,用服务器做环境多爽也不容易出错,和生产环境一模一样),我还是不想再本地搭环境,于是想到了直接在服务器内抓包,先是找到了tcpdump
这个抓包的,但是运行他的不管什么参数都报错=用不了,最后又看到了tshark
,这个非常的好用!抓包出来的数据也非常的详细,接下来正文开始喽!
tshark安装
我的服务器系统是:Centos-7.6
tshark简介
tshark是网络分析工具wireshark下的一个工具,主要用于命令行环境进行抓包、分析,尤其对协议深层解析时,tcpdump难以胜任的场景中。本系列文章将整理介绍tshark相关内容。
debian或ubuntu安装命令
sudo apt-get install tshark
centos安装命令
yum install tshark
安装完之后执行:
tshark -v
输出有tshark 信息则代表安装成功了~
tshark 参数详解
-i 设置抓包的网络接口,不设置则默认为第一个非自环接口。
-D 列出当前存在的网络接口。在不了解OS所控制的网络设备时,一般先用“tshark -D”查看网络接口的编号以供-i参数使用。
-f 设定抓包过滤表达式(capture filter expression)。抓包过滤表达式的写法雷同于tcpdump,可参考tcpdump man page的有关部分。
-s 设置每个抓包的大小,默认为65535,多于这个大小的数据将不会被程序记入内存、写入文件。(这个参数相当于tcpdump的-s,tcpdump默认抓包的大小仅为68)
-c 抓指定个包后终止
-a 终止条件 duration:NUM - stop after NUM seconds
filesize:NUM - stop this file after NUM KB
files:NUM - stop after NUM files
-w 设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout。“-w-”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“>”而不要-w参数。
-r 设置tshark分析的输入文件。tshark既可以抓取分析即时的网络流量,又可以分析dump在文件中的数据。-r不能是命名管道和标准输入。
-R 设置读取过滤表达式(read filter expression)。不符合此表达式的流量同样不会被写入文件。注意,读取(显示)过滤表达式的语法和底层相关的抓包过滤表达式语法不相同,它的语法表达要丰富得多,请参考http://www.ethereal.com/docs/dfref/和http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html。类似于抓包过滤表达式,在命令行使用时最好将它们quote起来。-Y (显示)过滤。
-T 设置解码结果输出的格式,包括fileds,text,ps,psml和pdml,默认为text。
-E 配合-T使用,制定输出格式,分隔符等。
-t 设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间(delta)。
-q 设置安静的stdout输出(例如做统计时)
-z 设置统计参数。
-p 设置网络接口以非混合模式工作,即只关心和本机有关的流量。
-B 设置内核缓冲区大小,仅对windows有效。
-y 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等。
-L 列出本机支持的数据链路层协议,供-y参数使用。
-n 禁止所有地址名字解析(默认为允许所有)。
-N 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。
-d 将指定的数据按有关协议解包输出。如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”。注意解包协议之间不能留空格。
-F 设置输出raw数据的格式,默认为libpcap。“tshark -F”会列出所有支持的raw格式。
-V 设置将解码结果的细节输出,否则解码结果仅显示一个packet一行的summary。
-x 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。
-S 在向raw文件输出的同时,将解码结果打印到控制台。
-l 在处理每个包时即时刷新输出。
-X 扩展项。
-h 显示命令行帮助。
-v 显示tshark的版本信息。
-o 重载选项
实例用法
1. 实时打印当前http请求的url
tshark -s 512 -i eth0 -n -f ‘tcp dst port 80’ -Y ‘http.host and http.request.uri’ -T fields -E separator=’#’ -E quote=d -e http.host -e http.request.uri -l | tr -d ‘ ’
2. 实时打印当前mysql查询语句 和 返回数据
tshark -i eth0 -n -f ‘tcp dst port 3306 or tcp src port 23456’ -Y ‘mysql.query’ -T fields -e mysql.query -e mysql.row.text
3. 实时打印当前memcached信息
sudo tshark -i em1 -n -Y ‘memcache’
4. 实时打印当前RabbitMQ信息
sudo tshark -i em1 -n -Y ‘amqp’
5. 实时打印当前MongoDB信息
tshark -i em1 -n -f ‘port mongoDBPort’ -Y ‘mongo’
5. 实时打印所有信息
sudo tshark -i enp0s31f6 -f ‘dst host 10.249.7.99’ -s 0 -l -w - |strings
正文开始
我使用的命令
tshark -i enp6s0f0 -f 'tcp dst port 80' -w abc.txt
-i : 网卡名字(可以在FinalShell里面看到名字/宝塔里面也可以看到) -f :设置过滤 只抓tcp包 且端口是80 -w :设置解码以后输出的文件 好了,下面开始将操作过程
如果你`root`文件夹下面没有上面定义的`abc.txt`则会报错,需要我们手动创建
执行命令`tshark -i enp6s0f0 -f 'tcp dst port 80' -w abc.txt`
刷新你想抓包的页面地址(我抓包的是小储云商城的更新接口,狂点刷新那个检查更新就行了)
在ssh结束(ctrl+c)抓包,然后下载abc.txt文件分析你想抓的数据
相关文章
- 从本体论开始说起——运营商关系图谱的构建及应用
- 如何成为一名数据科学家?
- 从未见过的堂兄杀了人,你的DNA是关键证据
- 20个安全可靠的免费数据源,各领域数据任你挑
- 20个安全可靠的免费数据源,各领域数据任你挑
- 阿里云李飞飞:All in Cloud时代,云原生数据库优势明显
- 基于Hadoop生态系统的一高性能数据存储格式CarbonData(性能篇)
- 大数据告诉你:10年漫威,到底有多少角色
- TigerGraph:实时图数据库助力金融风控升级
- Splunk利用Splunk Connected Experiences和Splunk Business Flow 扩大数据访问
- 大数据开发常见的9种数据分析手段
- 以免在景区看人,我爬了5W条全国景点门票数据...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
- 数据科学家告诉你哪些计算机科学书籍是你应该看的
- Kafka作为大数据的核心技术,你了解多少?
- Spring Boot 整合 Redis 实现缓存操作
- 大数据学习必须掌握的五大核心技术有哪些?
- 基于Antlr在Apache Flink中实现监控规则DSL化的探索实践
- 甲骨文再次被Gartner评为分析型数据管理解决方案魔力象限领导者
- 爬取吴亦凡微博102118条转发数据,扒一扒流量的真假