Solved

vb.net passive tcp port monitoring of another application

Posted on 2010-09-22
3
1,743 Views
Last Modified: 2012-05-10
I have a vendor-provided VoIP contact center application.  There is a softphone installed on the local PC which communicates with a CTI server application.  The CTI server is accessed via a constant IP address and port.  The port used on the local PC is dynamically assigned.

Using Wireshark, I have documented all of the XML command/responses that occur between the softphone and the CTI application.  What I am trying to do is to reverse-engineer a passive API that sits on the local PC and monitors this softphone-CTI server traffic.  I intend to use this information to record events and drive activities in our CRM application.

I've created a vb.net application that can monitor a port and capture the activity.  The problem is that although I am communicating to the CTI application using a fixed server port, the local TCP port is dynamic, so I don't know which port to listen to.  It is this local port that initiates the conversation.

Is there a way to passively monitor all active ports for traffic going TO a specific IP/port and then use that to determine which local port to monitor for outgoing/incoming traffic?

Thanks.
0
Comment
Question by:asrobins
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
andr_gin earned 500 total points
Comment Utility
Version1:
You can use WinPcap that is used in Wireshark directly.
http://www.codeproject.com/KB/IP/dotnetwinpcap.aspx

Then you can log all packets that are Ethernet packets and IP packets and tcp packets and go from your computer of any port to a specific computer of a specific port.

Only combining the tcp packets to a continous stream may be complicated.

Version2:
You can build a simple proxy. You listen on the specific port and forward traffic to the same port on the other computer. Then you change the ip of the program on your pc to your local IP.
0
 
LVL 1

Author Closing Comment

by:asrobins
Comment Utility
Building a simple proxy is a good solution.  Unfortunately, aynchronous socket programming is not altogether that simple!
0
 
LVL 5

Expert Comment

by:andr_gin
Comment Utility
1.) You can check TcpClient.Available to see, if there is data available in the buffer to read:

Do
    If ClientTcpClient.Available>0 Then
        BytesRead = ClientStream.Read(Buffer,0,Buffersize)
        ServerStream.Write(Buffer,0,BytesRead )
   EndIf
   If ServerTcpClient.Available>0 Then
        BytesRead = ServerStream.Read(Buffer,0,Buffersize)
        ClientStream.Write(Buffer,0,BytesRead )
   EndIf
Loop

2.) Dont try to read and write the same TcpClient/Networkstream in two threads at the same time. This will cause an error.
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

A while ago, I was working on a Windows Forms application and I needed a special label control with reflection (glass) effect to show some titles in a stylish way. I've always enjoyed working with graphics, but it's never too clever to re-invent …
Network ports are the threads that hold network communication together. They are an essential part of networking that can be easily ignore or misunderstood, my goals is to show those who don't have a strong network foundation how network ports opera…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now