作者归档:ring0

往锤子手机(Smartisan OS)导入其它手机短信

注意:操作有风险,后果需您自己承担,请谅解。

此方法在Smartisan OS 1.4.0下测试通过
大概思路是这样的,先用豌豆荚把android手机的短信备份到电脑,然后把导出的短信备份转换成Smartisan OS可以导入的格式,具体操作如下:

1.下载ConvertSMS:

地址:http://pan.baidu.com/s/1qWFjORi
密码:9jdv

下载后解压到某处,得到convertsms.exe、start.cmd两个文件

2.电脑上安装豌豆荚并与手机连接,在“备份和恢复”里把短信备份出来,完成后,点击“查看备份文件”,找到刚刚备份好的压缩包,将里的sms.csv解压到convertsms.exe所在的文件夹。

3.双击start.cmd,然后输入

convertsms.exe

回车,如果成功,会在convertsms.exe所在文件夹生成了message.csv,此文件就是可导入锤子系统的备份文件

4.进入锤子”设置->高级设置->数据备份”,点“创建备份”,只勾选短信(一定要有1条以上),然后点“开始创建备份”。

5.在锤子手机上找到/sdcard/smartisan/backup/<刚刚的备份日期> 文件夹,将第3步生成的message.csv覆盖到这里

6.进入锤子“设置->高级设置->数据备份”,在“历史备份”下面找到刚刚的备份,点进去,选中短信点恢复,等待一小段时间后提示导入完成,短信就导入完毕了。

linuxmint (ubuntu) 下用小度wifi做AP

此方法在linuxmint 17.1下测试通过。
理论上可支持小米wifi、360wifi。

具体操作如下:

1.下载安装MT7601U驱动
MT7601U驱动
提取密码:2r8h
这里感谢下 http://bbs.xiaomi.cn/thread-10160085-1-1.html 帖子的作者。

将下载的驱动解压,进入解压出来的mt7601u文件夹,执行下面的命令进行编译安装:

./install.sh

2.安装配置Dnsmasq (dns、dhcp)

sudo apt-get install dnsmasq

安装好后执行下面命令启用dhcp功能

sudo sed -i "/^dhcp-range/d" /etc/dnsmasq.conf
sudo echo "dhcp-range=192.168.86.50,192.168.86.150,12h" >>/etc/dnsmasq.conf

3.配置udev
新建文件/etc/udev/rules.d/100-portable-wifi.rules,加入以下内容:

SUBSYSTEM=="net", ACTION=="add", ENV{DEVPATH}=="/devices/virtual/net/ra0", RUN+="/bin/sh -c '/sbin/ifconfig ra0 up; /sbin/ifconfig ra0 192.168.86.1; /etc/init.d/dnsmasq restart;echo 1 >/proc/sys/net/ipv4/ip_forward ;iptables -t nat -D POSTROUTING -s 192.168.86.0/24 -j MASQUERADE; iptables -t nat -A POSTROUTING -s 192.168.86.0/24 -j MASQUERADE'"

顺利完成以上步骤之后,插上小度wifi,10秒过后应该就可以看到一个名为 Portable 的无线接入点,默认密码:abcd1234,连接此AP即可上网。

通过修改 /etc/Wireless/RT2870AP/RT2870AP.dat 文件的以下行来修改 AP名、密码、和信道:

SSID=Portable
WPAPSK=abcd1234
Channel=11

修改后重新插拔小度wifi即可。

酷派8085n(中国移动NFC版)官方ROM刷机

参加活动送的手机,但被植入了各种垃圾软件无法卸载,最近终于找到了官方固件和刷机方法,下载地址:http://pan.baidu.com/s/1i3HqOfz

具体的操作步骤大概是这样的(需要32位操作系统):

1.手机关机
2.手机接电脑,出现发现新设备提示后,选择安装l2k驱动(8085n驱动.rar 的 DRIVER_DOWNLOAD.1.00.00_L2K )
3.安装 YGDP_V3.00_130807_01客服版本.zip 中的软件
4.电脑时间调整为2013 年 8月7号
5.运行YGDP,输入密码9527 进入软件
6.进入软件的“配置”,选择8085n,并选择CPB文件后确定(下载:”第三个 4.0.033.P0.140313.8085N.zip.zip”解压得到)
7.手机与电脑断开重新连接,刷机开始,完成后重启手机即可

nginx下基于ngx_lua 模块实现 http digest(摘要)认证

缘起:nginx官方没有实现 HTTP digest 摘要认证,经过测试第三方模块 nginx-http-auth-digest 貌似在最新版nginx上不能用了。而受支持的basic验证,密码传输是明文的,很不安全。我的vps上个人的应用越来越多的,现在都是通过basic方式进行的验证,本想用ssl 加密一下,又不想用自制的不可信证书,就在startssl提交了可信证书申请,迟迟不见动静,所以只好自己动手搞一下了。C基础很差,于是先用ngx_lua模块应付一下,有时间再搞搞前辈的第三方验证模块。

功能方面,这段代码并不是RFC2671的完整实现 。所以只能说可以正常工作了,且只支持用户验证(auth),不支持完整验校验(auth-int)。因受限于 lua 随机数生成不够随机,加上可能隐藏的bug,不确保百分百的安全。但在我认真的实验后,个人认为安全的完成用户身份验证已经可以保证了。在IE 11,IE 6 ,firefox 26 ,curl ,wget下测试通过。

配置示例: 继续阅读

linux 下编译 ipset-dns

如果你编译出现如下错误:

cc -O2 -pipe -fomit-frame-pointer -march=native -lmnl    ipset-dns.c   -o ipset-dns
ipset-dns.c: In function 'main':
ipset-dns.c:443:28: warning: ignoring return value of 'system', declared with attribute warn_unused_result [-Wunused-result]
/tmp/cccha479.o: In function `main':
ipset-dns.c:(.text.startup+0x78c): undefined reference to `mnl_nlmsg_put_header'
ipset-dns.c:(.text.startup+0x7a8): undefined reference to `mnl_nlmsg_put_extra_header'
ipset-dns.c:(.text.startup+0x7c7): undefined reference to `mnl_attr_put_u8'
ipset-dns.c:(.text.startup+0x7e7): undefined reference to `mnl_attr_put'
ipset-dns.c:(.text.startup+0x7f4): undefined reference to `mnl_attr_nest_start'
ipset-dns.c:(.text.startup+0x804): undefined reference to `mnl_attr_nest_start'
ipset-dns.c:(.text.startup+0x834): undefined reference to `mnl_attr_put'
ipset-dns.c:(.text.startup+0x844): undefined reference to `mnl_attr_nest_end'
ipset-dns.c:(.text.startup+0x84f): undefined reference to `mnl_attr_nest_end'
ipset-dns.c:(.text.startup+0x859): undefined reference to `mnl_socket_open'
ipset-dns.c:(.text.startup+0x86d): undefined reference to `mnl_socket_bind'
ipset-dns.c:(.text.startup+0x87f): undefined reference to `mnl_socket_sendto'
ipset-dns.c:(.text.startup+0x88c): undefined reference to `mnl_socket_close'
ipset-dns.c:(.text.startup+0x8ad): undefined reference to `mnl_socket_close'
collect2: error: ld returned 1 exit status
make: *** [ipset-dns] Error 1

 

只需在Makefile 第一行加入:

LDLIBS= -l mnl

xbmc 从minidlna 加载字幕

minidlna在发现视频文件后会查找当前目录下同名的srt字幕文件(只支持一个srt字幕文件),字幕文件在数据库中的ID和视频文件相同。媒体文件加载时的URL是http://<server>:8200/MediaItems/<Media id>.<ext>,字幕文件加载时的URL是http://<server>:8200/Captions/<Media id>.srt。xbmc从minidlna加载视频后字幕插件不会自动加载字幕文件。虽然能够试图浏览Minidlna上的字幕,但因为Minidlna 中没有存储字幕的container供xbmc浏览并加载。也或许xbmc有其它方法从minidlna加载,反正我没搞明白。xbmc的字幕插件提供了从很多字幕网站上下载字幕的功能,minidlna本身也可以看作一个字幕站,于是写了个minidlna的service,就能方便的从minidlna加载字幕了。

下载下面的包,(Linux,windowns用户自己研究下吧,我没有windows)解压到$HOME/.xbmc/addons/script.xbmc.subtitles/resources/lib/services/目录下。然后编辑$HOME/.xbmc/addons/script.xbmc.subtitles/resources/settings.xml,找到<category label=”30103″>在下面加入一行:

<setting id="minidlna" type="bool" label="minidlna" default="false"/>

然后播放视频时点击字幕图标在服务里就能看到minidlna,启用后再按字幕按钮,如果minidlna中有相应字幕,就可以点击加载了。
xbmc_minidlna_subtitle

让 minidlna 支持 rmvb、gb2312 mp3 标签

各位一定认为minidlna最大的遗憾是不支持rmvb,我是这么觉得。minidlna是通过ffmpeg库获取媒体文件的metadata,ffmpeg早已经支持rmvb,很多国产Pad芯片解决方案都可以实现对rmvb的硬解,现在arm cpu的性能软解也不是问题。想不明白为什么minidlna一直没有加入对rmvb的支持。或许是考虑到了很多dlna renderer不支持rmvb。如此只能自己尝试hacking一下了。minidlna启动后会扫描分析指定的目录,然后将信息写入sqlite数据库,而和客户端传输数据用的http协议,http协议和文件格式无关,所以只要让minidlna的scanner认识rmvb即可。结果一定是OK的,我用的MW4530R路由器,在MELE A1000 下使用BunbbleUPNP测试没问题,不过只能软解。最后建议您安装libffmpeg-full,默认可能是libffmpeg-mini,后者支持的文件格式有限,使用前者我的所有视频现在都可以被正确的加入minidlna。

在默认情况下如果mp3文件的id标签使用了gb2312编码,openwrt下的minidlna里会显示乱码,只有将id转换成utf8才能正常显示,这其实不是minidlna的问题而是编译时使用的iconv库的语言支持不完整。执行make menuconfig 进入 Global build settings 选中Compile with full language support,重新编译minidlna 这时使用的iconv库就是libiconv-full。这个packages里有个 100-strip_charsets.patch 的patch 给这个包缩减了很多语言包括cp936,也就是gb2312的支持,所以要去掉这个patch。或者您自己修改一下这个文件把cp936相关中文支持加上。启动minidlna前export LANG=zh_CN.UTF-8,minidlna就可以正常支持gb2312编码了。

以上工作是在openwrt 12.09和minidlna 1.0.24下进行的。把我做的patch放上来,如果您自己编译openwrt的固件,把这个文件放在attitude_adjustment/feeds/packages/multimedia/minidlna/patches目录下,编译时会自动应用该补丁。共patch了4个文件,其实只patch前两个就可以了。
999-realmedia-support.patch

以下是我自己编译出来支持rmvb gb2312标签的安装包:
minidlna_1.0.24-1_ar71xx.ipk

全部语言支持的libiconv-full:
libiconv-full_1.11.1-1_ar71xx.ipk

如果安装时提示md5 miss match 删除 /var/opkg-list/ 下的文件再安装。

Linuxmint 15 x64 安装 qq2012,迅雷5

1.安装qq2012
下载并安装龙井wine qq2012 末日版:
WineQQ2012-20121221-Longene.deb
安装32位依赖库:

sudo apt-get install libgstreamer0.10-0:i386 libasound2:i386 libgtk2.0-0:i386 liblcms2-2:i386 libpng12-0:i386 libsm6:i386 libncurses5:i386 libcups2:i386 libpulse0:i386 libmpg123-0:i386 libasound2-plugins:i386 ttf-wqy-microhei

2.安装迅雷5
下载thunder5压缩包,并解压到某处。此包是基于linuxdeepin官方源中的版本改的,不含wine,而是直接用的上面龙井qq中的wine,所以要先安装qq2012才行。
wine-thunder5.tar.bz2
将解压后的wine-thunder5 文件夹复制到/usr/share目录下,创建软链接,执行wine-thunder5 等待初始化完成

 sudo cp -a wine-thunder5 /usr/share
 sudo ln -s /usr/share/wine-thunder5/wine-thunder5 /usr/bin/
 wine-thunder5

初次执行中文件可能会是乱码,退出后稍等片刻再次执行就好了。

介意bt是乱码的朋友,这样解决:

wget http://winetricks.org/winetricks
sudo cp winetricks /usr/bin
sudo chmod +x /usr/bin/winetricks
export WINEPREFIX=$HOME/.longene/wine-thunder5
export PATH=$PATH:/opt/longene/qq2012/wine/bin/
winetricks ie6
winecfg #将windows版本改回windown 98

安装完IE6后一切正常了

向openwrt 源码添加水星MW4530R支持

最近又从淘宝入手了一台改过机的水星 MW4530R 双频无线路由器,原厂、Openwrt双Flash,双系统。原厂固件Flash 8M,Openwrt固件Flash 16M。Openwrt官方并没有提供对MW4530R的支持,但它比TPLink WDR4300 硬件只少了一个usb口,所以4530的固件都是从4300固件修改来的。我买的这台机子里刷的是思山论坛某个同学自己编译的固件,里边集成了一堆我从来不用的包和功能,我怎么能忍得了呢,于是决定自己动手定制自己的固件。好在之前有折腾WR703N的经验,只把需的软件包和做好的配置文件(ADSL,无线AP 等)集成到固件里,刷好机直接用,不用再折腾。既然要动手就想彻底点,向openwrt官方源码里加入对MW4530R支持,直接编译出MW4530R的可用的固件。经过这两天的研究搞定了,现把方法共享一下。菜鸟一个有错误欢迎批评指正。

先简单说明一下思路,方便您理解后边的操作。MW4530R本身就是水星出的WDR4300的马甲,那就在Openwrt源码中给WDR4300套上个马甲就是MW4530R了。我是基于官方branches/attitude_adjustment源码做的,大概需要以下几步:
1.新增MW4530R Profile,在make menuconfig时选择
2.内核中添加MW4530R设备的识别(只是识别,代码还用WDR4300,马甲吗)
3.修改固件内的脚本,加入MW4530R支持,以便正确配置固件
4.编译完成后生成MW4530R的固件

上述操作的第2步我已经做成了patch,这个patch可能会随着openwrt的更新失效。不过我使用的是分支代码,基于不会有太大的改对或增加新设备支持,所以这种可能是比较小的。其它几步的操作要分别对下面的文件进行修改:

 target/linux/ar71xx/generic/profiles/tp-link.mk
 target/linux/ar71xx/base-files/lib/ar71xx.sh
 target/linux/ar71xx/base-files/lib/upgrade/platform.sh
 target/linux/ar71xx/base-files/etc/uci-defaults/leds
 target/linux/ar71xx/base-files/etc/uci-defaults/network
 target/linux/ar71xx/base-files/etc/diag.sh
 target/linux/ar71xx/image/Makefile

在开始之前提些建议给您。先准备好svn代码,然后选择一个设备进行一次完整的编译,这个过程中会下载编译内核、包的源码,这样可以保证制作MW4530固件的过程比较顺利节省时间。另外openwrt源码结构很模块化,所以不用每次修改之后都 make clean然后再make 太耗时,假如你只修改了target文件夹里的内容,只需要make target/linux/clean,然后再make 就可以生效;如果修改了tools的源码只需要 make tools/clean;如果修改了某个package,执行 make package/<包名>/clean 即可。

平时工作娱乐都是用linux,整个过程是在Linuxmint14 64位下进行的。
准备源码过程就不细说了按顺序执行下面命令:

 svn export svn://svn.openwrt.org/openwrt/branches/attitude_adjustment/
 ./scripts/feeds update -a
 ./scripts/feeds install -a

下面所有的命令都以attitude_adjustment为当前目录,下面正式开始。 继续阅读