使用 CMake 编译 vc90 版 libphonenumber

这是一份使用 vs2008 和 CMake 料理 libphonenumber 的食谱。

准备原料


服务器迁移到 vultr

在 vultr 买了新的主机,准备把网站迁过去。机房选在洛杉矶,果然西海岸的稳定性还是最好啊,丢包也少,东京在晚上高峰丢包太高了,受不了。说来在 V 家之前还试了试 IOZoom 的机子,然而到手时分到个被墙的 ip,ssh 都连不上,然后提工单换了;买了个亚洲优化,也就是 CN2 路线的 ip,又是被墙的我去……来来回回折腾几下相当失望,换完 ip 后高峰期丢包还是高得不行,基本在 10%(CN2) 和 16%(主 ip) 左右,后面果断退钱了。之后就入了 vultr 的。

现在记录一下从头搭建的过程吧。专为 centos 7 x64 量身打造。


pixivspider – P 站爬虫工具

主要功能

根据定义的 ID 列表下载每个画师的所有插画

下载链接

PixivSpider

如何使用


总算是换新工作了

在今年年初,我开始进行我蓄谋已久的换工作计划。也许有偶然因素在里头,但我觉得金三银四的跳槽季真不是乱说,感觉成功率比其他时间要高上不少,作为对比,我在去年十月的时候也找过一波,但四、五家公司下来感觉都不是特别理想,好不容易换个工作,总不能陷入和以前一样的循环吧。还有些公司只挂职位不招人的,简历投过去后一点响应都没有,我比较有兴趣的几家都是这样。最后这次尝试活动就此落幕,继续回窝好好蹲着。


做事不要用力过猛

我们常常会因为一时兴起,然后开始反复做某件事,学习、游戏等等,然后等新鲜感一过便索然无味,随后便被遗忘。

用力过猛和三分钟热度有点像,同样都是无法持续的。等激情褪去,一切又回到原点,简直就是一见钟情,再而衰,三而竭。
靠着意志力来坚持很快就会露出破绽,因为意志力是很快就会被耗尽的东西。好比格斗游戏的防御槽一样,用防御槽去和对手的连技正面刚很容易就被对手破防打出大硬直,所以防住头几招后要尽快反制。


通用 krkr 解包工具

以前都是看到想拆的游戏就自己动手搞搞,但是后面就觉得麻烦了,因为 krkr 的框架都是一样的,各厂只是在封包上做了点小修改,为每个游戏都适配一遍实在是太费时间了。所以决定弄个通用点的工具出来。


ssh使用公钥登陆设置时返回 Authentication Refused

最近给几台机器设置 ssh 公钥登陆的时候发现老是失败,putty 和 ssh 命令都显示认证被拒绝。今天想搞一个 git server,又碰到这个问题了,想着还是得解决一下才行。

一开始想换个环境于是在虚拟机里先做个测试,果然也出现了无法登录的情况。。。查看 /var/log/secure 日志,可以发现有下面这样的信息:
Authentication refused: bad ownership or modes for file /home/testuser/.ssh/authorized_keys
上网查了一下,发现是 ssh 对文件以及目录的权限有要求,随意设置会导致 ssh 不认这个文件。同时又想起使用 ssh 命令登录时有时会提示你私钥权限过大而忽略这个私钥


YU-RIS 封包分析

这两天搞了一下 yu-ris 的 ypf 封包,这里做个简单的记录。

ypf 主要用了 zlib 进行压缩处理。包头里有文件数量和数据区起始地址等信息。文件索引表里包含了文件的偏移、压缩后长度和原始长度等基本信息,文件名则是经过取反后存储的。文件索引表非定长。


CrackMe 反汇编练习之 053

作为练手的 160 个 CrackMe 系列整理分析


多网卡设为同一网段导致数据包发送失败

之前处理了一个 bug,软件在一些使用场景下会发不出 udp 包,排查之后发现是调用 sendto() 函数成功,然而使用 wireshark 却抓不到 udp 包。

然后在排查过程中查看 arp 表时,结果意外发现居然有两张网卡是被设置成同一个网段 的 ip 了,摔啊!

于是看了一下路由表,发现果然是未使用的网卡 B(192.168.2.56)的记录在网卡 A(192.168.2.204)之前,而设备是连接在网卡 A 上的。

这就导致通讯时系统会首先使用 B 来发送数据包,而当设备的 mac 地址没有被网卡缓存时,B 会首先发送 arp 广播包获取设备的 mac 地址。当然连在网卡 A 上的设备 C 是没法回应的,然后数据包会因为 B 没有目的 ip 的物理地址而发送失败。

另外当 B 的 arp 失败后会在 B 的 arp 表中生成一个该 ip 地址的记录项,指示该 ip 对应无效的 mac 地址(00-00-00-00-00-00),根据微软的描述,默认情况下该记录项会在15到45秒后刷新。在 B 的记录清除之前再发起通讯请求时系统会选择使用 A 发送 arp 广播,这时设备便能接收数据和正常通讯。否则当 B 中的无效记录被清除后会继续使用 B,通讯依旧会失败。

总结一下就是两张同网段 ip 的网卡,当两张网卡的 arp 表都没有对应的记录时,系统会根据路由表中记录的顺序选择第一个网卡进行通讯(启用、禁用网卡可改变路由表的记录顺序)。如果网卡的 arp 表中缓存了对应的 mac 则会直接使用相应的网卡进行通讯。
当然最好还是不要设为同一个网段……