Quantcast
Channel: Ask Wireshark - RSS feed
Viewing all articles
Browse latest Browse all 16

Comment by Guy Harris for I'm trying to build a transparent proxy in Java with the ability to record data that passed through to be viewed later in wireshark.I was able to get the proxy working correctly with this snippet private static final int BUFFER_SIZE = 8192; ... public void run() { PcapHandle handle = null; PcapDumper dumper; try { InetAddress addr = InetAddress.getByName("localhost"); PcapNetworkInterface nif = Pcaps.getDevByAddress(addr); int snapLen = 65536; PcapNetworkInterface.PromiscuousMode mode = PcapNetworkInterface.PromiscuousMode.PROMISCUOUS; int timeout = 10; handle = nif.openLive(snapLen, mode, timeout); dumper = handle.dumpOpen("cap.pcap"); byte[] buffer = new byte[BUFFER_SIZE]; try { while (true) { int bytesRead = mInputStream.read(buffer); if (bytesRead == -1) break; // End of stream is reached --> exit mOutputStream.write(buffer, 0, bytesRead); dumper.dumpRaw(Arrays.copyOfRange(buffer, 0, bytesRead)); mOutputStream.flush(); } } catch (IOException e) { // Read/write failed --> connection is broken } dumper.close(); } catch (PcapNativeException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (NotOpenException e) { e.printStackTrace(); } } As you may notice I'm using Pcap4J to store raw bytes into a pcap file. The saving of the bytes works well but when I try to open it on wireshark it shows this message:ErrorAnd every packet shows as malformed. Ideally I would be seeing TCP and CQL (Cassandra) packets.Can anyone tell me what I'm doing wrong here?

Next: Comment by GGFPC for I'm trying to build a transparent proxy in Java with the ability to record data that passed through to be viewed later in wireshark.I was able to get the proxy working correctly with this snippet private static final int BUFFER_SIZE = 8192; ... public void run() { PcapHandle handle = null; PcapDumper dumper; try { InetAddress addr = InetAddress.getByName("localhost"); PcapNetworkInterface nif = Pcaps.getDevByAddress(addr); int snapLen = 65536; PcapNetworkInterface.PromiscuousMode mode = PcapNetworkInterface.PromiscuousMode.PROMISCUOUS; int timeout = 10; handle = nif.openLive(snapLen, mode, timeout); dumper = handle.dumpOpen("cap.pcap"); byte[] buffer = new byte[BUFFER_SIZE]; try { while (true) { int bytesRead = mInputStream.read(buffer); if (bytesRead == -1) break; // End of stream is reached --> exit mOutputStream.write(buffer, 0, bytesRead); dumper.dumpRaw(Arrays.copyOfRange(buffer, 0, bytesRead)); mOutputStream.flush(); } } catch (IOException e) { // Read/write failed --> connection is broken } dumper.close(); } catch (PcapNativeException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (NotOpenException e) { e.printStackTrace(); } } As you may notice I'm using Pcap4J to store raw bytes into a pcap file. The saving of the bytes works well but when I try to open it on wireshark it shows this message:ErrorAnd every packet shows as malformed. Ideally I would be seeing TCP and CQL (Cassandra) packets.Can anyone tell me what I'm doing wrong here?
Previous: Answer by Guy Harris for I'm trying to build a transparent proxy in Java with the ability to record data that passed through to be viewed later in wireshark.I was able to get the proxy working correctly with this snippet private static final int BUFFER_SIZE = 8192; ... public void run() { PcapHandle handle = null; PcapDumper dumper; try { InetAddress addr = InetAddress.getByName("localhost"); PcapNetworkInterface nif = Pcaps.getDevByAddress(addr); int snapLen = 65536; PcapNetworkInterface.PromiscuousMode mode = PcapNetworkInterface.PromiscuousMode.PROMISCUOUS; int timeout = 10; handle = nif.openLive(snapLen, mode, timeout); dumper = handle.dumpOpen("cap.pcap"); byte[] buffer = new byte[BUFFER_SIZE]; try { while (true) { int bytesRead = mInputStream.read(buffer); if (bytesRead == -1) break; // End of stream is reached --> exit mOutputStream.write(buffer, 0, bytesRead); dumper.dumpRaw(Arrays.copyOfRange(buffer, 0, bytesRead)); mOutputStream.flush(); } } catch (IOException e) { // Read/write failed --> connection is broken } dumper.close(); } catch (PcapNativeException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (NotOpenException e) { e.printStackTrace(); } } As you may notice I'm using Pcap4J to store raw bytes into a pcap file. The saving of the bytes works well but when I try to open it on wireshark it shows this message:ErrorAnd every packet shows as malformed. Ideally I would be seeing TCP and CQL (Cassandra) packets.Can anyone tell me what I'm doing wrong here?
$
0
0
What is `mInputStream`? What class is it an instance of? It needs *somehow* to be divided into packets, so that each `.read` call returns one packet. And if a packet is bigger than 262144 bytes, neither libpcap nor Wireshark support reading or writing it.

Viewing all articles
Browse latest Browse all 16

Trending Articles