Wireshark抓取本地Tcp包(任何数据包)
没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说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包(任何数据包)的更多相关文章
- Wireshark抓取本地回环接口数据包 RawCap.exe
Wireshark提供了winpcap可以抓取远程网卡数据包...但我尝试了不成功.后来发现RawCap.exe不仅可以抓取回环接口数据包,远程跑了拿到pcap文件再打开用起来比winpcap更方便最 ...
- 利用wireshark抓取远程linux上的数据包
原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...
- 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: ...
- wireshark抓取本地回环及其问题 转摘:http://www.cnblogs.com/luminji/p/3503464.html
一:The NPF driver isn’t running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...
- wireshark抓取本地数据包
windows系统中,本地向自身发送数据包没有经过真实的网络接口,而是通过环路(loopback interface)接口发送,所以使用基于只能从真实网络接口中抓数据的winpcap是无法抓取本地数据 ...
- wireshark抓取本地回环及其问题
一:The NPF driver isn't running 这个错误是因为没有开启NPF服务造成的. NPF即网络数据包过滤器(Netgroup Packet Filter,NPF)是Winpcap ...
- wireshark抓取本地回环数据包
linux环境下,用tcpdump,可以用-i lo参数抓取环回接口的包.如果服务端和客户端安装在同一台机器上,调试时是很方便的.linux版的wireshark,选取网卡的菜单里也有lo选项,也 ...
- fiddler抓取Android 真机app数据包
fiddler功能强大 不仅能抓pc上的请求还能抓取手机上的请求.下面以fiddler4 +android手机为例介绍一下 手机抓包. 官网下载fiddler后下一步下一步安装成功. 首先是fiddl ...
- Mac 上 Charles 抓取 iso http、https数据包
一.下载charles包. http://www.charlesproxy.com/download/ 选择mac版本的最新包Charles is 3.11.4. http://www.charles ...
随机推荐
- Java基础 - 变量的定义和使用
变量定义 public class Main { public static void main(String[] args) { // 定义byte类型的变量 byte b = 10; System ...
- 我的Android进阶之旅------>Android SDK支持的配置标识符(有用的参考文件)
Android SDK支持的配置标致符 配置标识符 标识符值 描 述 MCC MNC 例子: mcc310: MCC310-MNC004: MCC208-MNC00 MCC(移动国家代码 ...
- Linux里的发消息
1.给指定用户发送消息 语法: write 用户名 说明: 1.用户是在线的 2.执行过程 a.敲完命令按回车,进入写信模式 b.写信的时候如果写错了Ctrl+退格 删除字符 c.写完以后Ctrl+D ...
- JVM指令重排
指令重排的基本原则: a.程序顺序原则:一个线程内保证语义的串行性 b.volatile规则:volatile变量的写,先发生于读 c.锁规则:解锁(unlock)必然发生在随后的加锁(lock)前 ...
- python数据分析之:时间序列一
在处理很多数据的时候,我们都要用到时间的概念.比如时间戳,固定时期或者时间间隔.pandas提供了一组标准的时间序列处理工具和数据算法. 在python中datetime.datetime模块是用的最 ...
- 深入理解ByteBuffer(转)
转:http://blog.csdn.net/workformywork/article/details/26699345?utm_source=tuicool&utm_medium=refe ...
- C语言程序设计50例(经典收藏)之1
题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. #includ ...
- JVM对象
对象 Java虚拟机采用自动的内存管理和自适应的优化策略.但了解java虚拟机的运行机制和优化策略,写出适合java虚拟机管理的程序对性能提升是有意义的. 逃逸分析:对象的作用范围只在本线程范围,如方 ...
- 让你快速上手Runtime(转)
前言 本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现.如果喜欢我的文章,可以关注我微博:袁峥Seemygo,也可以来小码哥,了解下我们的iOS培训课程. ...
- linux通过脚本获取内存信息
1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...