未分类

关于Tor

隐身术——使用Tor匿名网络与proxychains构建SOCKS代理链IP跳板,在渗透测试与攻击入侵时销声匿迹 *****免责声明***** 此处介绍的技术仅作为研究,学习,交流用,严禁任何个人,机构,公司,组织,团体使用这里公布的技术对任何类似上述的第三方实体进行未经授权,非法的渗透测试与攻击入侵,同时本博文作者不承担由此造成目标的任何(包括但不限于)经济损失,用户数据丢失或泄漏,业务亏损等后果产生的相应法律责任 用最简单的语言来描述,Tor 匿名网络是一个由位于世界各地的志愿者维护的各自的匿名网络组成的大型分布式匿名网络,类似于分布式的 VPN,但它是免费,开放的,而且其规模之大超乎想象 Tor 匿名网络使用的核心技术是美国海军研究室开发的第三代洋葱路由器系统,其初衷用于保护政府机关的数据通信隐私,现在它被广泛应用在任何民间企业,组织,机构,以及家庭,个人的安全数据传输等场合 为了切合主题以及限于篇幅,本博文不对 Tor 匿名网络的技术实现细节,它与 TCP/IP 之间的关系,以及与 IPSec,PPTP,L2TP,MPLS,等 VPN 技术之间的异同做分析对比,对 Tor 内幕感兴趣的,可以自行浏览其项目官方站点: https://www.torproject.org/ Tor 匿名网络不仅可以保护你的网络通信不被“监听”,同时也可以在访问站点时,让对方无从判断你的真实物理地址,因为所有你访问目标站点的数据包,其 IP头部的源地址,都是某个 Tor 网络出口节点的 IP,它已经替换掉你的 ISP 给你分配的公网 IP, 这个机制类似于 windows 平台上被广泛使用的,用于“加速”网络游戏,以及“翻墙”的“非凡网络加速器”,后者实质上就是连接到某个非凡 VPN 节点的客户端程序,但它的 VPN 服务是收费的,尽管它也提供免费的测试账户连接到测试服务器,但相同的“原始” IP ,一天仅能连接3次,每次20分钟,超时即断开, 这对于要长期且稳定进行渗透测试计划而言,不是很方便,而且需要随时注意连接状态,否则真实 IP 就会曝露,尽管如此,对于有明确目标和丰富经验的攻击者而言,总共一小时的时间也足够作坏事了,关于非凡网络加速器的使用教程,以后有机会再发布 回到主题,测试环境为 BackTrack 5 Release 3 32-bits ,首先,将浏览器指向 https://www.torproject.org/download/download.html.en 下载 GNU/Linux ,BSD ,UNIX 通用的 “Tor Browser”软件包, 例如,我们下载的软件包名称为 tor-browser-linux32-4.0_zh-CN.tar.xz (也可以访问下面这个页面,根据你的处理器以及操作系统版本,体系结构,选择相应的版本下载: https://www.torproject.org/projects/torbrowser.html.en ) (或者,从下面这个地址,一次性下载适用于你系统的 Tor browser 版本,对应的 sha256sums.txt ,以及开发者数字签名这三个文件(如果你要验证软件包来源的合法性) https://dist.torproject.org/torbrowser/4.0/ ) 一,进入下载目录:

OpenCV——去雾

这是一个简化的实现算法,完整的算法请参考: Single Image Haze Removal Using Dark Channel Prior ——CVPR 2009 // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include #include #include "cv.h" #include "highgui.h" #include "cxmat.hpp" #include "cxcore.hpp" using namespace std; using namespace cv; void Show_Image(Mat&, const string &); #endif // PS_ALGORITHM_H_INCLUDED #include "PS_Algorithm.h" void Dark_Channel(Mat& src, Mat& dst, int Block_size); double Atmosperic_Light(Mat& J_dark, Mat& Img); void Recove_Img(Mat& src, Mat& dst, Mat& T, float Th, float A); int main(void) { Mat Img; Img=imread("

SSL和SSH的区别

有人说,SSH一般是用来提供安全的登录用的,SSL只是一个在协议层中加入的一层用来提供安全。 SSH工作在TCP之上,可以在启动一个SSH应用后,在其通道里运行其它协议的应用,如邮件。 SSL可以认为是如果应用程序本身支持SSL,那么他启动后就自动使用SSL连接去运行了,我们当然就没必要再使用SSH了。 SSL 可以认为是程序代码级是否支持的一种特性 SSH是我们后天可以选择的一种工具,它将我们的连接给包了起来tunnel技术 从名字上看: SSL :secure socket layer,为程序构建时期为了安全性而加入的一个协议层 SSH :secure shell安全的壳,为已经能正常运行的程序添加的壳 有人建议不要拿着两个东西比较,不是一个范畴,要比的话应该拿telnet和ssh比较 posted on 2006年6月2日 1:18由Snow 昨天Jim突然问我,SSH和SSL有什么不一样吗?我一听,是啊,有什么区别吗?…实事求是得告诉他我不知道:( 晚上回来查了查,呵呵,了解啦. 在OSI七层模型中,这两个安全传输协议其实都是建立在应用层上的: (图片来源:Wikipedia) 在最初的设计意图中,SSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被设计为加强Web安全传输(HTTP/HTTPS/)的协议(事实上还有SMTP/NNTP等),SSH(Secure Shell)更多的则被设计为加强Telnet/FTP安全的传输协议,默认地,它使用22端口. 以SSL为例,基本上SSL在传输过程中所处的位置如下: --------- | HTTP | --------- | SSL | --------- | TCP | --------- | IP | --------- 如果利用SSL协议来访问网页,其步骤如下: 用户:在浏览器的地址栏里输入https://www.sslserver.com HTTP层:将用户需求翻译成HTTP请求,如 GET /index.htm HTTP/1.1 Host http://www.sslserver.com SSL层: 借助下层协议的的信道安全的协商出一份加密密钥,并用此密钥来加密HTTP请求。 TCP层:与web server的443端口建立连接,传递SSL处理后的数据。 接收端与此过程相反。 SSL在TCP之上建立了一个加密通道,通过这一层的数据经过了加密,因此达到保密的效果。 SSL协议分为两部分:Handshake Protocol和Record Protocol,。其中Handshake Protocol 用来协商密钥,协议的大部分内容就是通信双方如何利用它来安全的协商出一份密钥。 Re cord Protocol则定义了传输的格式。 参考文章:

各种浏览器在线翻译,无需插件

Safari等浏览器的收藏书签其实可以制作成为一键翻译网页的按钮,对于有工作生活中经常有翻译需求的朋友来说可谓是非常方便。当然不只是Safari,Firefox,Chrome甚至iOS上的移动浏览器都可以通过类似的方式提供同样的功能。 Step1 首先我们要随意打开一个Safari网页,通过Command + D 快捷键添加书签,选择添加到【个人收藏】,起名为“翻译”或其他的什么都可以。 Step2 这样这个网页就会出现在上方的个人收藏栏,找到“翻译”这个收藏按钮并右键,选择编辑地址。填入如下代码,可以选择一个你喜欢的添加: 有道翻译至中文: 粘贴—>> javascript: void((function() {var element = document.createElement(‘script’);element.id = ‘outfox_seed_js’;element.charset = ‘utf-8’,element.setAttribute(‘src’, ‘http://fanyi.youdao.com/web2/seed.js?’ + Date.parse(new Date()));document.body.appendChild(element);})()) 必应翻译至中文: 粘贴—>> javascript: (function()%7Bvar%20s%20=%20document.createElement(‘script’);%20s.type%20=%20’text/javascript’;%20s.src%20=%20’http://labs.microsofttranslator.com/bookmarklet/ default.aspx?f=js&to=zh-chs’;%20document.body.insertBefore(s,%20document.body.firstChild);%7D)() 谷歌翻译至中文: 粘贴—>> javascript:var t=((window.getSelection&&window.getSelection())||(document.getSelection&&document.getSelection())||(document.selection&&document.selection.createRange&&document.selection.createRange().text));var e=(document.charset||document.characterSet);if(t!=”){location.href=’http://translate.google.com/?text=’+t+’&hl=zh-CN&langpair=auto|zh-CN&tbb=1&ie=’+e;}else{location.href=’http://translate.google.com/translate?u=’+encodeURIComponent(location.href)+’&hl=zh-CN&langpair=auto|zh-CN&tbb=1&ie=’+e;}; 将上述脚本粘贴到书签地址中 Step 3 这样就大功告成了,随便打开一个外文网页,点击个人收藏栏中的“翻译”按钮,就可以直接将这个网页翻译成为中文了! 注意有道翻译可以在上方调节页面翻译程度的

暗网简介

1.何为暗网 暗网(又称作深网,不可见网,隐藏网)是指那些存储在网络数据库里、不能通过超链接访问而需要通过动态网页技术访问的资源集合,不属于那些可以被标准搜索引擎索引的表面网络。 迈克尔·伯格曼将当今互联网上的搜索服务比喻为像在地球的海洋表面的拉起一个大网的搜索,巨量的表面信息固然可以通过这种方式被查找得到,可是还有相当大量的信息由于隐藏在深处而被搜索引擎错失掉。绝大部分这些隐藏的信息是须通过动态请求产生的网页信息,而标准的搜索引擎却无法对其进行查找。传统的搜索引擎“看”不到,也获取不了这些存在于暗网的内容,除非通过特定的搜查这些页面才会动态产生。于是相对的,暗网就隐藏了起来。

暗网信息抓取

1.什么是暗网 广义地讲,任何不能通过一次(或多次)HTTP GET请求直接下载的Web页面,我们都可以认为其处于“暗网”中。不能直接通过HTTP GET请求下载这些Web页面的原因是多方面的,有可能是网络原因不能下载,比如说企业或学校的内部网站,只有通过代理服务器连通这些网络,才能下载其中的Web页面;也有可能是动态页面,需要用户身份认证,登录后才能下载等,还有其它一些原因,这里不再一一列举。 狭义的“暗网”,是指那些没有链接指向的动态Web页面的集合,这些页面只能通过提交一个HTML表单等的形式获取其内容,也就是通过至少一次HTTP POST请求才能获取其内容,不能通过HTTP GET直接下载得到。比如说一些学校的图书馆,只有用户输入书名等检索词进行搜索时,才能得到相关的结果的索引列表,然后再跟据这个索引列表来获取相关的页面。这些页面,没有其它外链链接进来,只能通过上述方法获取。 暗网的资源: —动态内容(占90%以上) —未被链接内容 —私有网站 —Contextual Web —被限制存取内容 —脚本化内容 —非HTML/文本内容 而我们主要研究爬取的主要是动态内容,动态网页肯定是可以被爬取的,只是爬取出来的网页是动态生成的,不能像普通的静态网页一样依靠解析链接就能获取。 动态网页的生成机制: —时间动态机制 —基于用户的动态机制 —输入动态机制 现在针对暗网资源主要有两种解决方案: —构建更有针对性的暗网爬虫 —与暗网网站合作,实现信息的对接 我们选取的是第一种方案 而在构建暗网爬虫的时候,是没有通用的解决方案的,这也是百度现在投入较多人力的一个方面,百度针对暗网的搜索也不是非常好。 如何来抓取暗网信息 首先要声明,本文的讲的暗网是指狭义上的暗网。因此,如何来对暗网信息进行抓取的关键,就落在了如何让WebSpider模拟人提交HTML表单的行为。通常,如果一个表单中的元素的取值都是固定的,那么,我们可能通过枚举各种取值组合,通过HTTP POST提交表单,直接获取相应的页面,如图1所示: 在上面的表单中,各个元素的取值集合都是固定的,我们的WebSpider只要把各种所有的可能取值组合进行枚举,便可得到所有的页面。 但是实际上,通过我们遇到的表单有很多元素的取值集合都是未定的,这时候,就不能直接采取上面的方面来获取相应页面了,那该怎么办呢?如图2所示,是一个含有取值集合未定的元素的表单: 假如说我们选择了ISBN号进行检索,我们知道,只有输入合法的ISBN号,才能检索到内容。那么,WebSpider该如何知道什么样的ISBN号才是合法的呢?下面介绍一种方法。 对于这种含有取值集合未定元素的表单,我们对其中每一个取值集合未定的元素进行机器学习,为其得到一个有效的,取值个数有限的近似的取值集合。然后再采取上面介绍的枚举的方法,进行抓取。如在图2所示的例子中,我们通过机器学习的方法,得到一个合法的ISBN号的集合,然后再让WebSpider进行抓取,便可以得到我们想要的结果。 写在最后面:上面只是对暗网信息抓取的一个简单的介绍,目的只是让普通读者对暗网信息的抓取有一个基本的了解。如果想深入了解暗网信息的抓取,可以参考学习下面两份Paper,另外可以在互联网上搜索相关资料: 1.Crawling the HiddenWeb 2.Downloading Hidden Web Content 现在构建暗网爬虫有两种经典的解决方案 —*A. Ntoulas, P. Zerfos, and J. Cho. Downloading hidden web content. Technical report, UCLA, 2004. — —*S. Raghavan and H. Garcia-Molina. Crawling the hidden web. In VLDB, 2001.

WebView播放HTML5视频,黑屏的问题。

先来说下现象吧。 三部测试手机 1号 Note2 N7100 Android系统版本4.3 2号 三星9100 Android系统版本4.0.3 3号 HTC Desire Android系统版本 2.3.5 注意2.3.5系统没有强制GPU渲染选项 测试1 首先工程内Manifest.xml文件其中 users-sdk配置如下 android:minSdkVersion=”3″ android:targetSdkVersion=”4″ /> 1号 : 播放视频黑屏,有声音。 修复该问题: 手机设置->开发->强制打开GPU渲染 2号: 播放视频黑屏,有声音。 修复该问题: 手机设置->开发->强制打开GPU渲染 3号 : 没有办法播放提示 ”无法加载播放器,请删除浏览器缓存后重试“ ,我都没有播放过,哪来的缓存一说呢,看来提示信息很容易误导人。如图请忽略左上角我养的2只花大姐 修复该问题:代码内强制打开GPU渲染 getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 测试2 修改工程内Manifest.xml文件其中 users-sdk配置如下 android:minSdkVersion=”3″ android:targetSdkVersion=”14″ /> 指定目前sdkVersion为4.0及以上 1号 : 播放视频正常. 猜测系统帮助应用开启了 GPU渲染 2号: 播放视频黑屏,有声音。 修复该问题: 手机设置->开发->强制打开GPU渲染 3号: 无法播放视频 , 代码内开启GPU渲染 综上为了保险能够播放视频起见 1. Manifest.xml文件里的users-sdk 一定要配置正确 android:targetSdkVersion=”14″ 及以上 2. 代码内 强制打开GPU渲染 我们要分情况处理,因为Android 4.

IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合

直接上代码了 头文件 // 图片处理 0 半灰色 1 灰度 2 深棕色 3 反色 +(UIImage*)imageWithImage:(UIImage*)image grayLevelType:(UIImageGrayLevelType)type; //色值 变暗多少 0.0 - 1.0 +(UIImage*)imageWithImage:(UIImage*)image darkValue:(float)darkValue; /** 获取网络图片的Size, 先通过文件头来获取图片大小 如果失败 会下载完整的图片Data 来计算大小 所以最好别放在主线程 如果你有使用SDWebImage就会先看下 SDWebImage有缓存过改图片没有 支持文件头大小的格式 png、gif、jpg http://www.cocoachina.com/bbs/read.php?tid=165823 */ +(CGSize)downloadImageSizeWithURL:(id)imageURL; 代码实现: //讨厌警告 -(id)diskImageDataBySearchingAllPathsForKey:(id)key{return nil;} +(CGSize)downloadImageSizeWithURL:(id)imageURL { NSURL* URL = nil; if([imageURL isKindOfClass:[NSURL class]]){ URL = imageURL; } if([imageURL isKindOfClass:[NSString class]]){ URL = [NSURL URLWithString:imageURL]; } if(URL == nil) return CGSizeZero; NSString* absoluteString = URL.absoluteString; #ifdef dispatch_main_sync_safe if([[SDImageCache sharedImageCache] diskImageExistsWithKey:absoluteString]) { UIImage* image = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:absoluteString]; if(!

12个漂亮颜色搭配的国外网站欣赏

确定一个网页设计的颜色搭配是设计过程中最重要的部分,也是最困难的一部分。通常企业品牌在推广时采用什么颜色的影响会比较大。因为要为网站的访客定下的基调和情绪主要是由网站的颜色决定的。 在这篇文章中,我们介绍一些颜色搭配用的比较好的国外企业网站,为你在实际设计项目提供参考与启发。 1、Fillet 2、Poppin 3、David Boyero 4、Brown Owl Creative 5、Sydney – Stockholm 6、Studio Pigeon 7、We are Cuppa 8、Take Off 9、Guy Moorhouse 10、Mud 11、Transformation Projects 12、Click BBO ———————————————————————————————————— 更多最新酷站欣赏尽在:企户动

100盏灯开关的问题

房间里有100盏电灯,编号为1,2,3……100,每盏灯上有一个按钮,初始时灯全都是关的。编好号的100位同学由房间外依次走进去,将自己编号的倍数的灯的按钮全部按一次,例如第一位同学把编号是1的倍数的灯的按钮按一下(此时100盏灯全亮),第二位同学把编号是2的倍数的灯的按钮按一下(此时只有50盏灯亮着,50盏被这个人按灭了)……第100位同学把编号是100的倍数的灯(即编号为100的灯)的按钮按一下,请问依次走完后,还有多少盏灯亮着? 方法一.通过模拟同学进出场开关灯实现 /** *100盏灯开关的问题通过模拟同学进出实现 *1为开,0为关 * @author Zodiac * */ public class Demo04 { public static void main(String[] args) { // TODO Auto-generated method stub /*模拟100盏灯,1表示开,0表示关*/ byte light[]=new byte[100]; /*最后灯开着的数量*/ int result=0; /*将灯初始化为全关*/ for(int i=0;i 方法二.通过以上进出场开关流程分析,我们可以通过对灯编号进行约数计数来降低复杂度,约数个数为奇数的灯最后是开着的,约数为偶数的灯是关着的。 /** *100盏灯开关的问题通过计算约数个数实现 * @author Zodiac */ public class Demo05 { public static void main(String[] args) { // TODO Auto-generated method stub /*保存开灯数量*/ int result=0; /*保存约数个数*/ int num[]=new int[100]; /*将数组初始化为0*/ for(int i=0;i 方法三.进一步分析,约数是成对出现的,因此只有完全平方数约数个数为奇数,其他数的约数个数都为偶数,因此本题实际上可以转换为求100内完全平方数的个数。当然答案为10。我们在上面两个代码中将开灯编号打出来,结果如下: 1 4 9 16 25 36 49 64 81 100 10 结果验证了求100内完全平方数的个数。