抓包工具

原文:抓包工具

    抓包工具:顾名思义、耳熟能详。tcpdump、wireshark、sniffsmart、httpwatch(还算有点良心)。。。

    但当其只是当为工具使用时,又贵为可惜。因工作需要,再度涉及该领域。

    可随想云随风去,江河大变。某某文公司镜像工具,价比天高。某某调公司主打产品,爱理不理。

    脑中闪过一句 码农何苦为难码农。

    下班后闭关修炼3周,输出类似功能,自己动手丰衣足食。感谢libpcap,感谢gnu。下面把一些心得与君共享。

 

  1. 起步

    网上有很多libpcap的起步教程,这里就不几大主要函数的功能在此进行罗列,

    /*

* 回调函数

* ========

* arg pcap_loop外传参数

* pcap_pkthdr结构,该结构位于真正的物理帧前面,用于消除不同链路层支持的差异

* packet结构,指向所捕获报文的物理帧。

* void processPacket(u_char *arg, const struct pcap_pkthdr *pkthdr, const u_char *packet)

*/

  

/* Opening the device for sniffing

* =======

* 打开一个设备,官方建议1.0以后使用pcap_create()和pcap_activate()

* 1-设备名称,2-每次捕捉的最大字节数,3-混杂模式, 4-捕捉间隔(毫秒),5-存放的报错信息

* 混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包

*/

pcap_t *descr=pcap_open_live(device, MAXBYTE2CAPTURE, 1,1024, errbuf);

  

 

/* Loop forever & call processPacket() for every received packet

* =============

* 循环收报

* 1-设备名称,2-循环次数[-1无限],3,自定义回调,4,类同pthread_create的外传参数

*

* pcap_next

* ============

* pcap_next() returns a u_char pointer to the packet that is described by this structure

*

*

* void got_packet(u_char *args, const struct pcap_pkthdr *header,const u_char *packet);

* =====

* 1-外传参数,2,pcap-header。3, points to the first byte of a chunk of data containing the entire packet

*/

pcap_loop(descr, -1, processPacket, (u_char *)&count);

  

 2,解析HTTP包的坑

准备一张ASCII的表,转备一张EXCEL,提升你的分析速度。自认是高手的还可以备一份《密码学理论》。

先举例TELNET包,直接上图,不废话。蓝色为二层帧,橙色为三层包,绿色为四层包。四层包大坑在于包长会变。

 

    OSI的4~7层感觉有些酱油。直接跳7层进行展示

 

    http报文最恶心的在于OD/0A太多,列的意义无法固定,导致头不能固定,BODY不能固定。博主没太好的方法,统统扔给HBASE去玩。这里抛砖,望高手提供解决方案。

 

 

3,计算成本留给谁?

几乎所有抓包工具只输出一条单向记录,如果部署100台,每台每天产生1GB报文(算少的),那么把它们串成大闸蟹的活谁来干?

答案A: 每台服务器自己算

答案B: 交给后台SQL或NOSQL。

答案C:Hbase+Mapreduce。

======

答案A:很有意思,分散计算压力,同时训练你的算法实践能力应用。

答案B:训练你的sql能力,如oracle的connect by,但几乎坐等宕机。

答案C:训练你的MR能力。但槽点不少,从100-》1-》100^N。坐等硬盘和网络兹兹。

 

 

4,串包的烦恼

选B/C的下面就不要看了。大家都知道三次握手,但实际情况比这恶心多了。话说1来2去,2来1去,1来1去,0来1去,1去0来。

之前笔者也停留在理论阶段,在你用调试多种网站场景后发现,网络资源大多数浪费在这些seq和ack上。

串包看似简单,但实际操作起来还得应付各种N来N去的SHAKE场景。下图是比较理想的场景。

 

这个是F5不放的场景,其他的我就不贴了。

    

这是我想串成的场景。

    

    

怎么办?好在libpcap是一家良心的组织,包的分解几乎都是在阻塞形式下给出,这就给我们的程序设计提供的清晰的蓝天。

随即祭出码农3宝:红黑、指针、绕开FOR。

虾兵蟹将,三个皮匠,百试百灵。

开始为了程序的可读性:没用3宝前,1 CORE CPU高峰情况下就要30%~60%。3宝后,CPU立即压到了5%以下。欣喜!~

 

 5,时差的计算

 

 

http在所有报文结束都会有一个结束FIN动作,这动作在httpwatch中不被记录耗时,这个动作差不多就是两个MSL。所以这个耗时的计算我们要绕开,但HTTP何时才算正常传输完毕,这个是个头大是活儿。所以只能靠捕捉纯握手来进行判断,还要提前一个串联维度。当然这个维度至于提前多少,还要看具体场景进行分析。

 

6,说说回城卷轴

计算好的报文是珍贵的信息资源,但发回服务器的过程未必一帆风顺。服务器的设计就不多说了,要抗高负载就这么1、2个模型。从程序设计的便利度上看,临时存放在mq中是一个好选择。

虽然mq有初始大小限制,但对于程序的健壮性而言,不可谓是一个好的避风港。传回的过程在加上一个超时、非阻塞、自动重连、fork等特色。基本上你的程序就变成"周泰"

 

7,效果

 

  贴两张效果图。服务显示BODY RESPONSE完毕约203 MS。实际终端侧纯报文213MS,加上IE渲染40~50ms。OK,和目标一致,可以交差了。

 

 

 

 

 

 

 

 

时间: 2024-09-20 00:15:16

抓包工具的相关文章

Android 常用抓包工具介绍之Charles

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/516 Charles是一款抓包修改工具,相比起TcpDump,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!前面介绍了如何使用TcpDump抓包,下面给大家介绍一下Charles的使用. Charles抓包 Charles是一个HTTP代理服务器/HTTP监视器/反转代理服务器.它允许一个开发者查看所有连接互联网的HTTP通信.

对几款网络抓包工具的评测

对几款网络抓包工具的评测 by 拉登哥哥 最近在写个CMD远控 写着写着 想在服务端上做点手脚都知道杀软误报 特别是黑软大部分都报毒 但实际上是正常的对此可能部分人并不装杀软 基本上靠自己分析软件是否安全 1 低级点的 用相关工具 检测不能真的完全保证程序无毒  也没啥技术含量  原因是 可能你正在检测时 后门没激活(比如 我设置晚上12点才向外连接等)  你在白天或其它时间检测我的工具 可能没发现任何异常 晚上你开工具做事的时候  后门也跟着激活了 哈哈 这方法 实际中还真有人这么看 以前某个

fpga 网口通信-FPGA向PC网口发送数据,已按UDP封装,但用抓包工具找不到发送的数据包,怎么破啊?

问题描述 FPGA向PC网口发送数据,已按UDP封装,但用抓包工具找不到发送的数据包,怎么破啊? 问题如标题所示, 采用的是XILINX的virtex 6芯片 网口程序在原本V6核里面的tri emac IP core中添加自己的UDP封装 抓不到发送的数据包 直接用IP核附带的example程序也不行 求大神指导啊......

抓包工具 - Fiddler(详细介绍)

原文:抓包工具 - Fiddler(详细介绍) Fiddler的详细介绍                                   一.Fiddler与其他抓包工具的区别 1.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大.模拟http请求的功能也不够,且firebug常常是需要"无刷新修改",如果刷新了页面,所有的修改都不会保存: 2.Wireshark是通用的抓包工具,能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wiresha

网络抓包工具

http://blog.csdn.net/wangxg_7520/article/details/2795229 看了太多的"自己动手",这次咱也"自己动手"一下,写个简单的网络抓包工具吧.要写出像tcpdump和wireshark(ethereal)这样的大牛程序来,咱也没那能耐,呵呵.所以这个工具只能抓取本地IP数据报,同时它还使用了BPF,目的是了解如何进行简单有效的网络抓包. 当打开一个标准SOCKET套接口时,我们比较熟悉的协议往往是用AF_INET来建立

Android常用抓包工具之TcpDump

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/480   做为一个测试人员,工作中经常会用到数据抓包工具来进行数据分析和验证,下面就简单介绍一下工作中常用的抓包工具. TcpDump抓包 Tcpdump是一个用于截取网络分组,并输出分组内容的工具.它凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具. 可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机

网络-有什么抓包工具能解析http报文的data部分内容吗?

问题描述 有什么抓包工具能解析http报文的data部分内容吗? wireshark好像只能按各个字段分开列出来,而其中data部分就是一堆16进制数据,看不明白这些16进制数据原本代表什么意思.有人能推荐一些能解析http报文的data部分,就是不要扔出来一堆16进制数据就算,能解析出这是什么意思的抓包工具吗? 解决方案 fiddler就很好用.你试试看.再不行把它复制到ultraedit里面看. 解决方案二: fiddler2等可以显示,而且也比较好用

ios-iOS请求https接口,为什么用charles或者fiddler等抓包工具截取的数据是明文的?

问题描述 iOS请求https接口,为什么用charles或者fiddler等抓包工具截取的数据是明文的? 是客户端需要设置什么?还是说服务器那边的问题? 解决方案 fiddler用的是中间人攻击的方式截获的数据.你浏览器中还可以直接看到明文呢.https只要是保障传输过程安全 解决方案二: 你的网站是你自己搭建的吗?你可以参考一下https加密原理 加密不是简单的用了https就可以了,https只是提供一种协议.加密需要密钥,如果网站没有证书,那怎么去加密,并且保证客户端能够解密呢.

抓包工具TCPDump介绍/应用案例/总结教程

一,Linux下抓包工具TCPDump的介绍 1. TCPDump介绍 TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息.tcpdump就是一种免费的网络分析工具,尤其其提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行

mac端的优秀抓包工具——Charles使用

mac端的优秀抓包工具--Charles使用 一.简介         Charles是mac端的一款截取与分析网络请求的工具,在网络开发中使用其作分析,可以大大提高我们的开发效率.Charles是收费软件,一般可以试用三十天,但是可以通过相应的破解来获取服务(这里只做演示使用,希望大家购买正版软件).Charles软件和破解包下载地址:http://pan.baidu.com/s/1ySsUy. 二.安装与使用         下载好压缩包后,解压打开,将软件包拖入应用程序文件夹中,这时候一个