使用“tcpdump”查看原始数据包
使用“tcpdump”查看原始数据包
尽管像 Snort 这样的工具可以出色地筛选通过我们网络的所有内容,但有时需要查看原始数据。为此,我们最好的工具是“tcpdump”。
使用 tcpdump 的最基本方法是简单地发出以下命令:
tcpdump
使用 -v 选项可以获得更详细的信息,使用 -vv 选项可以获得更多的信息。
有用的选项
假设您已登录到您管理的远程计算机。通常,您会使用 SSH。如果您运行“tcpdump”时不带任何选项,则输出将充斥着来自 SSH 连接的数据包。要避免这种情况,只需从输出中删除端口 22:
tcpdump not port 22
您可以使用多个不同的端口来实现此目的:
tcpdump not port 143 and not port 25 and not port 22
如果您想要执行相反的操作,即仅监视某个端口(这有利于调试网络应用程序),您可以执行以下操作:
tcpdump port 143
您还可以从网络上的特定主机获取数据:
tcpdump host hal9000
如果你的机器有多个网络接口,你也可以指定你想要监听的网络接口:
tcpdump -i eth1
您还可以指定协议:
tcpdump udp
您可以在 /etc/protocols 中找到协议列表。
保存输出以供以后使用
在某些情况下,您可能希望将输出重定向到文件,以便以后详细研究它或使用其他程序来解析输出。在下面的示例中,您仍然可以在将输出保存到文件的同时查看输出:
tcpdump -l | tee tcpdump_`date +%Y%m%e-%k.%M`
在上面的例子中,我们可以通过日期和时间来识别每个转储。这在处理一天中某些时间出现的问题时可能会派上用场。tcpdump
还有一个选项可以将其输出转储为二进制格式,以便以后读取。要创建二进制文件:
tcpdump -w tcpdump_raw_`date +%Y%m%e-%k.%M`
稍后,你可以让 tcpdump 读取该文件
tcpdump -r tcpdump_raw_YYYMMDD-H.M
您还可以使用程序 ethereal 打开原始转储并对其进行解释。我们将在下一节中详细讨论 ethereal。
需要注意的事项
tcpdump 为我们提供了有关往返于我们网络的所有数据包的信息。但这一切意味着什么?
将 Ethereal 与 tcpdump 结合使用
Ethereal 是一种也可用于捕获网络数据包的工具。安装后,您可以打开您制作的原始转储文件。它看起来像这样:
这样就更容易看到发生了什么。您可以看到源 IP 和目标 IP 是什么,以及数据包的类型。然后,您可以轻松排除可能遇到的网络问题并分析可疑行为。再补充一个轶事,当我在写这节课并解释我自己的转储时,我看到我的个人工作站上有一些奇怪的活动。我几乎定期查询世界各地不同 IP 的机器上的端口 32772。我为端口 32772 运行了一个特定的转储,如下所示:
tcpdump port 32772 -w dump_32772
我得到的结果确实很奇怪。即使在 Google 搜索之后,我也没有找到任何相关信息,所以我怀疑我可能感染了木马。我运行了“rootkit hunter”(下一节将详细介绍),但什么也没找到。最后,通过逐个关闭,我发现是 Skype,我一直都打开它。尽管这最终被证明是无害的,但我很高兴有 tcpdump 向我指出了这一点。
阅读原始输出
正如您所见,即使阅读 tcpdump 中所谓的“人类可读”输出也有点难以理解。请看以下示例,这是我刚从转储中抓取的一个随机数据包:
17:26:22.924493 IP www.linux.org.www > test.linux.org.34365: P 2845:3739(894) ack 1624 win 9648 <nop,nop,timestamp 326501459 24374272>
我们有一个对www.linux.org 的网络服务器请求。在时间戳之后,您会注意到主机名末尾有 .www(表示端口 80)。此信息将发送到请求主机 test.linux.org 的端口 34365。“P”代表 TCP“oush”功能。这意味着数据应立即发送。后面的数字 2845:3739(894) 中,2845 标记第一个数据包的八位字节数。数字 3739 是数据包发送的最后一个字节数加 1。数字 894 是发送的数据包的长度。其中“ack 1624”是 TCP 术语“确认”——即数据包已被接受,下一个预期的数据包编号是 1624。之后,我们看到“win 9648”,表示发送主机正在等待窗口大小为 9648 个八位字节的数据包。接下来是时间戳。
现在,如果您认为这有点难以解释,如果您使用 -x 选项,它将以十六进制输出包含数据包内容。这里您需要一位埃及古物学家来解释输出:
18:12:45.149977 IP www.linux.org.www > test.linux.org.34536: . 1:1449(1448)
ack 487 win 6432 <nop,nop,timestamp 329284215 27156244>0x0000: 4500 05dc 6a81 4000 4006 493b c0a8 0006 E...j.@.@.I;....0x0010: c0a8 0009 0050 86e8 8fa4 1d47 1c33 e3af .....P.....G.3..0x0020: 8010 1920 b4d9 0000 0101 080a 13a0 7a77 ..............zw0x0030: 019e 5f14 4854 5450 2f31 2e31 2032 3030 .._.HTTP/1.1.2000x0040: 204f 4b0d 0a44 6174 653a 2054 6875 2c20 .OK..Date:.Thu,.0x0050: 3135
我们可以从输出中得知,这是一个 HTTP 请求。至于其余部分,它不是人类可读的,但我们放心,因为我们知道这是一个合法的数据包。使用这种格式的另一个优点是,即使我们无法准确解释这个数据包发生了什么,我们也可以将其发送给可能能够解释的人。最终,这是未经任何过滤就通过网络传输的原始数据。
相关文章:
使用“tcpdump”查看原始数据包
使用“tcpdump”查看原始数据包 尽管像 Snort 这样的工具可以出色地筛选通过我们网络的所有内容,但有时需要查看原始数据。为此,我们最好的工具是“tcpdump”。 使用 tcpdump 的最基本方法是简单地发出以下命令: tcpdump 使用 -v 选项可以…...
Python字符串处理全面教程
目录 第一部分:Python字符串基础 1.1 创建字符串 1.2 索引和切片 1.3 字符串连接和重复 1.4 字符串格式化 1.5 字符串的不可变性 总结: 第二部分:Python字符串常用方法 2.1 查找子字符串 find() 方法 index() 方法 rfind() 和 ri…...
基于微信小程序+ JAVA后端实现的【微信小程序跑腿平台】设计与实现 (内附设计LW + PPT+ 源码+ 演示视频 下载)
项目名称 项目名称: 《微信小程序跑腿平台的设计与实现》 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java, SSM框架数据库: MySQL前端技术: 微信小程序, HTML…(其它相关技术) …...
使用 VALUES 子句构建数据集
在数据库操作中,VALUES 子句是一个非常有用的工具,它可以直接在查询中创建一组值。这种方式非常适合用于临时数据的展示、测试和处理。本文将详细介绍 VALUES 子句的用法,并列出支持该功能的主要数据库系统。 一、VALUES 子句的基本用法 VA…...
for循环绑定id,更新html页面的文字内容
需求:将方法中内容对齐 实现方式 给for循环中每个方法添加一个动态的id在DOM结果渲染完后,更新页面数据,否则会报错,找不到对应节点或对应节点为空 <view v-for"(item, index) in itemList" :key"index"…...
claude3国内API接口对接
众所周知,由于地理位置原因,Claude3不对国内开放,而国内的镜像网站使用又贵的离谱! 因此,团队萌生了一个想法:为什么不创建一个一站式的平台,让用户能够通过单一的接口与多个模型交流呢&#x…...
Java:IO
首 java.io中有百万计的类,如何找到自己需要的部分? 流 IO涉及到一个“流”stream的概念,可以简单理解成数据从一个源头到一个目的地。明白数据从哪来,要到哪里去,数据流中是字节还是字符之后,才能找到自…...
ubuntu安全加固
知识背景: 项目背景: 常用命令: useradd: adduser: getent passwd: getent group: id username: adduser newname sudo: 修改shell为/bin/bash 新用户默认为/bin/sh,可以通过echo $SHELL查询,默认不能使用TAB…...
【MySQL】数据库的开始
前言 数据库是我们学习编程中一个非常重要的内容,像一些什么什么管理系统,如果想要存储数据都是需要连接数据库的。博主之前写过一篇图书管理系统的博客,那时的我还没接触过数据库,所有的数据都是现成创建的,感兴趣的…...
线性稳压电路和开关稳压电路
稳压二极管稳压电路 电网电压增大,导到u1端的电压增大,从而使输出电压,稳压二极管两端的电压增大,稳压二极管两端电压增大,使流过的电注增大。那么,流过线性电阻R的总电流增大。 Ur电压增大,从…...
Leetcode:找出峰值
普通版本 题目链接:2951. 找出峰值 - 力扣(LeetCode) class Solution { public:vector<int> findPeaks(vector<int>& mountain) {int sz mountain.size();vector<int> newMountain;for(int i 1;i < sz-1;i){…...
简单微信企业群消息推送接口
群管理 群发送接口 POST: JSONURL http://localhost:65029/m/wxapi/sendwxmsg{ "nr":"试", --消息 "at":"wxid_y0k4dv0xcav622,wxid_y0k4dv0xcav622",--群wxid "key":"F98F354F1671A2D21BC78C76B95E96EB",--群k…...
超好用!图像去雾算法C2PNet介绍与使用指南
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
java中使用mysql的json字段(代码示例)
前言: 最近做了个小项目,第一次使用json类型的数据库字段,这篇博文讲下使用过程中遇到的问题(数据库框架使用MyBatisplus) 应用到项目中的方法: 数据库as_farmer_apply表中的json字段: 实体类…...
GitHub的原理及应用详解(三)
本系列文章简介: GitHub是一个基于Git版本控制系统的代码托管平台,为开发者提供了一个方便的协作和版本管理的工具。它广泛应用于软件开发项目中,包括但不限于代码托管、协作开发、版本控制、错误追踪、持续集成等方面。 GitHub的原理可以简单概括为,在本地创建一个仓库(r…...
Flutter 中的 Offstage 小部件:全面指南
Flutter 中的 Offstage 小部件:全面指南 在Flutter中,Offstage是一个用于控制子组件是否出现在屏幕上的布局小部件。通过Offstage,你可以轻松地将组件从屏幕上隐藏或显示,而不需要从widget树中移除它。这对于实现条件渲染、动画效…...
微信小程序中使用vantUI步骤
第一步,配置project.config.json 在setting中新增如下: "packNpmManually": true,"packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./"}], 第…...
说一下 ACID 是什么?
ACID 是数据库事务的四个特性的首字母缩写,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 原子性(Atomicity&…...
深度解读 chatgpt基本原理
ChatGPT(Generative Pre-trained Transformer)是由OpenAI开发的一种大规模语言模型,基于Transformer架构,采用自监督学习和生成式预训练方法。以下是ChatGPT的基本原理的深度解读: ### 1. Transformer架构 Transforme…...
Oracle-修改用户名
1、项目背景 需要将导入一份最新的用户数据在tbl用户上,但需要将原来的tbl用户数据保留并能实现两个用户的比对。 2、解决思路 思路一:1)新建用户tbl_feng,导入数据;2)将两个用户换名称 3)比对 思路二&…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
