自己动手解决冰箱风冷电机故障

家里的伊莱克斯EME3002GD冰箱在服役两年之后,突然出现了故障。故障表现是:冰箱面板上显示红色的FF错误代码。冰箱上部的冷藏室和中部的变温室温度升高,无法控制。只有下部的冷冻室还能保持制冷。

上网一搜,这个问题在百度知道和贴吧上已经比较普遍了。这款冰箱是风冷型的,即冷凝器制冷以后通过风扇在风道内吹出冷风,将冷量输送到冰箱的三个储藏室。故障代码FF表示风扇错误(猜测是Fan Failure)。故障原因是风扇电机烧坏:

风扇电机结霜后被冻住,无法旋转。这样风扇电机加上电压以后电机绕组实际上成了一段导线,在电流作用下持续发热,最终烧断。电机开路,失去作用。

咨询了当时购买冰箱的商家。他们一听描述就立马知道风扇电机故障了。让我把冰箱背板拆开,把风扇电机拆下来然后放到太阳下面暴晒一天,再装回去试机。如若不行,只能联系售后付费上门维修。根据网友分享的经历,上门维修至少要80元的上门费再加上配件费用约300元。

在淘宝上搜索了电机配件(型号是ZWF-01-4 DC 12V 2550RPM),发现同款的配件还不少,也说明这个问题非常普遍了。电机包邮才68元。于是果断在淘宝上下单。

期间按商家所说,把冰箱清理以后在晾干,过了一夜再装上,仍然无效。说明电机已经烧坏了,只能换件。等了两天,电机到货以后换上,果然恢复如初。

以上故障说明,风冷冰箱的风道设计和配件选型非常重要,若考虑不周,会带来设计上的原始缺陷。百度贴吧“伊莱克斯冰箱”里,有许多同类故障的反馈贴子,很多人还是在换件三个月以后故障反复出现。这也怪不得国外家电品牌在国内混不下去了。

简单的SMTH-BBS刷版面积分小程序

水木社区自商业化以来,搞出了什么积分制度,一堆技术版面被无情的关闭,倒是灌水用的八卦闲聊版面得到了充分的发展。近日我常上的某技术版面积分也从10万多扣至2万多,按照每周约5000分的扣分力度,估计撑不过一个月。有感于此,决定写一个小程序,专门用来给指定版面刷分。

水木社区的《版面积分实施细则》规定,每周考核将根据版面的访问人次、访问时间、在线人数、文章数、文章质量等数据来考核。这里最容易刷的无疑是访问人次和访问时间。因此决定专门用一个账号反复进行“进版”、“出版”的操作,既能提升人次,也能增加访问时间。

这种小活用脚本语言来干最合适不过了,正好 Ruby 中有专门的 Telnet 库,台湾某哥们还写过一篇《用 Ruby 玩 PTT》值得参考。最后完成的脚本如下:

require 'net/telnet'
require 'logger'

USER = 'user' # user id
PASSWORD = 'password' # password
BOARD_NAME = 'board' # board name
LOG_FILE = 'newsmth.log'

enter_count = 0
stay_time = 0

logger = Logger.new(LOG_FILE)
logger.level = Logger::INFO
logger.info 'Logfile opened.'

# Connect to bbs.newsmth.net
# The prompt string could be '输入', '>', '(菱形方块)', ']'
smth = Net::Telnet::new('Host' => 'bbs.newsmth.net', 'Timeout' => 10,
                        'Telnetmode' => false,
                        'Prompt' => /(\xA1\xF4)|(\xBC\xCC\xD0\xF8)|:|\]|>/n)
smth.cmd(USER) {|c| print c }
smth.cmd(PASSWORD) {|c| print c }
# Ignore the info screens by pressing enter
smth.cmd("\n\n\n\n\n") {|c| print c }
logger.info 'Connected to newsmth.net'

loop do
  begin
    system 'cls' # Clear screen, use 'clear' in Linux/Unix
    # Exit to main menu, then select "F) Favorites"
    smth.cmd('qqqqqf') {|c| print c }
    logger.info 'Exit board'
    sleep 0.5
    system 'cls'
    # Enter specified board by "s" command in bbs
    smth.cmd("s#{BOARD_NAME}") {|c| print c }
    logger.info "Enter board #{BOARD_NAME}"
    enter_count += 1
    sleep 5
    stay_time += 5
  rescue Interrupt  # Ctrl-C signal
    # Exit to main menu, then select "G) Exit bbs"
    smth.cmd("qqqqqg\n\n") {|c| print c }
    logger.info 'Exit bbs'
    logger.info "Entrance count: #{enter_count}"
    logger.info "Total stay time: #{stay_time} seconds"
    logger.info 'Logfile closed'
    logger.close
    exit
  rescue IOError => e
    logger.error(e.message)
  rescue TimeoutError => e
    logger.error(e.message)
  end
end

目前脚本正在稳定运行中,实际效果有待一周后观察版面积分的变化。

Update@2015-05-01: 经过断断续续两周时间的试运行,发现程序对版面积分的贡献并不大,版面一周无水且访问人数低下时,扣分依然很严重。据此推测,进版人次在版面积分考核的权重中并不是很高,所以用程序来刷进版次数是不太管用的。

Update-2@2015-8-28: 水木现在已经不考核版面积分了,全看站务心情。此文已经木有价值罗。

iPhone 6 Plus被盗记

第一部分 被盗

手机是10月17号给 Angela 同学买的 iPhone 6 Plus 国行版。2014年12月21日,不幸于马家堡地铁站外被盗。到手后,贼已将手机关机,接到 Angela 电话让我锁定手机的时候,已经在 iCloud 里显示为离线状态。这时候,根据网上的经验,迅速做了以下几件事情。

  • 登录 iCloud,在“查找我的 iPhone”中开启丢失模式。这部手机一旦联网,将会自动锁定,并显示机主信息和电话。同时,根据 Apple 最新的保修政策,如果“查找我的 iPhone”处于打开状态,将会拒绝进行整机维修,如果小偷想去售后换机恐怕是不行了。
  • 联系 Apple 售后服务电话,向 Apple 报警手机被盗。客服将会在售后中添加手机被盗的记录,这样在维修时需要提供发票和盒子。避免小偷通过售后将偷来的手机洗白。
  • 及时报警。向民警陈述案情经过,提供手机序列号或者 IMEI 号,取得报案回执。这一步主要是在警方挂个号,如果哪一天运气实在太好,警察抓获了偷手机的团伙,并且在赃物中恰好有自己的手机,那么就可以从警察那里要回手机了。
  • 挂失并更换手机 SIM 卡。主要是防止小偷得手之后进入 DFU 模式刷机并通过原机主的手机号激活手机。但是对于“查找我的 iPhone”处于打开状态的手机,意义不大。原因是即使刷机,也需要原来的 Apple ID 来激活,否则手机就是个只能看时间的电子表。

这些步骤只能尽力降低被盗手机的价值,对于找回手机,希望已经不大。但据说会有冒充 Apple 进行钓鱼的现象,于是静待之。


第二部分 钓鱼

果然过了一天,小偷开始用多种手段来骗取原机主的 Apple 账号,试图解锁手机。这里要插一句的是,本来 iPhone 有锁屏密码的情况下,是无法看到机主的 Apple 账号的。哪怕刷机以后重新激活时,Apple 账号也是只显示第一位,其它位都是星号表示。但是国内的这些售后行业实在是良心大大地坏了,居然在淘宝上公开提供通过 Apple GSX 售后服务网站查询原机主 Apple 账号及信息的服务(包括账号、生日、联系方式、住址、密码提示问题等)。有了这些高度隐私的信息,就给了坏了可趁之机,用来骗取账号。

我在邮箱里收到了骗子发来的邮件,告诉我“手机已经找到,正在刷机激活”并给我一个链接“申请找回”。通过邮件的发信人可以明显看到这是一封钓鱼邮件。有意地点进这个链接,发现是一个模仿 Apple ID 登录的页面,基本上完全套用了原来网站的样子,如果不是地址栏里的地址不一样,根本无从判断这是个钓鱼网站。为了让小偷兼骗子开心,我特意输入了正确的 Apple 账号和错误的 Apple 密码。下一步就转到生日输入,果然是用来骗取用户实际生日的,当然要填一个2014年01月01日。再下一步是三个密码提示问题的输入框,为了盗号骗子真是用尽心思。既然陪他们走到这一步来了,不留点什么真不好意思。于是郑重地在框里填入“请联系失主138XXXXYYYY归还手机”,算是识破了小偷的钓鱼并反钓鱼之。他一旦联系,将会漏出破绽,总有机会能追查到他。

然而在邮箱钓鱼未能得逞之后,骗子过了两天又给 Apple 账号里的手机号发了信息,冒充苹果客服,声称手机正在激活,请登录网站以阻止。让 Angela 把信息转发给我,登录网站一看,果然又是和邮件钓鱼一样的手段,用假冒 Apple 网站骗取 ID、密码、生日、密码保护问题等。于是跟上次一样,填入错误信息来迷惑钓鱼者,并写上“请联系失主归还手机138XXXXXXXX”的字样。结果又过去两天,还未见骗子来自投罗网。

接下来会发生什么呢?按照网上的剧情,可能是冒充苹果400客服电话,打电话来骗取用户信任并套取密码。这一招并不比以上手段高明,不可能上当。也有可能手机就此消失,变成维修市场上的零件来源,主板虽然有锁无法使用,但几乎全新的 iPhone 6 Plus 屏幕、外壳等可能要值2000元左右吧。

不得不说,相比三星、HTC等厂商,苹果的保护机会设计得很到位了,但还是难以抵抗强大的“盗——骗——销”一条龙的黑色产业链。只能寄希望于公安机关加大打击力度了。

愿那台 iPhone 走好。

 

利用 Dnsmasq 的 ipset 实现智能路由、科学上网

上一篇文章《在 EdgeRouter Lite 上实现科学上网》是用的比较传统的方式,即简单地添加目的路由。对于比较大规模的 ICP 例如 Google, Facebook,挖出他们的网段然后添加到路由表里是可行的(主要是他们有较好的网络基础设施建设,都申请了自己的 IP 地址段,并且用 BGP 互联广播到全网)。不过对于绝大多数被封的站点,想要一个一个地追踪他们的 IP 地址是多少并保持更新,这无疑是非常吃力的。好在昨天翻 Dnsmasq 的 Manpage 读到了 ipset 的功能选项,放狗一搜发现早有人提到这项功能了,不过都是在 Openwrt 上实现的。这回我决定在 EdgeRouter Lite 上也实现一次。

目前 ER-Lite 上最新的固件是 1.5.0 版本,基于 Debian Squeeze 6.0.9 ,很遗憾其中的 Dnsmasq 版本是 2.62,根据 Change Log,需要到 2.66 版本才能有 ipset 支持,这样只好自己编译了。好在编译起来不麻烦,把几个需要的 feature 在 src/config.h 里加上,然后在 Makefile 里把 CC CFLAGS LDFLAGS PKG_CONFIG_PATH 等几个变量设好,就可以直接编译了。(当然有些 feature 需要额外的依赖,需要事先编译好)我这里编译的 dnsmasq 2.71 版本,feature 尽量和原系统预装的 2.62 保持一致。

ubnt@ERL:~$ /usr/sbin/dnsmasq --version
Dnsmasq version 2.71 Copyright (c) 2000-2014 Simon Kelley
Compile time options: IPv6 GNU-getopt no-RTC DBus no-i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth no-DNSSEC

This software comes with ABSOLUTELY NO WARRANTY.
Dnsmasq is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License, version 2 or 3.

直接替换原系统里的 2.62 版本,就可以无缝工作了。以 Google 为例,在配置中添加如下选项:

ubnt@ERL:~$ configure
[edit]
ubnt@ERL# set service dns forwarding options server=/google.com/8.8.8.8
[edit]
ubnt@ERL# set service dns forwarding options ipset=/google.com/CROSS_WALL

第一行是指定 google.com 下所有的域名都交给 8.8.8.8 这个 DNS Server 来解析,第二行是指定所有 google.com 域名下解析出来的 IP 都扔到名为 CROSS_WALL 的这个 ipset 里(当然 ipset 需要事先创建好)

到 8.8.8.8/32 的路由可以通过之前建立的 OpenVPN tunnel 出去,直接添加到路由表。这样防止解析出来的域名受到污染。随后在 firewall rule 里让所有 destination addr 符合 CROSS_WALL 这个 ipset 的包都走特定的 tunnel 出去,这样就实现了智能路由,科学上网了。trace route 如下:

C:\Users\Xiaoding>tracert -d www.google.com

Tracing route to www.google.com [173.194.127.210]
over a maximum of 30 hops:

  1     6 ms     1 ms     5 ms  192.168.111.1
  2   281 ms   285 ms   286 ms  10.8.0.1
  3   276 ms   282 ms   271 ms  96.44.154.33
  4   267 ms   271 ms   275 ms  72.11.150.105
  5   283 ms   279 ms   277 ms  96.44.180.97
  6   280 ms   280 ms   277 ms  206.72.210.41
  7   290 ms   283 ms   284 ms  64.233.174.41
  8   291 ms   308 ms   290 ms  64.233.174.190
  9   400 ms   408 ms   393 ms  64.233.174.177
 10   403 ms   402 ms   422 ms  209.85.243.249
 11   437 ms   406 ms   410 ms  66.249.94.30
 12   407 ms   411 ms   413 ms  209.85.240.133
 13   426 ms   442 ms   442 ms  173.194.127.210

Trace complete.