首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jnetpcap捕获HTTPS流量

jnetpcap捕获HTTPS流量
EN

Stack Overflow用户
提问于 2015-03-05 21:08:25
回答 1查看 1.2K关注 0票数 0

我第一次使用jnetpcap开发了一个简单的嗅探器系统。我修改了一些代码,目前可以读取HTTP流量(端口80)并打印其字段。

代码语言:javascript
复制
private void packetHandler(){
    jpacketHandler = new PcapPacketHandler<String>() {   
    Http httpheader = new Http();

    public void nextPacket(PcapPacket packet, String user) {  
        if(packet.hasHeader(httpheader)){
            System.out.println(httpheader.toString());
            if(httpheader.hasPayload()){
               System.out.println("HTTP payload: (string length is "
                     +new String(httpheader.getPayload()).length()+")");
               System.out.println(new String(httpheader.getPayload()));
               System.out.println("HTTP truncated? "
                     +httpheader.isPayloadTruncated());
            }
            //System.out.println(packet.toString());
        }}

    }; 
}

然后我遍历它。如何使用jnetpcap处理HTTPS (端口443)数据包?

EN

回答 1

Stack Overflow用户

发布于 2016-02-26 22:43:02

这就是我是如何做到的。你至少可以看到握手,之后就结束了,但是jnetpcap不能处理数据,所以你只需要十六进制转储和ASCII。它的格式不像packet.toString() ;),所以在你的nextPacket中:

代码语言:javascript
复制
    if (packet.hasHeader(tcp)) {  
      * tcpst = "Dport: "+tcp.destination()+"; Sport: "+tcp.source();
      int payloadstart = tcp.getOffset() + tcp.size();
      JBuffer buffer = new JBuffer(64 * 1024);
      buffer.peer(packet, payloadstart, packet.size() - payloadstart);
      payload = buffer.toHexdump(packet.size(), false, true, true);
    }

payloadstart是tcp报头的开始加上tcp报头的大小。

buffer.peer复制字节(从数据包开始,字节数)。

有效负载是一个字符串。toHexdump(多少字节,地址开/关,ASCII开/关,十六进制开/关)

*出于测试的原因,我只是在程序的后期打印出端口。但是您可以编写一个if语句并检查端口,如果其中一个端口是443,则可以执行其余的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28878601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档