Jpcap过滤GTunnel程序数据包
程序实现的目标
这次的目标要拿到纯的GTunnel数据包。
GTunnel简要介绍
GTunnel是一款代理软件,该软件有4种模式——“标准模式”、“Skype模式”、“GTalk模式”和“Tor模式”。标准模式和普通的代理软件有点类似,需要搜索到可用的代理服务器然后就可以上代理了;Skype模式需要本机安装了Skype,在启动Skype通信软件的前提下进行代理,实际上它是在Skype基础上进行开发的,采用Skype的通信协议,并将Skype服务器作为代理服务器,这里客户端逻辑就显得很重要;GTalk模式跟Skype模式有点类似,显然它是Google的一套东西,在该模式下你需要指定一个合法的Google账户,利用该账户来进行通信,其实这里的代理服务器显然也是GTalk的服务器;Tor模式没有研究过,对它感兴趣的可以参考博文《常用XX软件介绍》,里面有很详细的介绍。
实现思路
这里我还用到了一个程序gt.exe,这款软件可以用来监听本机发出的通信数据包,它是一款控制台的程序,运行起来后它会打印六元组信息:(时间,源IP,目的IP,源端口,目的端口,通信程序信息)。事实上通信程序信息包含的信息很丰富,包含有本程序的程序名、采用的传输层协议还有一些剩余的信息。显然我需要从中得到的就是程序名和目的IP而已。根据从gt.exe获取到的信息我可以拿到所有GTunnel.exe发向的目标IP地址,根据这些IP地址我可以从pcap文件中拿到纯的GTunnel的数据包,即ip.dst或ip.src能匹配这些IP地址的数据包。实现思路还是相当清晰的,之后完全就是编码的工作了。
编程环境
但这次我不是用C/C++来实现的,用的Java编程语言,因为写Java确实要比写C/C++代码要容易,而且现成的API提供使得实现更加容易。在编码之前需要环境的支持,Winpcap是一定要装的,Windows下所有抓包软件(如Ethereal、Winshark)都需要winpcap的支持,还需要有Java的环境,装完Jdk后你还需要安装Jpcap。下载地址我就不提供了,直接Google一下jpcap就可以搜索到官网地址,根据链接地址可以猜测Jpcap应该是UCI大学搞出来的,虽然API很简单,但是能有这种奉献精神还是相当敬佩的。学习Jpcap的使用也相当容易,官网有提供相应的文档,Tutorial是Jpcap的入门手册,看完这个基本上就会用了,同时你也可以参考官网提供的一些Samples,结合Tutorial你能很快拿下Jpcap。再看看API文档你会发现Jpcap真的很容易,结构很简单。我下载的是0.7最新的版本,下载.exe程序后直接安装就可以了。实际上它安装的东西就是一个jpcap.dll文件和一个jpcap.jar,只不过需要安装到系统环境下,就不需要你自己配置新的环境变量了。
附上代码
1 import java.io.BufferedReader; 2 import java.io.FileNotFoundException; 3 import java.io.FileReader; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import jpcap.JpcapCaptor; 7 import jpcap.JpcapWriter; 8 import jpcap.packet.IPPacket; 9 import jpcap.packet.Packet; 10 11 public class Handler { 12 13 static JpcapCaptor captor; 14 static JpcapWriter writer; 15 16 static final String KEYWORD = "GTunnel.exe"; // 查找关键字 17 18 static final String OUTPUT_PCAP_FILE_NAME = "fresh.pcap"; // 保存GTunnel纯数据流的文件名 19 20 public static void main(String[] args) { 21 22 if(args.length < 2) { 23 System.out.println("Invalid argument Error: java Handler [gtfilename] [pcapfilename] ([outputpcapfilename])"); 24 return; 25 } 26 27 // 解析gt.exe生成的文件,得到GTunnel相关行信息,主要是获得目标主机的IP地址作为匹配地址 28 BufferedReader br = null; 29 try { 30 br = new BufferedReader(new FileReader(args[0])); 31 } catch (FileNotFoundException e1) { 32 // TODO Auto-generated catch block 33 e1.printStackTrace(); 34 } 35 36 String line = null; 37 ArrayList<String> list = new ArrayList<String>(); 38 39 try { 40 while ((line = br.readLine()) != null) { 41 if (line.contains(KEYWORD)) { // 匹配含有GTunnel.exe关键字 42 String remoteIP = line.split(",")[1].trim(); 43 if (!list.contains(remoteIP)) 44 list.add(remoteIP); 45 } 46 } 47 } catch (IOException e) { 48 e.printStackTrace(); 49 } finally { 50 try { 51 if (br != null) { 52 br.close(); 53 br = null; 54 } 55 } catch (IOException e) { 56 e.printStackTrace(); 57 } 58 } 59 60 // 解析pcap文件 61 try { 62 captor = JpcapCaptor.openFile(args[1]); 63 writer = JpcapWriter.openDumpFile(captor, args.length >= 3 ? args[2] : OUTPUT_PCAP_FILE_NAME); 64 } catch (IOException e) { 65 // TODO Auto-generated catch block 66 e.printStackTrace(); 67 } 68 while (true) { 69 // read a packet from the opened file 70 Packet packet = captor.getPacket(); 71 // if some error occurred or EOF has reached, break the loop 72 if (packet == null || packet == Packet.EOF) 73 break; 74 // otherwise 75 if(packet instanceof IPPacket) { 76 IPPacket ipPacket = (IPPacket) packet; 77 // 从pcap文件中解析出所有与匹配地址一致的源/目的地址所对应的数据流 78 if(list.contains(ipPacket.src_ip.getHostAddress()) || list.contains(ipPacket.dst_ip.getHostAddress())) { 79 // 将数据流存入文件 80 writer.writePacket(packet); 81 } 82 } 83 } 84 85 writer.close(); 86 captor.close(); 87 88 } 89 90 }
代码说明
本程序是用java编写,需搭建java环境,由于调用了jpcap包相关API,需搭建jpcap环境,安装JpcapSetup程序即可。
使用本程序方法:
1.若已经编译生成class文件则直接跳到下一个步骤,否则先使用javac命令进行编译,完整命令为javac Handler.java。
2.在cmd下输入 java Handler [gtfilename] [pcapfilename] ([outputpcapfilename])
即指定两个或三个参数:第一个参数为gt.exe生成的文件名;第二个参数是WinPcap捕获得到的dump文件;第三个参数是生成纯数据流的dump文件名,可不指定,默认为fresh.pcap。
注:
本程序在jre6.0环境下运行时会报一个严重的错误,这个错误具体原因还没得到解决,可能跟jre自身有关系。
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x76fc2a01, pid=8944, tid=8936
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode, sharing windows-x86
)
# Problematic frame:
# C [ntdll.dll+0x52a01]
#
# An error report file with more information is saved as:
# C:\Users\kelvin\Desktop\hs_err_pid8944.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
转载于:https://www.cnblogs.com/blacksword/archive/2012/07/03/2574272.html
Jpcap过滤GTunnel程序数据包相关推荐
- 微信小程序数据包教程抓取,看完就是学会
有很多粉丝小伙伴问到能不能抓取到微信小程序数据呢?答案当然是肯定的,通过Fiddler或者Charles这些主流的抓包工具都可以抓得到,在IOS平台抓取微信小程序和https请求都是一样的设置,接下来 ...
- Burpsuite 抓取微信小程序数据包
Burpsuite 抓取微信小程序数据包 一.网上的方法 ① 手机导入CA证书,设置指定DNS,亲测无效 备注:此方法可抓取微信公众号的数据,但是无法抓取微信小程序的数据 ② 使用安卓模拟器,我下载的 ...
- 【羊了个羊】Burp抓取IOS微信小程序数据包
描述 最近,小游戏"羊了个羊"在朋友圈刷屏,网友纷纷表示,游戏开发者多少有个病要治!!! 本文记录,如何使用Burp抓取ios微信小程序数据包. 工具准备 Burp 苹果手机 wi ...
- 抓取微信小程序数据包的三种方法
前言 做安全测试的都会遇到测试某微信小程序,而微信小程序基本都是基于HTTPS的,所以抓取HTTPS数据包就是最关键的一步.最近几天折腾了一下,整理了比较简单.方便的三种方法. 条件 抓取微信小程序数 ...
- Wireshark过滤规则筛选数据包
一.IP过滤:包括来源IP或者目标IP等于某个IP 比如:ip.src addr192.168.0.208 or ip.src addr eq 192.168.0.208 显示来源IP ip.dst ...
- Wireshark条件过滤后的数据包保存
首先,用条件选择来过滤得到自己想要的数据,然后点击FILE->Export Specified Packets!
- Burp Suite抓取安卓手机微信小程序数据包(HTTPS) 主机有线/无线连接两种方式
主机有线连接 1.电脑放热点,然后用手机连接热点. 2.手机连接该热点,在电脑的移动热点-设置中可以看到连接的设备. 3.查看电脑无线网络的IP地址,cmd-ipconfig-无线局域网适配器 本地连 ...
- MAC系统利用charles抓取微信小程序和手机APP数据包(http和https数据包)
本文中使用的是mac上的抓包工具charles进行抓包,手机是华为荣耀8 下载并安装Charles for Mac Charles for Mac(HTTP信息抓包工具) V4.2.5 苹果电脑版 要 ...
- 计算机网络-实验三:使用网络协议分析器捕捉和分析协议数据包
一.实验目的 (1) 熟悉ethereal的使用 (2) 验证各种协议数据包格式 (3) 学会捕捉并分析各种数据包. 二.实验环境 安装了TCP/IP协议的Windows系统,包含实用的网络工具. 三 ...
最新文章
- java中 resource_Java从Resource中读取文本文件
- Linux 分析工具--性能
- Java连接数据库(2)
- Windows消息机制详解-6
- linux 中的时间戳功能,Linux中时间戳取证研究
- 【转】Python学习路线
- 晨哥真有料丨常见的话题终结者与破解方法
- (推荐)(提供下载)ORACLE常见问题一千问(不怕学不成、就怕心不诚!)
- ASP.Net的HtmlHelper和UrlHelper
- 月租最便宜的手机卡_给大家推荐几张0月租,打电话还便宜的手机卡
- python fun函数输入某年某月_Python编程实现输入某年某月某日计算出这一天是该年第几天的方法...
- 解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书
- 图片外链网站需要什么样服务器,10个支持外链图片服务的免费图床网站
- 【icem】非结构体网格的质量+混合网格的合并问题
- fna服务器未响应,服务器端口说明
- 努比亚z11mini 使用 移动物联卡
- 循环语句—for/while/do...while
- 大数据集群搭建所遇问题(最重要的是各个组件必须版本匹配)
- NLP中遇到的各类Attention结构汇总以及代码复现
- [ahk]解析大智慧自选股blk文件中的股票代码
热门文章
- python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...
- 8道Python基础面试练习题
- java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...
- 简单介绍Python中异常处理用法
- tcpdump 命令的个常用选项:一
- android 背景图太大,android – 背景图片需要太长时间才能画(Canvas)Jerky Sprites ……?...
- mysql 复合索引 in,MySQL复合索引比主键索引还快,为什么?
- 函数调用过程详解:函数栈帧的创建与销毁
- php 惩罚,【后端开辟】php能够怎样处置惩罚json串
- CF786B Legacy(线段树优化建边模板 + 最短路)