给tcpdump加点颜色看看
来源:互联网 发布:mac 快捷键 箭头 编辑:程序博客网 时间:2024/04/27 23:36
发布一个与tcpdump配合使用的Python脚本,可以为tcpdump的输出结果着色,可以到github围观,或者直接点击这里下载
https://github.com/voidccc/cccolor
详细介绍一下:
熟悉网络编程的同学一定都知道tcpdump,我们通常使用它截取IP包,然后用wireshark这样的浏览工具查看截取的数据包文件。这种工作方式不是太适合实时观察数据。因为数据包要先被截取并转储成文件,然后才能在图形界面下查看。有时候我需要直接在命令行快速查看tcpdump的输出,并通过简单的判读来发现问题,但是如果直接判读tcpdump的输出会有点麻烦,因为IP和TCP的头都是可变长度的,特别是TCP的头经常会包含可选项,这导致TCP头的长度经常不是20字节。所以我们无法使用简单的方法(比如从开头跨过多少字节)迅速定位到应用层的数据开头。比如看到下面的数据,你能第一时间找到应用层socket发送数据的第一个字节位置吗?(右面的可显示字符“GET”已经表明了应用层数据开头,但如果两端都使用的是二进制协议而非基于文本的HTTP,就没这么好的事了)
当然我们可以翻出IP/TCP头格式(参考wiki IPv4 TCP),然后对照各字段长度,分别找到IP头和TCP头的里代表长度的字段,它们位于下面图中的位置(5和8,单位是4字节),然后从屏幕上数过相应的字节就能确定应用层数据开头(4745)。但是这真的很麻烦而且非常浪费时间。即使对于熟知TCP/IP头格式的人来说,也难免会数错啊。
我现在需要一个能输出彩色的tcpdump,它在输出的时候,使用不同的颜色来分别表示IP头,TCP头以及应用层数据段,这让我可以一眼就看明白应用层通过socket收发的数据,而不是靠人肉的方式逐个字节数,通过最终效果可以看到彩色的tcpdump非常好用!
上面使用的是缺省配色,这适合大多数人使用:红色是IP头,绿色是TCP头的定长部分,黄色是TCP头的可变长部分,即可选项。白色就是应用层socket数据。由于着色是可配置的,所以如果你想区分头部更详细的各个字段,完全可以做到下面五颜六色的配色,囧......
其原理非常简单,我使用一段Python脚本通过管道读取tcpdump的输出,将相应数据段着色后,重新输出至屏幕。用法也简单,只要在原有tcpdump命令的后端加一个管道送给本脚本处理一下即可。如果你的tcpdump命令像下面这样
tcpdump 'dst port 80' -i eth1 -nn -X -l
加一个管道,送给脚本即可,像这样
tcpdump 'dst port 80' -i eth1 -nn -X -l | cccolor
是不是很方便呢,要使用它,只要把单文件脚本拷贝到PATH所在目录,然后直接在命令行使用就可以了。由于时间仓促我没有实现Python3版本,当前版本在 Python 2.7.6 和Python 2.6.6没什么问题。我装模作样使用了最宽松的MIT licence,非常欢迎感兴趣的小伙伴提出建议,或者一起来完善开发其他有趣的功能。
- 给tcpdump加点颜色看看
- 给Xcode加点料
- 给AFN加点Cookie
- Opengl 来给三角形一点颜色看看
- iOS 给模糊加点动画
- 魔幻工厂要给传统制造业一点颜色看看
- 给洗脸水加点料改善肌肤
- 使用IronPython给.Net程序加点料
- angulr概念--给技术加点料
- ViewPager给图片加点事件和XListView
- 给钓鱼网站骗子一点颜色看看---一个简单的攻击程序
- 给GridView加点料:Div动态浮动显示
- 给生活加点料——Java情书
- 给web.py加点仿TG的功能
- 给MapGuide Open Source的ToolTip加点料
- 给千篇一律的注释加点料(ASCII ART)
- App今日免费:给手指加点料Live Fingers
- 【转载】使用IronPython给.Net程序加点料
- 回文距离
- [叁]Pomelo游戏服务器编程分享 之 服务器结构与配置分析
- 2014年多校联赛总结
- 快速入门C++ 04(传值、传址传引用)
- 黑马程序员--线程总结
- 给tcpdump加点颜色看看
- Box2D C++ 物体的安全删除
- win32 剪切板操作
- Python读取MySQL数据中文乱码
- iOS 系统对象和自定义对象的归档Archiver
- Spring : 基于XML Schema的配置(一)
- 走进DataGridView
- Android程序打开和关闭输入法
- 克服浮躁,学C++时要注意的。(节选)