Archive for category 开发语言

技术宅改变世界?

搞的非常火热的西厢计划,在很多groups已经吵翻天了。

国内外研究GFW漏洞的不少,GFW所监测的IP中出现敏感词,它就很无耻的伪装目标IP给双方发送Reset包,那篇很有名的在groups讨论里被频繁引述的论文详细描述了类似的漏洞和伎俩。还有DNS劫持,通过域名污染的方式阻止访问。

西
厢的想法是忽略这个Reset包,在客户端很好做,服务器端……注意一点,GFW拆东补西的很多,而且是基于一个良好的遵守RFC793
RFC791等协议组的,它的TCP栈也很简陋,但TCP/IP协议组在底层实在是有不少的漏洞,且GFW作为一个类似入侵检测系统的系统,对于连接状态
的判断只能用reset判断。

还真有人这样干了……并无确切的描述,但是,多数人猜测如此:三次握手过程中不确认序列号+1的ACK,转而
发送一个序列号不变的FIN,随后再发送一个序列号不变的ACK,根据RFC,服务器端回复一个Reset,如此,在墙两端的客户端和服务器端都被GFW
认为是不活动的,此时,再发送正确的ACK号,建立连接。

对于DNS劫持的问题,使用一组匹配GFW伪包的指纹并将其过滤,但这个过程仍然是不确定的,无法重置的。

技术宅改变世界?嗯,至少技术宅正在改变中国。

留下评论

翻墙

想看wiki的一些东西和youtube一直都是从sneakme或者alonweb的在线代理绕进去的,sneakme太慢,alonweb的VPN有1G的流量限制。今天看到这样一段
用记事本打开 C:WINDOWSsystem32driversetchosts 文件,在下面添加IP地址指向www.youtube.com  和 gdata.youtube.com 就可以不用翻墙访问YouTube。使用nslookup之后直接添两条进去。
看了下这个文件的说明
# This file contains the mappings of IP addresses to host names. Each entry should be kept on an individual line. The IP address should be placed in the first column followed by the corresponding host name. The IP address and the hostname should be separated by at least one space.
想起来windows下的hosts请求级别应该是比DNS要高的,这里面就是一个很简单的查询表映射。还有点用处就是,局域网用户还能通过hosts表用自己设定的域名访问本网段内某台机器。如果要屏蔽的话…
实际上这个就是绕过了GFW的DNS劫持问题,重新抓包后还是出了点问题,wireshark收到大量来自202.112.60.xxx网段的连接重置消息,这个就只有指望服务器端了,支持https应该会好一些,因为GFW毕竟是要抓包才能确定内容安全性的。其他的乱七八糟的可以参见 R. Clayton, S. J. Murdoch, and R. N. M. Watson, “Ignoring the Great Firewall of China”

还想起来有个最近很火的Tor,没用过,研究了一下,Tor通过一个提供数据加密服务的中间网络来完成源主机和目标主机的通信,从而能够达到翻墙的目的。但是,由于Tor不仅会对数据进行加密,而且还要通过分散流量来保护隐私,无法达到比较理想的速度。

看了篇这样的文章,GFW的工作原理和突破技术,蛮赞的,里面提到原来google的语言工具也可以用来翻墙……

留下评论

D语言的前景?

CSDN上看到条旧闻,D语言在MAC上终于有编译器了。07年的时候还关注过这门新兴的语言,语法基本秉承了C++的风格,而且对C++的一些思想的吸收和改进也很令人感兴趣,目标是具备C/C++语言的进行底层开发的能力(能够直接嵌入汇编),又具有大量Java和C#的开发特性(比如自动垃圾回收,delegate等),同时在语言级别支持一些数据结构。最令我感兴趣的一点,Bright添加了GC的功能同时还能保有C++的性能?说实话当时只注意看手册里所提及的内存优化等措施。此外还支持与C的兼容,尽管会有一些小的问题。模版的功能也很有趣,尽管它并不象C++般的可以返回引用。

但大概没有什么新语言的开发让人如此关注同时又如此的命运多舛了,Bright执意保留自己对编译器后端的版权,着实影响了一批热情的开发者,最著名的逼宫事件就是Chris Miller在D语言的新闻组中发言要求DMD和D语言规范增加分支DMD needs branches。但Bright似乎有点顽固,坚持自己的目标是:对C++的修正和改进。他倾向于只需要一些较小的改进而不是颠覆,对ruby和python这样的脚本语言的一些优点也不屑一顾,即便是Bjarne当初开发C++也在AT&T内部进行了讨论并进行了修改,如今在开源的大趋势下,置许多使用者的呼声于不顾,至少在推广和进一步开发上会遇到不小的困难,否则也不会出现在1.0版本发行俩年后才有第三个编译器,Gdc也使用的是Bright本人开发的编译器后端,与目前获得成功的linux相比,Bright难道没有看到linus本人只在指导思想上做把握而把开发的工作交给使用者这样的方法的巨大优势吗?更何况目前的D还有不少的问题,如标准库以及对动态连接的支持。

目前类似JIT这样的技术以及硬件方面的发展,已经置D语言于一个相当尴尬的境地了,底层开发仍然是C和汇编的天下,再向上有python等动态语言的挤压,与D处于同一层次的java也在逐步的考虑开源,Bright的固执似乎并非如Bjarne般对语言特性的取舍来自于讨论和会议,而固执正将他带向一个死胡同,或许是昙花一现?尚未有定论。

留下评论