特征码

图像识别技术——验证码识别

六月ゝ 毕业季﹏ 提交于 2019-12-09 12:51:33
[1] 一、数字图像处理基础 一幅图像可以定义为一个二维数组f(x,y),这里x,y是空间坐标,而在任何一对空间坐标(x,y)上的幅值f称为该点图像的强度或灰度。当x,y和幅值f为有限的、离散的数值时,称该图像为数字图像。 自然界呈现在人眼中的图像是连续的模拟信号,在计算机处理前,必须用图像传感器把光信号转换为表示亮度的电信号,再通过取样和量化得到一副数字图像。取样是对图像在坐标上进行离散化的过程,每一个取样点称为一个像素。量化是对图像灰度上的离散化过程。取样后将得到M*N个像素,每个像素量化得到一个灰度值L,以L表示灰度值的允许取值范围,则数字图像存储需要的比特数b可以表示为: 图像的灰度值取值范围被称为图像的动态范围。把占有灰度级全部有效段的图像称为高动态范围图像,高动态范围图像有较高的对比度。相反,地动态范围的图像看上去是冲淡了的灰暗格调。 二、图像的预处理: 主要是对图像进行灰度化、二值化、抑噪(滤波)等技术。 1、图像的灰度化 RGB系统中一个颜色值由3个分量组成,这样的图像称为彩色图像,RGB系统称为颜色空间模型。常见的颜色空间模型还有HSI、CMYK等。如果一幅图像的颜色空间是一维的(一个颜色值只有一个颜色分量),则这幅图像就是一副灰度图。在位图图像中,一般以R=G=B来显示灰度图像。 图 1 原始图片 常用的灰度化方法有以下三种: (2.1) (2.2) (2.3)

图片头文件信息解析

拜拜、爱过 提交于 2019-12-07 10:10:03
  今天发现获取图片的宽高,并不需要把图片完全读完之后再来获取,而只需要读取文件头文件,几十个字节便可以读出文件的宽高。   图片的文件头部存储有该图片相关信息,可以从中读取相应字段,得到尺寸、大小、格式等信息。由于无需载入整张图片,故而速度较快。当图片较大时,优势更加明显。   现在把今天发现的东西总结一下,所有数据都是用的QQ截图。特征码的位置可能和实际不同,目前发现jpg的宽高特征码不确定。如果以后发现特征码规律会回来修改这篇博客。   所有数据都是QQ截图出来的,并且做了多张比较,以下例子只是其中之一。 bmp(771*434):       可以看出width低位:0x12,高位:0x13。height低位:0x16,高位0x17。 PNG(906*440)       width低位:0x13,高位0x12。height低位:0x17,高位0x16。和bmp刚好相反 GIF(976*402)       width低位:0x07,高位0x06。height低位:0x09,高位0x08。 JPG(800*525)       width低位:0xA5,高位0xA6。height低位:0xA3,高位0xA4。    再次强调,以上均为QQ截图的格式,以上特征码可能和实际图片不一致,已知jpg格式的图片特征码不一致,在使用特征码时,最好先检查一下是否一致。 补充

网络传输数据的加密过程详解

徘徊边缘 提交于 2019-12-06 01:23:04
常见的明文传输协议有:http,smtp,dns,pop3,imap4。 常见的攻击方式有:窃听,数据注入,会话劫持 为了保证互联网上的数据传输的安全性,于是各种的加密方式和加密算法诞生了: 数据加密方式:对称加密、公钥加密、单向加密。 1.对称加密: 加密方和解密方使用同一个密钥, 其优点是: 加密解密的速度快,适合于大量数据的加密。 缺点是: 无法进行密钥交换。 2.公钥加密: 使用接受方的公钥进行加密,接收方在使用自己的密钥进行解密。 缺点是: 加密效率低,一般不用在数据加密上,通常是用在数据加密的密钥交换上的加密。 3.单向加密: 获取数据的特征码, 其特点是: 定长的输出,加密过程不可逆,具有雪崩效应也称作蝴蝶效应。 由上面的加密方式可以得知,每一种加密方式都具有缺点,要想在互联网上传输数据既要保证数据的完整性和数据的保密性,以及数据发送者的身份验证 ,显然使用一种加密方式是远远不够的。 单说要完成数据发送者的身份验证: 发送者使用自己的私钥对某一数据的特征码或其他进行加密,当接受者收到数据时在使用发送者的公钥进行解密,这一过程就可以完成发送者的什么验证,该过程又称作"数字签名"。 在既保证数据的完整性,保密性以及实现发送者的身份验证的数据传送过程: 首先发送者对自己要发送的数据进行单行加密,计算出数据的特征码,并且使用自己的私钥讲该段特征码进行加密

简单的病毒查杀引擎编写

不羁的心 提交于 2019-12-03 09:56:21
特征码定位查杀 简单提取一段特征码字段。 代码编写。 #include <stdio.h> #include <Windows.h> #define FileLEN 20 // 文件长度定义 #define SIGNLEN 8 // 特征码长度定义 typedef struct SING { char FileName[FileLEN]; // 病毒名称 LONG FileOffset; // 文件相对偏移 BYTE VirusSign[SIGNLEN + 1]; // +1个结束符 }_SIGN,*PSIGN; SING sign[2] = { { "setup.exe", // 病毒的具体名称 0x1a20, // 病毒在文件中的偏移位置 "\x05\x00\x00\x00\x90\x00\x00\x80" // 病毒特征码 }, { "lyshark.exe", // 病毒的具体名称 0x3a10, // 病毒在文件中的偏移位置 "\x02\x00\x00\x00\x30\x00\x00\x90" // 病毒特征码 } }; BOOL CheckSig(char *FilePath) { DWORD dwNum = 0; BYTE buffer[SIGNLEN + 1]; HANDLE hFile = NULL; // 获取到FilePath路径下文件的句柄信息 hFile

开源项目源码解析-Android Lock Pattern 源码解析

眉间皱痕 提交于 2019-12-03 00:37:04
Android Lock Pattern 源码解析 本文为 Android 开源项目源码解析 中 android-lockpattern 部分 项目地址: android-lockpattern ,分析的版本: 40293d2250c2 ,Demo 地址:等待添加 分析者: 爱早起 ,校对者: Trinea ,校对状态:未完成 1. 介绍 1.1 关于 Android 的图案密码解锁,通过手势连接 3 * 3 的点矩阵绘制图案表示解锁密码。基于 Android Source Code 。 1.2 特点 支持: Android 1.6+ (API 4+)。 无特殊依赖。 支持手机与平板的布局。 Stealth mode (invisible pattern)。 包含 5 种主题: Dark/Light Light with dark action bar (API 14+) Dark/Light dialogs 有验证码模式。 1.3 使用 1.3.1 Manifest 配置 <activity android:name="com.haibison.android.lockpattern.LockPatternActivity" android:theme="@style/Alp.42447968.Theme.Dark" /> 1.3.2 创建图形锁模式 private static

代码注入式游戏修改器的优化问题

不打扰是莪最后的温柔 提交于 2019-11-28 03:23:57
我们玩单机游戏时,游戏难度可能过大, 或者游戏已经比较熟练,想要增加游戏的玩法,这时候可以使用修改器。 内存式游戏修改器主要对游戏内存修改 修改时有两种方式,一是定时对内存数值进行修改。实现类似锁定的效果。 这样方案需要程序时刻运行。一旦关闭游戏中的数值,例如生命值等就会产生变动。 需要注意的是,修改网络游戏和有反作弊机制的游戏,除了使游戏臃肿,没有别的好处。且有数据失去同步的风险。 第二种方案则是对程序的代码进行修改。例如将 子弹数减1修改为子弹数加1,一旦进行射击操作,子弹就会增加。 由于程序代码可能是动态加载。当你进行射击时代码才会加载入内存。想要修改代码,就必须找到代码的位置。 代码位置会变化但是代码是不变的,我们只要搜索一段独一无二的代码,就可以找到位置。 我们把这段代码叫做特征码。搜索特征码时如果代码加载时偏移量大于特征码,直接暴力搜索即可。 如果代码加载时偏移量小于特征码,可以使用kmp算法,或者bm算法搜索。 搜索时注意,内存读取函数运行较慢,但是读取数据量大小对运行速度影响小。我们可以将大量数据读取入缓存中。 这样可以减少内存读取函数的调用次数,当使用40kb缓存时,仅读取1000次左右就可以完成搜索,时间为400ms。 除了用缓存来加速外,我们也可以缩小内存搜索范围,通过多次重开游戏,发现内存位置是 0XXXXXX1到4XXXXXX1之间