有没有办法找到套接字对等进程的pid?

2023-12-30

我有以下案例:

  • iOS 上的两个应用程序(我的和第三方)需要通过 TCP/IP 进行通信
  • 我可以更改我的应用程序的代码,但不能更改第 3 方应用程序的代码
  • 协议无法更改(因为我无法更改第 3 方应用程序)。

在我的应用程序中,我想确保与正确的应用程序对话。

我知道如何获得对等端口geetpeername http://www.beej.us/guide/bgnet/output/html/multipage/getpeernameman.html

我正在寻找一种方法来找出使用该端口的进程的 pid。

我发现类似的问题:如何确定同一 iOS 设备上对等 TCP 连接的 PID? https://stackoverflow.com/questions/8248028/how-do-you-determine-the-pid-of-a-peer-tcp-connection-on-the-same-ios-device#comment23631276_8248028然而,在他的例子中,两个端口都在同一个应用程序中。

免责声明:我对私有 API 很满意。它不会发送到 AppStore。但是,我正在寻找非越狱手机的解决方案。

Update 1

我说我需要 PID,因为有已知的方法可以获取 PID 和应用程序包 id 之间的关联(使用 sysctl)。

一般来说,我并不关心PID本身。我关心的是弄清楚套接字另一端的应用程序是什么。


我没有解决方案,但如果我要尝试这样做,我会按以下方式进行:

在 UNIX 系统上,您可以使用lsof命令来确定哪些进程打开了哪些文件。这包括套接字和lsof允许您确定使用给定端口的进程的 pid。例如,使用

lsof -n -P -i :443

如果您尝试确定哪个进程正在使用端口 443 (HTTPS),这可能会产生(在 OS X 上):

COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
firefox 81615 myname  112u  IPv4 0xffffff8017379a40      0t0  TCP 192.168.2.7:52521->74.125.28.103:443 (CLOSE_WAIT)

开源版本lsof对于达尔文来说,我相信,可以在这里找到 http://www.opensource.apple.com/source/lsof/lsof-49/lsof/。因此,您可以尝试从 main.c 开始,并使用这些命令行参数,浏览代码,直到找到所使用的系统调用。

这当然有可能当在具有用户移动权限的进程中运行时,所需的调用将不起作用 http://www.noah.org/wiki/Port_to_PID。但是,也许不是?如果里面有安全检查lsof源本身,那么如果您自己复制并粘贴源,您当然可以删除它。

无论如何,如果没有人提供其他答案,那么可能值得一试。

Note: lsof适用于越狱手机,我刚刚尝试运行 Cydia 提供的当前版本。它们在 5.1.1 或 6.1.2 上对我不起作用。不知道为什么。我假设,如果它们在存储库中,那么在某些时候,有人能够移植lsof to iOS.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法找到套接字对等进程的pid? 的相关文章

随机推荐

  • 需要一点数学帮助来调整图像大小

    我有一个具有 X 宽度和 Y 高度值的图像 现在我想将高度设置为 60px 通过哪种计算我可以计算出图像正确调整大小的高度 我认为你正在努力保持纵横比 如果是这样 请使用以下命令 比率 原始高度 新高度 新宽度 原始宽度 比例
  • 在 Python (Pycharm) 中导入 numpy,安装了 Anaconda

    我对 python 很陌生 我正在尝试编写代码来导出一阶 ODE 因此 我需要某些软件包 例如 numpy 来执行此操作并安装了 Anaconda 当我尝试在 PyCharm 中使用 import numpy 命令时 它不起作用 我收到 M
  • 对产品列表进行分类的算法?拿2

    我问了一个类似的问题 https stackoverflow com questions 695347 algorithm to classify a list of products几周前就问过这个问题 但我没有正确地提出这个问题 所以我
  • 无法将 R 数据帧转换为 Spark DataFrame

    当我尝试使用以下方法将 R 中的本地数据帧转换为 Spark DataFrame 时 raw data lt as DataFrame sc raw data 我收到此错误 17 01 24 08 02 04 警告 RBackendHand
  • 如何禁用 OpenCV 相机中的缓冲区?

    我遇到过这种情况 我使用 OpenCV 来检测相机前面的人脸 并对这些人脸进行一些机器学习 我遇到的问题是 一旦我完成所有处理 并去抓取下一帧 我得到的是过去 而不是现在 意思是 我将读取缓冲区内的内容 而不是实际在相机前面的内容 由于我不
  • 在 C# 中克隆 VSTS 构建定义

    我正在使用 BuildHttpClient 的 GetDefinitionAsync 和 CreateDefinitionAsync 来克隆 VSTS 构建定义 这工作正常 但我想在项目的根文件夹之外的不同文件夹中创建构建定义 我可以通过
  • iOS 圆形渐变

    我的任务是用圆形渐变绘制线条 颜色应按圆圈变化 然后添加动画 现在我画了360层 有一定的间隔和不同的颜色 var colours UIColor UIColor var startAngle CGFloat 0 5 Double pi v
  • 无法从正文 onload 调用函数(未捕获的引用错误:未定义启动)javascript

    我有一个 body onload 调用 javascript 中的函数 我已经尝试了很多方法 但控制台只是打印到错误日志 未捕获的引用错误 未定义启动 我认为这可能是一个故障 如果它对您有用 请通知我 我的代码如下
  • 在控制器内创建会话 cookie

    我是 Tomcat servlet 和 Spring Web 的新手 我有 PHP 背景 所以至少可以说我有点迷失方向 我想要一个控制器为我创建一个会话 cookie 有人告诉我 我可以在标准 servlet 中获得这样的会话 protec
  • 下拉菜单:如何停用第一个(选定)选项?

    这是我正在使用的下拉菜单
  • 如何更改 Jenkins 中的 JAR 构建路径?

    我正在通过 Jenkins 构建一个 Java 项目 JAR 正在 C Windows System32 config systemprofile m2 repository com other 文件夹中创建 在 Jenkins 中执行 m
  • WriteConsoleOutputCharacter 导致控制台应用程序崩溃

    当尝试使用写入控制台输出字符 https learn microsoft com en us windows console writeconsoleoutputcharacter函数 应用程序崩溃 COORD pos pos X 0 po
  • 使用 boost::asio::read_async 读取 Protobuf 对象

    我正在使用 Boost asio 编写一个应用程序 其中客户端和服务器交换使用 google proto buffers 序列化的消息 我不知道通过网络发送的序列化消息的大小是多少 proto buf 对象似乎没有任何分隔符 以下是 pro
  • 从单独的类访问 JPanel 组件

    所以我想要一个在菜单页面和主应用程序页面之间切换的 CardLayout 类 但我想在它们自己的类中设计这两个面板 然后在不同的类中添加 ActionListener 和 CardLayout 并让 ActionListener 使用在面板
  • 分配给c中结构体中的数组

    我有以下代码 typedef struct Test long mem 1000 Test extern Test test int main Test test Test malloc sizeof Test test gt mem 0
  • 将页眉和页脚添加到多页Word文档VBA

    我正在尝试通过宏向Word文档的每一页添加页眉和页脚 我尝试了几种不同的方法 例如迭代页面上的每个形状 但在这种情况下 页眉和页脚会在每个页面上打印多次 具体取决于文档中的形状数量 目前 我的代码正在查找任何当前的页眉和页脚并删除它们 然后
  • nginx auth_basic“受限”提示每个请求登录

    我已经设置了一个简单的 nginx 服务器 将位置块配置为指向我想要服务的相应目录 并使用 auth basic 模块设置基本身份验证 然而 我的服务器在位置块下的每个页面请求上请求用户名 密码凭据 即使多次将它们提供给位置块下的不同页面
  • 获取 ARM 中逻辑应用的回调 url

    我正在部署一个 ARM 模板 其中包括 天蓝色函数 逻辑应用程序 下列的link https github com MicrosoftDocs azure docs blob master articles logic apps logic
  • 使用来自 WSL 的 numpy 安装 MKL 时引发 RuntimeError(f'Cannot parse version {FULLVERSION}')

    我尝试在 Windows 子系统 Linux 中将 MKL 与 numpy 链接https www intel com content www us en developer articles technical build numpy w
  • 有没有办法找到套接字对等进程的pid?

    我有以下案例 iOS 上的两个应用程序 我的和第三方 需要通过 TCP IP 进行通信 我可以更改我的应用程序的代码 但不能更改第 3 方应用程序的代码 协议无法更改 因为我无法更改第 3 方应用程序 在我的应用程序中 我想确保与正确的应用