字符串模式匹配算法简析(2)—— Rabin Karp 算法

前情提要 之前写过一篇:https://www.kmahyyg.xyz/archives/105 简要介绍了大学课本中常见的 KMP 和 BruteForce 子字符串模式匹配算法,同时根据 WikiPedia 的内容扩展了 Sunday 算法。 今天在完成 LeetCode 的过程中 https://leetcode.com/problems/implement-strstr 发现 builtin 的 strings 的库速度最快,引起了我的好奇。 本科阶段几乎都学过 KMP 算法,然而 KMP 算法的 next 数组的生成难于理解,生成算法也不是很方便,没有通用性、记忆的性价比也不够高。不论是实际应用还是面试,我想都不是一个好的选择。 常见的几个语言中: Java String 类中的 indexOf() 方法,C++ 的 strstr() 函数,使用了 O(n*m) 的暴力比较;Golang strings 包中的 Index() 方法中使用了下述 Rabin-Karp 算法,时间复杂度 O(n+m),同样没有使用 KMP。Golang 使用 R-K 配合上其对 Bytes 序列的优化,达成了较好的运算速度。 Rabin Karp 依赖 ——... » read more

C 语言关于数组和链表的一些想法

数组和链表 https://www.cnblogs.com/tao560532/articles/2199280.html 一图流,与我交流可以使用评论框或页面底部任意方式。 踩坑笔记 Define a string var using char. In C , string var is not like the python. You have to declare it first , then make a pointer to the exact string. Ref1 : https://stackoverflow.com/questions/8732325/how-to-declare-strings-in-c Ref2 : https://stackoverflow.com/questions/4337217/difference-between-signed-unsigned-char Ref3 : https://stackoverflow.com/questions/3862842/difference-between-char-str-string-and-char-str-string At the end of each string , the system will add... » read more

传统加密 ZIP 下的文件头简单查看

Pkzip官方文件头描述文档 Pkzip文件架构分析 zip加密算法分析1 zip加密算法分析2 pkzip传统加密算法的无密文破解分析 分析HEADER,明确加密算法 老样子,Total Commander,使用内置Lister以hex形式打开加密后的文件。 看到: 00000000 504b 0304 1400 0100 0800 6d51 6647 03ae 查看参考资料2,得知文件头的格式如下:(参考资料2 4.3.6 Overall .ZIP file format) 分析: 0x04034b50 (Must read in little-endian) 定义为文件头标签,即让OS知道这是个zip文件 文档4.3.7部分 local file header signature 4 bytes (0x04034b50) version needed to extract 2 bytes general purpose bit flag 2 bytes 0x00010014 由参考资料2可知,0x0014为最低的解压软件版本(20),即至少需要 PKzip 2.0可以解压。0x0001表示这是一个加密过的压缩文件。... » read more

Matlab 的函数 – fix, floor, ceil, rem, mod

fix(x), floor(x) 和 ceil(x) 函数都是对 x 取整,只不过取整方向不同而已。这里的方向是以 x 轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。fix(x):向 0 取整(也可以理解为向中间取整)floor(x):向左取整ceil(x):向右取整 取模(mod)与取余(rem)是不同的,今天在网上具体查了一下:通常取模运算也叫取余运算,它们返回结果都是余数. rem 和 mod 唯一的区别在于:x 和 y 的正负号一样的时候,两个函数结果是等同的;当 x 和 y 的符号不同时,rem 函数结果的符号和 x 的一样,而 mod 和 y 一样。这是由于这两个函数的生成机制不同,rem 函数采用 fix 函数,而 mod 函数采用了 floor 函数(这两个函数是用来取整的,fix 函数向 0 方向舍入,floor 函数向无穷小方向舍入)。rem(x, y) 命令返回的是 x-n.*y ,如果 y 不等于0,其中的 n = fix(x./y),而 mod(x, y) 返回的是 x-n.*y,当 y 不等于 0 时,n = floor(x./y) .

2018 YNU CTF 信息安全铁人三项赛数据赛

Original Source (有改动) HTTPs://racinedee.github.io/2018/07/01/云南大学第一届信息安全铁人三项赛数据赛writeup/ 第一届铁三校赛数据赛writeup。感觉比分区赛的题目要难,主要是题目中加了一个脑洞。 -O-O-O-O-O-O-O-O- 小利访问最频繁的网站是?(只填写一级域名) 既然是访问最频繁的网站,所以直接筛选HTTP流量: Statistics – HTTP – Requests,按Percent降序排列,完成。 小利的IP是多少? 从HTTP流量中可以发现发起请求最多的IP地址为192.168.12.126,从而可以判断小利的IP即为192.168.12.126 黑客的网站IP是什么? 要找黑客网站IP,首先小利肯定对黑客网站进行了访问,所以对数据包进行筛选。这里当时比赛的时候是队友发现了这条异常流量,小利访问了一个域名为www.waigua.com的网站,下载了名为万能吃鸡助手的exe可执行文件。所以猜测黑客这就是黑客网站,而小利下载的文件就是木马文件(HTTP://www.waigua.com的网站,下载了名为万能吃鸡助手的exe可执行文件。所以猜测黑客这就是黑客网站,而小利下载的文件就是木马文件) 所以黑客网站IP就是192.168.12.148 小利从黑客网站下载的文件名是什么? 从上一题的分析就知道下载的文件名是万能吃鸡助手.exe 小利的网站后台密码是多少? 比赛的时候做到这题就没有思路了,一开始想到的是可能在流量中存在登录网站后台的的数据报文,所以筛选了一波post请求 在post请求中没有发现登录相关的流量,但是发现小利向黑客的网站上传了Desktop.zip文件。 这个操作肯定不是小利自己进行的,所以猜测是小利下载并运行了从黑客网站上下载的木马文件。木马的操作就是将小利桌面的文件内容打包上传到黑客的网站。 所以将此文件导出。打开导出的.zip文件后发现没有内容 用010editor打开文件也并没有发现zip头。然后就没有思路了。 比赛结束之后找学长,学长提示后面的题目答案全在流量中提取出的压缩包内。 所以提取压缩包这个思路应该是对的,问题就出在压缩包文件内容上。 后来又仔细看了看文件内容,发现了这道题目中的坑。 zip文件的文件头为50 4B 03 04 ,而文件中的16进制的每一个字节的两个字符被反序了,所以导致了zip文件无法解析。 然后写脚本还原正确的文件 还原之后打开文件: 和之前的分析一样,木马程序的功能就是将小利桌面的文件打包并上传到黑客的网站。忽略所有的快捷方式,有效的信息只有三个,一个joomla.rar压缩文件,一个Diary.docx的word文档。一个joomla.sql数据库文件 很明显,joomla.rar压缩文件中就是小利网站的源码, Joomla.sql文件就是小利网站的数据库文件。 而这道题目问的是小利的网站后台登录密码,很容易就能想到去数据库里面找。 打开数据库查找‘password’关键字,在文件最后看到了user表,里面有password字段,而下面的语句向这个表里面插入了数据 对应一下就可以知道加密后的密码为$2y$10$fOY7WmvLcJ2hpXaD0zZB4eZq/UoWqIkphuKvS2Eybymhu3HgZcmme 而密码解密的明文为woaini123,所以小利网站后台密码即为woaini123 小利的网站数据库密码是多少? 数据库里面一般可以在网站的配置文件里面找到。 而这道题也是一样,直接去小利个人网站的网站配置文件里面就能看到数据库的用户名和密码都是root 小利的网站可以访问后台管理登陆页面的文件名是什么? 这道题很明显,xiaoli_admin.php 小利的网站已存在的WebShell文件名是什么? 这道题肯定不能一个一个去查看文件,所以直接下载一个D盾,对目录进行扫描 直接找到Shell文件为help.php 若登陆WebShell成功时,Cookie值会被设置成多少? 找到D盾扫描出的WebShell文件 通过文件内容的一些特征可以知道这是一个silic的php大马 直接定位到登录设置Cookie的函数... » read more

YNU – 汇编语言程序设计实验报告 4-5

Experiment 4 实验目的 使用虚拟机 Qemu-KVM 和调试器 Bochs,执行,调试 MBR 扇区代码,了解计算机启动的原理和 MBR 扇区代码的功能。 实验内容 阅读参考源程序并增加注释; 在参考源程序中增加指令(不要改变原程序的功能),为程序增加功能:输出你的学号和姓名拼音; SRC: https://gist.github.com/kmahyyg/ce0d0e3079363f7be5d91f7ace0d9c0d 使用 NASM 工具将修改后的实验源程序编译为 .bin 文件; 将 .bin 文件用 dd 写入虚拟机硬盘 MBR 扇区; 使用 Qemu-KVM 虚拟机观察写入 .bin 文件的执行结果; Tutorial: https://blog.kmahyyg.xyz/2018/ASM-exp-report/#%E5%AE%9E%E9%AA%8C%E6%93%8D%E4%BD%9C%EF%BC%9A%E7%BC%96%E8%AF%91%E5%AE%8C%E6%88%90%E5%90%8E%E7%9A%84-BOCHS-%E5%AF%BC%E5%85%A5 关闭 Qemu-KVM,使用 BochsDBG 虚拟机调试写入在虚拟硬盘 MBR 扇区中的程序; 思考题 计算机如何在屏幕上显示字符? 如何输入输出 10 进制数据?如何输入数字、字符串? 结合中断向量表实现。 MBR 扇区有什么特点?MBR 扇区中的代码实现什么功能? 简述计算机复位后的启动过程。 Experiment 5 实验目的 了解计算机屏幕显示的原理,编程实现显存映射与中断... » read more

YNU – 汇编语言程序设计实验报告 1-3

Preface 由于过去不努力和各种原因,导致没有选到汇编课程。旁听课程,保存下了逍爷的 PPT,积极参与实验和旁听课程。 这就是我现在能做的,感谢王逍老师的辛勤付出。感谢我亲爱的钰帮我做的一切,么么哒! 也感谢 RainbowTrash23333 一直以来对我的帮助,没有他们,就没有现在的我。 本站所有图片和其他资源文件使用阿里云国际版的 OSS 存储与 CDN 加速,前端公共库使用 jsDelivr。 废话不多说,上实验报告。这里由于并不提交正式的实验报告,就只是简单记录下实验步骤和踩的坑了, 用于抄袭后交作业者请自觉绕道,发现必将严惩。 License 本篇文章授权 采用 CC BY-NC-ND 3.0 Unported 协议,禁止转载。 Experiment Environment Windows? 不可能的,不到 Linux 下完全没有替代工具或者我完全没时间折腾的时候我是打死都不会用的。 Linus Torvalds: Your PC is like air-conditioning — it becomes useless when you open Windows. So: 实验虚拟机全部采用 KVM 搭建,目前有 MSDOS 7.11 和 Windows XP SP3. Experiment... » read more

学堂在线 MOOC 视频观看系统分析

学堂在线的慕课真是让人伤心,考虑自己写程序来免看慕课,本文是对心跳包的分析 前言 基础地址: http://ynu.xuetangx.com/courses/course-v1:TsinghuaX+y10_010610183_2X+2017_T2/courseware/a0c88e15f0724905bdae5001ae905a15/4a819651df914e8e944be7e00f248d35/ 鸣谢: https://github.com/wangqr/proto_xuetangx 因为学校垃圾校园网闪断问题频发,加上学堂在线 MOOC 系统设计存在重大缺陷,导致经常性无法正常记录学生的观看记录。 人懒,遂操起工具,分析视频观看记录系统。 加载页面 加载页面常用 JS、CSS、HTML 完成,看到是自己写的成绩记录系统 + XHR动态刷新 + OpenEDX 魔改而成。 加载完成后 访问 http://ynu.xuetangx.com/event ,然后 POST 一个 CDN_PREF数据到此处获取视频ID并加载视频,这里并不重要 播放视频全过程 心跳包解构 基础:浏览器环境 浏览器 Request Header: Response Header : Heartbeat  起始播放 Base URL: http://log.xuetangx.com/heartbeat 方式: POST 需要注意一点:  页面编号: Event 1 : Play_video Base URL : http://ynu.xuetangx.com/event 方式: GET Request Header: POST... » read more