Other

IIS搭建ASP网站

IIS搭建ASP网站 windows(默认iis中间件)创建网站站点 iis中间件 上截图 后面就是点击 确定 确定 然后下一步就ok啦 创建完框架以后会生成一个信息服务管理器(以后管理站点的地方) 进去之后大概就是这个样子啦 首先把默认网站给右键设置停止.然后就可以新建网站了 描述里面写你给网站的名字 方便自己看 我的写的01 02 03 输入完名字之后设置一下IP 还有端口号(注意至少一项不能有重复存在哦,否则会出错的,通常改端口较多(端口后面也可以:右键--属性.更改)) 主机头就是俗话域名 不过学习阶段就不用麻烦了 这里呢 是需要你选择你的asp源代码的文件路径的 可以网上搜一下 有很多 这里就要给网站的访问设置权限啦,通常在安装阶段呢 都会给写入权限的.安装后可以自行取消 这样就完成一个网站的部署啦,不过还有一些注意事项 我们来测试一下看看 显示未授权(需要创建一个用户) 这里可以查看用户的信息哦 查看用户 新增用户 设置权限 后面点确定 一开始给用户写入的权限 完成之后取消即可(网页的更新需要打开) 简单成功 后续不细致了 只是把需要做的地方截图 易出错地方 (需要打开/关闭的地方): 启用父路径 关闭目录浏览(防止别人下载源代码) 给纯脚本执行的权限 -----------------------------------------------------------------============================================== 设置首页文件 =================================================================================== 添加初始用户:(前面有说过) 找到用户: asp源文件文件夹 --右键属性--目录安全性--编辑身份验证方法----查看用户名记下来. 添加用户:asp源文件文件夹 --右键权限--添加--高级--立刻查找---在搜索结果里面找刚才的用户名找到之后点击(选中) --确认----确定--写入权限打勾.--确认 完成新建 ==================================================================================== 权限继承 可以把网站文件夹设置继承 然后统一设置权限格式等等.其他的asp搭建同理

pta L2-003 月饼

题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805071789801472 很水的一道题,典型的分割金币--部分背包问题,上板子就可以了; 需要注意的是价格和重量用double,不然第二个测试点过不了 Talk is cheap. Show me the code. 1 #include<bits/stdc++.h> 2 using namespace std; 3 struct node 4 { 5 double value;//用double 6 double weight;//用double,否则会有一个测试点过不了 7 double cp; 8 }a[1110]; 9 int n,v; 10 double sum; 11 bool cmp(node x,node y) 12 { 13 return (x.cp>y.cp); 14 } 15 int main() 16 { 17 cin>>n>>v; 18 for(register int i=1;i<=n;i++) 19 { 20 cin>>a[i].weight; 21 } 22 for(register int i=1;i<=n;i++) 23 { 24 cin>>a[i].

社会工程学简述

1.1社会工程学的起源和发展 在网络空间安全领域, Social Engineering 在国内 通常翻译最多的为“社会工程学”“社交工程”“社 会工程”“社工”等名词。其中“社会工程学”作为 传统字面翻译一直被国内沿用下来, 而“社交工程” 的翻译则从字面直接体现了社交互动的一面。 最初的社会工程学是黑客米特尼克在《反欺骗的艺术》中所提出,其初始目的是让全球的网民们能够懂得网络安全,提高警惕,防止没必要的个人损失。但在不法黑客的手里,这已经成为他们为获取不正当利益的非法手段。随着我国对网络安全的注重,社会工程学也逐渐进入大家的视线中,经过多年的应用发展,社会工程学逐渐产生出了分支学科,如公安社会工程学(简称公安社工学)和网络社会工程学。 1.2社会工程学在信息安全中的威胁 正如凯文·米特尼克在《反欺骗的艺术》中曾提到,人为因素才是安全的软肋。很多企业、公司在信息安全上投入大量的资金,最终导致数据泄露的原因,往往却是发生在人本身。理论上来讲,它可以黑掉任何政府、企业的网络系统。很多企业都把网络单纯看出一个由硬件和软件组成的系统,认为只需要花大量资金和人力资源,不断进行硬件加固、软件升级等就能保障网络安全。虽然,硬件和软件并没有真正的“天敌”。只要进行相应的迭代更新,总能解决已有的软件、硬件安全问题。但是人才是企业信息安全最薄弱的环节,而使用这些东西的正是人。换言之就是,软件、硬件、人,这三者形成了一个稳定三角。只要“人”的环节出了问题,另外两个的网络防御就会如同虚设,这个三角关系也不再安全。我们经常说,最安全的计算机就是关闭电源让他关机。但是你也可以去说服其他人去把这台计算机电源开启并打开计算机。许多安全事件的发生都是由于“人”的环节出现漏洞。近年来利用社会工程学突破信息安全防御的事件开始出现泛滥的趋势。社会工程学已经成为政府、企业网络安全面临的最大挑战之一。在我看来社会工程学的意义就是只要有人参与其中,任何固若金汤的堡垒都会存在一定漏洞。 2社会工程学的实现方式 2.1不法黑客的利用社会工程学攻击的方式 2.1.1 利用搜索引擎收集敏感信息 每天日常生活中我们都会使用百度、谷歌、雅虎、必应等大型搜索引擎站点对相关信息进行检索,搜索引擎的主要作用也正是将与用户搜索相匹配的信息反馈给用户。然而,搜索引擎在给网民提供便利的同时,也给黑客提供了可利用的机会。黑客通过搜索引擎对已获取的部分被攻击者相关的信息进行检索,并通过整理搜索引擎反馈的结果信息,获取更多与被攻击者相关的敏感信息,如手机号码、电子邮箱地址、照片、通信地址、家庭电话等敏感信息,这种攻击方式也就是我们在网络环境中常见的“人肉搜索”方式。“人肉搜索”在目前的网络环境中非常流行,通过这种方法可以很快地搜索到某个人或者某个时间发生的具体时间、地点、事件原因、发生过程等情况。正常的网民用户通过使用这种搜索方式,可以实现对正常的新闻信息的获取甚至可以解决某些棘手的问题,但如果被黑客利用,就会导致被攻击者大量敏感信息的泄露。 2.1.2利用社会工程学字典实施暴力破解 暴力破解可以说是一门历史很悠久的黑客攻击手法,黑客通过一定的算法生成大量的密码信息,并将每一条密码与被攻击者的账号进行匹配测试,如果匹配测试成功,则黑客即可成功获取被攻击者的账号密码信息。但是随着大家的安全意识的提升,弱口令出现的几率越来越低,传统的字典爆破成功率也越来越低。社会工程学字典就是这样被黑客发明出来,黑客社会工程学字典中结合了被攻击者的用户名、生日、邮箱、手机号等多种涉及到网络环境中网民密码常见的字符串信息,并根据这些信息生成相应的字典文件。DictGenerate是一个使用Go语言编写的社会工程学字典生成器,它只需要我们输入必要的信息,即可自动生成是社会工程学密码字典。示例如下: 2.2渗透测试中社会工程学利用 在渗透测试中,我们对社会工程学的利用是有限制的,因为渗透测试是合法的,而且我们在利用它更多是在黑盒测试中或者是一些其他的特定场景中。这里重点说一下一些常用的手法。 2.2.1域欺骗(pharming) 域欺骗是一种网络攻击,目的是将一个网站的流量重定向到另一个虚假网站。域欺骗可以通过改变受害者计算机上的主机文件(hosts文件),DNS投毒或者利用DNS服务器软件的漏洞进行。这种攻击通常会结合其他的方式,比如钓鱼邮件,广告等。拿电子邮件举例来说,通过电子邮件将用户引向欺骗性网站,然后让用户在网站中输入目标帐户的用户名和密码,这样就可以通过这些进行后续的工作。    2.2.2诱出(elicitation)讯问(interrogation)假冒(impersonation) 一般来说我们想去知道我们需要知道的信息,肯定不可能去直接找到对方的管理员直接问,这个时候就需要去诱导对方说出我们想要知道的信息。这方面更多的是我们对个人心理的把握,和被攻击者交流的方式也是很需要技巧的,攻击者要很好的利用开放式(open ended)和封闭式(closed ended)的问题掌握交流主动权,并试探出答案。这称之为讯问(interrogation)。一般的攻击场景是攻击者假冒某个人(impersonation)和目标被攻击者进行讯问,诱出想要的信息。 2.2.3肩窥(shoulder surfing)&USB 掉落攻击(USB drop attack) 在计算机安全学中, 肩窥是一种社会工程技术用于获得信息,如个人识别号码(pin),密码和其他机密数据通过受害者的肩膀,从设备上按键或敏感信息被口语和听说,也称为窃听。一个很现实的例子比如一群人挤在电梯里,这时候你拿出手机,转账给别人,你背后或者侧边的人就可能通过肩窥的方式看到你转账密码。 在USB掉落攻击中,攻击者故意掉落一个特制的USB设备让人们捡到。一个人捡到这么一个USB设备要么处于好心,要么处于好奇心,会把USB设备插入他们自己的的计算机。这个特制的USB设备可能带有自运行的病毒程序,或者引诱被攻击者打开某个病毒文件,促使攻击得逞。  3渗透测试中社会工程学运用实例 3.1 Social Engineering Toolkit工具运用 Social Engineering Toolkit是一款多功能的社会工程学计算机辅助工具集,它基于kali系统。而我们常用的方法有:有恶意附件对目标进行E-mail钓鱼攻击,Java applet攻击,基于浏览器的漏洞攻击,收集网站认证信息,建立感染的便携媒体(USB/DVD/CD),邮件群发攻击以及其他类似攻击。它是实现这些攻击方法的合成攻击平台。 3.1.1定向钓鱼攻击演示 启动setoolkit  选择社会工程学  选择鱼叉式网络钓鱼  选择创建模板  编辑信息  之后进行email的相关设置,及被攻击者的ip以及相关敏感信息的填写,后续只需要继续按照工具提示填写信息,即可完成攻击(因为需要大量敏感信息的填入,这里不做演示)。·当收件人打开我们的恶意文件后,会在TA打开附件的时候,我们的shell会反射到收件人电脑的shell。 4社会工程学的防护 4.1个人针对社会工程学的防护 这里更多的是个人的安全意识的体现,在网络信息发达的今天,很多社交网站、电子邮箱等都包含了大量的私人信息,其中生日、年龄、邮件地址、手机号等都对社工攻击都是有用的主要信息,攻击者会根据这些信息能再次进行信息挖掘,提高入侵成功的概率。因此,在注册时尽量不要使用个人真实信息。网络上五花八门的社交网站,它无疑是无意识泄露信息最多的地方,也是黑客们最喜欢光顾的地方。而且在网络中更多的是要保持理性,特别是在和陌生人沟通时保持理性才不会被对方套话欺骗,这样有助于减少被社工攻击的概率。 4.2企业针对社会工程学的防护 相对于机器来说,“人”是在整个网络安全体系中最薄弱的一个环节,许多网络安全漏洞都是在这个环节出现问题。我国从事专业安全的技术人员还不多,很多小型企业的网络安全管理都是半路出家,对安全方面的知识本身懂得不多,而安全教育及安全防范措施都需要成本。而轻视网络安全的培训,只有在收到验证的损失后才会意识的网络安全的重要性。网络安全的重要意义就在于积极防御,将风险降到最低,网络安全重在意识,只有具备安全的意识,才能减少损失。另外一方面则是要重视安全审核制度,这是企业对社会工程学重点防护的主要手段,是在安全教育培训后的有力保障措施。其中包括(1)身份审核(2)操作流程审核(3)安全列表审核(4)建立完善的安全响应应对措施。  

gstreamer在ubuntu上源码编译

1.当时我的ubuntu上安装的qt版本是Qt5.4.1 gstreamer0.10 gstreamer1.0 gstreamer1.8 2.各种版本都试了,都报错 3.更换qt版本,Qt5.4.2依然报错 4.再次更换qt版本,Qt6.3.0。qt官网下载Qt Online Installer https://www.qt.io/download-qt-installer?hsCtaTracking=99d9dd4f-5681-48d2-b096-470725510d34%7C074ddad0-fdef-4e53-8aa8-5e8a876d6ab4 5.编译gstreamer1.20, 源码下载地址:https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/main,选择版本 git clone cd gst-build meson --prefix=/opt/gstreamer1.20 build ninja -C build meson install -C build 编译成功 6. 发现qt6,播放视频没声音 有几个api改变了 player->setAudioOutput(audioOutput); player->setSource(QUrl::fromLocalFile(hama.mp4)); 编译运行,视音频都正常了。到此在ubuntu的音视频开发环境配置好了。 但是在arm上的gstreamer移植还未完成,以及qt6是否能移植到arm还未可知。 等做完再做记录  

SpringCloudGateway基于redis令牌桶限流

令牌桶算法: 令牌桶算法是对漏桶算法的一种改进,桶算法能够限制请求调用的速率,而令牌桶算法能够在限制调用 的平均速率的同时还允许一定程度的突发调用。在令牌桶算法中,存在一个桶,用来存放固定数量的令 牌。算法中存在一种机制,以一定的速率往桶中放令牌。每次请求调用需要先获取令牌,只有拿到令 牌,才有机会继续执行,否则选择选择等待可用的令牌、或者直接拒绝。放令牌这个动作是持续不断的 进行,如果桶中令牌数达到上限,就丢弃令牌,所以就存在这种情况,桶中一直有大量的可用令牌,这 时进来的请求就可以直接拿到令牌执行,比如设置qps为100,那么限流器初始化完成一秒后,桶中就 已经有100个令牌了,这时服务还没完全启动好,等启动完成对外提供服务时,该限流器可以抵挡瞬时 的100个请求。所以,只有桶中没有令牌时,请求才会进行等待,最后相当于以一定的速率执行    在SpringCloudGateway中提供了基于令牌桶的限流支持,基于其内置的过滤器工厂RequestRateLimiterGatewayFilterFactory 实现。 在过滤器工厂中是通过Redis和lua脚本结合的方式进行流量控制。 (1)环境搭建 <!-- 网关依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!-- eureka网关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!-- Lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency> <!--redis gateway令牌桶依赖 监控依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--redis gateway令牌桶依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency>  (2)修改application.yml配置文件 server: port: 8001 spring: application: name: server-gateway #服务名称 cloud: gateway: routes: - id: category-service uri: lb://service-category predicates: - Path=/category/**,/admin/category/** filters: #redis令牌桶限流功能 - RewritePath=/admin/category/(?

P1279 字串距离

转移方程还是很容易想到 dp[i,j]=min(dp[i-1][j-1]+abs(),min(dp[i,j-1],dp[i-1,j])+1); 但是我写完之后发现答案就是不对 看完别人的code之后 才发现还要初始化!!!! 因为这个dp我们是对后面的字符进行操作 没有包含到在第一个字符串前加入很多个空格 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> using namespace std; int A[2010][2010]; char s1[2010]; char s2[2010]; int len1,len2; int k; void dp() { for(int i=1;i<=len1;i++) { for(int j=1;j<=len2;j++) { A[i][j]=min(A[i-1][j]+k,min(A[i][j-1]+k,A[i-1][j-1]+abs((int)s1[i]-(int)s2[j]))); } } } void ini() //需要一点点预处理 { for(int i=1;i<=len1;i++) { A[i][0]=A[i-1][0]+k; } for(int i=1;i<=len2;i++) { A[0][i]=A[0][i-1]+k; } } int main() { cin>>s1+1; cin>>s2+1; cin>>k; len1=strlen(s1+1); len2=strlen(s2+1); ini(); dp(); printf(%d,A[len1][len2]); return 0; }

十分钟学会Golang开发gRPC服务

gRPC是Google发起的一个开源RPC框架,使用HTTP/2传输协议,使用Protocol Buffers编码协议,相比RESTful框架的程序性能提高不少,而且当前流行的编程语言基本都已经支持。 Golang开发gRPC应用程序的套路也已经很清晰,这篇文章就来做一个简单的介绍,算是入门。 1、安装protoc 这个工具也称为proto编译器,可以用来生成各种开发语言使用proto协议的代码。 下载地址:https://github.com/protocolbuffers/protobuf/releases 一般下载最新版本就行,注意要符合自己当前的操作系统。 解压后里边有个 protoc.exe ,拷贝到 GOPATH 的 bin 目录下,我这里就是 C:/Users/PC-001/go/bin ,PC-001 是登录当前操作系统的用户名,需要换成你自己的。GOPATH 可以通过执行 go env 查看到。 一般都是把 GOPATH 的 bin 目录添加到环境变量的 PATH 变量中,如果没有,请自行添加上。 2、安装protoc的Golang gRPC插件 执行如下命令,会在 GOPATH 的 bin 目录下生成两个可执行文件:protoc-gen-go.exe 和 protoc-gen-go-grpc.exe。这两个插件可以用来生成Golang版本的proto协议代码和gRPC代理代码。 go install google.golang.org/protobuf/cmd/protoc-gen-go go install google.golang.org/grpc/cmd/protoc-gen-go-grpc 3、编写proto文件 proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的proto目录下: syntax = proto3; option go_package=/proto; package Business; service Hello { rpc Say (SayRequest) returns (SayResponse); } message SayResponse { string Message = 1; } message SayRequest { string Name = 1; } 这个协议很简单,有个名字为Hello的服务,提供一个名字为Say的rpc方法,这个方法有输入输出,输入信息中有一个名为Name的参数,输出信息中有一个名为Message的返回值。

linux死锁问题定位

写一个死锁代码: #include <mutex> #include <thread> #include <chrono> std::mutex s_mtx_1; std::mutex s_mtx_2; int main() { std::thread thread1([&](){ s_mtx_1.lock(); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); s_mtx_2.lock();}); std::thread thread2([&](){ s_mtx_2.lock(); std::this_thread::sleep_for(std::chrono::milliseconds(2000)); s_mtx_1.lock();}); thread1.join(); thread2.join(); return 0; } 执行g++ main.cpp -lpthread -std=c++11 -g 生成可执行程序 执行程序后发现程序并没有正常退出,实际死锁了 执行 pstack PID 查看堆栈可以发现有死锁   执行 gcore PID, 生成core文件,  执行 gdb 程序名 core文件,分析堆栈   先看主线程卡在哪里  卡在了thread 1   thread 1中有把锁, 该锁的拥有者是thread 2,就是thread 2还没有释放该锁  

day36(注解、V23:反射机制重构DispatcherServlet)

day36(注解、V23:反射机制重构DispatcherServlet) 1.注解 1.定义 注解在开发中常被我们利用到反射机制中,辅助反射机制做更多灵活的操作 注解在如今JAVA流行的框架中被大量的应用,简化了以前繁琐的配置工作。 package reflect.annotations;​import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * 注解 * 注解在开发中常被我们利用到反射机制中,辅助反射机制做更多灵活的操作 * 注解在如今JAVA流行的框架中被大量的应用,简化了以前繁琐的配置工作。 * * 注解可以在: * 类上,属性上,方法上,构造器上,以及参数上使用 * 可以通过java内置的注解@Target来说明当前注解可以被应用的位置,对应的值被定义在ElementType上 * 例如: * @Target(ElementType.TYPE) 注解只能被用于类上 * @Target({ElementType.TYPE,ElementType.METHOD}) 注解只能被用于类上或方法上 * 当可以用于多个位置时,需要定义成数组的方式包含所有ElementType的值,即{}包含 * * * @Retention注解,用于标注当前注解的保留级别,有三个选项 * * RetentionPolicy.SOURCE 注解仅保留在源代码中 * * RetentionPolicy.CLASS 注解保留在字节码中,但是反射机制不能调用 * * RetentionPolicy.RUNTIME 注解保留在字节码文件中,并且可以被反射机制所使用 * * 当不指定@Retention时,默认的保留级别为CLASS,因此我们通常都需要明确指出保留级别为RUNTIME */​@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface AutoRunClass {}​ 2.使用范围 类上,属性上,方法上,构造器上,以及参数上使用 可以通过java内置的注解@Target来说明当前注解可以被应用的位置,对应的值被定义在ElementType上 例如: @Target(ElementType.TYPE) 注解只能被用于类上 @Target({ElementType.

牛客华为机试HJ31

原题传送门 1. 问题描述 2. Solution import re org = input().strip() words = re.split(r'\W+', org) words.reverse() print( .join(words))