一次DOS事件的解决办法

《Windows PE》3.2 PE头结构-DOS头和DOS块 在VS中输入#include "winnt.h" ,点击右键,打开文档。然后搜索 IMAGE_DOS_HEADER 或者在程序里面输入IMAGE_DOS_HEADER 按F12转到定义。■。 阅读详情

转个帖,顺带Fuck一下某个自作聪明的白痴,如果被我查出来别怪我不客气,动用我的资源

 

0.分析过程
首先,分析了DOS的类型、特征、攻击方法。

使用netstat -na|grep SYN_RECV|wc,发现当前存在大量SYN_RECV状态连接,源地址都是伪造的,netstat -na|grep SYN_RECV|wc显示数量为1024个,这个是当然,Linux默认的Syn_Backlog对列就是1024,超过的SYN都丢弃了。

针对的攻击端口是80:WWW服务,当然,Web服务器也已经无法访问了。

在打开SYN_Cookie防护之后,攻击得到了一些缓解,但随后攻击流量又增大了,情况也好不到哪儿去,而Linux的Iptables又不能做syn_proxy的,那么只好从其他方面下手,用tcpdump -w抓下了当时的数据流量,计数分析流量大约在1.8w pps左右,其中99%以上都是伪造源地址的syn包。

既然是伪造地址,那就比较难处理,不过经过仔细的统计和分析,还是分析出了这次攻击中主要数据的特征,主要有以下几条:

代码:
1. tcp标志位为 syn 2. ip数据总长为40Byte 3. ip头中的Identifier字端固定为256(0x0100) 4. TTL值平均分布为 74 - 95之间 5. tcp窗口值固定为16384 6. 目标端口为tcp:80 7. tcp初始化序列号为 17314131xx,按+1累计依次递增

这样,注意看其中的3、4、5几条,这是对我们来说最重要的线索。
3. ip identifier字端固定为0x0100,而在TCP/IP规范中,这个字段是为了防止一个连接中的分片包重复而作的包内序列号。虽然大多数操作系统没有严格准循着一条规范,但这个数值的来源却是确定的,即在正常的TCP/IP堆栈中,这个字段的值应该是发送此数据包是的TCB(TCP控制块,一个内核空间的TCP数据结构)的序列号。而即使系统也没有严格准循这一条,那么在网络中传输的数据,identifier字段的内容也应该是随机分布的,正常的操作系统网络堆栈不可能发送出大量0x0100这样固定的字段内容来。

4. TTL值平均分布在74 - 95之间。按照常识也知道,大多数操作系统默认的TTL应该为32、64、128这样的2的整数次方;而另一个方面,TTL在网络传输的过程中每过一个路由器就会自动减一,而现在的Internet路由设计已经是比较良好的,从任何一点到达Intetnet的另一端,一般来说TTL条数不会超过20-30,这个我也测试过,从国内网通和电信的网络看来,到达国内和国际的大多数网站,TTL跳数都在20以内,而从Windows的Tracert命令也可以看出--它假设的最大TTL超时条数也只是30。超过30条的正常Internet路由是很罕见的。那么我们来做一个简单的减法:

代码:
128 - 30 = 98 64 - 30 = 34 32 - 30 = 2

所以一个数据包,在正常的传输过程中,当到达端点时,它的TTL数分布范围应该是:代码:

2 - 32 (罕见)、 34 - 64 、 98 - 128


而在本次数据采样中,大多数伪造地址的SYN数据,TTL都在74 - 95之间。

其他附加特征,例如IP长度、TCP窗口、TCP SYN_Flag等,也可以作为附加判断标志。这样我们提取出这次攻击的主要特征码为:

代码:
a. tcp syn flag only, dst port 80 b. ip identifier = 0x0100 c. 74 < ttl < 95 d. tcp window = 16384

这样四条特征。

之后就是想办法过滤了。因为这次没办法假设其他的防火墙,只能用系统自身的iptables挡一下,所以效果么......够麻烦的。


1. 下载最新版的iptables-1.3.1和patch-o-matic snapshot 。(需要Linux内核
2.6.10以上版本支持,这一点...Redhat系的所有版本都得重编了。)
ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/


解压iptables和pom;
运行pom patch脚本,过程中需要输入iptables和内核源代码完全路径;

代码:
# ./runme connlimit u32 TARPIT pkttype length

编译和安装iptables及pom内核模块。

代码:
# make -C /lib/modules/`uname -r`/build SUBDIRS=net/ipv4/netfilter/ modules # make -C /lib/modules/`uname -r`/build SUBDIRS=net/ipv4/netfilter/ modules_install


编译iptables。并手工安装;

代码:
# make KERNEL_DIR=内核源码目录 # cp iptables iptables-save iptables-restore /usr/sbin # cp extensions/*.so /usr/lib/iptables/


2. 配置内核参数

代码:
====================================================================== #--以下为sysctl 内核参数设置 #net.ipv4.conf.default.rp_filter = 1 #net.ipv4.conf.all.rp_filter = 1 #net.ipv4.conf.eth1.rp_filter = 1 # 开启IP源地址验证,防止IP地址欺骗,在任何情况下都应开启,默认关闭 for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f done sysctl -w net.ipv4.conf.default.accept_source_route=0 # 禁用icmp源路由选项 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # 忽略icmp ping广播包,应开启 #sysctl -w net.ipv4.icmp_echo_ignore_all=1 # 忽略所有icmp ping数据,覆盖上一项 sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 # 以下一段为抵抗syn flood攻击,平时建议关闭 sysctl -w net.ipv4.tcp_syncookies=1 # tcp syncookie,默认关闭 sysctl -w net.ipv4.tcp_max_syn_backlog=1280 # syn队列,默认1024,> 1280可能工作不稳定,需要修改内核源码参数 sysctl -w net.ipv4.tcp_synack_retries=2 # syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为1或2 sysctl -w net.ipv4.tcp_syn_retries=2 # 外向syn握手重试次数,默认4 # 以下一段为应对tcp connect连接耗尽攻击,如果开启iptables connlimit模块可禁用 # 有严重连接性能影响和不稳定因素,慎用 sysctl -w tcp_tw_recycle=1 # 默认0,tw快速回收 sysctl -w tcp_tw_reuse=1 # 默认0,tw重用 sysctl -w tcp_keepalive_intvl=60 # 默认75,tcp keeplive探测轮询时间 sysctl -w tcp_keepalive_probes=3 # 默认9,tcp keeplive探测轮询次数 sysctl -w tcp_keepalive_time=1800 # 默认7200,tcp keeplive时间 sysctl -w tcp_fin_timeout=30 # 默认60,tcp fin状态超时时间 #sysctl -w net.ipv4.tcp_retries1=2 # tcp连接重传参数,慎用 #sysctl -w net.ipv4.tcp_retries2=8 sysctl -w net.ipv4.ip_conntrack_max=65535 # 增大iptables状态跟踪表

======================================================================


3. 配置iptables规则
======================================================================

代码:
#--以下为iptables规则设置-- modprobe ipt_TARPIT modprobe ipt_u32 modprobe ipt_connlimit modprobe ipt_length modprobe ipt_pkttype iptables -N input_ext iptables -F input_ext # 新建iptables队列 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 激活状态检测 iptables -A INPUT -i eth0 -j input_ext # 扩展input规则 iptables -A INPUT -j DROP # 默认input规则,丢弃全部 iptables -A input_ext -p tcp -m tcp --dport 80 --tcp-flags SYN,RST,ACK SYN -m u32 --u32 "0x2&0xffff=0x100&&0x5&0xff=0x4a:0x5f" -j DROP # 本次syn-flood攻击指纹特征,丢弃 iptables -A input_ext -p tcp -m tcp --dport 80 --tcp-flags SYN,RST,ACK SYN -m connlimit --connlimit-above 5 --connlimit-mask 32 -j TARPIT # 防止连接耗尽攻击,每IP并发连接限制为4 iptables -A input_ext -p tcp -j TARPIT # 防止端口扫描攻击 iptables -A input_ext -m pkttype --pkt-type broadcast -j DROP # 丢弃广播数据包 iptables -A input_ext -p icmp -m limit --limit 6/s -m icmp --icmp-type 4 -j ACCEPT # 接受icmp traceroute/echo reply数据,限制流量 5个/秒 iptables -A input_ext -p icmp -m limit --limit 6/s -m icmp --icmp-type 8 -j ACCEPT iptables -A input_ext -p icmp -m length --length 48:256 -j ACCEPT # 限制icmp包大小为 0 - 256Byte,防止大包flood # 实际网络中如果不用icmp/udp协议,可以直接全部drop

======================================================================



1. 带宽占满的情况下,任何防护都是没用的。
2. 任何ip数据都是可以伪造的,如果攻击数据完全采用随机数发送的话,那么很可能无迹可寻。
3. 在进行过滤和dos防御的时候,不可避免的会损失一些正常的连接,这个时候,想想80/20规则,
不要力求完美。
4. 任何安全防护措施和内核参数的调整,都可能对系统和网络的稳定性造成一定的负面影响,所以要根据实际情况而定,切勿忙从。
5. 这个防火墙规则中主要生效的是TCP段和ICMP段,在带宽未被占满时可以一定程度防止syn-flood、icmp-flood、tcp-connect-flood类型的DOS。
但是syn-flood的u32规则是针对这次攻击的特征所写的,在应对其他攻击时不可能完全有效,必须单独重新分析。
tcp-connect连接限制,我目前定的是同一ip地址并发5个web连接,防止连接耗尽,在局域网NAT访问时可能会有些问题,可以根据网络拓扑情况添加信任规则。
6. 常见的网络层dos主要有:
syn-flood (协议缺陷型)
ack-flood(stream) (协议缺陷型)
icmp-flood(smarf) (流量型)
udp-flood(froogle) (流量型)
tcp-connect-flood (资源型)
对于icmp和udp,可以在规则链开始就直接丢弃掉;
对于tcp-flood,可以使用conn-limit限制,效果比较好,但是要注意调整内核参数ip_conntrack的数值,否则可能造成iptables状态跟踪表溢出,反而形成拒绝服务;另外,当syn+ack类型的攻击发生时,本省也会消耗大量的conntrack资源,所以防火墙规则的顺序很重要。
对于syn-flood,最好的方法还是使用bsd pf的syn-proxy,效果不错,不过这个下次再讲吧。
如果不行的话,可能就只能针对个案进行模式特征分析了。

再次提醒,防火墙规则配置有风险,一定要根据自己实际情况调整和测试完毕后再上线。可以在input链的-j input_ext规则之前加一条:
-i INPUT 1 -s 内网地址 -j ACCEPT return之类的语句完全优先信任管理地址。

 
DOS图形编程实战:实现Pwin98界面 本文还有配套的精品资源,点击获取 简介:DOS图形编程是一种在DOS环境下实现图形用户界面的技术,涉及系统调用、图形模式、内存映射、字库处理、事件驱动编程和界面控件设计。本实战项目以Pwin98为例,帮助学生掌握DOS图形编程的原理和实践,包括自定义汉字编码、鼠标事件处理和图形界面绘制。通过完成项目,学生将加深对DOS编程和早期计算机技术发展的理解,并提升在低级图形编程方面... 阅读详情

相关推荐

用LTspice仿真CMOS反相器功耗?这份避坑指南能省你3天调试时间

本文详细介绍了如何使用LTspice准确仿真CMOS反相器的功耗,包括动态功耗、短路功耗和静态功耗的测量技巧。通过工程实践指南,帮助电子工程师避开常见陷阱,优化仿真参数设置,提升仿真结果的可靠性,节省调试时间。

w7x8y9z的博客 188

安排软件保护服务在 2022-07-26T23:00:43Z 时重新启动成功。原因: RulesEngine

安排软件保护服务在 2022-07-26T23:00:43Z 时重新启动成功。原因: RulesEngine

u014094704的博客 3万+

Python 使用Pygame库实现足球游戏:创建一个球员和一个足球,并使玩家能够控制球员的移动。游戏将包括碰撞检测、简单的物理模拟,以及基本的用户输入处理

本文将介绍如何使用Python和Pygame库创建一个简单的足球游戏。我们将搭建一个基本的游戏环境,创建一个球员和一个足球,并使玩家能够控制球员的移动。游戏将包括碰撞检测、简单的物理模拟,以及基本的用户输入处理。这个简单的足球游戏展示了Pygame的一些基本功能。虽然这是一个简单的游戏,但它包含了创建游戏循环、用户输入处理、物理模拟、碰撞检测等重要概念。

程序熊的博客 743

DOS事件的解决办法

1. 带宽占满的情况下,任何防护都是没用的。 2. 任何ip数据都是可以伪造的,如果攻击数据完全采用随机数发送的话,那么很可能无迹可寻。 3. 在进行过滤和dos防御的时候,不可避免的会损失一些正常的连接,这个时候,想想80/20规则, 不要力求完美。 4. 任何安全防护措施和内核参数的调整,都可能对系统和网络的稳定性造成一定的负面影响, 所以要根据实际情况而定,切勿忙从。 5. 这个

一叶知秋 852

瑞芯微RV1126B芯片实战:如何用3Tops NPU打造智能安防摄像头(附配置指南)

本文详细介绍了基于瑞芯微RV1126B芯片构建高性能智能安防摄像头的实战经验。文章深入剖析了其3Tops NPU与独立AI-ISP的协同优势,提供了从硬件选型、开发环境搭建、AI模型部署到系统调优的全流程配置指南,帮助开发者充分发挥芯片潜力,实现高效、稳定的智能视觉应用。

weixin_29281915的博客 443

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

Swift Package Manager (SPM) 在macOS 项目中创建并集成的完整步骤

征战无悔人生 1423

安全团队干饭吃,DoS攻击竟让美国金融巨头崩溃

分布式拒绝服务攻击是从多个来源,彼此协同进行的拒绝服务攻击。这个名称包含了两层含义:首先,它是一种“拒绝服务”攻击;其次,它是一种“分布式”攻击。那么,什么是“拒绝服务”(Denial of Service,DoS)呢?可以这样认为,凡是导致合法用户不能访问服务的行为,就是“拒绝服务”攻击。最典型的例子是造成一个公开的网站无法访问。攻击者使用的方法通常很简单,就是不断提出服务请求,使服务提供方疲于应付,直到合法用户的请求来不及得到处理。

AzulSystems的博客 291

Calibre PEX提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文深入解析Calibre PEX工具中hcell与xcell文件的协同工作机制,提供模块级寄生参数提取方案。通过实战案例和避坑指南,帮助工程师精准屏蔽已验证IP模块,提升仿真效率和数据一致性,适用于65nm以下工艺节点的复杂SoC设计。

weixin_29275257的博客 626

linux 高效的文件系统事件监控 内核级解析方案 inotify

安装inotify-tools (http://inotify-tools.sourceforge.net) 下载源码包 wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz tar zxvf inotify-tools-3.14.tar.gz cd inotify-tools-3.1

B_H_L的专栏 2190

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南

本教程介绍了如何使用 R 语言中的 tidymass 包进行代谢组学数据分析。tidymass 是一个专为液相色谱-质谱(LC-MS)数据设计的开源工具,提供从数据准备到统计分析的全流程支持。教程详细讲解了数据准备、数据处理、数据探索、数据清洗、代谢物注释、统计分析及结果输出的步骤。用户需准备 MS1、MS2 数据和样本信息表,并通过 tidymass 进行峰识别、峰分组、保留时间校正等操作。数据处理后,用户可进行数据探索、清洗和代谢物注释,最终通过统计分析发现潜在的生物标志物,并输出结果。教程还提供了代码

专注生信领域 1635

dos是什么,什么是dos命令

(磁盘操作系统)的缩写,它是一种早期的操作系统,主要用于个人计算机(PC)。DOS 提供了一种命令行界面(CLI),用户可以通过输入文本命令来操作计算机。回答来自deepseek和我的编写。DOS 命令是用户通过命令行界面输入的操作指令,用于执行各种任务,如管理文件、运行程序、配置系统等。

wincl0的博客 3558

一文读懂AI协同办公领域发展和趋势

协同办公,又称OA,是指企业内部或外部各类人员之间利用信息技术来进行协作工作的一种形式。这种协作工作既可以由直接员工进行,也可以来自外部的咨询机构、合作伙伴或联营企业。协同办公的优势在于可以对资源进行有效管理和配置,各部门之间可以建立良好的协作关系,跨部门更好地实现资源共享。

女王の专属领地 2359

dos是什么

DOS(全称为Disk Operating System,被称为磁盘操作系统) DOS是计算机上的一种基于磁盘管理的操作系统,可以直接操作和管理磁盘上的文件,在计算机出厂是基本都会自带一个DOS磁盘操作系统。 MS-DOS是Microsoft Disk Operating System的简称,意即由美国微软公司(Microsoft)提供的磁盘操作系统。在Windows 95以前,DOS是PC兼容电脑的最基本配备,而MS-DOS则是最普遍使用的PC兼容DOS。 DOS和windows 本质:都是微软公司的操作

m0_46612488的博客 6915

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

iDOS源码解析:一次触摸如何变成DOS里的按键,输入事件管线全揭秘

iDOS(DOSPad)是一个运行在 iOS 上的 DOSBox 移植版 DOS 模拟器。你在屏幕上点一下虚拟键盘,这颗"按键"要经过 UIKit 触摸事件、SDL 输入桥接,最后被 DOSBox 模拟的 8042 键盘控制器接收,才会变成 DOS 里的一个真实键击。本文带你完整走通这条输入事件管线。 [![iDOS模拟器主界面与虚拟键盘布局](https://raw.gitcode.com/g

gitblog_01141的博客 765

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

⭐️【磁盘操作系统】DOS原版镜像下载(CP/M QDOS 86-DOS MS-DOS PC-DOS DR-DOS FreeDOS PTS-DOS ROM-DOS boot引导程序 组成 软件 命令)

DOS,全称Disk Operating System,意为磁盘操作系统。它是早期个人计算机上的一类操作系统,尤其在IBM PC兼容机市场中占有举足轻重的地位。从1981年MS-DOS 1.0到1995年MS-DOS 6.22的15年间,DOS作为微软公司在个人计算机上使用的一个操作系统载体,推出了多个版本。此外,还有多个与MS-DOS兼容的DOS系统,如PC-DOS、DR-DOS等。DOS操作系统的主要特点包括:尽管随着Windows等图形化界面的操作系统的出现,DOS逐渐退出了主流市场,但在某些特定的应

Python老吕的博客 1万+

DOS下外部命令不能用解决办法

系统属性/高级/环境变量/Path/编辑/ 加上%systemroot%;%systemroot%/system32;装了JAVA的,刚刚开始配置环境变量的时候可能不小心弄错了。就造成DOS不能用了。         DOS命令很强大,我们可以用它来做很多事情。但是,有些时候在命令行窗口中打入一些DOS命令时,会提示“‘xxx’不是内部或外部命令,也不是可运行的程序或批处理文件。”这可

低调中成长 1916

一次网站遭受dos攻击解决历程

官网访问失败 日志最直接的报错是“GetConnectionTimeoutException”,于是我们病急乱投医一样尝试去解决这个问题。

tanjun592的博客 594

引入DOS攻击的混合动态事件触发微电网二次控制matlab仿真模型

后续研究中,在《考虑功率均分与电压频率的事件触发分布式二次控制MATLAB模型》继续引入DOS攻击,同时保留事件触发控制,使系统可以容忍的允许 DoS 攻击。此模型建议拥有一定DOS攻击学习基础的人群入手,因为笔者笔提供DOS攻击部分的答疑!

学习不好的电气仔的博客 1344

C/C++中一次性执行多个DOS命令

实现 从MSDN上找到管道的示例代码,简单修改了一下。 首先,将CreateProcess的参数改为启动cmd: char cmdLine[] = "cmd"; // Create the child process. bFuncRetn = CreateProcess(NULL, cmdLine, // command line ...

ting2909的博客 1094

Windows 如何打开DOS命令窗口 以及常用的DOS命令

本文内容涵盖DOS窗口的打开方式以及常用DOS命令的输入,以便对电脑快速使用。 打开DOS命令的方式:Windows键 + R 进入运行界面输入 cmd 最后点击回车。 然后便进入DOS命令窗口。 *常用DOS命令集锦 1.盘符切换 F:(切换至F盘) D:(切换至D盘) 以此类推 2.清理DOS屏幕 cls (DOS窗口所...

weixin_45714733的博客 8468

什么是DOS病毒

DOS病毒得名于**“磁盘操作系统(Disk Operating System)”**,是专门感染**MS-DOS或兼容DOS环境**的恶意软件。 在Windows普及前,DOS是个人电脑的主流系统,这类病毒依赖DOS环境运行,通过感染可执行文件(如.COM、.EXE)或引导扇区传播。

weixin_43172311的博客 1093
上一篇: 扫描器scanner的源代码
下一篇: 雷池新闻发布系统uploadPic.asp漏洞
linkboy2004
博客等级 码龄22年 276粉丝 292原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值