java 拦截网络数据包???? jpcap可以实现数据包的抓获,可不可以拦截某个端口的数据包,然后分析并 对数据段加密,然后再将该包发送出去, 目的主机基于同样的原理解密。 主要是要 夸平台,所以java,不知道java通过jpcap能不能实现这种效果阿? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import jpcap.*;import jpcap.packet.*;public class Jpcap { private NetworkInterface [] devices; private NetworkInterface device; private JpcapCaptor jpcap; private JpcapSender sender; private NetworkInterface getDevice() throws Exception{ devices = JpcapCaptor.getDeviceList(); device = devices[0]; jpcap = JpcapCaptor.openDevice(device, 2000, false, 10000); jpcap.setFilter("ip", true); //sender = jpcap.getJpcapSenderInstance(); jpcap.loopPacket(-1, new PacketReceiverImpl()); return device; } public Jpcap(){ try{ this.getDevice(); }catch(Exception e){ e.printStackTrace(); } //getDevice(); } public static void main(String []args){ Jpcap j = new Jpcap(); }}class PacketReceiverImpl implements PacketReceiver{ public void receivePacket(Packet packet) { try{ System.out.println(new String(packet.data,"gb2312")); }catch(Exception e){ e.printStackTrace(); } }} 能直接对端口抓吗?应该是某块网卡全抓,然后过滤出其中tcp包为某端口的。另外,实际上你抓包归抓包,单纯转包并不会改变原来包的流入流出,转包只是观察者,并不是改变者。所以利用抓包基本无法实现你要的功能。要做改变者,你可能需要在包送到网卡之前想办法,否则你就需要编网卡驱动一级的程序了。 jcap可以帮助你实现你要求的功能部分。但是除了把包捕获到,然后构造个新包发出去,还有很多问题要解决,主要是看你的应用了。假设你只是把发到你这里的包捕获-其实是镜像,然后用加密方式发给另外一台机器,类似后门监控这种应用,jcap就够用了(咱先不考虑性能);假设你要替代被捕获的包的内容,类似安全攻击这种功能,除了抓包,还需要控制网络,只有Jcap就不够了。2楼都说了,jcap是观察者,不是过滤器。 我不是入侵阿,我只是对包加密,要实现的功能就是:过滤某个端口的包,然后加密,在发送,接收时也一样,先对包解密,然后在传送给相应的进程。jpcap可以实现过滤嘛? 觉得这段程序很眼熟jpcap搞这个不现实它是从网卡拿的数据但是没法操作 我就说么,这段程序最早出自我的myeclipse...不过太烂,无注释,只调试用了只适合于jpcap的某个低级版本,高级版本的jpcap,这个程序是用不了的,api及class package结构有所变化 谁能肯定且坚定的回答,jpcap过滤数据包对包加密能实现嘛?不能的话,java有没有其他什么方式阿? JPCAP 的确不能实现啊,最后 我只得用SPI 阿 你所说的spi是指使用硬件实现的么 非代码? DefaultListModel的问题 有空的来看下~ 谢谢,呵呵~ 请教大家一个问题!今天我面试的题目 可以用两个JSplitPane把一个Jpanel分成三栏吗?我试了好多次都不可以,还有别的方法吗?知道的告诉下 谢谢了 急!!求正则表达式,最常用的数据格式验证 有什么方法可以获得该类所实现的接口,并指出具体是哪个接口么? 什么是J2EE啊? 寻找Java编程工具. bao 那里有下载jcertify 5阿? java.sql.SQLException: ORA-00936: 缺失表达式 网页嵌入pdf 关于compareTo方法到底是怎么比较顺序的?
import jpcap.packet.*;
public class Jpcap {
private NetworkInterface [] devices;
private NetworkInterface device;
private JpcapCaptor jpcap;
private JpcapSender sender;
private NetworkInterface getDevice() throws Exception{
devices = JpcapCaptor.getDeviceList();
device = devices[0];
jpcap = JpcapCaptor.openDevice(device, 2000, false, 10000);
jpcap.setFilter("ip", true);
//sender = jpcap.getJpcapSenderInstance();
jpcap.loopPacket(-1, new PacketReceiverImpl());
return device;
}
public Jpcap(){
try{
this.getDevice();
}catch(Exception e){
e.printStackTrace();
}
//getDevice();
}
public static void main(String []args){
Jpcap j = new Jpcap();
}}
class PacketReceiverImpl implements PacketReceiver{
public void receivePacket(Packet packet) {
try{
System.out.println(new String(packet.data,"gb2312"));
}catch(Exception e){
e.printStackTrace();
}
}
}
另外,实际上你抓包归抓包,单纯转包并不会改变原来包的流入流出,转包只是观察者,并不是改变者。所以利用抓包基本无法实现你要的功能。要做改变者,你可能需要在包送到网卡之前想办法,否则你就需要编网卡驱动一级的程序了。
但是除了把包捕获到,然后构造个新包发出去,还有很多问题要解决,主要是看你的应用了。假设你只是把发到你这里的包捕获-其实是镜像,然后用加密方式发给另外一台机器,类似后门监控这种应用,jcap就够用了(咱先不考虑性能);假设你要替代被捕获的包的内容,类似安全攻击这种功能,除了抓包,还需要控制网络,只有Jcap就不够了。
2楼都说了,jcap是观察者,不是过滤器。
过滤某个端口的包,然后加密,在发送,接收时也一样,先对包解密,然后在传送给
相应的进程。
jpcap可以实现过滤嘛?
jpcap搞这个不现实
它是从网卡拿的数据
但是没法操作
这段程序最早出自我的myeclipse...
不过太烂,无注释,只调试用了
只适合于jpcap的某个低级版本,
高级版本的jpcap,
这个程序是用不了的,
api及class package结构有所变化
最后 我只得用SPI 阿