没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说wireshark绝对是这方面的翘楚,可惜的是,wireshark不能对本地接口(loopback,或者127.0.0.1)进行直接抓包。

wireshark的工作原理

这里面的原理其实很简单,wireshark可以通过操作系统来访问所有的网络adapter,通俗点,就是网卡,并把网卡上的traffic截获,拷贝,用于数据包的分析。所以wireshark的使用前提是:你希望截获的数据包是通过网卡收发的!而loopback接口上的数据因为其特殊性(本地还回),是在操作系统内部转发的,不会通过网卡,类似于进程间通信。因此wireshark从工作原理上就不能够获得loopback上的traffice。

解决方案

百度上有不少解决方案,但很多关键字就是:RawCap或windows没法截取loopback数据包。其实这些方案没有从本质上解决问题。现在一个比较好的解决方案是用npcap,这个工具是北大的一个博士,叫做Luo yang,开发的。源码放在https://github.com/nmap/npcap,还在持续维护中。这个工具的原理大概就是虚拟了一个网卡让操作系统把loopback的数据镜像一份到npcap adapter,然后wireshark可以通过截取这个npcap adatper上的数据包来获得对本地数据包进行分析的一个途径。大家不要小看了这个东西,在npcap adatper上,wireshark抓到的可是本地的所有数据包,这个不得了,用处大了,特别是对于需要深入了解各种库的工作原理的。它可以抓取各种:

  • http包,用于web接口的分析(Java程序员各种用soap接口,rest接口的,如果不了解http协议,不知道抓包来看,就没法理解各种mediaType对应的http entity,就没法不受限的使用各种web接口来完成各种场景的开发)
  • tcp包,用于各种基于tcp的通信接口/协议的分析(知道吗,这货能够抓各种ejb远程调用,虽然每个应用服务器的厂商在实现J2EE规范的时候,都有自己的底层通信协议,但是通过这货,你就可以看到具体是怎么通信的)

具体安装配置方法

废话不多说,后面还可能会在这个方面多写几篇文章,先把最基础的安装配置方法列个各位。(这里只介绍windows下面的用法) 
首先,当然是先要安装npcap。上头我已经给过一个github的地址了,那是源码。你可以在上面找每个release的安装包路径。这里再直接给一个: 
https://github-cloud.s3.amazonaws.com/releases/35855357/bece22ea-9ab5-11e6-88ad-304fd50e2df0.exe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOVBIJMK3TQ%2F20161031%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20161031T022347Z&X-Amz-Expires=300&X-Amz-Signature=10f67cbca359526bd638004a28e2a3d183a1d68ac755419083cc30676514e742&X-Amz-SignedHeaders=host&actor_id=8413239&response-content-disposition=attachment%3B%20filename%3Dnpcap-0.10-r12.exe&response-content-type=application%2Foctet-stream 
先npcap安装: 
 
 
安装完之后,你可以看到,在你的网络管理中心多了一块网卡(Npcap loopback Adapter): 

打开你的wireshark: 
你会发现,也多了一个可以监听的接口: 

没错,通过这个东东你就可以直接截获本地的Http包了 
来,跑一个试试: 

看到这个127.0.0.1了吗?这可是货真价实的本地http包。 
除了http包,之外,其他的tcp包也给你们瞅瞅: 

看到了没,这是java的远程调用

注意事项

1, 这个工具是很好用,但是也有缺陷,如果你装了之后,突然有某一天发现: 
 
你的wifi居然没法通过dhcp获得IP了,就是这个家伙搞的鬼。解决方案,目前是在device manger里面把它删了,重启电脑,我会在github上报一个Issue的。 
2,另外,请把你的wireshark升级到比较新的版本,不要是1.9.xx以下的版本

Wireshark抓取本地Tcp包(任何数据包)的更多相关文章

  1. Wireshark抓取本地回环接口数据包 RawCap.exe

    Wireshark提供了winpcap可以抓取远程网卡数据包...但我尝试了不成功.后来发现RawCap.exe不仅可以抓取回环接口数据包,远程跑了拿到pcap文件再打开用起来比winpcap更方便最 ...

  2. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  3. RawCap抓取本地回环接口数据包

    RawCap.exe --help ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 D: ...

  4. wireshark抓取本地回环及其问题 转摘:http://www.cnblogs.com/luminji/p/3503464.html

    一:The NPF driver isn’t running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...

  5. wireshark抓取本地数据包

    windows系统中,本地向自身发送数据包没有经过真实的网络接口,而是通过环路(loopback interface)接口发送,所以使用基于只能从真实网络接口中抓数据的winpcap是无法抓取本地数据 ...

  6. wireshark抓取本地回环及其问题

    一:The NPF driver isn't running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...

  7. wireshark抓取本地回环数据包

      linux环境下,用tcpdump,可以用-i lo参数抓取环回接口的包.如果服务端和客户端安装在同一台机器上,调试时是很方便的.linux版的wireshark,选取网卡的菜单里也有lo选项,也 ...

  8. fiddler抓取Android 真机app数据包

    fiddler功能强大 不仅能抓pc上的请求还能抓取手机上的请求.下面以fiddler4 +android手机为例介绍一下 手机抓包. 官网下载fiddler后下一步下一步安装成功. 首先是fiddl ...

  9. Mac 上 Charles 抓取 iso http、https数据包

    一.下载charles包. http://www.charlesproxy.com/download/ 选择mac版本的最新包Charles is 3.11.4. http://www.charles ...

随机推荐

  1. Django 之Form组件

    Django之From组件 扩展:Django 之 ModelForm组件 Form组件功能 Django的Form主要具有一下几大功能 生成HTML标签 验证用户数据(显示错误信息) HTML Fo ...

  2. Js自定义异常

    function MyError(msg){ this.name="MyError"; this.message = msg || "自定义异常的默认消息";} ...

  3. 好用的 curl 抓取 页面的封装函数

    由于经常使用php curl 抓取页面的内容,在此mark 平时自己封装的 curl函数,(其实 现在也开始用 Python 来爬了~ ^-^) /** * 封装curl方法 * @author Fr ...

  4. CentOS6安装DaoCloud加速器

    天朝的网,你又不是不懂.我最爱的红杏最近也用不了了.FUCK GFW. 在这,我们使用DaoCloud的加速器,打开网址 https://dashboard.daocloud.io/mirror 找到 ...

  5. Example 2 - contour plots

    load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" begin cdf_file = addfile("$N ...

  6. Spring 相关

    1. spring的bean的scope属性范围  参考:http://jiangshuiy.iteye.com/blog/1667316 原理分析(bean的scope属性范围) scope用来声明 ...

  7. 《thinking in java》 接口与内部类

    书本上的例子 改编后的. package test2; class A{ interface B{void f();} public class BImp implements B{public vo ...

  8. UESTC 1061 秋实大哥与战争 线段树区间合并

    秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ...

  9. Codeforces 876C Classroom Watch:枚举

    题目链接:http://codeforces.com/contest/876/problem/C 题意: 定义函数:f(x) = x + 十进制下x各位上的数字之和 给你f(x)的值(f(x) < ...

  10. 解析XML(2)

    在输入法非中文状态下使用ctrl+shift+f可以使文档换行.