ASM

美颜的算法及实现基础

旧城冷巷雨未停 提交于 2020-08-11 19:08:31
在图像处理领域,大家接触最多的算法加成应该就是手机里的美颜自拍了,除了有专用的美颜APP之外,很多手机的相机原生系统也都支持美颜功能。 美颜按功能需求来看可分为基础、高级和附加功能三大块。基础概念就是磨皮、处理肤色,目前即便是原生系统自带的相机美颜也能做到基础美颜功能的实时计算,所以启动相机取景预览时就能看到,目前直播用的美颜摄像头已经可以实现高级功能的即时演算,比如祛痘、瘦脸、增大眼睛、五官立体等……此前翻车的某网红女主播就是在扭头瞬间人脸未被识别,现了不到1秒的原形但被吃瓜网友抓包,所以人脸识别是实现美颜,特别是实时美颜的第一前提。而年龄计算、AR装饰、美妆等就属于美颜之外(或之上)的另一类图像算法了。 美颜功能的基本构架就是这样,接下来就来一点一点地聊聊美颜算法的细节,首当其冲的自然是最重要的基本功能:磨皮。从算法的角度来看,磨皮是用滤波器将痘印、胎记、伤痕等高频信息给滤除,再用光滑皮肤灯领域低频信息进行填充。在种类繁多的高频滤波器里,适用于人像修复的主要都是带通滤波器,比如双边滤波、导向滤波、灰度图像各向异性扩散等,因为它们的特色是可以保留边缘信息,在磨皮的同时不会像高斯滤波那样让整张照片都模糊掉。 双边滤波,简单来说它是高斯滤波的衍生版,区别在于双边滤波在把像素空域距离纳入计算的同时,还考虑了像素值域之间差值的高斯系数,两个像素的值域差距越大,计算过程中的权重就越小

代理模式

强颜欢笑 提交于 2020-08-11 15:00:19
一 代理模式简介 代理(Proxy)是一种设计模式 提供了对目标对象另外的访问方式 代理对象代理目标对象 达到增强目标对象功能的目的 二 静态代理 需要定义接口或者父类 代理对象与目标对象一起实现相同接口或者继承相同父类 优点: 在不修改目标对象的功能前提下 对目标功能扩展 缺点: 因为代理对象需要与目标对象一起实现相同接口或者继承相同父类 所以会有很多代理类 导致类太多 同时 如果接口增加方法 代理对象与目标对象都要维护 1. 接口 /** * 接口 * Created by Hy on 2020/7/10. */ public interface IUserService { void insertUser(); String deleteUser( int id); } 2. 目标对象 /** * 目标对象 * Created by Hy on 2020/7/10. */ public class UserService implements IUserService { @Override public void insertUser() { System.out.println( "insert ok" ); } @Override public String deleteUser( int id) { System.out.println( "delete... ...

如何对AD和Exchange进行安全加固满足护网需要?

人盡茶涼 提交于 2020-08-11 11:33:40
自2017年WannaCry病毒席卷全球之后,持续演变,挖矿及勒索病毒数量两年暴涨1500%,现已成为网络安全的最大威胁,而勒索金额也从以往的以万为单位飙升到百万美元级别。 AD域由于存在着大量的特权账号、应用服务账号、用户账号,是入侵攻击最多的对象之一。 Exchange邮件系统作为日常办公所需,存放有大量办公及业务邮件数据,容易被攻击并泄露邮件数据,或者受钓鱼邮件影响导致信息安全事件,是被入侵攻击勒索最多的对象之一。 在国家级的护网行动(红蓝攻防演练)中,AD域如果被攻击成功,是扣分最多的一项内容之一。 …… 本文将着重介绍嘉为公司基于AD(Active Directory)纵深防御体系建立的“工具+安全加固服务”的AD域安全加固模式,通过建立安全检测平台,并从AD应用安全、操作系统安全、网络访问安全等方面,全面提升AD域环境的整体安全性能。另外同样基于纵深防御体系建立的 Exchange方案,提升了企业邮件系统(Exchange)的安全性。 企业信息安全体系构成 企业信息整体安全体系由6大部分构成,分别是: 基础架构安全(ISP) 身份和访问控制管理(IAM) 信息安全管理体系(ISMS) 安全运维管理平台(SMP) 数据和文件安全管理(DSM) 应用安全管理(ASM) 这6个部分构成了完整的企业安全信息体系,可以说一切的安全加固服务都应成为此体系的一个部分。 AD

编程笔记丨程序员如何持续吸收知识?教你提升99%的学习效率!

拟墨画扇 提交于 2020-08-10 19:35:07
在软技能的知识体系中,对于我们程序员来说最重要的莫过于学习方法了。我们应该如何释放自己的内在潜力去像海绵一样地吸收知识呢?在本篇文章中我们将深入探讨如何成为一个顶尖的学习者。 一、如何成为一个高段位的学习者? 1、建构式的学习模式 对问题的好奇、对答案的渴望,是驱动我们学习和探索的主要动力。 「知识不是简单的记忆,而是由我们主动地去建构而来的」 。我们必须充分利用现有的知识,在主动性目标或核心问题的引导下去积极地进行探索,只有这样,我们才能够把得到的新知识与旧知识糅合在一起,并在头脑中建构出新的知识体系。 「一个好的长时程问题,能让我们成为“构建者”,因为我们不仅在学习知识,还在“建构答案”,在努力回答问题的过程中,我们筛选、评判与整合新旧知识,并把它们融汇而成一个知识体系。」 「一个好的长时程问题,能让我们成为“探索者”,主动地去探求未知的领域,扩宽“未知的未知”的边界,而不是仅仅满足于对现成的、边界明晰的知识的掌握。」 因此, 「提出一个深入的探索性问题是一种学习效果非常好的方法」 。在问题牵引下的学习,会帮助我们连续不断地构筑着知识之间的联系,最终便会形成针对于该问题的思维导图之解。 「提问是将我们引向深度学习的起点。一位优秀的学习者,一定同时也是一个优秀的提问者,他会从阅读、观察、思考的过程中产生问题,先解答表层的、容易的那部分,留下深度的、探索式的问题给自己

编程笔记丨程序员如何持续吸收知识?教你提升99%的学习效率!

左心房为你撑大大i 提交于 2020-08-10 17:11:29
在软技能的知识体系中,对于我们程序员来说最重要的莫过于学习方法了。我们应该如何释放自己的内在潜力去像海绵一样地吸收知识呢?在本篇文章中我们将深入探讨如何成为一个顶尖的学习者。 一、如何成为一个高段位的学习者? 1、建构式的学习模式 对问题的好奇、对答案的渴望,是驱动我们学习和探索的主要动力。 「知识不是简单的记忆,而是由我们主动地去建构而来的」 。我们必须充分利用现有的知识,在主动性目标或核心问题的引导下去积极地进行探索,只有这样,我们才能够把得到的新知识与旧知识糅合在一起,并在头脑中建构出新的知识体系。 「一个好的长时程问题,能让我们成为“构建者”,因为我们不仅在学习知识,还在“建构答案”,在努力回答问题的过程中,我们筛选、评判与整合新旧知识,并把它们融汇而成一个知识体系。」 「一个好的长时程问题,能让我们成为“探索者”,主动地去探求未知的领域,扩宽“未知的未知”的边界,而不是仅仅满足于对现成的、边界明晰的知识的掌握。」 因此, 「提出一个深入的探索性问题是一种学习效果非常好的方法」 。在问题牵引下的学习,会帮助我们连续不断地构筑着知识之间的联系,最终便会形成针对于该问题的思维导图之解。 「提问是将我们引向深度学习的起点。一位优秀的学习者,一定同时也是一个优秀的提问者,他会从阅读、观察、思考的过程中产生问题,先解答表层的、容易的那部分,留下深度的、探索式的问题给自己

如何把shellcode转换成exe文件分析

霸气de小男生 提交于 2020-08-10 06:47:27
【转】 http://www.freebuf.com/articles/web/152879.html 前言 在分析 shellcode 时,静态分析或者使用 scdbg 模拟分析都不够准确,如果转换成 exe 文件那么就可以用 debugger 或者 IDA 分析,会方便很多。 样本分析 这里以 CVE-2013-3346 的样本为例,使用 peepdf 分析样本: $ python peepdf.py -i -f ~/Downloads/sample.pdf File: sample.pdfMD5: 6776bda19a3a8ed4c2870c34279dbaa9SHA1: ad6a3564e125683a791ee98c5d1e66e1d9c6877dSize: 177511 bytesVersion: 1.1Binary: FalseLinearized: FalseEncrypted: FalseUpdates: 0Objects: 4Streams: 2Comments: 0Errors: 1Version 0:Catalog: 1Info: No Objects (4): [1, 2, 3, 10] Errors (1): [3] Streams (2): [10, 3] Encoded (0): [] Objects with JS code (1): [3]

云原生之路:容器技术落地最佳实践

痴心易碎 提交于 2020-08-09 20:19:08
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 阿里妹导读:随着容器技术的快速发展和广泛应用,毫无疑问云原生技术是未来发展的必然趋势。作为国内最早布局容器技术的阿里云,无论在技术还是产品上,都取得了极大的成果。阿里云资深技术专家易立通过阿里云容器服务,分享容器技术落地的最佳实践,希望能够帮助同学们更好地理解容器技术和云原生理念,合理地设计上云架构,充分发挥云的价值。 没有集装箱,就没有全球化。——《经济学人》 什么是容器? 容器的英语是 Container,它的意思是集装箱。我们知道,经济全球化的基础就是现代运输体系,而其核心正是集装箱。集装箱的出现实现了物流运输的标准化,自动化,大大降低了运输的成本,使得整合全球的供应链变为可能。这就是著名经济学人谈到的“没有集装箱,就没有全球化”。 集装箱背后的标准化、模块化的理念也在推进建筑业的供应链变革。在最近,疫情爆发之后。10 天 10 夜,在武汉火神山,一个可以容纳上千床位的专科医院平地而起,在抗疫过程中发挥的重要作用。整个医院都是采用集装箱板房吊装。模块化的病房设计,预置了空调、消杀、上下水等设施,极大加速了施工速度。 容器的通俗理解 软件集装箱 ”容器技术“ 也在重塑整个软件供应链。容器作为一种轻量化的操作系统虚拟化技术,和和传统的物理机、虚拟化技术和使用方式有什么不同呢

Linux时钟实现和管理(Linux Kernel development 3rd)

删除回忆录丶 提交于 2020-08-09 17:34:14
简介 时间间隔 这个概念在内核中非常重要。大量多的延时函数都是依赖于时间。 周期性函数 进程调度 屏幕刷新 延时硬盘读写 系统从开机到现在运行了多久 当前的日期 上面列举的都是用到周期的 过去了多久,时间在系统中该怎么衡量核心问题。 相对时间 从某一刻起后多久开始做某事。 五秒后发射就是相对于现在一段时间。 绝对时间 日期,经历了多久,往往是一个大的时间。 周期任务和延迟任务 周期任务 依赖于系统时钟,系统时钟是一个可编程硬件。每隔固定时间就发起中断。 内核知道每秒多少次中断,根据间隔和中断次数,可以用来衡量时间。 系统时钟是核心 这是一个硬件。 一个可编程硬件,即可以配置,可以有内核控制。 用来计量时间流逝。 隔一段时间发起一次中断,中断捕获就更新时间。然后执行对应的函数。 延迟任务 一般是事件,时间发生多久后执行某个响应函数。 主要依赖于动态定时器 动态定时器 从开始计时的那一刻开始,多久后执行某个任务。 这也是后面的主讲。 案例 软盘驱动在一定时间得不到响应就关闭。 时间衡量 依赖硬件 系统时钟 时钟频率 可配置 转换 1s = 时钟周期 * 时钟频率 时钟周期 = 1s / 时钟频率 总的时间 = 时钟周期 * 次数 根据换算方程可以看到时钟周期和过去时间 动态定时器 定时器 用来倒计时的,倒计时多久执行某个任务。 这个也是主要的核心中的核心。 内核管理和衡量时间 衡量时间

根据反射,动态调用websever

纵然是瞬间 提交于 2020-08-09 17:28:01
[WebMethod] public string index(string Action,string Message) { try { // 1. 使用 WebClient 下载 WSDL 信息。 WebClient web = new WebClient(); Stream stream = web.OpenRead("http://localhost/test/WebService.asmx?WSDL" ); // 2. 创建和格式化 WSDL 文档。 ServiceDescription description = ServiceDescription.Read(stream); // 3. 创建客户端代理代理类。 ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); importer.ProtocolName = "Soap"; // 指定访问协议。 importer.Style = ServiceDescriptionImportStyle.Client; // 生成客户端代理。 importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties | CodeGenerationOptions

简单shellcode学习

时光毁灭记忆、已成空白 提交于 2020-08-09 06:40:57
本文由“合天智汇”公众号首发 作者:hope 引言 之前遇到没开启 NX 保护的时候,都是直接用 pwtools 库里的 shellcode 一把梭,也不太懂 shellcode 代码具体做了些什么,遇到了几道不能一把梭的题目,简单学习一下 shellcode 的编写。 前置知识 NX (堆栈不可执行)保护 shellcode(一段16进制的数据,转化为字符串则为汇编代码) pwnable之start 保护检测 可以看到这道题目什么保护都没有开 ida分析 题目只有 start 函数,可以知道该题是用汇编语言写的,顺便可以锻炼一下自己看汇编的能力 汇编代码分析 简单来说,程序调用了 wirte 函数去打印字符,接着调用 read 函数输入,但是这里的输入没有限制,因此有一个栈溢出的漏洞,而且程序有个特定,他将 esp 的值首先压入了栈中, esp 存的是栈顶的地址,使得我们能够找到栈的地址,为我们返回 shellcode 做准备 push esp #将esp寄存器的值压入栈中,这里可以获得栈的地址 push offset _exit #将_exit函数地址压入栈中,使得start函数执行完毕时返回exit函数 xor eax, eax #清空eax寄存器的值 xor ebx, ebx #清空ebx寄存器的值 xor ecx, ecx #清空ecx寄存器的值 xor edx, edx