【问题标题】:Get uid of packet with libpcap使用 libpcap 获取数据包的 uid
【发布时间】:2012-01-29 21:17:30
【问题描述】:

是否可以使用 libpcap 获取捕获的 tcp 数据包的有效 uid?换句话说,我可以使用 libpcap 来获取创建该数据包的用户 id 吗?

【问题讨论】:

    标签: c++ linux tcp libpcap


    【解决方案1】:

    不,UID 信息 - 如果有任何开始 - 不会通过 pcap 使用的 AF_PACKET 通道传播。

    【讨论】:

    【解决方案2】:

    如果数据包是从另一台计算机发送的,则无法保证发送数据包的人具有用户 ID - 例如,它可能是由具有没有用户 ID 的概念。

    如果数据包是从您的计算机发送的,libpcap 本身无法告诉您发送者的用户 ID。但是,如果您解析 TCP 数据包,您可以获得数据包的源 IP 地址和端口号,并且根据您运行的操作系统,您可能能够获得所有活动 TCP 连接的表您的机器,可能带有与之关联的进程 ID 或用户 ID。 (但是请注意,例如,在 UN*X 系统上,给定 TCP 连接的给定文件描述符可以由使用不同有效或真实用户 ID 运行的多个进程共享,在这种情况下,如果您只有如果使用 libpcap 捕获传输的数据包,您将没有足够的信息来确定发送数据包的进程的有效或真实用户 ID,因为您不知道发送数据包的进程。)

    【讨论】:

    • 这是我的困境。本来,我打算按照你的建议去做,但是,我只有数据包。我的问题是我正在尝试跟踪用户访问的网址,您描述的方法在 90% 的情况下都有效。但是,当有两个用户访问同一个站点的不同页面时,我不知道谁去了哪里。
    • 这种类型的跟踪只有在用户机器上运行时才有效。除非 HTTP 请求包含识别用户的信息,否则您无法通过服务器上运行的软件或在网络上进行第三方捕获来跟踪用户访问的 URL。
    • 该软件正在在用户的计算机上运行
    • 即用户的电脑有多个用户。用户可能会使用不同的浏览器实例,因此将使用不同的连接访问该站点,从而使用不同的本地端点,因此您可以知道谁去了哪里。 (如果他们使用 same 浏览器实例,他们在计算机看来就像 same 用户,因此在这种情况下问题无法解决。)
    • 我可以看出有多个用户访问服务器,但我无法匹配哪个用户访问了哪个页面,除非在连接,那么也许我可以这样做,基于捕获数据包的时间戳的相似性。
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多