JAVA课程设计--抓取数据包
更新时间:2023-03-11 11:36:01 阅读量: 教育文库 文档下载
**大学
计算机科学与技术学院
实验报告
( 2007 ~2008 学年度 第 一 学期 )
课程名称
项目名称
网络编程技术 网络抓包
姓名
学号
专业 计算机
班级
地点
教师
一实验目的:
1. 通过学习,使大家熟练掌握JAVA的安装,配置及其运行环境。 2. 初步掌握如何连接JAVA和数据库。
3.从网络上采集至10万个数据包分别存入TXT文件和数据库中。 4.完成协议统计、包长统计。
5.实现数据包流量的时间变化(10分钟为单位)直观的统计图。
二.软硬件环境
操作系统:Windows xp 数据库:SQL Server 2000
开发环境:JDK_1_5-0-07, WinPcap_4_0_1,JCreator Pro 3.5
三 实验原理:
1. Java语言具有以下特点:简单、面向对象、分布式、解释执行、安全、 跨平台、高性能、多线程等特点。首先安装上述开发环境中的各个软件,Winpcap 是一个第三方类库,为Jpcap提供基础类Jpcap是一个静态库,可以被包截获程序直接调用,它应用Packet.dll导出的服务向上层应用程序提供强有力的截获界面。它是应用程序的一部分。 1)建立获取网络数据包的程序为JpcapTip.java
2)建立数据包流量的时间变化直观图和包长统计为ImageTest.java 3)建立对数据进行协议统计的程序为ConnServer.java
2. 在JpcapTip.java中向txt文件写入10万个IP数据包,包括(IP的源地址,目标地址,高层协议,长度, 版本号,标识符,标志,段偏移量,数据报的寿命数值,服务型号,数据),然后在把IP数据包的信息存放到SQL server 2000的数据库中。
3. 在ImageTest.java中统计共收集多少个数据包,计算平均包长,并统计包长。 4. 在ConnServer.java中协议统计。
四、网卡设置
1:openDevice
public static Jpcap openDevice(java.lang.String device, int snaplen, boolean promisc, int to_ms),第一个参数为string,指定要打开的设备名;第二个参数为int,指定每个包返回数据的长度;第三个参数为混杂标志,如果设为1,将网卡设置为混杂模式,监听全网段。第四个参数为以毫秒计超时时限。
2:getDeviceDescription
public static java.lang.String[] getDeviceDescription()
3:loopPacket
public int loopPacket(int count, JpcapHandler handler) 五、流程图
getDeviceList() 获得当前得到设备名
Set become promiscuous mode 设置网卡为混杂模式
loopPacket抓包 是否属于IP数据包
Y 转换成IPPacket Y N 抓包数是否为10000倍 Y 存入packe(n+1).txt 存入packe (n).txt
六 源程序
import jpcap.*;
import jpcap.packet.*; import java.io.*;
import java.sql.*;
import java.net.InetAddress; import java.lang.*;
public class getMessage1 implements PacketReceiver {
public void receivePacket(Packet packet) //实现接口PacketReceiver类中的receivePacket方法 {
System.out.println(\ }
public static void main(String[] args) { //定义变量用存放数据包的相应的信息
String src_ip=\ //IP的源地址 String dst_ip=\ //IP目标地址 int protocol=0; //IP高层协议 int length=0; //IP长度 int version=0; //IP版本号
Packet pa; try {
NetworkInterface[] NI=JpcapCaptor.getDeviceList(); //获取设备列表名
JpcapCaptor jpcap1= JpcapCaptor.openDevice(NI[1], 1024, true, 50); // 打开网卡设备
for(int j=0;j<100000;j++) //循环获取数据包 {
pa=jpcap1.getPacket(); //获取数据包
if (pa instanceof IPPacket) //判断是否为IP数据包
{
IPPacket ip=(IPPacket)pa;
System.out.println(ip.src_ip+\ ip.length+\
ip.rsv_frag+\ //屏
幕输出IP数据包的信息
RandomAccessFile rf = new RandomAccessFile(\把IP数据包写入到文本文件,创建一个用来输入输出RandomAccessFile流,文件名为packet
rf.seek(rf.length()); //定位文件指针在文件中的最后
rf.writeBytes(ip.src_ip+\
ip.length+\
ip.offset+\ /*向txt文件写入IP的源地址,目标地址,高层协议,长度, 版本号,标识符(序号),标志,段偏移量,数据报的寿命数值,服务型号*/ rf.close();
//将IP数据包的信息写入数据库 src_ip=ip.src_ip.toString(); dst_ip=ip.dst_ip.toString(); protocol=ip.protocol; length=ip.length; version=ip.version;
String JDriver=\ //驱动程序名
String conURL=\ //数据源
try {
Class.forName(JDriver); //获取驱动程序并加载
}
catch(java.lang.ClassNotFoundException e) {
System.out.println(\ }
Connection
con=DriverManager.getConnection(conURL);//建立数据库的连接
Statement s=con.createStatement(); //创建Statement对象用来执行SQL 语句 String query=\into captor values('\
s.executeUpdate(query); //执行SQL语句命令 s.close();
con.close(); //关闭操作 } } }
catch (Exception e) {
e.printStackTrace(); } } }
********************************************************* //ImageTest.java(实现对数据包流量的时间变化的直方图输出) //ImageTest.java(实现对数据包流量的时间变化的直方图输出) import java.awt.geom.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*; import java.awt.*;
//import jpcap.JpcapHandler; //import jpcap.Jpcap; //import jpcap.Packet; import java.awt.Graphics; import java.io.*;
import java.awt.font.*; import jpcap.*;
import jpcap.packet.*; import java.io.*; import java.lang.*; import java.sql.*;
public class ImageTest extends JFrame {
static int i=0; static int v=0;
static int[] arry = new int [220];
public void ImageTest() {
setSize(250,200);
}
public void paint(Graphics g) {
int w=0; int x=0; int y=0;
Graphics2D g2d=(Graphics2D)g;
g.setColor(Color.red); for(;x<40;x++)
g.drawLine(0,50+10*x,1000,50+10*x);
g.setColor(Color.black);
g.drawLine(0,50+10*x,1000,50+10*x);
repaint();
for(int z=1;w<200;w++,z++) {
g2d.setColor(Color.LIGHT_GRAY);
g.fillRect(50+(w+z),450-JpcapTip.arry[w],2,JpcapTip.arry[w]);
z=z+2;
g2d.setColor(Color.DARK_GRAY);
g.fillRect(50+(w+z),450-JpcapTip.arry[w],1,450); } }
public static void main(String arg[]) throws java.io.IOException {
int j=0; int k=1; int h=0;
long total=0;
NetworkInterface[] devices = JpcapCaptor.getDeviceList(); NetworkInterface deviceName = devices[1];
JpcapCaptor jpcap1 = JpcapCaptor.openDevice(deviceName, 1028, true, 100);
JFrame frame=new ImageTest(); frame.setSize(900,470);
frame.setBackground(Color.DARK_GRAY); frame.setVisible(true); for(;k<=200;k++)
{
jpcap1.loopPacket(1, new JpcapTip());
System.out.print( JpcapTip.p); System.out.print(\所抓的第\ System.out.print( k +\个包的长度: \所抓的第%d个包的长度为:\ System.out.println(JpcapTip.arry[k-1]); total=total+JpcapTip.arry[k-1];
i++;
v++;
frame.setTitle(\流量统计图 平均流量为:\包/秒\ } } }
****************************************************** 七 实验结果 截获的数据包:
数据包流量的时间变化的直方图
八 心得体会
正在阅读:
JAVA课程设计--抓取数据包03-11
日常购物口语,英语口语交际听力材料02-12
监火人培训教材07-07
最新王姓宝宝起名方案12-17
关于工作失误自我检讨书多篇最新版07-30
Microsoft Office Professional Plus 2007 在安装过程中出错解决06-01
“十一五”残疾人工作情况汇报06-11
饮料节日促销主题活动word版04-24
ZIPPO常见问题汇总 - 图文01-23
让我心动的一幕作文700字06-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 抓取
- 课程
- 数据
- 设计
- JAVA
- 104规约报文解析(实例(适用初学者))
- 板式家具通用检验标准
- 智慧工地:系统解决方案 - 图文
- 农村中小学教学质量调查研究
- 二级医院评审第七章日常统计学评价
- 义务教育小学数学新课程标准 - 图文
- 天津市滨海新区面向全国公开选拔领导干部公告
- 《企业知识产权管理规范》贯标文件模板
- 架空输电线路课程设计
- 河南省2018年上半年工程测量员中级理论知识考试试题
- 北理工16年12月《应用文写作》作业考核试题
- 关于公布第七届北京市中小学师生电脑作品评选活动获奖者名单的通知 - 图文
- 西方政治制度试题及答案
- 王家荣-职工持股(ESOP)
- 光盘题目
- 15大写作经典句型 迅速提高写作水平
- 跑腿公司大学生创业计划书
- 第二编 财政总预算会计第3-4章
- 拓展训练游戏大全(全部含图片)
- desktop.ini病毒清除方法