一、实验题目

简单的个人网络嗅探器

二、实验目的

加深对 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实现简单的个人网络嗅探器相关推荐

  1. 简单网络嗅探器编写--------java

    功能设计: 在设计之初,本设计被期望实现下面功能: ①有一个对用户友好的操作界面,使用户对软件上手快和操作简单: ②能对网卡进行选择,选择用户自己需要进行监听抓包的网卡: ③能够侦听所有进出本主机的数 ...

  2. java实现套接字网络编程_Java网络编程(一)Socket套接字

    一.基础知识 1.TCP:传输控制协议. 2.UDP:用户数据报协议. 二.IP地址封装 1.InetAddress类的常用方法 getLocalHost() 返回本地主机的InetAddress对象 ...

  3. 计算机网络课程设计之网络嗅探器的设计与实现

    前言 本实验难点是在于Windows下的raw socket有太多的限制,因此用winpcap编程功能更加强大,但是根据指导书要求要用原始套接字,原始套接字在Linux系统下也十分强大,结尾附上Lin ...

  4. 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)

    菜鸟学习笔记:Java提升篇10(网络2--UDP编程.TCPSocket通信) UDP编程 TCP编程(Socket通信) 单个客户端的连接 多个客户端的连接(聊天室案例) UDP编程 在上一篇中讲 ...

  5. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  6. 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2

    本文在Ubuntu18.04运行,fabric版本为2.3.0.本文篇幅较长,因此分为两篇.快速运行一个简单的Fabric网络1详见:link 目录 3. Orderer节点的启动 4. Peer节点 ...

  7. ❤️熬夜爆肝十万字❤️Java最简单最全入门基础知识(一)(小白必备--推荐小白收藏)❤️

    写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的 java 语言代码把思路体现出来. 学习 ...

  8. Java笔记整理七(网络编程,TCP通信程序,函数式接口,方法引用)

    网络编程入门 1.软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器和 ...

  9. 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信

    如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...

最新文章

  1. java程序a-z b-y_有一行电文,以按下面规律译成密码: A---Z a---z B---Y b---Y C---X c---x …… 即第1个字母编程第26个字...
  2. 安卓手机可以用python编程软件-可以在手机上进行Java,Python的编程软件,你用过么?...
  3. SAP UI5 subscribe event实现原理
  4. engagement center的session.connect
  5. 《大话设计模式》读书笔记-索引
  6. PPT优秀模板|7个技巧,让你的设计呈现更加完美
  7. 【linux指令】dialog实现终端下的GUI-3
  8. c++双向列表释放_Python列表生成式12个小功能,你常用哪几个?
  9. delphi 读取excel 两种方法
  10. ArcGIS 创建格网与图斑数据叠加;频数统计与面积比例计算
  11. 通信算法之二:信道编码译码 BCH码、RS码、卷积码、Turbo码、LDPC码
  12. 微信emoji表情编码 、MySQL 存储 emoji 表情符号字符集
  13. 基于java+swing的物业收费管理系统(java+swing+Gui)
  14. 如何理解泊松分布(Poisson Distribution)
  15. 别踩白块游戏java项目总结_学习小游戏别踩白块总结
  16. python day 5
  17. 前端 PC端兼容性问题总结
  18. 简易命令行界面的C/S聊天室
  19. 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)
  20. webview加载网页,tel协议不会调出拨号盘?该如何处理

热门文章

  1. [USACO12Jan][luogu3041] Video Game Combos [AC自动机+dp]
  2. [离散数学]集合论基础P_5:可数集合与不可数集合
  3. matlab复合形法优化设计,基于MATLAB复合形法的二级圆柱齿轮减速器的优化设计
  4. 【码上实战】【立体匹配系列】经典SGM:(5)视差优化
  5. 计算机二级access知识点题库,计算机二级access考试题库
  6. Python简单网页爬取
  7. switch+ios风格android,安卓仿IOS Switch开关按钮
  8. 2022 CCPC-final 总结
  9. MathCAD Prime 8.0数学工具的安装与使用配置
  10. 最适合学生党的Python兼职攻略以及接私活经验...