Ok, I'm sure I'm not the first one to have this problem. Anyone have an easy way to decode TNS/SQL packets? The problem is that the sniffer (4.3.5) has the decode built in, but Oracle uses dynamic ports. I don't know all the details of the TNS protocol, but what I see is this:
1. Client connects to port 1521. Sniffer decodes this as TNS protocol.
2. Server responds with a TNS redirect to port 2327 (or some other port)
3. The socket on port 1521 gets torn down.
4. A connect is made to port 2327 and the TNS/SQL conversation takes place there. The sniffer doesn't recognize these as TNS/SQL packets.
I thought of using protocol forcing, unfortunately this only works at layer 3 and not above. Interestingly, I did suck the file into Ethereal and was able to force the protocol to decode dest port 2327 as a TNS packet. However, Ethereal doesn't decode the SQL call inside the TNS encapsulation, which is what I'm after.
Another thing that I considered was reading the raw trace file (.cap) into a C program and changing the dest 2327 port into port 1521, but I don't know what the file format is.
Anyone have a solution?
1. Client connects to port 1521. Sniffer decodes this as TNS protocol.
2. Server responds with a TNS redirect to port 2327 (or some other port)
3. The socket on port 1521 gets torn down.
4. A connect is made to port 2327 and the TNS/SQL conversation takes place there. The sniffer doesn't recognize these as TNS/SQL packets.
I thought of using protocol forcing, unfortunately this only works at layer 3 and not above. Interestingly, I did suck the file into Ethereal and was able to force the protocol to decode dest port 2327 as a TNS packet. However, Ethereal doesn't decode the SQL call inside the TNS encapsulation, which is what I'm after.
Another thing that I considered was reading the raw trace file (.cap) into a C program and changing the dest 2327 port into port 1521, but I don't know what the file format is.
Anyone have a solution?