没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说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. Python菜鸟之路:Python基础-线程、进程、协程

    上节内容,简单的介绍了线程和进程,并且介绍了Python中的GIL机制.本节详细介绍线程.进程以及协程的概念及实现. 线程 基本使用 方法1: 创建一个threading.Thread对象,在它的初始 ...

  2. linux c编程:信号(五) sigsuspend

    更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞.使用这种技术可以保护不希望由信号中断的代码临界区.如果希望对一个信号解除阻塞,然后pause等待以前被阻塞的信号发生,则又将如何呢?假定信 ...

  3. Swift学习笔记十一:方法

         方法是与某些特定类型相关联的功能/函数.在Swift中,结构体和枚举能够定义方法:其实这是Swift与C/Objective-C的主要差别之中的一个. 在Objective-C中,类是唯一能 ...

  4. 在Ubuntu安装go编译环境

    在Ubuntu安装go编译环境 好记性不如烂笔头,所以趁热打铁记录下golang编译环境的安装过程. 首先下载一些依赖包: sudo apt-get install bison ed gawk gcc ...

  5. python SimpleHTTPServer 快速共享文件

    简单介绍 通过一个python命令快速共享文件给他人. 操作步骤 1.打开cmd命令行,切换到需要共享文件的目录,执行命令 python -m SimpleHTTPServer . 2.打开浏览器,在 ...

  6. 混沌相关blog+节选

    <数字化定量分析:一致性获利法时间跨度的定量研究>    http://blog.sina.com.cn/s/blog_82cf83d50101a41q.html     ——  用60分 ...

  7. Linux基础系列:常用命令(8)_shell script

    一.什么是shell script 将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了. 再加上些智能(条件/流控)控制,就变成了智能化脚本了 二.变量命名规则 以字母或下 ...

  8. LeetCode:乘法表中的第K小的数【668】

    LeetCode:乘法表中的第K小的数[668] 题目描述 几乎每一个人都用 乘法表.但是你能在乘法表中快速找到第k小的数字吗? 给定高度m .宽度n 的一张 m * n的乘法表,以及正整数k,你需要 ...

  9. Yii2 高级查询

    首先我们要自己写一个ActiveQuery 类并且继承 Yii2 的 ActiveQuery: namespace api\models; class ActiveQuery extends \yii ...

  10. sqoop导入增量数据

    使用sqoop导入增量数据. 核心参数 --check-column 用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系行数据库中的自增字段及时间戳类似这些被指定的列的 ...