Skip to content

Category Archives: Windows

Windows 系统相关

快速建立 ipv6 安全管道访问 ipv6 网站

29-三-09

目前有很多网站支持 ipv6 连接,比如
http://ipv6.google.com
但对大部分人来说,这个网址是不能访问的,因为没有设置好 ipv6 。目前 ISP 很少提供 ipv6 连接,用户一般需要使用 ipv6 tunnel broker 来建立管道来访问 ipv6 站点。
在 Linux 下这个工作很简单,以 Debian 为例,安装 miredo 包(包的名字是”多来咪”反过来):
# sudo apt-get install miredo
后输入
# /sbin/ifconfig
看到 teredo 这个虚拟网卡就可以用它访问 ipv6 了:
# ping6 ipv6.google.com
PING ipv6.google.com(2001:4860:b002::68) 56 data bytes
64 bytes from 2001:4860:b002::68: icmp_seq=1 ttl=56 time=874 ms
64 bytes from 2001:4860:b002::68: icmp_seq=2 ttl=56 time=322 ms
现在应该可以访问  http://ipv6.google.com 了,如果成功访问的话,你会看到在 ipv4 下面熟悉的 Google [...]

用 KeePass 实现远程控制的自动登录

11-二-09

我经常要登录多个远程系统进行维护,输入用户名和密码是一件很烦的事情,但如果将用户密码保存在远程控制软件中又会造成安全隐患,尤其是如果该远程控制软件是放在 U 盘上的便携版,一旦 U 盘遗失,可能会被别人轻易侵入系统,我的几个 Linux 帐号都有 sudo 权限,被窃取后基本上就等同 root 帐号被攻克了。
比较安全的自动登录可以用 KeePass 配合适当的远程控制软件来实现。
首先远程控制软件必须允许在命令行设定远程登录的信息,如远程系统IP/域名,端口,用户名,密码等等。我最常用的几款都可以:
登录 SSH 服务器使用 putty:putty.exe -ssh $username@$host:$port -pw $password
登录 SFTP 服务器使用 winscp:winscp.exe” sftp://$username:$password@$host:$port
远程桌面使用 UltraVNC viewer:vncviewer.exe” $host:$port -password $password
远程桌面使用 TeamViewer:Teamviewer.exe” -i $ID -P $password
如果想在 U 盘上使用 KeePass 便携版的话,这几款远程控制软件都有便携版或者便携的替代版,如 putty 可以用 kitty 来替代。
这里用 KeePass 1.14 中的 URL field 配合 cmd:// 链接来启上述动远程控制软件,传入登录信息,就可以无需输入用户名/密码自动登录到远程系统上了。由于远程系统的登录信息是由 KeePass 加密保存的,远程软件中可完全不需要保存远程系统的信息(可手动逐一删除目前已经保存的信息),并且设置不要记录登录历史,这样即使把 KeePass + 远程控制软件便携版保存在 [...]

软件运行文件越小越好吗?

26-九-08

这篇文章是读过善用佳软的“超级小巧的5款免费款树状笔记软件”后,关于软件运行文件大小的一些感想。
在其他条件都相同的理想情况下,当然同样尺寸的软件,实现功能越多越好,这是没有疑问的。
不过……
首先,其他条件都相同这个情况,本身就非常不容易满足;
其次,即使满足了其他条件都相同 ,如何衡量和比较不同软件的实现功能呢?如果两个软件的运行文件大小一样,A 软件实现了 10 个功能,完成每个功能各需要 1 分钟,B 软件实现了 8 个功能,完成每个功能各需要 30 秒,虽然 A 软件的实现功能比 B 软件多,但用户对 A 软件的评价是否一定比 B 软件高呢?
我们现在来看看,软件运行文件的大小都受什么因素影响。
1、编译器优化方面的因素
以 C 为例, 编译器提供了 inline function(或者用 #define 的变种),就是牺牲文件运行代码的尺寸来换取运行速度的提高(这在需要实时快速反应的软件来说尤其重要),使用了 inline function 的运行文件,尺寸比较大;
现代的高级语言编译器,都有各种优化选项,供程序员选择,比如 gcc 中的 -O 选项就相当复杂,可参看 info gcc 中的 Optimize Options 一节,-O 默认的优化目标是产生的代码小,运行效率高,但实际情况中,这两方面往往是互相矛盾的。由于优化技术已经很成熟,用高级语言编程的代码,经编译器优化后,不同程序员之间的差别越来越小,所以高手间代码本身尺寸大小的对决,往往是汇编这一层次的较量,在高级语言层次,除非实现方法完全不同,否则很难从文件尺寸上分出高下。
2、 软件运行环境的因素
同样一个 hello world 的实现,如果用 perl 来写,一行字符的脚本就能搞定,而用 C 写一个简单的程序编译成可执行代码则要2KB多,表面上看来,用 perl 写出来的代码小,但是 perl 脚本需要有 perl 解释环境才能运行,如果把 [...]

给 chrome 过滤广告

24-九-08

chrome 目前不支持扩展,像 Firefox 里面这样强大的 AdBlock Plus 不能用,淹没在网络广告的海洋里,还是比较难受的。
不过我的 Linux 服务器上面有 privoxy, 正好可以给 chrome 过滤广告用。设置一下,用 Linux 当 chrome 的 HTTP/HTTPS 代理,广告立刻见少。不过 chrome 偷懒,没有写自己的代理设置,而是用 Windows 的系统代理设置,给它设定代理,等于是全系统都设置了,结果联想网盘客户端不能正常访问网盘,而且频频崩溃。
只好在 privoxy 的 user.action 里面把
.lenovodata.com
加入 fragile 类网站了。
如果 chrome 或者联想网盘两者之一可以自定义 proxy 设置的话,就不会互相影响了。

在 Chrome 里使用社会型书签服务 Blinklist/Delicious

09-九-08

Chrome 目前不支持扩展,在 Fx 上很好用的 Blinklist 和 Delicious 扩展都不能用了,只好用最原始的书签方式。
在 Chrome 的书签栏上加4个按钮(USER用自己的用户名代替):
Bl:
http://www.blinklist.com/USER/
美:
http://delicious.com/USER
+Bl:
javascript:location.href=’http://www.blinklist.com/?Action=Blink/addblink.php&Description=’+encodeURIComponent(window.getSelection()+”)+’&Url=’+encodeURIComponent(location.href)+’&Title=’+encodeURIComponent(document.title)+”;
+美:
javascript:(function(){f=’http://delicious.com/save?url=’+encodeURIComponent(window.location.href)+’&title=’+encodeURIComponent(document.title)+’&v=5&’;a=function(){if(!window.open(f+’noui=1&jump=doclose’,’deliciousuiv5′,’location=yes,links=no,scrollbars=no,toolbar=no,width=550,height=550′))location.href=f+’jump=yes’};if(/Firefox/.test(navigator.userAgent)){setTimeout(a,0)}else{a()}})()
即可实现快速访问 Blinklist/Delicious,并可随时添加当前页到书签中。

用 Google Chrome 登录多个 GMail 帐号

05-九-08

Google Chrome 有个小功能是 Create Application Shortcuts,可将某一个网站用运行Application 的方式打开,这种方式下的 Google Chrome 窗口更加简洁,用户只要双击快捷方式即可迅速访问相应的网站。
我们可以创建一个访问 GMail 的快捷方式:访问 GMail 后选菜单里面的 Create application shortcuts… 。
通过查看该快捷方式的属性,我们可以看到其实它指向
“path\to\chrome.exe”  –app=http://mail.google.com/mail
首先,我们不太喜欢它用 http:// 而非 https://,所以手工修改一下:
“path\to\chrome.exe”  –app=https://mail.google.com/mail
其次我们看到它使用了默认当前用户的 profile,怎样才能让每个快捷方式能够使用自己的 cookie 呢?通过查看 chrome_switches.cc ,我们发现,可以用 user-data-dir 来指定用户的数据目录,所以我们可以创建若干个数据目录,比如,
c:\chromedata\user1
c:\chromedata\user2
c:\chromedata\user3…
然后相应创建多个快捷方式:
“path\to\chrome.exe”  –app=https://mail.google.com/mail –user-data-dir=c:/chromedata/user1
“path\to\chrome.exe”  –app=https://mail.google.com/mail –user-data-dir=c:/chromedata/user2
“path\to\chrome.exe”  –app=https://mail.google.com/mail –user-data-dir=c:/chromedata/user3…
每个快捷方式均可登录不同的 GMail 帐号,为了便于记忆,快捷方式的名字可以从默认的 GMail 改为相应的 GMail 帐号名。
用这个办法也可以创建不同的快捷方式给不同用户的 Google App,或者同一网站多个不同用户同时登录。

心目中理想的 Windows ftp 客端

27-八-08

年初时 SmartFTP 宣布停止授权免费版本,我也终于和它掰了。
不过掰了以后还是会常常想起它,毕竟找下一任 ftp 客端找了半年之后,至今它仍然是我见到过最好用的 Windows ftp 客端,虽然它免费时就已经是个 nagware 了(我唯一容忍过的 nagware)。
离开 SmartFTP 之后,偶然用用 FTP Wanderer 和 Core FTP LE,现在大多数时间用 winscp 和 Filezilla。
FTP Wanderer:它的界面最接近 SmartFTP 简化版,跟它约会的主要原因就是因为它比较像前任恋人,除此之外,它的功能过于简单,而且经常碰到作者无法 re-preduce 的 bug……
Core FTP LE:功能比较多,但是用户界面之丑陋实在无法恭维;
winscp:除了不能改字体大小之外,我很喜欢它。不过遇上不太稳定的 ftp 服务器,它远远没有像 ssh 那么可靠;
Filezilla:很多人都建议这个客端,因为它免费、开源,但我用它怎么也不顺手,不习惯它的界面总体设计和许多细节的粗糙(比如用户定制命令居然不保存历史,不支持参数),对于高级用户,它的功能也不够全。
我理想中的 ftp 客端有这样的功能:
1、FXP 支持;
2、站点管理器要有一套默认的设置,每个站点可以选择使用默认,或者自己设定。设置应包括最多登录线程数,上传/下载速限,断连时如何恢复等等;
3、多个站点可同时登录;
4、登录后自动获取服务器端的支持功能,根据服务器的具体情况决定后续动作;
5、一个强大的 queue,易于管理,即使遇到很不稳定的服务器也能一直重试直至最后完成上传/下载任务;
6、支持用户定制命令,可对选中的文件进行命令操作(包括远程文件和本地文件);
7、如果服务器支持校验和续传,则续传和传输完成后自动校验数据;
8、同一文件支持多线程下载;
9、如果服务器支持校验和续传,可以恢复含错误的下载,但不是重新传输整个文件。
上述9点,SmartFTP 支持 1-7,但6、7不太完美。
对 6:SmartFTP 不支持对本地文件的定制命令;
对 7:SmartFTP 会自动校验传输数据,但是不够灵活,比如我传输了一个 8GB 左右的巨大文件后,SmartFTP 向服务器要求 XCRC 校验值,但由于文件太大,等到服务器计算完校验值之后,服务器和客端之间的连接早已经因为空闲时间太长被切断了,造成 SmartFTP 一遍一遍地重新登录服务器,要求 XCRC 校验值,但总是不成功,服务器方面则造成巨大的 CPU 浪费。
因为 [...]

个人 ftp 服务器首选:zFTPServer Suite

27-八-08

个人如果想通过网络分享大文件,最简单的办法就是架设一个 ftp 服务器。ftp 服务器的开销不大,网络效率高,设置相对简单,用户客端支持好,虽然这个协议已经很老旧,但在个人服务器领域的应用仍然很广泛。
Windows 系统下有不少免费的 ftp  服务器,比如我以前用过的 CesarFTP,开源的 FileZilla Server,强调安全性的 EFTP 等等,但它们不是功能不全,就是免费版本有使用限制。
作为个人 ftp 服务器使用者,对我而言比较重要的高级功能:
1、可设置成系统服务,在用户登录之前即在背景运行;
2、允许用户续传,并提供校验的功能,使用户可以在续传之前和传输完毕之后进行数据校验;
3、 提供带宽速限功能;
4、根据判断连接来源 IP 来决定是否允许访问 ftp 服务器;
5、能自动监控反复尝试密码登录的黑客,并及时将他们加入拒访黑名单;
5、提供 FTPS 安全保护,使得重要用户即便无法通过 VPN 连接到 ftp 服务器也能有一定的安全保护;
6、支持 FXP。
满足这些要求的免费 ftp 服务器就是: zFTPServer Suite (非官方繁体中文网页)。
安装
从安装开始就支持简体中文界面,如果看到不是简体中文,可以选左下角语言切换 :

可选安装 ftp 服务器和管理程序
。ftp 服务器可设置成一般程序(用户必须登录后才能使用)或者系统服务(系统启动后即可在背景自动运行)
。管理程序可以通过网络从远程管理 ftp 服务器

第一次安装时需要创建管理帐号:

安装完毕后,桌面上服务器和管理的快捷方式:

需要说明的是,服务器程序是没有用户界面的,所有的用户设置和管理都是通过服务器管理程序界面完成的。
运行服务器管理连接到 ftp 服务器之后的系统托盘图标:

这是管理程序的界面:

大致可以看出,管理界面主要是两部分:
上半部是服务器日志,管理员可以设置日志的具体内容,这里显示所有的用户客端和服务器之间所有的命令请求和回应的信息;
下半部是目前连接的用户信息,包括来源 IP,时间,目前所在目录和上一动作。如果正在进行文件传输,会显示文件名和传输速率,如果用户正在下载,还会直观地显示目前进度百分比。
管理界面的语言设置在菜单第四栏的最后一项里面,简体中文是 Chinese (PRC):

管理界面有每日技巧:

设置
zFTPServer 安装后无须修改默认设置即可运行,管理员可以按照自己的需要进行设置,设置界面分简单设置模式

和高级设置模式

可以看出高级设置模式包含更多的可设置项。简单和高级的切换在菜单里:

在设置过程中,如果有疑问,可以将鼠标光标移至设置控制上,在状态栏上即可显示相应的帮助信息:

下面我们逐项看看高级设置模式:
常规:

看到在设置全局速限时可选择是否忽略局域网,这是因为局域网类的 IP 如 127.0.0.1,10.x.x.x,192.168.x.x 大都不需要经过互联网带宽,所以不必对它们实行限速。管理员可以自行指定哪些 IP 端属于局域网内。
速限时间调度:可设定规则,按不同时间自动调整速限

上图中的设置是:星期六和星期日全天无速度限制,星期一至星期五,早上8点至下午6点期间上传、下载的限速均为每秒 100千字节, 其他时间下载限速为每秒 500 千字节,上传无速度限制。
安全相关:

SSL/TLS 安全连接,zFTPServer [...]

hamachi 改变授权策略

19-八-08

8/18 hamachi 发布了新版本 1.0.3.0,细心的用户除了发现界面上的细微变化之外,授权策略也改变了。但无论是官方网页还是官方论坛,都没有明确说明新的授权策略和以前的相比有何不同。
根据我的观察,对比一下新授权和旧授权。
旧授权的两个版本:Free(免费) vs. Premium(付费),可以简单归结为:付费用户购买高级功能,但不需要高级功能的商用用户仍可以选择使用免费版本;
新授权的两个版本:Non-commerical (非商用) vs. Commercial(商用),商用用户现在必须强制性付费使用商用授权,非商用用户则可免费使用。
在旧授权方式下,付费用户优于免费用户可以使用的高级功能主要包括:
1、加入 network 时不受 16 个免费用户的数量限制,而是受 256 个付费用户的限制;
2、可以使用 hamachi 客端自带的 system service 功能;
3、network 管理员可指定多个管理员;
4、network 可以设置为不使用加密管道以提高速度/性能;
5、如果两个客端无法直接连通,可以使用经过 hamachi 服务提供的高速转接(非商用用户只能使用低速转接)。
而在新授权方式下 ,非商用用户和商用用户基本上没有功能的区别了,上述那5条主要区别现在除了第5条,前面第2、3、4条非商用用户也可以享用了,至于第1条,现在不管商用还是非商用,每个 network 统一为最多 50 个用户。
所以,对于非商用用户来说,新授权策略大大优于旧授权策略。

验证ftp传输后文件的正确性

03-八-08

[注:题目所说的“正确性” 其实并不准确,它指的是并非文件中的观点是否和谐,而是从二进制角度来看,一个文件和它(传输后)的副本内容经过逐个字节比较之后是否一致,英文为 integrity,中文似乎没有很准确的对译,“正确性”、“完整性”、“一致性”都只是它的一个方面。]
如何比较分别在本地和远程的两个文件是否一样呢? 常见的方法是双方分别从文件计算出一个很短的验证码(hash 值),然后比较这两个验证码是否一样,因为验证码本身很短小,传输它的过程和比较它和成本均远远低于对实际文件的操作。两端分别算出的验证码如果不同,足以证明文件不一致,而验证码相同并不能100%证明文件内容一定一致,但不同文件算出同样验证码的几率非常之小,在实际文件传输应用中几乎不会碰到。
计算验证码的办法有多种,包括相对简单的CRC32,常用的 md5sum,SHA等等。许多 P2P 软件也有它们自己的算法,如 eDonkey 协议中生成文件的标识符的算法。
用 ftp 服务器分享文件有用户方面操作简单的优点,但 ftp 协议比较陈旧,设计上也存在当初考虑不周的地方,比如如何验证本地文件和服务器上文件是正确/一致的问题,标准的 ftp 只能给出服务器上的文件大小,而根据文件大小是无法判断两个文件拷贝是否是一样的。
针对这个问题,许多 ftp 服务器增加了一些计算 hash 值的扩展功能,如XCRC/XMD5/XSHA,可以计算出服务器上文件的 CRC32/md5sum/SHA 验证码,用户可以计算出本地文件的验证码,和服务器报告的加以比较,如果两个验证码一致,基本上就可以确定两个文件是一模一样的。
如何检查 ftp 服务器提供验证码功能呢?连接服务器后,向服务器发送 FEAT 或者 HELP 命令获取服务器支持的功能列表,观察其中是否包括 XCRC/XMD5/XSHA 等验证命令。我的 XP机器上面运行 zFTPServer,这是在 Command Prompt 中输入 FEAT / HELP 命令后回送的列表:
C:\>ftp localhost
Connected to MyServer.
220 Welcome to zFTPServer
User (MyServer:(none)): userl
331 User name received, need password.
Password:
230 User logged in, [...]