监视给定端口是否有未知的传入数据

时间:2013-11-30 05:29:18

标签: gps centos port tracking netstat

我正在测试一个设备(GPS跟踪),它将数据(GPS位置)发送到给定端口上的给定IP。 我不知道它发送了什么样的数据格式,有没有办法在我的CentOS服务器上侦听给定端口上的传入数据并可能在屏幕上打印?

2 个答案:

答案 0 :(得分:1)

扩展我之前留下的评论(当时我无法测试):如果您可以在计算机上访问Python,则可以创建以下简单脚本 - 例如在您调用myServer.py的文件中(归因:http://ilab.cs.byu.edu/python/socket/echoserver.html - 您将在那里找到有关Python网络编程的更多信息;值得一游):

#!/usr/bin/env python
import socket
host = ''       # your IP address
port = 50000    # pick a port you want to listen on. 
backlog = 5     # number of clients you could handle at once
size = 1024     # max size of data packet

# create socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# connect to host / port:
s.bind((host,port))
# start listening:
s.listen(backlog)

# stay in this loop until ctrl-c is typed at console:
while 1:
    client, address = s.accept()
    data = client.recv(size)
    if data:
        print data          # echo data to console
        client.send(data)   # echo data to client (may confuse your application, great for browser)
    client.close()

当我在Mac上通过输入

运行它时
chmod 755 myServer.py       # make it executable
./myServer                  # run the script

然后转到我输入的浏览器

http://localhost:50000/?hello=world

我的浏览器中有以下内容:

GET /?hello=world HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

我的控制台看起来像这样(我在服务请求后点击了ctrl-c):

[myMac:~myCodePath] myName% ./myServer.py
GET /?hello=world HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive


^CTraceback (most recent call last):
  File "./srv.py", line 13, in <module>
    client, address = s.accept()
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/socket.py", line 202, in accept
    sock, addr = self._sock.accept()
KeyboardInterrupt

我认为这应该是一种合理的方式来查看来自GPS的流量。应该很容易看到如何将响应更改回客户端 - 现在只是请求被回显,但您显然可以发送任何内容

client.send('anything')

如果您对此有任何疑问,请与我们联系。注意我使用了端口50000 - 我猜它会可用。我的机器设置方式我无法使用端口80(默认的html端口),但这主要是防火墙配置等问题。

答案 1 :(得分:1)

我找到了一个程序/命令netcat,似乎可以满足我的需要。我用Yum安装它,然后我可以输入它来收听端口333,例如

nc -l 333

它会不断在端口333上打印传入的数据。