我在python中设置了一个udp数据包监听器,我希望能够识别正在广播它收到的数据的设备。
我有一个PHP网页正在从数据库中读取数据,该数据库在收到数据时插入数据的监听器填充。我的目标是设置一个切换开关,允许用户选择从哪个设备收听数据。因此,目前,数据仅由MT4000遥测设备广播,或使用终端通过端口30000手动发送数据。
我不想从特定的串口识别它,如:Identifying serial/usb device python中所述 而是它连接的任何地方(任何串口)。
我现在的想法是以某种方式,从收听者发送回同一设备的消息,既作为确认者又作为扫描,询问设备是什么。这是一种可行的方法吗?
一旦python识别出设备,我将插入数据库,当用户选择设备时,将发送修改后的查询,即
("SELECT * FROM table WHERE device = MT4000");
我觉得这不是一个干净的方法,并且会对不同的建议非常开放。
除非它有助于得到答案,否则我不是在寻找具体的代码,而是在寻找任务的理论。
答案 0 :(得分:1)
您可能希望了解nmap执行服务检测的方式。据我所知,它使用了几种不同的方法,然后采用最佳匹配方式。这些不同的方法包括:
您可以在service and application detection chapter。
中详细了解相关信息由于您还从这些设备接收数据,因此您可以查看该数据以确定其类型。 linux上的file命令是一个执行类似功能的工具,可以根据以下内容确定类型:
file命令的基础功能以libmagic(C库)的形式提供。值得尝试直接使用它,而不是复制它的功能。
值得指出的是,很多这些技术提供统计概率而不是某些答案。这可能意味着您必须在结果中处理一定程度的不确定性,从而导致错误分类。为了缓解这种情况,您可以收集数据,直到您确定提供数据的设备已被正确识别为止。