用JAVA实现网络数据包嗅探
2016-06-22 11:07
387 查看
用JAVA实现网络数据包嗅探
网络嗅探可是说是网络开发的一个基础,SNIFFER、IDS都是在这个基础上开发的,一个提供了网络分析,一个提供了入侵检测。实现一个网络嗅探程序到底有多难呢?可以很复杂,也可以很简单。在WINDOWS平台下,大多依靠的是WINPCAP,如果你觉得还复杂,那就再封装。JAVA就把它封装成了JPCAP,就是在WINPCAP的DLL基础上又提供了几个包(JAR),你只要引入你的包,创建包中的对象,引用人家的方法就好了。下面是一个很简单的例子,嗅探进入192.168.10.206的HTTP数据包的源地址、长度和二进制数据,并记录到out.txt文件中:过程很简单,建立PacketCapture对象,lookupDevices发现本地网卡设备,打开其中一个,设置过滤条件,加入监听器,然后在监听程序中判断包格式,把源地址、长度和包数据写入文件。但是要说道原理就复杂多了,那要看网络的书了,各种协议的格式等等。总之有DLL的支援,JAVA的封装,留给我们的就是照猫画虎了。懂如何抓包的么?不懂!但是我可以抓到包并且分析之!这就够了。
import net.sourceforge.jpcap.capture.*;
import net.sourceforge.jpcap.net.*;
import java.util.*;
import java.io.*;
public class mycap implements PacketListener{
public static FileOutputStream fos = null;
private static final String FILTER = "dst host 192.168.10.206 and proto TCP and src port 80";
public static void main(String[] args)throws Exception{
int default_num = 1;
PacketCapture pcap = new PacketCapture();
String[] capDevices = pcap.lookupDevices();
pcap.open( (new StringTokenizer(capDevices[default_num],"\n")).nextToken(),true );
pcap.setFilter(FILTER, true);
fos = new FileOutputStream("out.txt");
mycap t1= new mycap();
pcap.addPacketListener(t1);
pcap.capture(-1);
}
public void packetArrived(Packet packet) {
try{
if(packet instanceof TCPPacket){
TCPPacket mytcppacket = (TCPPacket)
packet;
fos.write("\n-----------------------------------------------------\n".getBytes());
fos.write((mytcppacket.getSourceAddress()+"\t\t"+mytcppacket.getLength()+"\n").getBytes());
相关文章推荐
- IP地址、NAT、子网划分与子网掩码、CIDR等网络层相关知识整理
- 关于梦行Monxin如何新增收银员
- 用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通
- Android网络应用(三)——网络数据解析
- Python即时网络爬虫:API说明
- 计算机网络学习笔记二
- HttpClient
- 项目部署之多项目war配置同一个Tomcat利用不同端口访问项目(省略项目名/projectName 直接http://localhost:8090/)
- WEB服务器、应用程序服务器、HTTP服务器区别
- [Protocol Analysis]Wireshark capture packet tcp udp checksum error
- 神经网络
- Android OkHttp完全解析 是时候来了解OkHttp了
- Socket Server-基于NIO的TCP服务器
- uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?
- HTTP协议详解
- 常见http状态
- html标记语言的标准写法-参考自http://www.zhihu.com/question/20797118/answer/16212312
- Android Studio 编译不通过,报错“找不到org.apache.http.HttpEntity”
- iOS的HTTP请求和请求回执类用法小结
- Neural Networks and Deep Learning 学习笔记(五)