Total Pageviews

Wednesday, 2 July 2014

有关svn

Docs

Books

Tips

Tools

Notes

svn co
svn checkout
svn log file.name --limit 1 svn diff -r olderVersion:newerVersion file.name svn -r 1033:1191 diff file.name
A
add, 新增
C
conflict, 冲突
D
delete,删除
M
modify,本地已经修改
G
modify and merGed, 本地文件修改并且和服务器的进行合并
U
update,从服务器更新
R
replace,从服务器替换

ignore

Windows: %HOME%/Application/Application Data/Subversive/config
[miscellany]
global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo
  *.rej *~ #*# .#* .*.swp .DS_Store
  .project .classpath *.class .settings/* .settings mockdata *.log
  target

版本控制系统

Tuesday, 1 July 2014

快速找到本地应用软件可用Hosts的方法

对于本地应用软件(例如Dropbox),如何快速找到其可用Hosts呢,今天就介绍一下通用的快速找到本地应用软件可用Hosts的方法。
  基本思路是,通过Sniffer嗅探器来监控本地应用的网络连接情况,然后整理其访问域名,找到这些域名的真实IP,将这些IP添加到Hosts文件即可。
  我使用的是一个名为DNSQuerySniffer的嗅探工具,该工具能够实时显示本地电脑的DNS查询记录,对于每一个DNS解析查询,显示以下信息:主机名,端口号,查询ID,请求类型,请求响应时间,响应代码等记录,并返回的DNS记录的内容。
  以Dropbox软件为例,先关闭其他没用的客户端软件,打开DNSQuerySniffer,然后运行Dropbox,记录下其访问过的域名。使用一个Ping工具找出这个域名对应的ip地址。
找到可用IP后,就可以添加这个IP到Hosts文件里了,先关闭“电脑管家”、“360安全卫士”这类工具,然后编辑C:\Windows\System32\drivers\etc\hosts文件,在文件结尾添加一行“可用IP地址 目标域名”即可。
之后如果“电脑管家”、“360安全卫士”等工具检测hosts文件提供风险,只需信任这个文件并将其添加到白名单即可。
  域名添加到Hosts文件中,DNSQuerySniffer就不会再检测到该域名的解析,然后继续运行Sniffer嗅探器和应用软件,一个一个找出所有的无效域名,然后手动将每个域名都添加到Hosts文件即可。
  此方法是通用的寻找本地应用软件可用Hosts的方法,适合所有本地应用软件域名解析错误导致无法运行等问题。

翻墙软件 GoAgent 的安全风险和相应措施

使用 GoAgent 需要采取如下措施来保证安全:
1. 将 zip 解压缩后删除 Goagent\local 下的 CA.crt 和 cacert.pem 以及certs目录;
2. 在 win+R 打开运行框,输入 certmgr.msc 启动证书管理器 - 受信任的根证书颁发机构 - 证书 - 在右侧列表中找到 GoAgent CA 并删除;
3. 确认 proxy.ini 中的设置为
[gae]
mode = https(默认)- 启用“超文本传输安全协议”
validate = 1(非默认)- 启用“证书验证”

4. 重新运行 GoAgent ,其会重新自动随机生成本地证书,此证书是安全的!
----------------------------------
GoAgent 利用 Google App Engine (GAE) 来绕过 GFW 的封锁,以免费、快速、稳定的特点深受网民的欢迎。但是,GoAgent 的安装和配置中存在两点严重安全风险的问题却鲜为人知。这两点安全风险都可能被攻击者利用进行 “中间人攻击(man-in-the-middle attack)” 来窃取 GoAgent 用户的网络帐号密码等敏感信息,其概括描述如下:
  • GoAgent 在启动时会尝试自动往系统的可信根证书中导入一个名为 “GoAgent CA” 的证书。由于这个证书的私钥是公开的,导致任何人都可以利用这个私钥来伪造任意网站的证书进行 HTTPS 中间人攻击。即使在不开启 GoAgent 时,这种攻击的风险仍然存在。换而言之,一旦这个证书被导入,攻击者可以用此绕过几乎所有网站的 HTTPS 保护。
  • GoAgent 本身对 TLS 证书的认证存在问题,而且默认时不对证书进行检查,这导致在使用 GoAgent 时存在 HTTPS 中间人攻击的风险。
事实上曾经有用户在 GoAgent 主页上的问题跟踪列表中指出了这两个安全问题(见以下链接),但既没有修复也没有广泛公开,多数用户,尤其是非中文用户可能并不知情。下面是这两个问题的详细解释。
https://code.google.com/p/goagent/issues/detail?id=11091
https://code.google.com/p/goagent/issues/detail?id=8031

GoAgent 导入公开私钥根证书的问题

GoAgent 在启动时会尝试在系统中导入一个根证书来避免访问 HTTPS 网站时的证书报警,但在默认情况下所导入证书的私钥是公开的。因为私钥公开,任何人可以作为 “GoAgent CA” 来签发任何网站的证书。即使在 GoAgent 没有启动甚至卸载的情况下,这个公钥仍会遗留在系统中。在有些系统中,GoAgent 所导入的根证书不仅被 GoAgent 默认使用的浏览器信任,其他的浏览器也可能会信任这一根证书,从而受到这一问题的影响。
GoAgent 所导入的这一公开私钥根证书的指纹是:
SHA1 Fingerprint=AB:70:2C:DF:18:EB:E8:B4:38:C5:28:69:CD:4A:5D:EF:48:B4:0E:33
MD5 Fingerprint=56:B1:20:86:1B:0A:B0:61:38:00:1B:C3:67:CF:0C:CC
包含这一 “GoAgent CA” 证书以其私钥(文件中 -----BEGIN RSA PRIVATE KEY----- 位置)的文件 URL 为:
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/CA.crt
根据版本信息,这一证书和私钥从 2011 年 6 月甚至更早的时间以来一直保持不变。
https://github.com/goagent/goagent/blob/fa9959e577395e48a477fd5495afbc2363a51baa/local/CA.key
GoAgent 主要包含两个部分:一个在用户计算机上运行的本地代理程序 proxy.py,以及一个在 GAE 上运行的远程代理程序 gae.py
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/proxy.py
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/server/gae/gae.py
安装时,用户需要上传 gae.py 到 GAE。用户浏览器通过设置一个本地代理将 HTTP/HTTPS 请求转发到 proxy.py,再由 proxy.pygae.py 进行通信。
默认情况下,GoAgent 在启动时试图导入上述 GoAgent CA 证书。具体的代码为 proxy.py 中的 CertUtil.import_ca
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/proxy.py#L337
这个函数会根据用户操作系统通过不同的方式尝试导入证书,在某些情况下会需要管理员 (root/administrator)权限。在 Windows 下,这个函数会调用 CertAddEncodedCertificateToStore 这一 API。在 OS X 下,会尝试执行系统命令
security find-certificate -a -c "GoAgent" | grep "GoAgent" >/dev/null || security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "pwd/CA.crt"
在 Ubuntu 下,会拷贝证书文件到 /usr/local/share/ca-certificates 然后执行 update-ca-certificates。在其他 GNU/Linux 发行版中,会尝试执行以下命令更改 NSS 数据库:
certutil -L -d sql:$HOME/.pki/nssdb | grep "GoAgent" || certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "GoAgent" -i "pwd/CA.crt"
由于 Firefox 采用了不同的方式存储证书,这一自动安装过程不会导入 GoAgent CA 证书到 Firefox 中。但是 GoAgent 的安装指南和 FAQ 中说明了如何手动导入这一证书:
https://code.google.com/p/goagent/wiki/InstallGuide
https://code.google.com/p/goagent/wiki/FAQ
这一证书随后被 proxy.py 用来作为 HTTPS 中间人来避免浏览器在访问 HTTPS 网站时出现报警。GoAgent 的工作原理如下:首先 proxy.py 将浏览器的 HTTP 请求进行编码并转发给 gae.pygae.py 完成收到的请求然后将结果进行编码后返回给 proxy.py,最后 proxy.py 将结果转发给浏览器来完成 “翻墙” 过程。由于 GAE 的限制 (免费 app 无法使用 socket 接口),对于 HTTPS 请求,proxy.py 无法进行透明转发,只能作为中间人先和浏览器完成连接,然后获得其中的明文请求以后在转发给 gae.py。当收到 CONNECT 请求(这意味着浏览器正在浏览一个 HTTPS 网站), proxy.py 首先利用 GoAgent CA 签发一个假的证书来和浏览器完成握手,从用户的角度,所有的 HTTPS 网站的证书都是由事先导入的 “GoAgent CA” 认证的,所以不会报警。有些浏览器会对少数网站的证书进行特别的检查(Certificate Pinning),这种情况下 "GoAgent CA” 所签发的证书可能会触发证书不安全的报警。GoAgent 的这种工作方式导致 HTTPS 不再是浏览器到网站的端到端安全通信,而变成了 proxy.py 到 GAE,以及 GAE 到网站两段独立的 HTTPS 连接,GAE 能够看到请求和应答的明文。

测试页面

请访问
https://goagent-cert-test.bamsoftware.com/
来进行测试。这个页面使用了一个由 GoAgent CA 签发的证书。如果你的浏览器没有受到影响,会显示报警信息;如果没有看到报警,则表明你的浏览器导入了公开的 GoAgent CA 证书,存在严重安全风险。

如何防止风险

GoAgent 本身带有生成证书文件 CA.crt 的功能。只需要删除 local/CA.crt 文件就能保证 GoAgent 所导入的证书是唯一的,不会被网络上的攻击者利用来进行攻击。
下面的 “补丁(patch)” 文件会帮助你从 GoAgent 的 git 仓库中删除 CA.crt 文件,请下载补丁文件并执行以下命令: git am 0001-Remove-static-CA.crt.patch. 如果你不是通过 git 获得 GoAgent(例如直接从 http://code.google.com/p/goagent/ 上的链接下载得到) ,请手动删除 local/CA.crt 文件。
0001-Remove-static-CA.crt.patch
如果你以前曾经使用过 GoAgent,务必要检查系统中任何可能的地方,删除 SHA-1 指纹为 AB:70:2C:DF:18:EB:E8:B4:38:C5:28:69:CD:4A:5D:EF:48:B4:0E:33 的 “GoAgent CA” 证书(建议使用浏览器访问上面的测试页面进行检查)。下面说明在常见系统中检查和删除 GoAgent CA 证书的方法。

如何删除 GoAgent CA 证书

Firefox 中,打开 “preferences”,”Advanced”, “Certificates”, “View Certificates”, “Authorities”,然后在证书列表中找到 “GoAgent CA”,选中并点击 “Delete or Distrust...” 按钮,然后确认。

Ubuntu 下,删除 /usr/local/share/ca-certificates/GoAgent.crt 然后执行
update-ca-certificates --fresh
Windows 下,请参考以下链接:
http://technet.microsoft.com/en-us/library/cc754841.aspx#BKMK_addlocal
中 "Adding certificates to the Trusted Root Certification Authorities store for a local computer" 的步骤,但是在 step 8 时右键选中 "GoAgent CA" 然后选择 "Delete"。
A screenshot of the Windows Trusted Root Certification Authorities store with "GoAgent CA" selected
在 Mac OS X下,打开 “Keychain Access” 应用,点击锁图标并输入密码解锁。在边上的控制面板中,选择 "System" 以及 "Certificates",选中 "GoAgent CA" 然后按 “Delete” 键,点击 "Delete" 按钮并输入你的密码确认。
A screenshot of the Keychain Access with "GoAgent CA" selected

GoAgent 没有进行正确的 TLS 验证,存在中间人攻击的风险

默认情况下,GoAgent 会通过 HTTPS 来保护本地 proxy.py 和 GAE 服务器上 的 gae.py 之间的通信 (在配置文件 proxy.ini 中相关的设置默认为 gae.mode=https)。但是同样在默认情况下,GoAgent 不会要求对 GAE 服务器的证书进行验证(gae.validate=0),这导致本地 proxy.py 和 App Engine 服务器之间的通信存在 HTTPS 中间人攻击的风险。此外, gae.validate 配置项同样控制 App Engine 上的 gae.py 是否对网站服务器的证书进行验证,默认配置下这一配置为 0 导致 gae.py 也不会对网站证书进行验证,使得 gae.py 和网站之间的通信同样存在 HTTPS 中间人攻击的风险
即使修改配置启用证书验证(gae.validate=1),GoAgent 对 App Engine 服务器证书的验证也并不严格:在 proxy.py 中只是对证书的 organizationName 进行了粗略的检查(是否为 “Google ” 开头),而没有对主机名(hostname)进行匹配。
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/local/proxy.py#L1623
将配置改为 gae.validate=1 同时会启用 gae.py 段对网站服务器证书的验证,这部分的事先没有明显的问题。
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/server/gae/gae.py#L184
GoAgent 还提供了一个可选功能,通过 RC4 和一个共享密钥来对 proxy.pygae.py 之间的数据进行进一步的混淆。启用这一功能需要在 proxy.ini 中设置 gae.password,以及 gae.options=rc4,并在 gae.py 中设置 __password__ 变量。
https://github.com/goagent/goagent/blob/c4386808ea943e2ebed25f1e5264943354e3f9cb/server/gae/gae.py#L5
但是,这里的 RC4 加密只能起到一个简单的混淆作用,无法在不启用 HTTPS 的情况下利用这一功能来防止中间人攻击。GoAgent 中的 RC4 无法实现数据的机密性,因为密码本身会通过一个 G-password 头在 proxy.pygae.py 中传送,而且在两段通信中会使用同样的密码流(keystream),导致攻击者很容易通过密文的 XOR 操作来获得 XOR 过的明文(见流密码的重用问题,Stream Cipher Key Reuse),进而得到明文。在这里 RC4 只能起到防止其他 GoAgent 用户共享服务端流量的目的,无法提供更多的保护来防止网络攻击。

如何防止风险

确认在 proxy.ini 中设置了 gae.mode=https (默认),并且启用了证书验证 gae.validate=1(非默认)。这样的设定基本上能够防止 proxy.py 和 GAE 服务器,以及 GAE 服务器和网站服务器之间的 HTTPS 中间人攻击。由于 proxy.py 中没有对证书的主机名进行严格匹配,proxy.py 和 GAE 服务器 的通信仍存在(相对较小的)风险,如果有人能够申请到 organizationName 字段以 “Google ” 开头的证书,仍然能够成功进行HTTPS 中间人攻击。
 
from https://www.bamsoftware.com/sec/goagent-advisory.html#zh-CN 
--------------------------------------

goagent优化设置及新功能简述

 
  • 3.2.0新功能简述:gae、php、paas服务端架构调整,基本功能无变更。
  • 3.2.1新功能简述:自动删除系统中原有goagent旧CA证书,同时随机生成新CA证书,可有效防止中间人攻击。

proxy.user.ini 个人配置文件优化设置参考:
[listen]
visible = 0

[gae]
enable = 1
appid = app1|app2|app3
password = ******
mode = http
#设置http模式,可小幅度提升速度,并减少超时错误。
window = 1
#如自定义iplist此处可设置为最小值。

[iplist]
google_hk = ip1|ip2|ip3
#选择自定义ip,数量不宜过多2-3个即可。
google_talk = 74.125.31.125
google_mtalk = 74.125.31.188|74.125.204.188
#可选择自定义talk相关域名ip,防止偶发解析错误。

[profile]
.google.com = google_hk,forcehttps
.google.com.hk = google_hk,forcehttps
#取消以上两域名fakehttps连接模式,避免部分google服务出错。
mtalk.google.com = google_mtalk
#对应iplist中自定义ip,并设置直连。
.rfa.org = withphp
sourceforge.net = withphp
#部分不支持gae访问的网站改用php模式访问。
.youtube.com = withphp
#已经部署php服务端前提下,解除youtube地区限制。
#此方法最终视频流还是走的gae线路,不必担心php服务端流量问题。

[php]
enable = 1
password = ******
fetchserver = http://.com/
补充说明:
  • 自定义ipist适用于封锁比较严重的地区,如默认iplist设置下已能流畅访问,则没必要折腾这部分。
  • [iplist][profile]段相互配合,可以非常灵活地控制某个具体域名走哪个代理线路,或者直接赋值ip地址,强制直连,效果与系统host相近.
from http://www.faith.ga/2743.html
 

基于云的视频监控工具-联想的看家宝和中兴的小兴看看

联想的看家宝,是一款基于云的视频监控工具,相比咱们普通动辄几千万的监控安防系统,联想的看家宝只需要699元。这种具备具备随时随地观看、视频 回放、精彩随时分享及报警信息推送等特色功能的监控摄像头产品,无疑是居家安防必备。近日,联想看家宝发布了第二代的产品,二代看家宝产品的外形设计较第 一代有了很大改观,配备100万像素CMOS摄像头模组,所有视频数据依旧存储于云端,用户可通过云端数据在手机进行实时观看、下载、分享,并且采用全新 绿色环保材质,通过美国FCC及欧盟RoHS环保认证。
  至于中兴的小兴看看,和联想的看家宝是同类型产品。双方都是拥有强大技术实力和 渠道能力的IT巨头,从功能和价格上来看,也几乎都一致。视频分辨率最高可达720p,同时支持Wi-Fi直连、双 向语音、红外夜视、多重加密、本地视频存储等诸多功能,用户可以在家安装小兴看看摄像头,并通过手机app随时随地观看家里的情况。唯一让笔者想吐槽的 是,中兴的小兴看看设置的时候居然需要插一根网线。
  笔者分别试用几大巨头的产品后,总结了以下几点特性:
  ①价格亲民。基本上几大巨头做的硬件产品在品质上大大优于市面上相关的山寨产品外,价格上也都在千元以内,工薪阶层的消费者都可以买得起。
  ②配置简单。传统的安防监控类的设备需要专业的技师来安装调配,而联想、中兴的产品只有看说明书,小学三年级的同学都能安装应用。
  ③快速的更新迭代。以联想的看家宝为例,我刚体验了第一代产品,一个月后第二代产品就已经上市,而中兴的新一代产品据说会修复“需要插网线设置”的毛病。
  ④以人为本,注重用户反馈。在以前,厂商卖了东西是不希望用户来反馈的,因为用户一旦反馈大部分是产品出现质量问题的时候。而现在,海尔、联想、中兴甚至华为这样的公司,都有专门的团队来接受用户的反馈、吐槽,从而根据用户的不同建议优化和改进产品。

中国哪有什么深加工的核心技术?

中国稀土产业曾经面临的窘境,已经在石墨身上重现。由于不掌握石墨深加工的核心技术,中国相关企业长期处于产业链条中的原料供应者,造成我国石墨资源“低 出高进”,外国“以购代采”的状态长期存在。据悉,我国石墨出口价格长期保持在每吨3000-4000元人民币之间,但经国外加工提纯再进口至中国,价格 便成了10万到20万元人民币每吨。数据显示,2010年,我国石墨出口量约为58.55万吨,进口量为7.6万吨。这样的进出口格局已经持续了近30 年。然而,同样占全球储量的70%以上,同样是国家战略储备资源,石墨却并不如稀土那样受到重视。“中国石墨界如果再走低端路线,恐怕就连做苦劳力的资格 都没有了!”中国石墨行业协会轮值会长、内蒙古日新集团董事长张彬对中国石墨产业的现状十分担心。石墨由于其特殊的结构,具有耐高温性、抗热震性、导电 性、润滑性、化学稳定性以及可塑性等众多特性,一直是军工与现代工业及高、新、尖技术发展中不可或缺的重要战略资源。曾有专家预言:20世纪是硅的世 纪,21世纪将是石墨的世纪。张彬称,“如果不改变石墨行业的格局,再过20年,中国将无石墨可采!”张彬的话并非危言耸听,黑龙江省的一份分析报告显 示:我国目前约有近千家石墨企业,石墨资源滥采乱掘、采富弃贫、粗放经营、管理水平低的现象比较普遍,开采和加工呈现无序化状态。如果按照目前的开采方式 和速度,最多20年,国内已探明的石墨资源将消耗殆尽,届时中国将不得不从国外高价进口石墨,由石墨大国变成石墨贫国。与此同时,更多的乱象也发生在销售 领域,由于大多为原料销售,市场秩序混乱相互竞价成为常态,致使资源低价流失海外。业内人士认为,要确保石墨行业健康持续发展,还需要国家借鉴稀土资源管 控模式,从全国范围内调控石墨产能,鼓励科技研发,统筹规划石墨产业发展。相关部门应加大对石墨产业扶持、统筹规划石墨产业,保护性开发石墨资源是当务之 急。

野蛮城市化,今后中国人吃什么?

中国的城市化手法却是一种不计代价、不计后果、缺乏理智的野蛮城市化。比如现在最典型的问题是,沿海一带的大开发,占用了更多的宜耕土地,而西部则不适合 农业,那今后中国人吃什么?中国在提出这些发展目标时,是否做过严谨的考虑和科学分析?根据中国农业大学校长柯炳生整理的数据,中国去年的农产品和食品从 粮、棉、油到糖全面进口,大量的进口达到历史最高水平,逆差为510亿美元。其中大豆进口6338万吨,占全球出口60%以上;粮食全面进口,达到 1400多万吨;小麦400多万吨;玉米300多万吨;大米200多万吨;食用油进口了1000多万吨;棉花进口了450万吨。其中大米和玉米更是改变了 长期以来的净出口态势。而民族大豆产业只能口头上鼓励,却因为没有土地而无法实现:如果不进口,用国内的土地生产6338万吨的大豆,需要额外5亿多亩的 土地面积。柯炳生估计我国每年大概减少耕地面积五、六百万亩。同时,水资源短缺的问题也日益突出:在地下水开采治理重点地区的衡水市,有一口井几天前还在 使用,现在却已枯干,电动井自动抽水,一个晚上抽出来的都是沙子。中国的地下水深度逐年下降,现在很多地区的地下水都得来自400米以下。京津冀三省每年 生产的小麦大概1400万吨,每生产一公斤的小麦需要1吨的水,1400万吨小麦需要140亿立方的水,相当于南水北调全部的水量。而华北地区仅是其中一 例,西北、东北、西南地区的水问题都很突出。由此可见,现在很多经济带、都市圈的设想都没有从生态系统的角度思考自然环境的承载能力.