AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 29783
Accepted
Amandasaurus
Amandasaurus
Asked: 2009-06-23 07:03:36 +0800 CST2009-06-23 07:03:36 +0800 CST 2009-06-23 07:03:36 +0800 CST

是否有一个简单的命令行工具可以在 linux 上嗅探单个命令的数据包?

  • 772

如果有一个命令行工具用于在 Linux 中嗅探单个命令的数据包,我会很高兴。类似sniff dumpfile command这样您就可以在终端中运行您想要数据包嗅探的命令并在其他地方获取数据包的转储。

我想只转储/保存/查看我输入的单个命令的网络流量,而不是我的单个网络接口上的所有 TCP 流量。因此,如果我登录到我的计算机并在后台运行 IRC,并且我确实这样做了sniff somefile wget http://www.google.com,我想查看 wget 命令下载http://www.google.com所执行的所有网络流量。我不希望'somefile' 让 IRC 网络流量混淆事物。

有很多 linux/unix 命令接受不同的命令并执行不同的操作。从sudo(以超级用户身份运行),nice更改 nice 级别,trickle(限制命令的带宽)

linux networking command-line-interface packet-analyzer
  • 10 10 个回答
  • 17316 Views

10 个回答

  • Voted
  1. Best Answer
    David Pashley
    2009-06-23T07:38:53+08:002009-06-23T07:38:53+08:00

    没有任何我知道的,但理论上应该不难得到类似的东西。Strace 可用于拦截网络系统调用。

    # strace -f -e trace=network -s 10000 /usr/bin/command arguments
    

    这将为您提供有关内核和进程之间发送的数据的信息。strace 的输出并不完全是您想要的。但是,strace 使用 ptrace 系统调用来拦截系统调用。也许可以编写一个程序来更有用地输出数据。

    或者,您还可以拦截漂亮有用的套接字、绑定和监听系统调用。可以编写一个小程序,在这些调用上使用 ptrace 和 libpcap,以便在每次打开新套接字时动态更改捕获过滤器。

    • 10
  2. pjf
    2012-02-09T05:33:45+08:002012-02-09T05:33:45+08:00

    跟踪转储

    Tracedump 是一个单一的应用程序 IP 数据包嗅探器,它捕获单个 Linux 进程的所有 TCP 和 UDP 数据包。

    在此处下载和描述:http: //mutrics.iitis.pl/tracedump

    • 8
  3. nik
    2009-06-23T07:13:51+08:002009-06-23T07:13:51+08:00

    试试 Wireshark——命令是tshark

    • tshark 允许您对从接口捕获的流量选择过滤器
    • 使用其他实用程序(如 debian lsof)来识别您感兴趣的应用程序完成的通信类型。

    或者,你真的只想要 LSOF?


    我认为没有一种工具可以动态地过滤与进程相关的所有通信。但是,您可以尝试使用诸如此类的工具来跟踪进程通信,lsof并且一旦您拥有一个可以将该进程的通信与系统上运行的所有其他流量隔离开的良好过滤器,您就可以获得正确的捕获。

    例如,wget通常目标 IP 地址与其他进程相关的流量不同。即使您采取类似skype目标端口范围的方法,通常也是固定的一个实例。


    这有点像不确定性原理。您通常可以知道通过一组通信路径(通过嗅探器过滤已识别的流组)正在经历什么,或者在哪里建立了不同的通信链接(使用 lsof)。

    我真的很想知道两者是否都可以用于应用程序。我认为应该是可行的。但是,还没有看到任何工具可以做到这一点。

    • 4
  4. Dan Carley
    2009-06-23T07:49:45+08:002009-06-23T07:49:45+08:00

    学习使用过滤器表达式。

    虽然这不会做你要求的花哨的跟踪东西。

    它将允许您从捕获中删除几乎所有“像 IRC 这样令人困惑的东西”。

    此外,了解过滤器语法以供将来快速参考非常有用。

    • 4
  5. Peter
    2009-06-23T10:10:00+08:002009-06-23T10:10:00+08:00

    专门针对 Web 浏览器/网页,例如 Firefox 的 Firebug 插件可能会为您提供一些您正在寻找的信息:http: //getfirebug.com/net.html

    对于更一般的应用程序,您可能需要使用 netstat 来识别应用程序使用的端口,然后使用带有过滤器的 Wireshark/tshark/dtrace 来捕获该流量。不是您正在寻找的单行答案...

    • 2
  6. rev
    2009-06-23T07:56:10+08:002009-06-23T07:56:10+08:00

    一个想法,试试VMWare

    -设置一个 vm
    - 配置该 vm 以使用特定的接口
    - 从主机上嗅探该接口(它就像一个中间人攻击)

    如果您隔离了该虚拟机上正在运行的网络应用程序,您可能会得到答案

    我想,一个更理想的解决方案是按照 VMWare 所做的那样指定它如何选择要讨论的接口。我认为它的魔力来自它使用的内核模块,在这种情况下,可能是 vmnet 内核模块。

    据我所知,应用程序不知道他们在谈论什么界面,我相信这是设计使然;他们不应该担心这些事情。

    此外,
    也许一个程序已经存在,我不知道。但是,如果编写了一个,您可以将其称为 nettrace(例如),并且用法可能类似于

    nettrace 程序接口

    然后嗅探它使用的接口并将路由(也许它自动执行)添加到您的真实接口

    • 1
  7. Jason Tan
    2009-06-23T08:10:01+08:002009-06-23T08:10:01+08:00

    假设您是当时唯一尝试连接到谷歌的人,我认为这样的事情应该可以解决问题:

    tcpdump -w <outfile> -i <interface> tcp dst host www.google.com and dst port 80

    如果您不是在盒子上尝试连接到 google 的唯一连接,那么如果您可以识别您正在连接的 IP/端口,您还可以指定 src 端口/src ip。

    除非您可以在您使用的任何客户端上指定它,否则识别 src 端口可能是个问题。我不确定你是否可以使用 wget。

    我强烈怀疑您可以同时指定 src 和 dst 端口, netcat因此如果您真的对 google 感兴趣,您可以通过 netcat (手动)进行 GET。

    当然手册页会给你细节

    • 1
  8. Jason Antman
    2009-06-23T09:09:40+08:002009-06-23T09:09:40+08:00

    tcpdump 手册页和许多网站都提供了过滤器的深入示例,甚至还有一些 tcpdump 过滤器表达式的在线存储库。它应该能够做几乎任何你能想到的事情,假设你对网络流量(源、目的地、端口、协议等)有所了解,而不仅仅是生成它的程序。

    如果您在服务器或无头机器上工作,您始终可以让 tcpdump 写入转储文件,然后在工作站上的 Wireshark 中打开它,并获得高级过滤和图形界面。

    • 1
  9. Not Now
    2009-06-23T09:22:51+08:002009-06-23T09:22:51+08:00

    也许这个脚本会通过对 tshark 命令进行适当的修改来做你想做的事情:

    #!/bin/bash
    
    # Start tshark in the background before we run the commsnd to be sniffed.
    # Add more options to tshark, as appropriate to your command....
    setsid tshark  -w dump -i eth0 tcp port 8080 >/dev/null 2>&1  &
    
    sleep 2
    
    wget www.google.com
    
    # tshark keeps running if you don't kill it. 
    # This kills all other tsharks that may be running.
    pkill -9 tshark
    

    稍后阅读转储文件:

    tshark -r dump
    
    • 1
  10. Toto
    2009-06-23T07:06:43+08:002009-06-23T07:06:43+08:00

    Dtrace 应该允许这样做,尽管我不知道它是否已经完全融入 Linux。

    • 0

相关问题

  • 更改 PHP 的默认配置设置?

  • 有什么软件可以模拟局域网?

  • 保护新的 Ubuntu 服务器 [关闭]

  • 带宽利用工具?[关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve