在 Windows 上远程对 Linux 进行抓包

2023-11-09

笔者的运行环境:(成功)

  • 本地客户端:

    • Windows:

      • Windows 10 教育版(本文)
    • Wireshark:

      • Wireshark 4.0.6(本文)
  • 远程服务器:

    • Linux:

      • RedHat Enterprise Linux 9 x86_64(本文)
    • libpcap:

      • libpcap 1.10.4(本文)

名词解释

  什么是远程对 Linux 进行抓包?这指是在一台机器上查看另一个台远程 Linux 的网络的流量传输情况。为什么需要远程进行抓包呢?这是因为在远程的那台 Linux 可能不方便运行常规的抓包软件。比如,有可能是因为自己习惯在 Windows 下使用的那个 GUI 抓包软件不能在远程的那台 Linux 运行,或者远程的那台 Linux 没有电脑显示屏等等。这些原因都会导致需要远程对 Linux 进行抓包。

事先准备

  1. 为了方便远程输入命令、将文件加入到 Linux 操作系统中,最好还要在一台 Windows 操作系统上面使用一种终端控制软件,如 Xshell、Xftp 等。关于这方面的内容,可见笔者的另一篇如下博客。同时,该博客还给出了查看 Linux 中的 IP 的方法。

    如何在 Windows 主机上访问本地局域网中的 Linux 主机:
    https://blog.csdn.net/wangpaiblog/article/details/120052152

    现在,假设读者已经会了如何将文件从 Windows 中传入 Linux 中,以及查看 Linux 中的 IP。

  2. 由于 Linux 操作系统的种类繁多,因此首先要知道要安装 Linux 操作系统的处理器架构信息。以 RedHat Enterprise Linux 9 x86_64 为例,输入以下命令:

    cat /proc/version

    [root@192 ~]# cat /proc/version
    Linux version 5.14.0-284.11.1.el9_2.x86_64 (mockbuild@x86-vm-09.build.eng.bos.redhat.com) (gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4), GNU ld version 2.35.2-37.el9) #1 SMP PREEMPT_DYNAMIC Wed Apr 12 10:45:03 EDT 2023
    

    可以看出,上述的关键信息为 x86_64。记住这一点,下面将会用上。

  3. Linux 的 PMS 工具主流有两种。

    对于基于 Red Hat 的发行版,其 PMS 工具为 rpm,对应的安装命令为 yum。

    对于基于 Debian 的发行版,其 PMS 工具为 dpkg,对应的安装命令为 aptitude。

    笔者的操作系统 RedHat Enterprise Linux 9 x86_64 属于 Red Hat,将使用后缀为 rpm 的安装包。如果读者使用的操作系统为 Ubuntu,需要选择后缀为 deb 的安装包。如果读者不知道如何分辨,可以输入以下命令来验证:

    yum

    [root@XXX ~]# yum
    [...一长串说明文字...]
    

    如果输入 yum 之后,出现了一大串的说明文字,说明应该使用后缀为 rpm 的安装包。如果提示 yum 命令不存在,说明应该使用后缀为 deb 的安装包。当然,读者也可以通过输入命令 aptitude 来进行进一步的验证。

下载安装 Wireshark

  1. 抓包软件有很多,这里选择 Wireshark。Wireshark 官网:https://www.wireshark.org/

    Wireshark 下载完成之后就可以安装了。此软件的安装过程很傻瓜,这里从略。

下载运行 libpcap

  1. libpcap 是一种 Linux 下著名的抓包工具,而且 Wireshark 与它是兼容的。libpcap 官网:https://www.tcpdump.org/


    【踩坑提醒】

      有的读者可能会去下载安装 WinPcap,这是错误的。WinPcap 是一种 Windows 下的抓包工具,不适用 Linux,而且它已经停止更新了。


  2. 在 libpcap 官网下载 libpcap。

    在这里插入图片描述

  3. 先不要急着安装 libpcap。libpcap 是用 C 语言编写的,碰巧 Linux 也几乎如此。而 libpcap 的安装需要借助 GCC 进行编译,而 Linux 上可能已经安装了 GCC 了。因为有些 Linux 会内置 GCC,而有些软件在安装时会自动安装 GCC。

    输入如下命令查看 Linux 中 GCC 的版本:

    gcc --version

    [root@192 ~]# gcc --version
    gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4)
    Copyright © 2021 Free Software Foundation, Inc.
    本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
    包括没有适销性和某一专用目的下的适用性担保。
    

    可以看出,笔者的 Linux 操作系统已经有 GCC 了。如果读者的 Linux 中没有 GCC,可以输入以下命令安装 GCC:

    yum -y install gcc


    【踩坑提醒】

      对于读者的某些 Linux 操作系统,此处安装 GCC 可能会报错,解决方案可参考笔者的另一篇博客:

      解决 CentOS 8 使用 yum 安装 rpm 报错 Cannot prepare internal mirrorlist No URLs in mirrorlist:
    https://blog.csdn.net/wangpaiblog/article/details/131118012


  4. libpcap 需要 Flex、Bison 这两个依赖,输入如下命令进行安装:

    cd libpcap 压缩包所在目录

    如果缺少这两个依赖,则 libpcap 在后续安装时会报如下错误。

    configure: error: Neither flex nor lex was found.
    
  5. 将下载完的 .tar.gz 包通过 Xftp 传入 Linux 中。

    使用如下命令进入目录 libpcap 压缩包所在目录:(下面的 libpcap 压缩包所在目录 要改成实际的目录)

    yum -y install flex bison

  6. 使用如下命令解压 gz 包:

    tar -xzvf libpcap-1.10.4.tar.gz

  7. 使用如下命令进入解压后的目录:

    cd libpcap-1.10.4/

  8. 输入如下命令生成 Makefile

    ./configure --enable-remote

  9. 输入如下命令对进行 libpcap 编译:

    make

  10. 输入如下命令运行 libpcap。

    cd rpcapd/

    ./rpcapd -n -d

    注意:libpcap 运行时如果不指定端口号,就相当于将端口号指定为 2002。

设置 libpcap 环境变量

  1. 设置 libpcap 环境变量只是为了方便,这样下次运行 libpcap 时不必输入 libpcap 的全路径。

  2. 一个偷懒的方法是将环境变量添加在文件 /etc/profile 中。之所以说偷懒,是因为一旦升级或重装了 Linux 操作系统,这个文件就会被重置。

    最好的方法是将自设的环境变量放到 $HOME/ 下的缀为 .bash 的一系列文件中。不过笔者有时也偷懒。

  3. 在 Linux 中设置 libpcap 的环境变量偷懒方法:

    在文件 /etc/profile 尾追加以下内容:(注意:修改前最好先备份,以免发生误修改)

    (这里假设读者 libpcap 的安装路径为 /usr/local/libpcap

    export PATH=$PATH:/usr/local/libpcap/rpcapd
    

    在文件 /etc/profile 中追加路径正是上面生成的 libpcap 命令目录

  4. 现在需要验证一下环境变量有没有设置成功,但先不要着急验证,因为文件 /etc/profile 在 Linux 启动时才会被读取。可以使用以下方法来使环境变量生效。

    • 使用命令 source:

      source /etc/profile

    • 重启。重启的方法有很多,也可以使用命令 reboot

  5. 验证环境变量。这种方法有很多,只举几例。

    • 输入以下命令。如果输出了前面的设置,说明前面的环境变量设置成功。

      echo $PATH

    • 输入以下命令。如果输出了相应的路径(就是前面生成的 libpcap 命令目录/redis-cli),说明前面的环境变量设置成功。

      which rpcapd

      [root@localhost ~]# which rpcapd
      /usr/local/redis/bin/redis-cli
      
  6. 设置环境变量之后,以后在任何目录下只输入如下命令即可运行 libpcap。

    rpcapd -n -d

在 Wireshark 中远程连接 libpcap

  1. 打开 Wireshark,按如下操作即可。

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  2. 连接成功之后,Wireshark 就会显示出这些远程连接,然后就可以进行远程抓包了。

    在这里插入图片描述

    在这里插入图片描述

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

在 Windows 上远程对 Linux 进行抓包 的相关文章

  • 可以作为命令行参数传递多少数据?

    在 Linux 下生成进程时可以发送多少字节作为命令行参数 gahooa 推荐了一篇好文章http www in ulm de mascheck various argmax http www in ulm de mascheck vari
  • Windows 上 PE 文件 (exe) 的最小文件大小是多少?以及最小内存分配? [复制]

    这个问题在这里已经有答案了 Windows 上 PE 文件 exe 的最小文件大小是多少 以及最小内存分配 我 使用 VS 10 附带的 MASM ml exe 和 link exe 组装了以下代码 我不能忽略 kernel32 lib 和
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 如何运行 Windows 批处理文件但隐藏命令窗口?

    如何运行 Windows 批处理文件但隐藏命令窗口 我不希望 cmd exe 在执行文件时在屏幕上可见 这可能吗 如果你写一个非托管程序并使用创建进程 https learn microsoft com en us windows win3
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • shutdown.exe 参数带有破折号或斜杠?

    我使用的电话shutdown exe重新启动安装了不同版本 Windows 的计算机 对于 Windows XP 命令是 shutdown exe r f t 01 对于其他版本的 Windows 我使用 shutdown exe L R
  • 为什么默认情况下不启用 arp 忽略/通告 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个需要经验才能回答的具体问题 为什么 arp ignore arp announce 在 Linux 安装 例如 debian 上默认不启用 有
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • pthread_self() 返回的线程 ID 与调用 gettid(2) 返回的内核线程 ID 不同

    这句话来自于pthread self 的手册页 http linux die net man 3 pthread self 那么 我应该根据什么来决定是否应该使用pthread self or gettid确定哪个线程正在运行该函数 两者都
  • 如何在linux中使用iptables将http和https流量转发到透明代理[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 如何使用 go1.6.2 构建 linux 32 位

    有没有任何组合GOARCH and GOOS我可以设置哪些值来构建 ELF 32 位二进制文 件 GOOS linux and GOARCH 386 更多示例 架构 32 bit gt GOARCH 386 64 bit gt GOARCH
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 多个原始输入窗口接收器

    我有一个仅消息窗口 ATL CWindowImpl 它使用 RIDEV INPUTSINK 标志将自身注册为原始输入 这意味着无论该窗口是否是前台窗口 它都会获取所有输入 当该窗口只有一个实例时 这非常有效 但是 当我创建超过 1 个窗口实
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出
  • GetEventLogs() 返回没有设置事件日志?

    采取以下 C 代码 EventLog eventLogs eventLogs EventLog GetEventLogs computername foreach EventLog evt in eventLogs statusMessag
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判

随机推荐

  • 理解一个最简单的C语言代码,“hello world!“的真相

    怎么编写出一个最简单 能运行的程序 int main 使用你习惯的编辑器 创建test cpp 把这些代码敲进去 这就是一个程序了 他可以编译成一个test exe 是一个可以执行的程序 只不过这个程序什么事情都没做 可以暂时不用理解为什么
  • ue4 材质始终面向摄像机

    材质面向设想
  • flutter 基本类写法

    import package flutter cupertino dart class text extends StatefulWidget 有状态的 override State
  • ubuntu添加qmake 出现错误 qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or

    出错原因 没有安装qt4库 usr lib x86 64 linux gnu qt4 所以出现错误 可以安装手动安装qt库 sudo apt get install qt sdk 如果自己编译 库 那就需要手动修改路径 cd usr lib
  • VUE+Element-ui实战之el-calendar日历自定义显示内容

    目录 1 确保添加el calendar组件 2 遍历日期 确定显示内容 3 最终实现效果 4 完整代码 1 确保添加el calendar组件 确保你的element引入了el calendar组件 这里不再赘述 2 遍历日期 确定显示内
  • DLP和DMD的区别

    DLP是解决问题的方案 DMD是上述方案内采用的芯片 DMD只是DLP的一部分 DLP技术是TI的专利 全球只有TI提供 而采用DLP方案就必须用到DMD芯片 这也是TI垄断的
  • git如何撤销所有本地修改

    git checkout 本地所有修改的 没有的提交的 都返回到原来的状态 git stash 把所有没有提交的修改暂存到stash里面 可用git stash pop恢复 git reset hard HASH 返回到某个节点 不保留修改
  • 文本意图识别方案整理

    意图识别本质上是文本分类问题 从目前的对话数据来看 用户说的话一般是短文本 长度大多在几十个字内 其中关键词和短语对分类显著的作用 目前主流的本文分类模型可以分为CNN RNN和Bert self attention 三类 三者可以结合起来
  • Python二级考试常见题型及解析(附刷题软件)

    导语 Python二级考试是计算机等级考试中非常重要的一项考试 需要熟练掌握Python的基础知识和常见的编程技巧 本文将为大家介绍Python二级考试常见的题型及解析 并提供多个实例代码进行演示 帮助大家更好地理解和掌握考试内容 一 选择
  • 三因子两水平doe_DOE试验设计案例

    DOE试验设计 一种安排实验和分析实验数据的数理统计方法 试验设计主要对试验进行合理安排 以较小的试验规模 试验次数 较短的试验周期和较低的试验成本 获得理想的试验结果以及得出科学的结论 从本质上讲 DOE 是这样一门科学 研究如何以最有效
  • 软件工程-12章

    一 判断题 程序设计语言是值编程是表现出来的特点 习惯 逻辑思维等 F 进行程序设计语言的选择是 首先考虑的是应用领域 T 好程序的一个重要标准是源程序代码的逻辑简明清晰 易读易懂 T 软件测试的目的是尽可能多地发现软件中存在的错误 将它作
  • 关于辽大信息学院选导师的一点儿心得

    首先 看到这个博文的时候 你可能已经上岸了 欢迎进入一所211综合院校 信息学院成立源远流长 涉及科类比较多 从电工电子到软件 以及生物学 学院的哲理楼也是孕育了一大批辽大优秀的学子 其他的不扯了 谈选导师的事情 首先 学院任何一位老师都有
  • 解压报错 你需要从上一压缩卷启动解压命令以便解压 解决方案及WinRAR怎么分卷压缩详解

    一 解决方案 1 问题描述 解压的时候报错 提示 你需要从上一压缩卷启动解压命令以便解压 2 解决 会出现这个问题 是因为你正在解压的文件为分卷压缩生成的压缩包 首先你要确保自己有完整的压缩包 可能对方将压缩包分为5个 那么你就需要拿到5份
  • Tensorflow2.0训练损失值降低,但测试正确率基本不变的情况

    Tensorflow2 0训练损失值降低 但测试正确率基本不变的情况 问题描述 解决方法 修改参数 检查模型 loss计算方法 数据标签 权重初始值 问题描述 对于一个架构 在识别mnist手写数字集精度较高的情况下 更换其他数据集 却无法
  • 大数据集群可视化管理界面

    hadoop hadoop http master 50070 dfshealth html tab overview hdfs http master 50070 explorer html yarn http master 8088 c
  • a deep leaning

    1 设计了新的搜索空间 即NASNet search space 并在实验中搜索得到最优的网络结构NASNet 2 提出新的正则化技术 ScheduledDropPath 是DropPath方法的改进版 可以大大提高了模型的泛化能力 Dro
  • 大学计算机基础 - 第十一章习题

    1 选择题 1 多媒体计算机中的媒体信息是指 D 文字 音频 音频 图形 动画 视频 视频 音频 A B c D 全部 2 多媒体技术的主要特性有 C 多样性 集成性 交互性 实时性 A 仅 B c D 全部 多媒体技术具有以下基本特征 1
  • 【Linux】基础IO篇

    文章目录 C文件接口 系统调用文件接口 文件描述符 是什么 分配规则 内核角度理解 从task struct的角度理解文件描述符在内核当中是什么 理解文件描述符和文件流指针的区别 重定向 符号 接口 内核角度理解重定向 重定向的代码验证 动
  • Android获取IP地址

    主要获取IP地址代码 Get Ip address 自动获取IP地址 throws SocketException public static String getIpAddress String ipType String hostIp
  • 在 Windows 上远程对 Linux 进行抓包

    文章目录 名词解释 事先准备 下载安装 Wireshark 下载运行 libpcap 设置 libpcap 环境变量 在 Wireshark 中远程连接 libpcap 笔者的运行环境 成功 本地客户端 Windows Windows 10