jpcap可以实现数据包的抓获,可不可以拦截某个端口的数据包,然后分析并 对
数据段加密,然后再将该包发送出去, 目的主机基于同样的原理解密。
  主要是要 夸平台,所以java,不知道java通过jpcap能不能实现这种效果阿?

解决方案 »

  1.   

    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();
      }
     }
      

  2.   

    能直接对端口抓吗?应该是某块网卡全抓,然后过滤出其中tcp包为某端口的。
    另外,实际上你抓包归抓包,单纯转包并不会改变原来包的流入流出,转包只是观察者,并不是改变者。所以利用抓包基本无法实现你要的功能。要做改变者,你可能需要在包送到网卡之前想办法,否则你就需要编网卡驱动一级的程序了。
      

  3.   

    jcap可以帮助你实现你要求的功能部分。
    但是除了把包捕获到,然后构造个新包发出去,还有很多问题要解决,主要是看你的应用了。假设你只是把发到你这里的包捕获-其实是镜像,然后用加密方式发给另外一台机器,类似后门监控这种应用,jcap就够用了(咱先不考虑性能);假设你要替代被捕获的包的内容,类似安全攻击这种功能,除了抓包,还需要控制网络,只有Jcap就不够了。
    2楼都说了,jcap是观察者,不是过滤器。
      

  4.   

    我不是入侵阿,我只是对包加密,要实现的功能就是:
    过滤某个端口的包,然后加密,在发送,接收时也一样,先对包解密,然后在传送给
    相应的进程。
    jpcap可以实现过滤嘛?
      

  5.   

    觉得这段程序很眼熟
    jpcap搞这个不现实
    它是从网卡拿的数据
    但是没法操作
      

  6.   

    我就说么,
    这段程序最早出自我的myeclipse...
    不过太烂,无注释,只调试用了
    只适合于jpcap的某个低级版本,
    高级版本的jpcap,
    这个程序是用不了的,
    api及class package结构有所变化
      

  7.   

    谁能肯定且坚定的回答,jpcap过滤数据包对包加密能实现嘛?不能的话,java有没有其他什么方式阿?
      

  8.   

    JPCAP  的确不能实现啊,
    最后 我只得用SPI 阿
      

  9.   

    你所说的spi是指使用硬件实现的么   非代码?