Android kernel编译与刷机

RT3070的驱动在交叉编译时发现过程十分纠结,且网上说法不一,但辗转反侧折腾中发现了新的契机。原来Nexus 7的3.1.10内核本身就支持Ralink RT3070,只需要开启后编译产生新内核刷入Nexus 7就可以了,至于能不能让网卡支持混杂模式还有待测试。
编译内核比编译Android本身还容易,源码量小,对系统要求也比较低。参考[这里]下载编译内核有关代码
接下来为了编译内核,需要从Nexus 7下面把/proc/config.gz拽回来,并且解压得到.config放到kernel代码的根目录
cat config.gz | gunzip >.config
直接用git下载回来的Nexus 内核源码里面只有一个.git文件夹,需要使用git checkout才能将特定版本的源码解包释放。版本的选择可以参考下设备上的内核版本标注。比如我的为3.1.10-g009b6d1,就可以使用
git checkout 009b6d1
 
来释放对应版本的内核代码。然后 make menuconfig 可以调整内核模块,开启上述模块
make ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig 
 
Networking support –> Wireless
[*] Generic IEEE 802.11 Networking Stack (mac80211) 
// 只有开启这个选项才能看到RT3070的驱动模块
device drivers –>
network device support ->
wireless lan –>
ralink driver support
 
最后make一下就产生了zImage在arch/arm/boot/下面
接下来需要把这个zImage打包成boot.img然后刷入Nexus 7中
打包方法可以参看[这里] ,所需的解压包工具从[这里]下载
 
我的做法是用Nexus 7 toolkit把系统的boot.img提取,然后用unpackbootimg解包,然后把我的zImage和ramdisk重新打包成成boot.img,就能够刷入系统了。刷入的方法就是用
fastboot flash boot boot.img
 
推荐在做一切前hack工作前,用Nexus-7-toolkit先备份好,fastboot,adb这类工具toolkit里面也提供了

Jelly Bean 编译

由于需要移植RT3070的驱动到Nexus 7,因此Android的源码是必须要有的。为了保证源码的正确性,就先把Android编译出来练练手吧。主要过程看[这里]

我是在LiveUSB模式的Backtrack 5 r3 (ubuntu 10.0.4) 下面进行的代码下载和编译,代码都放在了mount过来的Windows分区(NTFS)下面。

整体思路和参考链接相同,但由于是在mount过来的分区上搞,所以PATH环境变量的设置要有所区别。

再来就是需要sun-java6-jdk安装到位,具体方法:

###############

gedit /ect/apt/sources.list 

添加一行: deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

apt-get update

apt-get install sun-java6-jdk 

############### 

另一点就是repo工具的下载,在不同城市测试了一下,原文链接已经被墙了。如果是教育网用ipv6就能绕过这个微墙。否则就在windows下先用代理下载好。repo实际上就是一段python代码。

使用repo下载全部JellyBean过程特别慢,花了有两三天吧,经常有错误产生,可能是dns导致的。如果你也遇到可以考虑修改host文件:

#########

gedit /etc/hosts

然后把 android.googlesource.com 和 googlesource.com 先用 nslookup 查好ip地址添加进来。

#########

这样可以减少代码下载中的DNS请求数量

至于编译的话只要按照参考链接的步骤来就没什么问题。虽然在这个过程中遇到了很多错误,但后来发现归根结底都是系统配置不够导致的。下面几点是容易被忽略的, 但却是编译过程所必须的~

需要64位的主机配64位的操作系统来进行编译

增加swap分区,Backtrack 默认不带,增加方法:

mount 一个windows分区过来,最好和代码存放的分区不同,然后增加一个swap文件就可以了比如windows分区mount到了/media/D

##########

dd if=/dev/zero of=/media/D/swapfile bs=1024 count=4096k   #这样就增加了一个4G的swap文件

mkswap /media/D/swapfile #格式化这个文件

swapon /media/D/swapfile #开启swap

swapon -S #用于查看swap是否已经被正确开启

##########

我的电脑是intel i7 8核的,内存4G 但为了保证编译过程中不至于卡死,使用了 make -j4 命令进行编译 (只用4个核免得系统太忙碌),如此这般,system.img就会被编译出来了

NFC Day One

最近大采购啊,买了Nexus 7,OTG线,ACR122U,两张M1卡,一张特种卡

目标:

  • Nexus 7+OTG+RT3070 跑 airodump,需要交叉编译驱动,需要在手机上构建debian或ubuntu环境
  • Nexus 7+NFC实现Mifare卡读取和写入,已经使用NFC_WAR和Mifare Scanner初步实现 
  • Backtrack+libnfc+nfc-tools (或RadioWar liveCD) 实现RFID卡口令获取,并结合Nexus 7和特种卡实现卡复制

这两天尝试了 Backtrack 下使用MFOC获取RFID卡口令和数据,环境搭建和相关驱动安装在Backtrack Wiki 有参考,但实际过程有些小细节还需要一波三四折了一下

整体过程可以参考[HERE]


apt-get install flex libpcsclite-dev libusb-dev checkinstall
cd ~
wget http://www.acs.com.hk/drivers/eng/ ACR122U_driver_Lnx_Mac10.5_10.6_1.02_P.zip
unzip -d acr122u ACR122U_driver_Lnx_Mac10.5_10.6_1.02_P.zip
cd acr122u
tar -jxvf acsccid-1.0.2.tar.bz2
cd acsccid-1.0.2
./configure
make
checkinstall -D -y –install
cd ~
apt-get install -y debhelper libtool && wget http://libnfc.googlecode.com/files/libnfc-1.4.2.tar.gz
tar xfvz libnfc-1.4.2.tar.gz &&cd libnfc-1.4.2
svn checkout http://libnfc.googlecode.com/svn/tags/libnfc-1.4.2/debian
dpkg-buildpackage -rfakeroot
dpkg -i ../libnfc*.deb
cd ~
wget http://nfc-tools.googlecode.com/files/mfoc-0.10.2.tar.gz && tar -xvzf mfoc-0.10.2.tar.gz
cd mfoc-0.10.2
autoreconf -vis
./configure
make
checkinstall -D -y –install


在第二步之后(第二个cd~后面)libnfc装好了,就可以使用nfc-list查看设备信息了,但执行后居然是 

root@bt:~/libnfc-1.4.2# nfc-list
nfc-list use libnfc 1.4.2 (r891)
No NFC device found.

这不是说没识别我的ACR122U吗~果然读卡器灯也不亮,归根结底是因为pcscd没有运行,虽然这是个啥现在还没搞清楚,但看来应该是某种硬件驱动层的wrapper。另开一个窗口执行pcscd -f 再回来执行nfc-list

root@bt:~/libnfc-1.4.2# nfc-list
nfc-list use libnfc 1.4.2 (r891)
nfc-list: ERROR: No ACR122 firmware received, Error: 80100016
nfc-list: ERROR: Unable to connect to NFC device.

看来还是不太正常,深思熟虑过后,原来是还没有放卡片,再来nfc-list

root@bt:~/libnfc-1.4.2# nfc-list
nfc-list use libnfc 1.4.2 (r891)
Connected to NFC device: ACS ACR122U 00 00 / ACR122U210 – PN532 v1.6 (0x07)
1 ISO14443A passive target(s) was found:
ATQA (SENS_RES): 00  04 
UID (NFCID1): fe  05  0f  0f 
SAK (SEL_RES): 08 

总算出结果了,然后完成第三步安装好mfoc等nfc-tools套件

执行mfoc,却出现如下信息

root@bt:~/mfoc-0.10.2# mfoc -O dump
nfc_initiator_select_passive_target: Success

查了半天,好像是libnfc的bug,Backtrack Wiki里面提到的libnfc-1.4.2已经不是最新版本了,至少1.5.0已经出来了,所以重启后(Live CD模式),重新执行上述命令,但把第二步的所有1.4.2换成1.5.0,


cd ~
apt-get install -y debhelper libtool && wget
http://libnfc.googlecode.com/files/libnfc-1.5.0.tar.gz
tar xfvz libnfc-1.5.0.tar.gz &&cd libnfc-1.5.0
svn checkout
http://libnfc.googlecode.com/svn/tags/libnfc-1.5.0/debian
dpkg-buildpackage -rfakeroot
dpkg -i ../libnfc*.deb


mfoc就也工作了~

没有什么新东西,只有新问题~后续工作等到十一回家慢慢玩吧~折腾他们太操心了

 

I”s 第三日

都已经是第三天了,我以为开始正常上班忙碌起来心头的抑云就会散去了,I guess not this time. 下午写着代码居然I”s的最后几幕又浮现眼前,季子最后在录像带里对一贵说的话像一段背景音乐一直伴随着全卷终了(总不能在这儿触景生情的潸然泪下吧)。不管是季子还是寺谷靖雅还是麻生蓝子,似乎哪个人都能在一贵感情迷茫临近退缩的时候站出来帮他分析来龙去脉,何去何从,并且他们都是自愿退出一贵和伊织的感情故事,他们是可贵甚至理想的,一贵是幸运的。归根结底是一贵自己的执着追求不离不弃是他达到幸福的彼岸。

相比最初的几天,虽然目前仍是隐隐内心痛的状态,但已经能够稍微分析一下这个故事而不是再把他完全作为事实来看待了,不然的话估计要永远沉沦于这些画面之中而无法解脱了。伊织在校三年,居然没有一个第三人正式追求过她,这当然成就了一贵得天独厚的机遇。反而一贵三年倒是有好几个让他不知所措的感情种子,但还好他终能克制了这种青春躁动的生理冲动,季子也能够清醒认识真相并毅然退出。真正隔阂彼此倒是一贵和伊织的胡思乱想,虽然一句话就能解除误会,但正是轻信自己的推理而让尴尬持续,大费周章。

为什么结尾季子的录像搭配一贵和伊织的牵手前行能成为直击内心感情涌动之泉的催泪弹,恐怕是因为它真的是一个极佳的答案。它回答了季子为什么退出,一贵一直追寻的梦想,也是曲折的情节总向着一个方向不断行进的本质所在。写来写去,也不知道是能帮我排解这种情绪,还是在不断激发它,难道蔡老师当年的“笑看人生”才是正解?怎么好像一部漫画把我从童年带到了中年

W2T

一觉醒来望着阴雨天空,我居然还是无法释怀,相比眼泪,更多的是心理上的起伏不定。难道I”s比其他漫画能产生更多共鸣吗,或者是近来我变得异常脆弱多愁善感了。原来这个故事不是讲给我听,而是把我的故事讲出来给自己听的,but I ‘ve missed the very ending。

ITCHAN小学告白留下的阴影让他中学面对心动的女孩缺少自信与勇气走上前去。似乎只有看起来是被安排的才是可以安心相处。即使这样,他们居然仍不断有很多次接触。几年后他知道了她原来也是喜欢着他的时候,幸福终于第一次扣响了门闩了。

不同的是当我知道这件事的时候,I guess I ‘ve already missed my bus, the bus conducts me to love. 原来那些暗示是那么明显,但别以为这些暗示就代表了永恒,What a fool I am! I should not hide any more, just face to my feelings. 那种心口不一,躲躲闪闪,是自己的伤,是别人的负担。I missed the confession once, perhaps that ‘s the only confession I need for my whole life.  第一次后悔曾经的选择,第一感受到不完整的情感世界,而且确实有机会与之擦肩而过。I wonder what it will be like today if I confess to you during middle school.

“What is your dream”

“It is only until recently that I could clear my thought. No matter what the dream is, you are always there. No matter how many girls walking by, you are the only one I could imagine as a lover living togther.”    

“(Please fill in the blank)”

I have no fear to face the feelings anymore, I love you all the way from that day we first met, no more, no less.

I”s

这是一场梦,梦见你又回到青涩酸甜的校园,ITCHAN的心理活动就像是一个缩影,戏剧性的部分只是他在几页纸之间把你几年的情感实实在在的画了出来。

http://www.anymanga.com/i-s/,我看的是英文版,也许在本该忙碌的夏日只有打着英文学习的借口才能慰藉闲暇乐怡的时光。日文漫画,译成英文,华人看,没有任何语言隔阂,因为那不过是又一次开始做年轻时的白日梦。

原来我也和他一样都这么喜欢胡思乱想,他喜欢往糟糕了想,我也一样,现实很简单,简单的最难理解。

别那么忘我的激励他人,也许那并不是她想要的,也许它一开始想要就只是你,是你把她一步步从自己身边推开。但没有那山间的回声荡漾,会不会彼此就没有了这种归属的感激。梦想不一定是个 职业,不一定是一番事业,它也许就是为对方付出,着想,牵手走在一起。两个互相单恋的人是最酸的,一旦走在了一起也是最让人欣欢的。爱是彼此的,单方面的不是爱,是让你自己或者让对方受伤的篇章。

白底黑字,白纸黑画,纯粹的写实,真切的个人,在现实的不能再现实的一幕幕间给你讲一段曲折的不能在曲折的神伤。我想很难有机会再回到这里了,这也许是每一次到结局时分都惆怅不已的原因,即便是一个故事,你也没有机会去第二次演绎当中的对白,那它和真实的人生区别在哪里呢。同样激起了你内心的波澜,就当做自己亲身经历的一次别样的旅程有何不妥,何况这并不是一个与你相去甚远的人生,只是你曾经失去的那一段情色绵绵,踯躅,踌躇,踟蹰。

还有心思精力,但我不想用彩色打点上下文字,他们只适合最写实的陈放。

我的手机

此篇完全是写给自己的,提醒一下下次换手机需要的特性:

现在用的nokia N86的好功能一定要保留。具体说来

  • 键盘输入快且准,qwerty或者九键都无所谓,没有触感的虚拟键盘是没办法产生手指记忆的,更不可能盲打。
  • 通话记录查询一键直接,菜单选项选来选去的才进去是多么恼人的一件事儿。手机的短信,电话功能才是核心。
  • 关机闹铃当然要native支持,没用过还真没发现,原来现在很多手机都不支持这个功能才使得很多人睡觉还得开着机。
  • 照相机必须强劲,总有人说你想要高清晰度就买相机啊。带个手机我都嫌累赘,还能拿相机吗?况且相机能发彩信吗,能用来扫描二维条形码吗,能把照片通过Email发送走吗。

To Be Continue……

同时为了适应PWN的目的,手机最好带有下属特性

  • 电池工作时间足够长久,怎么也得能满功耗(WIFI,蓝牙全开,打着游戏或者打电话)下跑一天吧
  • 需要蓝牙,需要NFC,需要WLAN网卡,最好支持monitor mode
  • 如果能有通用USB接口,有红外,rj45接口就更好了
  • 操作系统不管是Android还是Windows Phone,但一定得做到能安装任意软件,脚本环境,完全调用手机每个功能部件

To Be Continue……

眼下看,饱含Nokia情节的我感觉Lumia 1000极有可能达到上述要求,期待上市中……

BackTrack5 R2 persistent USB 安装

这两天Anonymous 放出来了 Live CD 的OS,基于ubuntu的,折腾两天,想通过Lili把它搞到U盘上并且设置persistent模式。折腾期间还阴差阳错的顺带试了试Anonymous OS(使用TOR匿名网络),可是效果欠佳,估计是TOR被墙的原因。折腾了一天,突然看新闻发现Twitter上Anonymous组织放话说SourceForge上面的Anonymous OS不是他们发布的,有可能有恶意软件包含其中。遂没有再折腾下去,不过从界面看来”Anonymous OS”还是很酷的,稳超Backtrack。

反正手也折腾热了,就再关注下Backtrack吧,月初Backtrack5 发布了R2版本。从Backtrack5开始就一直用着不是很舒坦,官网上的教程也没随着更新,如何把Backtrack5搞到USB上而且是persistent模式至今未成功啊。看国外论坛上提到一个想法不错,Backtrack是支持硬盘安装的,而且是全自动化的,那用这种方法直接安装在U盘上不是也可以~试了一下午,流程如下:

1. 用lili或者unetbootin把iso搞到一个U盘A上

2. 重启后设置BIOS,设置用U盘启动,而且要把硬盘全部禁用(保证后面U盘安装的时候别影响到硬盘)

3. 进入U盘A的BT5,再插入一个U盘B(建议16G),在BT中运行桌面那个sh脚本

4. 运行后会进行一系列设置,选择新插入的U盘(sda或者sdb,反正整个电脑目前就它一个可见)

5. 进行安装,大概得一个小时吧,安装完毕。

U盘B上的就是Persistent的Backtrack5 R2了,用U盘B启动电脑,没有开机选择界面,直接进入系统 root/toor

另外我使用中发现Backtrack5 自带的wicd 连接无线网总是失败,关于这个问题论坛上问的人也很多。下面就是一个受害者咆哮的节选

After much hair pulling, screaming at myself and yelling more cause I accidentally screwed up my mac osx lion install on my macbook pro.

所以还是不折腾wicd了,用iwconfig配置无线网吧,虽然是命令行工具,但也不麻烦。这里以wpa为例吧,现在wep很少了。

1、首先iwconfig一下看看有没有无线网卡,如果没看到,那可能是无线网络开关没开。找到的无线网卡是wlan0

2、iwlist wlan0 scanning  搜索一下可用的无线网络,主要是为了得到SSID,如果要连上的无线网络的SSID是隐藏的,可以跳过这一步。这里我的SSID是freebug

3、接下来就要用wpa_supplicant来进行配置了。

wpa_passphrase freebug 11223344 > /etc/wpa_supplicant.conf 把信息写入到配置文件中,上面freebug是SSID,11223344是无线网络设置的wpa密码。 

4、wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf  设置无线网络参数

5、dhclient wlan0,稍等一会就可以获得正确的ip地址了。

ANTLR Python Runtime Install

ANTLR能够生成Python形式的parser和lexer,但要使用这两个er需要安装python的antlr运行时库。

wget http://www.antlr.org/download/antlr-3.1.3.tar.gz 
tar xzf antlr-3.1.3.tar.gz    
cd antlr-3.1.3/runtime/Python    
sudo python setup.py install

我用的是Python 2.6,它会去下载
http://pypi.python.org/packages/2.6/s/ setuptools/setuptools-0.6c5-py2.6.egg

但该版本的egg已经不存在了,所以运行时会安装失败。 解决方案:手动下载新版本egg
http://pypi.python.org/packages/2.6/s/ setuptools/setuptools-0.6c11-py2.6.egg

并放在setup.py目录下,修改为原来的文件名(c11改为c5),再次安装即可成功