有没有办法找到一个应用程序是否有其他应用程序可以调用的界面

时间:2014-05-20 04:12:45

标签: linux interface

我有一个有限文档的旧应用程序。我想从我要编写的程序或shell脚本中自动控制这个应用程序。是否有工具或方法可以找到可以通过其他程序调用的应用程序支持的接口(如果有)?目标应用程序已经在运行,因此通过“幕后”调用来控制它是我希望它支持的。

1 个答案:

答案 0 :(得分:1)

由于没有关于应用程序本身的信息,这有点难以说。但是,您可以使用lsofnetstat检查进程是否正在打开任何unix,tcp或udp套接字。他们是有记录的,所以请查看他们的手册页或向超级用户询问他们的帮助。

那么如果他们打开套接字怎么办?如果您不知道套接字期望您在其上发言的协议,则无关紧要。如果幸运的话,您可以查找端口号,也许使用维基百科的List of TCP and UDP port numbersnetstat也许可以直接告诉你。如果您可以了解套接字上运行的内容,您可以尝试与它进行通信。

但也许这将是一个自定义协议侦听一些随机端口(或者更糟糕的是,更流行的东西会使用相同的端口)。它可能正在监听unix套接字,在这种情况下你可能没有太多信息可以使用,除了文件名和任何错误代码,你可以让它在发送随机数据时呕吐回来。或者它甚至没有打开任何控制套接字,因为你没有配置它或者给它正确的命令行开关。

此时,除了咬紧牙关并开始阅读其代码之外,没什么可做的。可能有用的一些地方是命令行参数解析器和配置文件读取器。如果有远程控制功能,它可能有配置选项。您还可以尝试在代码库上搜索任何用于处理其语言中的网络连接的常用函数或常量。 “socket”在大多数语言中都是一个很好的猜测。

如果它是一个网络应用程序,你就在同一条船上,除了应用程序所做的几乎所有事情都是在几个特定端口上的网络请求。 Web应用程序通常根据HTTP请求定义其API,因此您将主要寻找将这些请求路由到代码库不同区域的代码。