可可熊的窝

Tag Archives: Linux

Linux系统下E680使用USB网模式

IN:Linux   Tags: ,    Comments:4

草儿同学写了一篇关于在Win下面E680的USB网模式使用,俺就说一说Linux下的使用吧。
对于目前主流的发型版来说驱动问题应该不会有的,2.6.12以后的内核应该都可以直接识别E680的,首先在手机上把连接电脑的模式设计为USB网,然后连接数据线,系统会识别到有新的网卡,在我的网络配置中可以看到:
Motorola PCS EZX GSM Phone(USBLAN),设备名一般是usb0,我们先激活它,

[cocobear@cocobear ~]$ sudo ifconfig usb0 192.168.1.1
然后ping一下手机:

[cocobear@cocobear ~]$ ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=3.59 ms

接下来我们就可以对E680进行操作了,可以使用telnet登录,用户名root,密码为空:

[cocobear@cocobear ~]$ telnet 192.168.1.2
Trying 192.168.1.2…
Connected to 192.168.1.2.
Escape character is ‘^]’.

MontaVista Linux Consumer Electronics Edition 3.0
Linux/armv5tel 2.4.20_mvlcee30-mainstone

(none) login: root
Linux 192.168.1.11 2.4.20_mvlcee30-mainstone #7 Fri Feb 13 15:39:51 CST 2004 armv5tel unknown

MontaVista Linux Consumer Electronics Edition 3.0

为了文件传输方便我们还是使用smb服务把E680挂载到电脑上:

[cocobear@cocobear webpage]$ sudo mount.cifs //192.168.1.2/system /mnt/o/ username=root

这里我们需要使用mount.cifs,而不是平常使用的mount,这时我们就把E680当作普通的一个文件夹来进行操作了。

如果你的系统使用的是utf8(使用locale查看),那么会出现乱码的现象,这里有一个解决办法,我没有去试,应该可以的,但是很不方便,根据文中提到的原理我们完全可以这样搞定:

[cocobear@cocobear soft]$ export LC_ALL=zh_CN.GB18030

这里你需要把Terminal关掉,重新打开一次,如果你使用的是gnome-terminal,可以在菜单中把当前显示的编码改为GB18030,这样访问E680中的文件就不会是乱码了:
[cocobear@cocobear ~]$ cd /mnt/o/mmc/mmca1/soft/
[cocobear@cocobear soft]$ ls
quicksms.jar 快捷方式更改.mtf 删自带主题1_0.mpkg
YYwb_V0.1.3_For_E680i 快速短信(20080303)
[cocobear@cocobear soft]$

如果你想在图形界面中使用的话可以在窗口管理器的菜单中找到:打开位置这个选项,在这里输入:
smb://192.168.1.2/system
你就可以很方便的进行操作了,但这时乱码还会出现:-(

很不幸,俺发现没有权限对挂载的文件系统进行操作,郁闷,暂时还没有找到解决的办法:-(

Update 08.04.01:
今天又试了试发现在图形界面(nautilus)中各种复制、删除都正常,但命令行下就出错了:

[cocobear@cocobear soft]$ cat >d
bash: d: 权限不够

很奇怪的错误,乱码问题在nautilus中依然存在。

03-31
2008

西安网通drcom分析

IN:Linux   Tags: ,    Comments:10

好多天没有在Linux下上网了,网通在学校使用了drcom作为pppoe拨号的一个补充,目的是防止用户使用代理、监视用户使用情况,而且这个drcom是经过修改的,在Linux下没有对应的版本。所以这段时间一直不能上网,花了几天的时间抓包分析、测试,仍然没能解决Linux下上网的问题,现在只能通过wine模拟运行网通给的drcom客户端来上网,详细的使用可以参考草儿同学的一篇文章

记一下这几天分析的结果:

先首说一下整个通信过程,pppoe拨号连接上去后打开drcom客户端,通过wireshark抓包可以看到,drcom首先给1.1.1.1与202.1.1.1这两个ip同时(Windows上抓包的时间戳是相同的)发送一次UDP包,数据长度为8字节,接着服务器(221.11.20.10)会返回两次UDP包,内容是相同的,数据长度为16字节。接下来drcom会发送96字节的UDP包到服务器,服务器返回16字节UDP包。然后重复这一过程一次,不过这一次通信中第一次发送的UDP包的目的变为221.11.20.10并且只发一次,服务器也只给一次响应。首次通信结束后每隔18秒会重复上面通信过程一次。如下图:

first.png

下面对每次发送的UDP包中的数据进行分析:
客户端—->服务器:
07 01 08 00 01 00 00 30 00 00

上面8个字节是客户端给服务器的请求,固定不变,代表这是客户端第一次请求(这里指的第一次是指服务器与客户端4次UDP通信中的第一次)。

服务器—->客户端:
07 01 10 00 02 00 00 00 30 6a 0a 00 c0 a8 10 86

最前面的8个字前是数据类型,代表了这个UDP包是服务器给客户端的第一次响应,这个是一直不变的。蓝色部分应该是一个类似签名(暂时先这样叫吧)的东西,每次通信这4个字节中的前两个字节一直在变化,后两个字节隔一段时间(约1 小时左右)会加一;红色部分是客户端每次pppoe拨号上去后分配到的IP地址;

客户端—->服务器:
07 00 60 00 03 00 00 00 00 00 00 00
c0 a8 10 86 00 03 00 02
30 6a 0a 00 ca 3c 96 b000 00 00 00 02 74 e2 4d 49 75
00 03 c0 51 08 f6 ff ff ff ff 00 a6 15 00 00 00
00 8b c0 51 40 34 ff ff ff ff 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00

红色前边的12个字节是固定不变的,代表了这是客户端第二次的请求;红色部分4个字节是从上次服务器的返回中得到的,也是本机IP;绿色的4个字节含义不清楚,这4个字节有时候会变为00 02 00 02,变化规律目前不太清楚,不过在一次正常上网的情况下(这里指每隔18秒服务器会收到客户端发出的这些UDP包)这个是一直不变的;

蓝色的4个字节就是上次得到一个签名;接下来紫色的4个字节是目前最棘手的,这4个字节每次通信都在变(也就是每隔18秒变一次),而且我抓了2个小时的包把这4个字节提取出来,并且排序也没有发现有任何规律;再下来4个0是一直不变的;

粉色显示的这6个字节应该是和系统相关的信息,经过我的测试在同一机器上这个值是一直不变的,直到今天我用wine运行drcom才发现这6个字节在Linux下是全零,我猜想这个应该是系统信息吧;

下来浅蓝色的这一行16个字节在同一个机子上是不变的,但在不同的机子上还是有些差异的,有的机子上08 f6变为了00 7b,也有的变为了0c b8;甚至有的机子这一行只剩下00 a6 15 00 00 00这6个字节;

下来这一行中的内容也基本固定,只有40 34这两个字节会在你断线重拨后变化,也就是说在一次正常的上网情况下这两个字节是不变的,但这两个字节是如何得到的我就不清楚了,感觉这两个字节很重要,我曾经试着穷举这两个字节,不过没有任何收获,很可能这两个字节和前面某些字节有联系;

剩余的26个字节大部机子会全填零的,不过也有机子不是这样,有可能有更多的零,比如上面提到浅蓝色的那一行有可能只剩下00 a6 15 00 00 00这6个字节,这种情况会多6个字节的零;也有的机子会以16字节为单位重复类似“00 03 c0 51 08 f6 ff ff ff ff 00 a6 15 00 00 00”这样的数据;

服务器—->客户端:
07 00 10 00 04 00 00 00 2c 10 63 96 00 00 00 00

这是最后一次服务器发给客户端的UDP数据,前几个字节是数据类型,代表服务器发给客户端的第二次响应,后几个字节没有去研究,现在还卡在上面96个字节呢!

目前我只能根据我自己的机子把一些与机器、系统相关的字节确定下来,然后重点去分析那96字节中蓝色、深蓝色、紫色那几位的字节,不过已经好几天了,还是没有什么进展:-(

写出来供大家参考,一块研究,有什么不对的地方敬请指正;在Linux使用wine运行这个drcom感觉不爽的很!!

12-19
2007

重新把代理打开了

IN:Linux   Tags: , ,    Comments:4

还是原来的地址

http://cocobear.info/gfw

以前大概是因为被太多人用了,所以导致DH把这个给我封了,但后来用其它代理一点也不习惯,只好重新开始用自己的代理。不过这次加入了验证功能,一般人访问不了,如果谁想用这个代理可以发邮件给我,我告诉你用户名,密码。

说下配置方法:
首先在gfw这个需要被保护的文件夹下面建一个文件.htaccess,添加以下内容:

AuthUserFile /home/cocobear/cocobear.cn/gfw/.htpasswd
AuthName “Please contract cocobear”
AuthGroupFile /home/cocobear/cocobear.cn/gfw/
AuthType Basic
require valid-user

挺好理解的,就不多解释了,require选项是指定允许访问的用户,valid-user指所有有效的用户,也可以指定某些用户。

接下来是生成.htpasswd文件,需要用htpasswd这个工具来向.htpasswd添加新用户名:

htpasswd -m .htpasswd username

输入命令后会要求为该用户输入密码。这样是生成单个用户,其它批量生成用户可以查看htpasswd的手册,密码是经过md5加密的。

好了,这才算是专用代理。

12-07
2007

换Amarok听歌了

IN:Linux   Tags: ,    Comments:8

首先是安装:

rpm -ivh http://rpm.livna.org/livna-release-7.rpm
yum install amarok amarok-extras-nonfree

这个是F7的安装方式,其它发型版的安装方法可以参考官方的安装指导。
我装的时候出现了点小问题,它需要的一个库文件比我已经有的版本要低,俺只好把那个库给删掉:

rpm -e –nodeps -ffad

指定–nodeps选项可以不检查依赖关系,这样即使有其它软件需要这个库也可以直接把它删除(因为我们一会儿还会装一个的)。

装好后就可以用了,不过显示的标签是乱码,只好找个工具把所有歌的标签改为GBK:

find . -iname “*.mp3″ -execdir mid3iconv -e GBK {} \;

mid3iconv这个程序是一个python写的工具,可以在这里下载.

不过貌似有点大了,我机子太老。还支持从网络搜索歌词,中文歌曲好像不行,有点郁闷。

10-16
2007

使用vim+cscope阅读源码

IN:Linux   Tags: , ,    Comments:9

vim与cscope安装就不说了,一般的发行版都会有的。不过如果你是源码编译的vim,请使用–enable-cscope选项。

-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

在使用cscope之前需要先生成一个数据库,你可以使用cscope-indexer(如果多个目录你可以使用-R选项),它会在当前目前下生成一个cscope.files的文件,这个文件包含了cscope需要生成索引的全部文件,因为cscope-indexer不会自动查到cpp,java后缀的文件,因此最后使用find来生成cscope.files文件:

[cocobear@cocobear src]$ find ./ -name “*.c” -or -name “*.h” -or -name “*.cpp” > cscope.files

上面的命令会把当前目录下所有.c,.h,.cpp文件列出并写入cscope.files文件中。接着使用cscope -bq来生成索引引。接着你就可以使用vim来打开一个文件来浏览代码了。使用cs(cscope写)命令来实现函数的调用,定义查找:

s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文

例如:cs find c do_cscope 可以用来查找项目中调用了do_cscope函数的函数,在vim会以一个列表的形式列出所有相关的内容,你可以输入数字来选择。

当然如果你的源码中只含有.c,.h文件,你可以直接使用

cscope -Rbq

来生成索引文件。

如果你有兴趣的话可以在vim里输入:cs help来查看更多cscope的信息。

BTW:总觉得在kscope里面看代码不爽的很,还是喜欢vim。

10-12
2007

vim进阶

IN:Linux   Tags: ,    Comments:4

/*摘自:http://edt1023.sayya.org/vim/index.html
  *
  *里面有很多非常好用的我用蓝色标记了一下,看看你都知道这些好用的功能吗?
 *
 */

Ctrl+f 即 PageDown 翻頁(Forward,向前、下翻頁)。
Crtl+b 即 PageUp 翻頁(Backward,向後、上翻頁)。

0 是數目字 0 而不是英文字母 o。移至行首,(含空白字元)。
W 移动一个符,但會忽略一些標點符號。
e 移至後一個字字尾。
E 同上,但會忽略一些標點符號。
b 移至前一個字字首。
B 同上,但會忽略一些標點符號。
H 移至螢幕頂第一個非空白字元。
M 移至螢幕中間第一個非空白字元。
L 移至螢幕底第一個非空白字元。

) 移至下一個句子(sentence)首。
( 移至上一個句子(sentence)首。sentence(句子)是以 . ! ? 為區格。
} 移至下一個段落(paragraph)首。
{ 移至上一個段落(paragraph)首。paragraph(段落)是以空白行為區格。

R进入替换模式

I 在行首開始輸入文字。此之行首指第一個非空白字元處,要從真正的第一個字元處開始輸人文字,可使用 0i 或 gI(Vim 才有)。
A 在行尾開始輸入文字。這個好用,您不必管游標在此行的什麼地方,只要按 A 就會在行尾等著您輸入文字。
O 在游標所在行上開一新行來輸入文字。
J 將下一行整行接至本行(Joint)。

dG 刪至檔尾。
d1G 刪至檔首。或 dgg(只能用於 Vim)。
D 刪至行尾,或 d$(含游標所在處字元)。
d0 刪至行首,或 d^(不含游標所在處字元)。請回憶一下 $ 及 ^ 所代表的意義,您就可以理解 d$ 及 d^ 的動作,這就是 vi(m) 可愛之處。

5J 將五行合併成一行。
5i A 然後按 Ecs,插入五個 A。中文也可以!
2i sys Esc 插入 syssys。中文也可以!

:ce(nter) 本行文字置中。注意是冒號命令!
:ri(ght) 本行文字靠右。
:le(ft) 本行文字靠左。所謂置中、靠左右,是參考 textwidth(tw) 的設定。如果 tw 沒有設定,預設是80,就是以 80 個字元為總寬度為標準來置放。當然您也可以如 sw 一樣馬上重設。

gqap 整段重排,或 gqip,在段落中位何地方都可以使用。和中文的配合見下述。
gqq 本行重排。
gqG 全文重排,是以游標所在處的段落開始重排至檔尾。以空白行為段落的間隔。

» 整行向右移一個 shiftwidth(預設是 8 個字元,可重設)。这个好啊,写代码时缩进就方便了。
« 整行向左移一個 shiftwidth(預設是 8 個字元,可重設)。

:[range]s/pattern/string/5.1
range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。
pattern 就是要被替換掉的字串,可以用 regexp 來表示。
string 將 pattern 由 string 所取代。
c confirm,每次替換前會詢問。
e 不顯示 error。
g globe,不詢問,整行替換。
i ignore 不分大小寫。

mx x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
`x 回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。
‘x 回到書籤設定行行首。’ 是 forward quote,是 Enter 鍵隔壁那一個。

# 或 Ctrl+^ 編輯前一個檔案,用於兩檔互相編輯時相當好用。這種用法不管是 argument list 或 buffer list 檔案間皆可使用。還記得嗎?# 代表的是前一次編輯的檔案。

:f 或 Ctrl+g 顯示目前編輯的檔名、是否經過修改及目前游標所在之位置。
:f 檔名 改變編輯中的檔名。(file)
:r 檔名 在游標所在處插入一個檔案內容。(read)

vim -x [檔名] 加密编辑一个文件,每次编辑时要求输入密码,否则为乱码。也可以在编辑时使用:X命令来设置密码,不过要注意,设置以后需要保存并退出。

Ctrl+w n 即 :new。開一空的新視窗。
Ctrl+w s 即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。
Ctrl+w f 開一新視窗,並編輯游標所在處之 word 為檔名的檔案。
Ctrl+w q 即 :q 結束分割出來的視窗。
Ctrl+w o 即 :o nly! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。
Ctrl+w j 移至下視窗。
Ctrl+w k 移至上視窗。還記得 hjkl 的按鍵移動方式嗎?

:sh(ell) 執行 shell。使用 exit 回到 vim。
:r !commond 這個就妙了!會在游標所在處次一行插入外部指令 commond 執行後的輸出內容。例如 :r !date 就會插入日期時間。這在 elvis 是會插入在游標所在處那一行。
:n,mw !commond 以 n 至 m 行內之資料,當做外部指令 commond 的 input。這算是相當高級的用法了,初學者大概還用不上,不過印象中留有一個這樣的功能,以後總是會用得上的。
K 大寫 K 會顯示游標所在處之 word 的 man page 系統線上使用手冊。

09-30
2007
Page 3 of 712345...Last »
loading...