当前位置: 首页 > news >正文

使用Wireshark截取并解密摄像头画面


在物联网(IoT)设备普及的今天,安全摄像头等智能设备在追求便捷的同时,往往忽视了数据传输过程中的加密保护。很多摄像头默认通过 HTTP 协议传输数据,而非加密的 HTTPS,从而给潜在攻击者留下了可乘之机。本文将从原理、工具配置、攻击步骤、局限性以及防御措施等多个角度,详细解析如何利用 Wireshark 截获摄像头传输的图像数据。


1. 背景与技术原理

1.1 IoT 设备的安全隐患

  • 便捷性优先,安全性不足
    许多摄像头在设计时为了降低使用门槛,选择了直接通过 HTTP 提供后台管理和视频预览功能。这种设计虽然使用简单,但因数据以明文方式传输,使得在局域网内的其他用户(如拥有 Wi-Fi 密码者)有机会截获并解析敏感数据。

  • 开放端口问题
    常见的 HTTP 服务一般会绑定在 80、81、8080、或 8081 等端口上。通过网络扫描工具(如 Nmap)可以快速发现这些开放端口,进而定位目标设备。

1.2 Wireshark 与无线流量分析

Wireshark 是一款功能强大的网络抓包工具,它能捕获并解析通过网络传输的各类数据包。在无线网络环境下,借助支持监控模式的无线网卡,Wireshark 能够监听目标网络的数据流量,若能获取到 WPA/WPA2 四次握手,则可以对流量进行解密分析,从而还原出原始的 HTTP 数据。


2. 攻击流程详解

2.1 前期准备

2.1.1 获取网络访问权限
  • 已知密码方案
    若你已经知晓目标 Wi-Fi 网络的密码,可将密码添加到 Wireshark 的解密设置中,这样在捕获到四次握手包后即可对流量进行解密。

  • 获取四次握手包
    四次握手是 WPA/WPA2 协议中用于建立加密连接的关键步骤。捕获这个握手包是解密网络流量的前提,因此确保目标设备在观看摄像头视频时能够生成握手包非常重要。

2.1.2 配置支持监控模式的无线网卡
  • 无线网卡选择
    使用一块支持监控模式(monitor mode)的无线网卡(如 Alfa AWUS036NHA)进行抓包。监控模式允许网卡接收所有经过的无线信号,而非仅限于发送到本机的数据包。

  • 进入监控模式
    利用工具 airmon-ng 将无线网卡(例如 wlan0)切换到监控模式:

    airmon-ng start wlan0
    

    在这里插入图片描述

    完成后,网卡通常会变更名称(例如 wlan0mon),这时候开始扫描周边无线网络。

    airodump-ng wlan0mon
    
  • 信道锁定
    根据 airodump-ng 的扫描结果,确定目标网络所使用的信道(Channel),然后固定无线网卡在该信道上,以便持续捕获目标流量。例如,如果目标网络在信道 12,则执行:

    airmon-ng start wlan0mon 12
    

2.2 Wireshark 数据捕获与解密配置

2.2.1 启动 Wireshark 抓包
  • 选择正确的网卡
    打开 Wireshark 后,选择已进入监控模式并固定在目标信道的无线网卡开始捕获数据。初始抓包时,由于数据是加密传输,Wireshark中显示的内容大多为乱码。
2.2.2 添加 Wi-Fi 解密密钥
  • 配置解密选项
    进入 Wireshark 的“编辑” → “首选项”菜单,选择左侧的“协议”列表中的 “IEEE 802.11”。在该选项中勾选“启用解密”。

    在这里插入图片描述

  • 输入解密密钥
    点击“编辑”按钮,在弹出的窗口中添加解密密钥。一般使用格式 password:networkname(例如 MyWiFiPass:HomeNetwork),然后点击保存。此时,若捕获到了正确的四次握手包,Wireshark 就能自动将捕获到的明文 HTTP 流量解密并显示出来。

在这里插入图片描述

2.2.3 流量过滤与目标定位
  • 应用过滤器
    为了排除局域网中其他无关流量,可以通过 MAC 地址或 IP 地址过滤目标设备的数据包。例如:在捕获的数据包列表中,右键点击某个目标设备的“接收地址”,选择“应用为过滤器”,只显示该设备的数据通信。

在这里插入图片描述

  • HTTP 流量过滤
    在 Wireshark 的过滤器栏中输入 http,进一步筛选出 HTTP 协议相关的数据包,聚焦于摄像头视频流的传输数据。

2.3 主动生成四次握手

在某些情况下,目标设备可能长时间处于稳定连接状态,导致没有新的四次握手被捕获。此时,可以采用“断连重连”策略:

  • 断开目标连接
    使用工具 MDK3 对目标设备发起断连攻击,迫使其重新连接网络,从而生成新的四次握手包。示例命令如下(确保无线网卡已锁定到目标信道,如信道 12):

    mdk3 wlan0mon d -c 12
    
  • 观察重新连接
    一旦目标设备重新连接,Wireshark 将捕获到新的四次握手包。使用 airodump-ng 命令辅助检查是否捕获成功,从而确保数据解密的有效性。


2.4 导出与解析截获的图像数据

2.4.1 导出 HTTP 对象
  • 停止抓包
    当你确信已经捕获到足够的数据后,停止 Wireshark 的数据捕获过程。

  • 导出数据包内容
    通过 Wireshark 的菜单依次选择“文件” → “导出对象” → “HTTP”,此时会弹出一个对象列表,其中包含了所有经过 HTTP 协议传输的文件。寻找列表中类型为 JPEG 的文件,即为摄像头传输的图像帧。

2.4.2 分析与查看截获图像
  • 保存文件
    选择目标图像文件,然后点击“保存”或“全部保存”,将文件保存到指定目录。

    在这里插入图片描述
    在这里插入图片描述

  • 打开文件
    直接使用图像查看器打开保存的 JPEG 文件,即可看到目标设备所接收到的摄像头图像。多张连续的图像还可能揭示视频流的动态内容。

在这里插入图片描述


3. 攻击局限性

  • 网络密码必须已知
    如果攻击者不知道目标网络的 Wi-Fi 密码,即使抓到四次握手也无法解密数据。

  • 有效信号范围
    攻击者必须处于足够接近目标网络的范围内,才能捕获到完整的无线信号。如果距离过远,信号强度不足,将影响抓包效果。

  • 目标设备状态
    若摄像头处于关闭状态或未有人观看视频,其传输的流量可能极少,导致抓包难度加大。


4. 防御措施与安全建议

为防止此类攻击,用户和设备管理者可以采取以下安全防护措施:

  • 启用 HTTPS
    对摄像头管理和预览界面启用 HTTPS 加密,防止数据传输过程中被截获。

  • 强密码策略
    为 Wi-Fi 网络和摄像头管理界面设置高强度密码,并定期更换,避免使用默认密码。

  • 网络隔离
    将摄像头及其他 IoT 设备部署在独立子网内,减少与主网络的交互,降低攻击面。

  • 禁用不必要的端口
    关闭不必要的开放端口,限制对管理接口的访问,降低被扫描和攻击的风险。

  • 定期更新固件
    确保摄像头和其他设备固件及时更新,以修补可能的安全漏洞。


温馨提示: 本文所有内容均基于公开技术资料和安全研究,切勿用于任何非法用途,合法合规始终是网络安全工作的前提。

相关文章:

使用Wireshark截取并解密摄像头画面

在物联网(IoT)设备普及的今天,安全摄像头等智能设备在追求便捷的同时,往往忽视了数据传输过程中的加密保护。很多摄像头默认通过 HTTP 协议传输数据,而非加密的 HTTPS,从而给潜在攻击者留下了可乘之机。本文…...

IDEA 基础配置: maven配置 | 服务窗口配置

文章目录 IDEA版本与MAVEN版本对应关系maven配置镜像源插件idea打开服务工具窗口IDEA中的一些常见问题及其解决方案IDEA版本与MAVEN版本对应关系 查找发布时间在IDEA版本之前的dea2021可以使用maven3.8以及以前的版本 比如我是idea2021.2.2 ,需要将 maven 退到 apache-maven-3.…...

20250-3-8 树的存储结构

一、树的逻辑结构回顾 树:一个分支结点可以有多课子树 如果按照二叉树的存储来实现树的存储,则只依靠数组下标,无法反映结点之间的逻辑关系。 二、双亲表示法(顺序存储) 1.因此:我们可以用链式存储的方法&…...

Visual-RFT视觉强化微调:用「试错学习」教会AI看图说话

📜 文献卡 英文题目: Visual-RFT: Visual Reinforcement Fine-Tuning;作者: Ziyu Liu; Zeyi Sun; Yuhang Zang; Xiaoyi Dong; Yuhang Cao; Haodong Duan; Dahua Lin; Jiaqi WangDOI: 10.48550/arXiv.2503.01785摘要翻译: 像OpenAI o1这样的大型推理模型中的强化微调…...

PDF处理控件Aspose.PDF,如何实现企业级PDF处理

PDF处理为何成为开发者的“隐形雷区”? “手动调整200页PDF目录耗时3天,扫描件文字识别错误导致数据混乱,跨平台渲染格式崩坏引发客户投诉……” 作为开发者,你是否也在为PDF处理的复杂细节消耗大量精力?Aspose.PDF凭…...

DeepSeek-R1本地化部署(Mac)

一、下载 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方网站:https://ollama.com/ 点击 Download 即可,支持macOS,Linux 和 Windows;我下载的是 mac 版本,要求macOS 11 Big Sur or later,Ol…...

Swift Package Manager (SPM) 创建并集成本地库

在macOS 项目中,使用 Swift Package Manager (SPM) 创建并集成本地库的完整步骤。 创建一个macos应用程序,选择 swift、oc、swiftui都可以。 创建好应用之后,开始创建SPM本地库。 打开终端app,进入项目根目录,逐次输…...

分布式锁—6.Redisson的同步器组件

大纲 1.Redisson的分布式锁简单总结 2.Redisson的Semaphore简介 3.Redisson的Semaphore源码剖析 4.Redisson的CountDownLatch简介 5.Redisson的CountDownLatch源码剖析 1.Redisson的分布式锁简单总结 (1)可重入锁RedissonLock (2)公平锁RedissonFairLock (3)联锁MultiL…...

文献分享: ConstBERT固定数目向量编码文档

😂图放这了,大道至简的 idea \text{idea} idea不愧是 ECIR \text{ECIR} ECIR 👉原论文 1. ConstBERT \textbf{1. ConstBERT} 1. ConstBERT的原理 1️⃣模型的改进点:相较于 ColBERT \text{ColBERT} ColBERT为每个 Token \text{Tok…...

如何使用SSH命令安全连接并转发端口到远程服务器

ssh -p 22546 rootconnect.westc.gpuhub.com d6IS/mQKq/iG ssh -CNgv -L 6006:127.0.0.1:6006 rootconnect.westc.gpuhub.com -p 22546 第一条命令:用于登录远程服务器,进行交互式操作。第二条命令:用于建立 SSH 隧道,进行端口转…...

SolidWorks 转 PDF3D 技术详解

在现代工程设计与制造流程中,不同软件间的数据交互与格式转换至关重要。将 SolidWorks 模型转换为 PDF3D 格式,能有效解决模型展示、数据共享以及跨平台协作等问题。本文将深入探讨 SolidWorks 转 PDF3D 的技术原理、操作流程及相关注意事项,…...

9.2 EvictionManager源码解读

本节重点总结 : evictionManager初始化了两个相同的manager对象 evictionManager做本机驱逐pod的判定和厨房evictionAdmitHandler用来kubelet创建Pod前进依据本机的资源压力进行准入检查 evictionManager判断内存驱逐阈值有两种方法 第一种使用内核的memcg的通知机制&#xff…...

考研数一非数竞赛复习之Stolz定理求解数列极限

在非数类大学生数学竞赛中,Stolz定理作为一种强大的工具,经常被用来解决和式数列极限的问题,也被誉为离散版的’洛必达’方法,它提供了一种简洁而有效的方法,使得原本复杂繁琐的极限计算过程变得直观明了。本文&#x…...

整理一下高级设施农业栽培学这门课程的所有知识点

整理一下高级设施农业栽培学这门课程的所有知识点 以下是高级设施农业栽培学这门课程从入门到精通需要学习的知识点: 一、设施农业概述 设施农业的概念与发展历程 了解设施农业的定义、特点及作用,掌握其发展历程、现状与未来趋势。熟悉国内外设施农业…...

2025最新软件测试面试八股文(含答案+文档)

1、请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。 参考答案: 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 白盒测试:已知产品的内部工作过程…...

系统架构设计师—系统架构设计篇—基于体系结构的软件开发方法

文章目录 概述基于体系结构的开发模型-ABSDM体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化 概述 基于体系结构(架构)的软件设计(Architecture-Based Software Design,ABSD)方法。 AB…...

求最大公约数【C/C++】

大家好啊,欢迎来到本博客( •̀ ω •́ )✧,我将带领大家详细的了解最大公约数的思想与解法。 一、什么是公约数 公约数,也称为公因数,是指两个或多个整数共有的因数。具体来说,如果一个整数能被两个或多个整数整除&…...

Transformer 代码剖析16 - BLEU分数(pytorch实现)

一、BLEU算法全景图 #mermaid-svg-uwjb5mQ2KAC6Rqbp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uwjb5mQ2KAC6Rqbp .error-icon{fill:#552222;}#mermaid-svg-uwjb5mQ2KAC6Rqbp .error-text{fill:#552222;stroke:…...

手机屏幕摔不显示了,如何用其他屏幕临时显示,用来导出资料或者清理手机

首先准备一个拓展坞 然后 插入一个外接的U盘 插入鼠标 插入有数字小键盘区的键盘 然后准备一根高清线,一端链接电脑显示器,一端插入拓展坞 把拓展坞的连接线,插入手机充电口(可能会需要转接头) 然后确保手机开机 按下键盘…...

labelimg标注的xml标签转换为yolo格式标签

本文不生产技术,只做技术的搬运工!!! 前言 在yolo训练时,我们需要对图像进行标注,而使用labelimg标注时如果直接选择输出yolo格式的数据集,则原始数据的很多信息无法被保存,因此一版…...

Linux云计算SRE-第十七周

1. 做三个节点的redis集群。 1、编辑redis节点node0(10.0.0.100)、node1(10.0.0.110)、node2(10.0.0.120)的安装脚本 [rootnode0 ~]# vim install_redis.sh#!/bin/bash # 指定脚本解释器为bashREDIS_VERSIONredis-7.2.7 # 定义Redis的版本号PASSWORD123456 # 设置Redis的访问…...

K8S学习之基础十八:k8s的灰度发布和金丝雀部署

灰度发布 逐步扩大新版本的发布范围,从少量用户逐步扩展到全体用户。 特点是分阶段发布、持续监控、逐步扩展 适合需要逐步验证和降低风险的更新 金丝雀部署 将新版本先部署到一小部分用户或服务器,观察其表现,再决定是否全面推广。 特点&…...

WSL with NVIDIA Container Toolkit

一、wsl 下安装 docker 会提示安装 docekr 桌面版,所以直接安装 docker 桌面版本即可 二、安装 NVIDIA Container Toolkit NVIDIA Container Toolkit仓库 https://github.com/NVIDIA/nvidia-container-toolkit​github.com/NVIDIA/nvidia-container-toolkit 安装…...

PAT线上考试 真题/注意细节(甲/乙级)

闲谈 从此以后!参加竞赛! 都要为自己留够足够的时间练习! 都要为自己留够足够的时间练习! 都要为自己留够足够的时间练习! 重要的事情说三遍,毕竟这只是我参加各种竞赛的开始! \(&#xff…...

springcloud sentinel教程

‌QPS(Queries Per Second)即每秒查询率 TPS,每秒处理的事务数目 PV(page view)即页面浏览量 UV 访问数(Unique Visitor)指独立访客访问数 一、初识Sentinel 什么是雪崩问题? 微服务之间相…...

摄相机标定的基本原理

【相机标定的基本原理与经验分享】https://www.bilibili.com/video/BV1eE411c7kr?vd_source7c2b5de7032bf3907543a7675013ce3a 相机模型: 定义: 内参:就像相机的“眼睛”。它描述了相机内部的特性,比如焦距(镜头的放…...

HJ C++11 Day2

Initializer Lists 对于一个类P class P{P(int a, int b){cout << "P(int, int), a" << a << ", b " << b << endl;}P(initializer_list<int> initlist){cout << "P(initializer_list<int>), val…...

在 ASP.NET Core 中启用 Brotli 和 Gzip 响应压缩

在本文中&#xff0c;我们将探讨如何在 ASP.NET Core 应用程序中启用响应压缩&#xff0c;重点介绍 Brotli 和 Gzip 算法以及如何验证压缩是否有效。 什么是响应压缩&#xff1f; 响应压缩通过使用Brotli 或 Gzip等算法来最小化 HTTP 响应的大小。这些算法在传输文本资产&#…...

leetcode69.x 的平方根

题目&#xff1a; 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.5) 或者 x ** 0.5 。…...

第11章 web应用程序安全(网络安全防御实战--蓝军武器库)

网络安全防御实战--蓝军武器库是2020年出版的&#xff0c;已经过去3年时间了&#xff0c;最近利用闲暇时间&#xff0c;抓紧吸收&#xff0c;总的来说&#xff0c;第11章开始学习利用web应用程序安全&#xff0c;主要讲信息收集、dns以及burpsuite&#xff0c;现在的资产测绘也…...

flac、kgg、kgma格式音频转换MP3

1. 选择需要转换的音频文件 2. 下载闪电音频格式转换器 闪电音频格式转换器-全面覆盖常见音乐格式_音频合并分割_音频压缩 3. 买会员有点贵&#xff0c;也没必要&#xff0c;偶尔转换一次的&#xff0c;就去闲鱼买&#xff0c;两天会员9块钱。 4. 闲鱼卖家给兑换码&#xff0c…...

macos 程序 运行

sudo xattr -r -d com.apple.quarantine [/Applications/Name]使用stow 管理配置文件...

基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

HTML5 表单属性

HTML5 表单属性 引言 HTML5作为新一代的网页标准,带来了许多新的特性和改进。在表单处理方面,HTML5引入了一系列新的表单属性,这些属性使得表单的创建和使用更加灵活和强大。本文将详细介绍HTML5表单属性,包括其功能、使用方法和注意事项。 一、HTML5表单属性概述 HTML…...

从0开始,手搓Tomcat

一、什么是Tomcat Tomcat 是一款开源的、轻量级的 Web 服务器&#xff0c;它不仅能够提供 HTTP 服务&#xff0c;还能够运行 Java Servlet 和 JavaServer Pages&#xff08;JSP&#xff09;。对于许多开发者来说&#xff0c;理解 Tomcat 的目录结构以及如何在该结构中组织应用…...

数列分块入门2

题目描述 给出一个长为 n n n 的数列&#xff0c;以及 n n n 个操作&#xff0c;操作涉及区间加法&#xff0c;询问区间内小于某个值 x x x 的元素个数。 输入格式 第一行输入一个数字 n n n。 第二行输入 n n n 个数字&#xff0c;第 i i i 个数字为 a i a_i ai​&a…...

【ThreeJS Basics 06】Camera

文章目录 Camera 相机PerspectiveCamera 透视相机正交相机用鼠标控制相机大幅度转动&#xff08;可以看到后面&#xff09; 控制组件FlyControls 飞行组件控制FirstPersonControls 第一人称控制PointerLockControls 指针锁定控制OrbitControls 轨道控制TrackballControls 轨迹球…...

postman接口请求中的 Raw是什么

前言 在现代的网络开发中&#xff0c;API 的使用已经成为数据交换的核心方式之一。然而&#xff0c;在与 API 打交道时&#xff0c;关于如何发送请求体&#xff08;body&#xff09;内容类型的问题常常困扰着开发者们&#xff0c;尤其是“raw”和“json”这两个术语之间的区别…...

docker1

前言 技术架构 单机架构 应用数据分离架构 应用服务集群架构 读写分离/主从分离架构 写入主的时候&#xff0c;要同步Mysql从的数据才可以 冷热分离架构 写的时候要写入主和缓存数据库 读的时候先去缓存看有没有&#xff0c;没有的话就去从数据库读数据 主要就是看这个数据是…...

RocketMQ延迟消息深度解析:原理、实践与性能调优

RocketMQ延迟消息深度解析&#xff1a;原理、实践与性能调优 编程相关书籍分享&#xff1a;https://blog.csdn.net/weixin_47763579/article/details/145855793 DeepSeek使用技巧pdf资料分享&#xff1a;https://blog.csdn.net/weixin_47763579/article/details/145884039 一、…...

RabbitMQ 高级特性解析:RabbitMQ 消息可靠性保障 (上)

RabbitMQ 核心功能 RabbitMQ 高级特性解析&#xff1a;RabbitMQ 消息可靠性保障 &#xff08;上&#xff09;-CSDN博客 RabbitMQ 高级特性&#xff1a;从 TTL 到消息分发的全面解析 &#xff08;下&#xff09;-CSDN博客 前言 最近再看 RabbitMQ&#xff0c;看了看自己之前写…...

大白话JavaScript实现一个函数,将数组中的元素进行去重

大白话JavaScript实现一个函数&#xff0c;将数组中的元素进行去重 答题思路 要实现数组元素去重的函数&#xff0c;核心思路是遍历数组&#xff0c;然后判断每个元素是否已经在新数组里存在&#xff0c;如果不存在就添加进去&#xff0c;存在则跳过。下面会介绍几种不同的实…...

PQL查询和监控各类中间件

1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据&#xff0c;其并不是代表具体的数据格式&#xff0c;而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时&#xff0c;就需要使用到 metrics prometheus支持的met…...

uni_app实现下拉刷新

1. 在页面配置中启用下拉刷新 首先&#xff0c;你需要在页面的 pages.json 文件中启用下拉刷新功能。 {"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首页","enablePull…...

C#类型转换基本概念

一、基本定义‌ C# 类型转换是将数据从一种类型转换为另一种类型的过程&#xff0c;分为 ‌隐式转换‌ 和 ‌显式转换‌ 两类‌。 强类型语言特性‌&#xff1a;C# 要求变量类型在编译时确定&#xff0c;类型转换需满足兼容性或显式规则‌。目的‌&#xff1a;处理不同数据类…...

【学习笔记】【DeepSeek AI 医生】2-2 AI家庭医生课程内容介绍

【DeepSeek AI 医生】2-4 项目详细分析及DeepSeek适用场景 一、Ollama部署二、可视化UI三、构建项目环境四、搭建项目架构五、Spring Al六、SSE服务端推送事件七、数据持久化八、线上部署 一、Ollama部署 Mac部署windows 部署ollama脚本、常用命令DeepSeek 提示词、角色、适用…...

DeepSeek使用教程--让DeepSeek生成精准题库

想让DeepSeek出好题&#xff0c;关键在于提示词的设计。总结了一个基本模板&#xff1a; 请帮我生成一套关于[学科/知识点]的题目&#xff0c;包括[题型]&#xff0c;难度为[简单/中等/困难]&#xff0c;适合[年级/学习阶段]的学生&#xff0c;总共[数量]道题。每道题请提供详细…...

数学之约数个数定理-阶乘约数

题目&#xff1a; 定义阶乘 n!123⋅⋅⋅n。 请问 100!&#xff08;100的阶乘&#xff09;有多少个正约数。 们需要计算 100! 的正约数的个数。阶乘 100! 的定义是&#xff1a; 100!123⋯100 直接计算 100!的值是不现实的&#xff0c;因为它是一个非常大的数。因此&#xf…...

C语言学习笔记-进阶(7)字符串函数3

1. strstr的使用和模拟实现 char * strstr ( const char * str1, const char * str2); Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part of str1. &#xff08;函数返回字符串str2在字符串str1中第⼀次出现的位置&#x…...

快乐数 力扣202

一、题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&…...