Java实现简单的个人网络嗅探器
一、实验题目
简单的个人网络嗅探器
二、实验目的
加深对 TCP/IP 协议的理解
三、实验环境
环境:Windows 10+Myeclipse+Jdk1.6+Wincap+Jpcap
语言:Java
四. 关于Jpcap
。。。做的都差不多了发现Jnetpcap简直好用太多,但是还要准备考试。。没时间改了。。对于数据内容的解码使用gbk解码。。会有很多乱码
1.我们为什么需要Jpcap?
Java的.net包中,给出了传输层协议 TCP和UDP有关的API,用户只能操作传输层数据,要想直接操作网络层{比如自己写传输层数据报(自己写传输层包头),或者自己写好IP数据包向网络中发}则是无能为力的。 而JPCAP扩展包弥补了这一点,使我们可以支持从网卡中接收IP数据包,或者向网卡中发送IP数据包。
2.什么是Jpcap?Jpcap的工作原理是什么?
Jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。
3.安装配置Jpcap:
之后我们还需要下载Jpcap,Jpcap包括Jpcap.jar和Jpcap.dll,两者需要版本一致,并且区分32位和64位。
64位的很难找!!!–>https://www.jianshu.com/p/5e7d8494621f
配置:
https://www.cnblogs.com/caroar/archive/2011/10/12/2208196.html
http://blog.sina.com.cn/s/blog_6169c15e0100e2mv.html
API: http://jpcap.gitspot.com/javadoc/index.html
4.别忘了安装Wincap:
下载地址:http://www.winpcap.org/archive/
五、实验内容
1.实现的功能
(1)实现了 Sniffer 的基本功能,监测网络性能及使用情况
(2)考虑一台机器上多张网卡的情况,指定需要侦听的网卡
(3)侦听所有进出本主机的数据包,解析显示数据包( ICMP 、 IP 、 TCP 、 UDP 等)各个字段及数据内容
(4)侦听来源于指定 IP 地址的数据包,侦听指定目的 IP 地址的数据包
(5)获取数据包的详细信息,首部的各字段,包括源IP,目的IP,源端口,目的端口,源MAC,目的MAC等,将数据内容通过gbk方式解码
(4)侦听指定协议的数据包
(5)侦听含有指定数据的数据报包
(5)保存选中的包到本地
2.设计思路
(1)本软件使用的主要模块和功能:
a. 抓包模块
b. 数据包分析模块
c. 线程控制模块
(2)模块间调用关系
3.具体实现过程
(1)启动程序,展示用户界面
(2)获取当前网卡列表,用户指定要操作的网卡
(3)获取当前过滤规则,可通过协议,源IP,目的IP,关键字进行过滤,也可为空
(4)展示数据包基本信息
(5)根据用户点击的内容,对该包进行解析,显示详细内容
4.模块功能清单
Main.java 程序入口
MyInterface.java 程序界面类
NetworkCard.java 网卡类
|__ getDevices() 获取网卡列表
PacketCapture.java 抓包类
|-- run() 重写多线程的run方法,开启抓包线程
|-- showTable() 将抓到包的信息添加到列表
|-- getpacketlist() 其他类通过此方法获取Packet的列表
|-- TestFilter() 设置过滤规则
|__ getObj() 将抓到的包的基本信息显示在列表上,返回信息的String[]形式
PacketAnalyze.java 解析包类
|-- packetClass() 根据包的类型选择不同的方法进行解析
|-- IPanalyze() 解析IP数据包
|-- ICMPanalyze() 解析ICMP数据包
|-- TCPanalyze() 解析TCP数据包
|__UDPanalyze() 解析UDP数据包
5.运行截图
六、源代码
https://github.com/nicahead/MySniffer.git
Java实现简单的个人网络嗅探器相关推荐
- 简单网络嗅探器编写--------java
功能设计: 在设计之初,本设计被期望实现下面功能: ①有一个对用户友好的操作界面,使用户对软件上手快和操作简单: ②能对网卡进行选择,选择用户自己需要进行监听抓包的网卡: ③能够侦听所有进出本主机的数 ...
- java实现套接字网络编程_Java网络编程(一)Socket套接字
一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...
- 计算机网络课程设计之网络嗅探器的设计与实现
前言 本实验难点是在于Windows下的raw socket有太多的限制,因此用winpcap编程功能更加强大,但是根据指导书要求要用原始套接字,原始套接字在Linux系统下也十分强大,结尾附上Lin ...
- 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)
菜鸟学习笔记:Java提升篇10(网络2--UDP编程.TCPSocket通信) UDP编程 TCP编程(Socket通信) 单个客户端的连接 多个客户端的连接(聊天室案例) UDP编程 在上一篇中讲 ...
- 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)
菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...
- 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
本文在Ubuntu18.04运行,fabric版本为2.3.0.本文篇幅较长,因此分为两篇.快速运行一个简单的Fabric网络1详见:link 目录 3. Orderer节点的启动 4. Peer节点 ...
- ❤️熬夜爆肝十万字❤️Java最简单最全入门基础知识(一)(小白必备--推荐小白收藏)❤️
写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的 java 语言代码把思路体现出来. 学习 ...
- Java笔记整理七(网络编程,TCP通信程序,函数式接口,方法引用)
网络编程入门 1.软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器和 ...
- 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信
如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...
最新文章
- java程序a-z b-y_有一行电文,以按下面规律译成密码: A---Z a---z B---Y b---Y C---X c---x …… 即第1个字母编程第26个字...
- 安卓手机可以用python编程软件-可以在手机上进行Java,Python的编程软件,你用过么?...
- SAP UI5 subscribe event实现原理
- engagement center的session.connect
- 《大话设计模式》读书笔记-索引
- PPT优秀模板|7个技巧,让你的设计呈现更加完美
- 【linux指令】dialog实现终端下的GUI-3
- c++双向列表释放_Python列表生成式12个小功能,你常用哪几个?
- delphi 读取excel 两种方法
- ArcGIS 创建格网与图斑数据叠加;频数统计与面积比例计算
- 通信算法之二:信道编码译码 BCH码、RS码、卷积码、Turbo码、LDPC码
- 微信emoji表情编码 、MySQL 存储 emoji 表情符号字符集
- 基于java+swing的物业收费管理系统(java+swing+Gui)
- 如何理解泊松分布(Poisson Distribution)
- 别踩白块游戏java项目总结_学习小游戏别踩白块总结
- python day 5
- 前端 PC端兼容性问题总结
- 简易命令行界面的C/S聊天室
- 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)
- webview加载网页,tel协议不会调出拨号盘?该如何处理
热门文章
- [USACO12Jan][luogu3041] Video Game Combos [AC自动机+dp]
- [离散数学]集合论基础P_5:可数集合与不可数集合
- matlab复合形法优化设计,基于MATLAB复合形法的二级圆柱齿轮减速器的优化设计
- 【码上实战】【立体匹配系列】经典SGM:(5)视差优化
- 计算机二级access知识点题库,计算机二级access考试题库
- Python简单网页爬取
- switch+ios风格android,安卓仿IOS Switch开关按钮
- 2022 CCPC-final 总结
- MathCAD Prime 8.0数学工具的安装与使用配置
- 最适合学生党的Python兼职攻略以及接私活经验...