Mar 21, 2010

深入理解GFW:结论

作为深入理解系列最后一篇,有好几个平行的话题在这里一并讨论了。

西厢的弱点和局限

首先泼一盆冷水。

西厢远没有你们想象得那样强大,它有很多弱点和局限:

  • 对IP封锁无效。比如加载之后也不能访问twitter.com。
  • 对无状态的TCP阻断无效。比如有一段时间的docs.google.com:443。
  • 不稳定。不少用户反应使用时有时候仍然会连接被重置。
  • 受环境影响大。因为要求网络中间节点都遵守RFC,不少NAT内网用户无法使用,装了防火墙也可能造成无法使用,在虚拟机内开启也可能无法使用。
  • 安全性没有改善。用户的通信仍然是原样,明文仍然是明文,被动监听设备依然正常截获用户的通信。
  • 受制于GFW的变动。GFW指纹逻辑比较复杂,只能通过硬编码来描述。如果GFW更新工作方式细节,那么匹配模块就需要重写更新才能使用。
  • 另外,有ipv6线路的用户访问Youtube不需要使用西厢。

而它的优点是,免费,无中转性能开销。因此,到发布为止,只想到Youtube最大地展示了它的优点而较少受到缺点影响。而产生幻觉,只看到优点看不到缺点是多数人会犯的错误。

西厢是什么不是什么

西厢提出的是一种技术而不是一种资源,因此没有西厢客户端一说,也不存在被封。西厢所做的只是指出了墙上本来存在的裂缝,而且这个裂缝是可以利用的。

之前我们说过:其他一些低成本但有一些缺点的方法也暂时作为折中而继续存在研究价值。私有SSH代理和私有VPN才是当前状况下的最优解决方案,但是由于这两种方法有较高的成本。西厢不会也不能替代私有SSH代理和私有VPN在翻墙中起到的作用。西厢不是对GFW的银弹。GFW是一个复杂的系统,不存在对它的银弹。

0.0.1版的发布是面向开发者的,完全没有考虑用户体验。原开发组没有任何继续开发的计划,没有任何移植的计划。任何继续的开发和移植是所有后来人的功劳。

西厢的开发有多难?有人拿毕设来与之相比,这有点不可思议。事实上,西厢的原理部分一年前就完成了,主要依据就是T. Ptacek的那篇论文,实验结果也很好。而最终的netfilter实现者说他花了一周时间看内核代码netfilter那部分,然后就着现成的代码直接改成现在这个样子了。难吗?为什么西厢压了一年没有发出来?在这一年中,

这样一些系列从零到有的文章,是要展示一种对GFW进行全面理解的学习过程和方法,表达一种对GFW进行逆向工程的趣味。读者不应该仅仅作为一个信息的接收者,而是应该有自己积极的思考。如果读者中有百分之一开始自己思考关于GFW的问题,千分之一开始自己动手研究GFW,如果有万分之一开始将原理付诸实践,那就是很好的结果。如果所有人都只是伸手而没有动力去自行了解GFW,那么就只会让GFW越来越强大,而自己被动挨打被GFW追得到处跑。GFW在背后技术力量的推动下变动不居,不断地被更新、不断地发生变化,对GFW永远正确的认知或者一劳永逸的翻墙方法并不存在,只有与之对抗的方法和学习动力能留存下来。……

西厢的提出就是为了说明,GFW也远没有你们想象得那样强大,而是充满了漏洞。只要你敢于动手,就一定有所收获。请记住,西厢是个tech demo,发布出来不是给你用的,而是给你研究的。如果你认为你的能力不比哈工大、北邮那些筑墙的学生差,那么请你体现你的存在。

GFW如何应对西厢的挑战

不说非常困难,解决西厢揭示的漏洞也不是一件简单的事情。

首先,GFW的规模极为庞大,这给打补丁的难度带来了本质的变化。如果是一个一般小型网络出入口上部署一台主机做的IDS,给TCP栈打补丁还相对容易。而在分布式和并行计算的体系结构下,在几千个计算节点的规模上做任何事情都不容易。

其次,GFW的设计思想从一开始就没有重视完备性。以前已经讨论过了,GFW很多模块的设计给人这样的感觉:得过且过,刚好可以工作。而且这些问题实际上很久都不修复。比如这次西厢展示的这个漏洞,其原因来自GFW的多线程TCP栈还原全连接时,将通信分成两个half_stream处理,从而避免数据共享控制造成的锁开销的做法。往好的方向看,这可以在性能上带来提升,以完备性的损失换来计算的简化也是一种实用主义哲学。往坏的方向看,这就打开了漏洞的大门。这也就意味着,GFW面临这种的情况:修补漏洞,性能大幅下降;完善TCP栈,性能急剧下降。

然后,GFW完全修复漏洞的难度很大。按照Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection一文的结论,如果NIDS的TCP栈与两端的TCP栈有不一致,就会存在可以用的漏洞。何况GFW这种简陋的TCP栈,可以说漏洞百出。我们曾经枚举过,有一百多种报文的字段组合可以实现当前这种效果。如果GFW不完全重写其TCP栈以符合RFC,那么像西厢展示的这么简单易用的漏洞还会有不少。即使GFW实现了RFC完备的TCP栈,《入侵防御系统的评测和问题》还论证了基于TTL的注入是理论上不可避免的。

最后,GFW的研发运维实力很成问题。首先已知,有不少学生在参与GFW的研发,而GFW的模块质量参差不齐正反映出其研发能力不足的状况。GFW的质量控制也应该是很有问题的,2007年7月17日GFW造成的全国性邮件事故处理之缓慢,让人对GFW的运维能力产生很大的疑问。

总之,GFW的屁股比微软还大,懒得挪

对GFW进行DDoS

我们一直不提这件事情。DDoS有很多问题。

首先,DDoS是一个脏活。DDoS首先需要组织botnet,这种事情跟贩卖人口差不多,低级。

其次,DDoS在任何国家都是非法的。2009年5月19日民用DNS攻击案,四个脚本小子荣获“破坏计算机信息系统”奖章。GFW可是号称国家信息海关、国家信息安全基础设施,攻击它,万一被抓了人命事儿小,你的开源项目没有人继续帮你做,多郁闷啊。

再次,DDoS在战略上只会产生负面结果。在这个拔网线司空见惯的时代,推倒GFW,不但不会改善互联网审查的状况,反而可能造成实名制和金盾的崛起——一帮只会整人不懂技术的胡乱拔网线、军管互联网。《总论》就已经说过,双方需要的是一种斗争状况下的动态平衡。大家都得过且过,退避三舍,网民翻墙有方,GFW对上面有交代,就行了。最多偶尔之偶尔,逢年过节,比如国庆或者春节的时候,DDoS开个口子让大家出去遛一遛。

当然,虽说问题多多,DDoS的可行性还是有的,GFW的计算规模总归还是有限的。2010年1月3日前后的“解封”据说就跟GFW北京被DDoS有关系。不过也不会详细讨论其方法,只是小字提一下……组织DDoS,先要对全国的网络拓扑很清楚,这就涉及网络测量的课题;也要对GFW的结构了解得很透彻,弱点在哪里,负载均衡算法是怎样的;怎样做最有效,是点射还是温水煮青蛙;怎样反反DDoS,怎样空对空射击。这些都需要学习。其次,DDoS的效果需要一套精细的评估体系,如果不成功需要快速改变策略。GFW不是常规的服务器,成功与否并不是那么显著。因此需要建立一个监测网,在全国不同的ISP对GFW的多种指标实施实时观测。比如不同协议下的阻断响应延迟,TCP的SYN超时和ACK超时时间,各个DNS服务器污染的情况,窗口值的增速等等。所以说这个事情要做也不简单。顺便一提,这个监测网所用监测工具,我们最初给它命名为Collaborative Network Measurement Toolkit for GFW,简写为CNMTG;当然了,这是一个自命名完成之后就停止开发的雾件。

结论的结论

对于普通用户来说,未来的翻墙方式中,我们最推荐私有SSH代理和私有VPN,在安全性和稳定性上有优势,组队合购VPS或独立主机建VPN更好。

批评家们,请正确对待参与GFW建设的技术人员。技术是中性的,是无罪的,只不过技术为政治所利用。GFW的确在防控蠕虫病毒和垃圾邮件上有重要作用。至于方滨兴院士,他更像是一个营销人员或者政客而不是科学家。

每个国家的老大哥都有一样的爱好,就是以国家安全的名义无限扩张权力。米帝用来做网络深度检测的CNCI,预算300亿刀,是GFW、金盾的多少倍?没有那个局的全球阴魂你感觉到了吗?唯一的区别在于,我朝的老大哥做事情太笨拙没下限让普通人也能看出破绽,而资本主义国家的自由民在恐怖中投靠老大哥的无限权力。赛博朋克的曙光还有很久才能看到,对抗前赛博朋克旧势力需要megacorp更快速地成长,所以Google你需要do evil的时候一定不要犹豫。

工信部你好,我们建议:把网络封锁的过程规范化透明化,细化封锁规格和标准,制约滥用和不懂业务胡乱封锁,开放申诉渠道,允许网站自查自纠,一切依法进行。看在我们没有直接往贵部直属单位门面上喷漆的份上,这个建议还是有诚意的吧?

Greetings fly out to tek4, KLZ毕业, iGFW, nust-, 店长, r007, r008, t00ls, em777, eviloctal, ZWA, Tor project, i2p, 会長.

读者们,看到这里之时,我们已经解散了。祝大家……

77 comments:

  1. farewell, and good luck :-)

    ReplyDelete
  2. 解散是一个错误。联合才是力量。
    西厢计划的潜力和影响力,已经早已超出所谓中性的技术范畴。
    我们讨论的不是谁需要封锁,谁需要监视,而是法律,更是白纸黑字下那些被践踏得一塌糊涂的中国人权。

    我赞赏你们的努力,但批评你们的持久力。

    ReplyDelete
  3. 说得很实际。提高GFW运营维护成本,提高作恶成本,是改变双方实力对比,提高正常沟通渠道吸引力的有效手段。

    很久不弄网络技术了,这几篇博客看得我又有点痒...

    ReplyDelete
  4. To Sentigo:
    人是纯技术出发.目的只是论证一些东西.
    别扯大道理.

    ReplyDelete
  5. To Sentigo:
    我简直想像不出你能以什么立场来批评。。西厢计划人员私自利用了你交的税去研发?

    ReplyDelete
  6. 向你们表示敬意!

    然而,我并不同意文末的观点。在你们看来,GFW或许是由于技术不怎么样,因此才被大家察觉到了。但事实真是如此么?一夜之间原来还能使用的关键词、原来能访问的网站就全被屏蔽,这还是技术瑕疵层面的问题?GFW其实更像是一张张电幕,说白了就是要让人知道其存在,畏惧之,回避之。它与其他国家的网络监控的出发点都不同,其主要目的就是为了控制、禁锢人们的思想。君不见现在“GFW”、“GFW之父”等词汇近日已堂而皇之地现诸于媒体上了么?

    你们钻研技术的行为令人着实钦佩,但我依然认为这种基于“技术无罪”的“存在即合理”典型误读想法有些天真。对工信部的建议更是显露出斯德哥尔摩症候群的特征。

    不好意思,在这里说了些扫兴的话。但我依然想再次诚心地感谢这个团队。

    ReplyDelete
  7. "唯一的区别在于"

    ----------------
    区别还有勇气与诚实, 沙特的网络审查者都敢明白无误的告诉国民你们正在被审查, 而tg的宦官却畏缩的表示"中国是法治的", "中国是自由的", "中国的人权比外国好5倍"..........

    ReplyDelete
  8. @w7f: 你说得对。以所谓“纯技术”作为屏障来免去自己作为一个有理想,有抱负的中国人的职责是天真的。

    请大家保持头脑清醒,不能因为一点小的成功而沾沾自喜。西厢值得尊敬,但我不能以你的一个光环而把你无限太高。在中国这边土地上,任何事情都有上升到政治高度的麻烦,唯有解体暴政才能还中国人蓝天。

    容我几句寒言,我以为,大家还需要你们。退出不是一个好的选择。

    ReplyDelete
  9. 我不想关心政治,你们对GFW的研究确实让我长了不少知识,这一点非常感谢你们。

    至于GFW如何在与我们的博弈中找到平衡我不知道,但是普及知识,研究技术终究是没错的。

    我相信,技术是推动社会前进的主要动力。。

    ReplyDelete
  10. @Sentigo @w7f: 对。支持。

    ReplyDelete
  11. 为什么要退出呢?

    ReplyDelete
  12. 看到最后一段,你们解散了,我突然感觉很难受

    ReplyDelete
  13. 这是一部英雄的史诗,向在黑暗之中举着火把的人们表示感谢……

    ReplyDelete
  14. @gfwrev:不好意思,我把你们的工作看得太光辉了。好话听得太多了,你们也变得自大了。表面上是技术,实质还是再利用政治来吸引眼球。当想要跳出圈子的时候又用技术来作为幌子。不要给我说你们本身只是在开一个技术评论的平台,要来要去随我们自己之类的弱话。事情走到这一步,任何所谓的开脱都只是一个笑话。

    从来没有谁指望你们无限提供免费的翻墙方案,你们既然内心希望报酬,那么就明说。不要像项目主页上那样遮遮掩掩。

    你们既然做事一阵风,那么结局也就只有
    散去吧

    ReplyDelete
  15. 呵呵,很学术派的作风啊,我喜欢,可惜不在墙内,否则倒是真有依样画葫芦弄个东东出来的想法了。我算是千分之一,希望能多点万分之一~~

    ReplyDelete
  16. @Anonymous
    ……这个“吸引眼球”、“希望报酬”的结论究竟是怎样脑补出来的 -__-

    ReplyDelete
  17. 西厢计划有它存在的价值,哪怕只是昙花一现。

    那就是,它创了一个先河,一个指向人们主动出击GFW(漏洞)的先河,而不是长期以来的对GFW的被动规避。因而,技术先锋们可以进一步在西厢的基础上——甚至是另辟道路——去和GFW干一场持久仗。

    各位看官们,知足吧!这个小组不欠你们任何东西,你们没有权利指责他们。

    BTW:
    想在流量层面攻击整个GFW是得不偿失的,但攻击北京的某些区域可能是个不错的想法。

    ReplyDelete
  18. @Anony: 嗯,你说的不错。不过我想前面几处批评的声音也不无道理。不管怎样,大家的出发点都是好的。就我个人而言,我还是希望该小组能尽早回到西厢,因为他们在长期的GFW反对战中积累了大量经验,在这方面他们最有资格作为整个开发的主力。

    ReplyDelete
  19. 对那些动辄就提动机和权利的人,有两段讽刺五毛的话同样适用:

    A:这鸡蛋真难吃。
    B:请拿出建设性的意见来,有本事你下个好吃的蛋来。
    A:这鸡蛋真难吃。
    B:你这么说是什么居心什么目的?

    一件精美绝伦的艺术品,人们可以对其评头品足;一个不会做菜的人,照样可以批评父母做的饭难吃。有些人虽然翻出了墙,但实际上根本没明白什么才叫言论自由。意见固然有对有错,但人人都有权利发表观点。不能接受这种思想的人,只能说被洗脑太久形成思维定势了。


    另一方面,提出不同意见的人几乎都对西厢计划的参与者们赞誉有加。但是GFW自其诞生之初就与政治脱不了干系,翻墙本身也是一种不向土共的方针政策妥协的行为。正因为如此,这个原本纯粹讨论网络技术的博客最后也毫无悬念、不可避免地加入了政治方面的评论。西厢计划也是如此。虽然起初或许是为了探讨技术GFW的技术漏洞,但计划公布之后,引来了无数人的关注,它自然而然地也会被贴上反政府的标签。倘使你们之前没有料想到如此高调地把自己置身于聚光灯下然后又突然解散会导致如此局面,只能说太欠考虑。

    至于解散,我想自有个中理由,大家也没必要(不是没权利)指责。况且已经这么高调了,被土共搞也不是不可能。能走到这一步,你们已经是勇士了。

    再次感谢各位技术精英。祝所有人好运。

    ReplyDelete
  20. 说得在理,做技术的人只能做到这一步了。

    ReplyDelete
  21. 在张同学的帮助下,blogspot可以访问了。

    ReplyDelete
  22. Anonymous said...
    说得很实际。提高GFW运营维护成本,提高作恶成本,是改变双方实力对比,提高正常沟通渠道吸引力的有效手段。

    不同意这个论点,提高成本最终结果不过是转嫁到民众头上而已,极权政府不需要预算报告.

    ReplyDelete
  23. 看过十月围城么?王学圻早就放话在先,只出钱,不出人,但是在梁家辉眼里,王学圻已经是孙中山的人了。清政府恐怕也这么想。

    ReplyDelete
  24. 哥一来,你们就走,

    ReplyDelete
  25. 好技术,不过最后一段怕是与虎谋皮了。规范化透明化,可不要了人家的老命么?

    ReplyDelete
  26. This comment has been removed by a blog administrator.

    ReplyDelete
  27. This comment has been removed by a blog administrator.

    ReplyDelete
  28. cool.
    西厢是个计划,不是软件,不是资源。
    关键在于,“or should i?”
    是吧?
    总之,谢谢你们,笑脸男。

    ReplyDelete
  29. 似乎,无法观看youtube的视频啊~

    ReplyDelete
  30. 个人对“GFW如何应对西厢的挑战”这一段也不是很感冒。都是搞技术的,但很多时候虽然技术不能主导时势,但我觉得认清时势,用技术是可以推进时势发展的。
    最近项目缠身,不然我会考虑加入该计划。

    ReplyDelete
  31. This comment has been removed by a blog administrator.

    ReplyDelete
  32. This comment has been removed by a blog administrator.

    ReplyDelete
  33. TG在做深度包检测,米帝也在做深度包检测,所以他们是一丘之貉
    看这逻辑,果然是搞技术的,看来你们水平也就这样了

    ReplyDelete
  34. 每个国家的老大哥都有一样的爱好,但是不是每个国家的老大哥都这么无耻,做事没有底线
    CNCI确实很神秘,但目前至少没有gov用它作恶的证据,你总不能不让gov研究技术吧?与三十年前相比,gov和民间的技术差距已经很小了
    相反的是,GFW的威力我每天都实实在在的感受着

    ReplyDelete
  35. 技术是中性的?
    当年供应纳粹屠杀犹太人毒药的化工公司、石井部队研究细菌战的科学家,恐怕也是这么想的吧

    ReplyDelete
  36. 只监测不拦截绝对是最终目标 只要能达到美国那个水准我想没有人会反对的

    P.S 楼上一些站着说话不腰疼的家伙 你们的发言只让我回想起了文革的红卫兵 只不过是由一边跳到了另一边而已

    ReplyDelete
  37. 发现此贴完全被转变为政治化了话题了

    ReplyDelete
  38. This comment has been removed by a blog administrator.

    ReplyDelete
  39. This comment has been removed by a blog administrator.

    ReplyDelete
  40. This comment has been removed by a blog administrator.

    ReplyDelete
  41. This comment has been removed by a blog administrator.

    ReplyDelete
  42. @Anonymous
    Trolling and off-topic posts are unacceptable here.

    ReplyDelete
  43. 不管怎样, 先感谢你们的努力!

    ReplyDelete
  44. 西厢计划开了个好头,让更多的人去关注才是当下的重点。
    但GFW真的会跟我们去动态平衡吗?

    ReplyDelete
  45. 西箱计划开发组的成员估计是拿了共匪的什么好处,或者间接的得了什么好处,被收编或主动放弃了. 一开始雷声很大,说什么"如果我们不拿出点东西的话,就会让比我们技术差得多的程序员欺负",给人感觉很有雄心壮志的样子,没想到折腾两下子就过气了.而且这篇告别文里竟然还有意无意的为GFW的人开拓,说他们"只是搞技术的但是被人政治上利用了",难道这些被共匪利用的人都是三岁小孩没脑子? 西箱的开发者为他们开脱,显然已经沦为成妥协派了.这样的的技术再高也搞不出什么名堂,估计西箱也就是几个搞软件的博士弄的小把戏.有时间去学学人家TOR,看别人是怎么做事的.

    ReplyDelete
  46. 西箱计划开发组的成员估计是拿了共匪的什么好处,或者间接的得了什么好处,被收编或主动放弃了. 一开始雷声很大,说什么"如果我们不拿出点东西的话,就会让比我们技术差得多的程序员欺负",给人感觉很有雄心壮志的样子,没想到折腾两下子就过气了.而且这篇告别文里竟然还有意无意的为GFW的人开拓,说他们"只是搞技术的但是被人政治上利用了",难道这些被共匪利用的人都是三岁小孩没脑子? 西箱的开发者为他们开脱,显然已经沦为成妥协派了.这样的的技术再高也搞不出什么名堂,估计西箱也就是几个搞软件的博士弄的小把戏.有时间去学学人家TOR,看别人是怎么做事的.

    ————————————————————————

    笑,右粪的水平果然如此。这本来就是自娱自乐性质的东西。是部分媒体和个人把它推高了,作者是很清醒地。这个项目象征意义大于实际意义,重在参与。至于你,除了喊两嗓子以外,也没什么能耐。

    ReplyDelete
  47. 星星之火,可以燎原。

    ReplyDelete
  48. 有良心的中国人站起来,不要再让中共流氓在大陆胡作非为下去了,你忍心你和你们的后代仍然生活中共的铁蹄蹂躏之下吗????

    ReplyDelete
  49. 给工信部的建议很好,可惜这体制下根本无法实行。工信部完全不由工信部自己话是,就和筑墙者一样。

    小组各位成员一路走好,你们在做的事情不管是在技术上实现突破还是在政治上实现公共权力都有较大意义。

    ReplyDelete
  50. 这个计划是开源的,希望后继有人。

    ReplyDelete
  51. 解散是对的。免得被盯上。

    ReplyDelete
  52. 你们自以为翻出了墙,可事实上你们还在墙中。这个世界的真相是什么,你们这些凡人永远不会知道。既然如此,翻墙的意义何在?

    ReplyDelete
  53. 技术无罪,据使用者定罪
    做事有个度,不要太无耻
    连一些低廉的娱乐也当危险品封闭,会惹怒很多小百姓的

    ReplyDelete
  54. I look forward to reading more, and getting a more active part in the talks here, whilst picking up some knowledge as well..outsource development

    ReplyDelete
  55. 普通人也能看出破绽,而资本主义国家的自由民在恐怖中投靠老大哥的无限权力。赛博朋克的曙光还有很久才能看到,对抗前赛博朋克旧势力需要megacorp更快速地成长,所以Google你需要do evil的时候一定不要犹豫。??????

    ReplyDelete
    Replies
    1. The future is Ghost in the shell.

      Delete
  56. Thanks for taking the time to discuss this, I feel strongly about information and love learning more on this. If possible, as you gain expertise, it is extremely helpful for me. Would you mind updating your blog with more information? Thanks @ Econis Labs LLC.

    ReplyDelete
  57. 在天朝,小心点是好的,你们已经做得很好了!

    ReplyDelete
  58. Wonderful website. Lots of useful information here. I’m sending it to a few friends ans also sharing in delicious. And certainly, thanks for your sweat!. I added it to my favorites blog list and will be checking back soon.

    ReplyDelete
  59. 才发现有这么一篇blog,读起来真舒服。然后读评论读到最底下,体会到你们的艰难了。始终,众看官要是自己不做技术,是真的看不到全景的。知识与技术是唯一能推动社会进步的动力。

    我们的社会不需要英雄,需要的是用知识和技术武装自己的每一个人。想要靠别人来拯救你被践踏的人权的这种狗屁逻辑,还是别翻墙出来丢人现眼了。

    ReplyDelete
  60. 作为个搞技术的人,我们要干点疯狂的事。如果我们不动手,我们就要被比我们差的远的坏技术人员欺负。这太丢人了。眼前就是,GFW这个东西,之前是我们不抱团,让它猖狂了。现在咱们得凑一起,想出来一个办法让它郁闷一下,不能老被欺负吧。要不,等到未来,后代会嘲笑我们这些没用的家伙,就象我们说别人“你怎么不反抗?”

    ReplyDelete
  61. 如果你累了,你的工作,你只是想放鬆,那麼這正是你所尋找的。只有我們的網站上,你可以把工作做好在合適的價格和良好的質量。中国论文网

    ReplyDelete
  62. 了不起!全部看完了,技术上获益匪浅,精神上也深感敬佩,向前辈致敬!

    ReplyDelete
  63. "GFW的确在防控蠕虫病毒和垃圾邮件上有重要作用"

    请教这句话如何理解?

    ReplyDelete
    Replies
    1. GFW在反病毒方面的作用一例:Win-Trojan/Buzus.98304.X所访问的几个.info域名都被污染了。--@gfwrev的推文

      Delete
  64. 真的很感谢你们的努力,斗士们

    ReplyDelete
  65. farewell, and good luck :-)

    ReplyDelete
  66. Thank you for your project.
    :) Whatever,forever.
    "Across the Great Wall we can reach every corner in the world."

    ReplyDelete