可可熊D窝

Keep it simple, stupid


  • 首页

  • 关于

  • 标签182

  • 分类8

  • 归档359

  • 搜索

诡异的shell脚本错误

发表 2007-12-21 | 分类 编程相关 | 评论数:
| 字数: 629 | 阅读 ≈ 1 分钟

今天为了方便拨号,改了改以前写的拨号脚本,没想到遇到了一个问题:使用awk分析一个文本文件时总会在我截取的第二个字段后多加一个^M(也就是r)。很自然的想到vim打开这个文本文件确认这个文件原本是否有没有“^M”,很奇怪vim里面这个文件行末没有这个东西。又和王聪在一起研究了半天我写的这个awk脚本,还试着用head+tail+cut把脚本重写了一遍,结果问题仍然存在。这时我不得不怀疑这个文本文件是不是有问题,不放心刚才看过一遍,又打开看了一次,仍然没有发现任何异常,在我们束手无策的时候突然注意到了在打开这个文本文件时vim左下脚闪了一下”dos”这几个字符,这时我们才恍然大悟,原来是眼睛欺骗了我们,vim把这个文本文件按照dos(windows)下文本进行了显示,所以^M是合法的换行,没有被显示出来。

眼睛看到的东西未必是可信的!

Comments

kongove: 在你博客边框里,订阅博客那里有乱码。 我用的是Ubuntu7.10+Firefox 2.0.0.11 应该是注释问题

cocobear: 脚本可以参考我以前写的ppp那个,没什么特别之处,只是换了个方式,所以这个就不贴了:-)

Amankwah: 唉~我在wangcong博客上对此已有评论~

dream: 你其实可以用cat -v filename 来看的:)

草儿: 眼见不一定为实,耳听也不一定为虚啊~

swordofchina: 可以把你的拨号脚本贴出来吗? 作一下参考

Python学习笔记七

发表 2007-12-21 | 分类 编程相关 | 评论数:
| 字数: 237 | 阅读 ≈ 1 分钟

import module与from module import funtion区别:
import module导入模块后你需要使用module.function()来调用一个函数,而from module import function导入一个function后你可以直接使用它。

请在你经常要使用这个function或者你确认你的代码中不会与导入的function冲突时使用from module import function,不然请使用import module。

西安网通drcom分析

发表 2007-12-19 | 分类 Linux | 评论数:
| 字数: 2.7k | 阅读 ≈ 2 分钟

好多天没有在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](https://asset-1258390188.cos.ap-shanghai.myqcloud.com/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感觉不爽的很!!

Comments

shanyal: 我是11号楼的,我安上面的方法装上 Drcom,可是当 ishare_user.exe时,出现Drcom客服端, 要输入账号,密码。 电话号的的那种界面,怎么解决呀

shanyal: 当wine ishare_user.exe,时弹出一个对话框要输入服务器,帐号,密码,服务器ip怎么弄?希望你帮我解决一下。。感谢我

草儿: 嗯,多人研究一下,希望能够尽早搞定这个问题。

kongove: 终于用wine把linux上网问题搞定了,用wine模拟时缺少四个dll,分别是NPPTools.dll、WanPacket.dll、mfc42u.dll和Packet.dll,从win下挨个cp过来就好了~~

luguo: 恩,大体看了一下。这应该就是咱们研究的全部成果了吧? 总结得不错,革命尚未成功,同志还需努力啊!!

cocobear: 这个没办法,有时候就会有这样的窗口出来,放到一边,不理它。

pottry: 这篇文章是我受益良多,这几天把上网插件写出来了

可可熊: 好多年前的东西了……

重新把代理打开了

发表 2007-12-07 | 分类 Linux | 评论数:
| 字数: 721 | 阅读 ≈ 1 分钟

还是原来的地址
http://cocobear.github.io/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加密的。

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

Comments

crazyfranc: 不错,我也给自己加一个;)

Amankwah: 好,我准备用~

Notice: 记得要把密码加上,不然被搜索比引擎收录了就麻烦了。

草儿: 呵呵,要个帐户用用先

杂七杂八

发表 2007-12-06 | 分类 Life | 评论数:
| 字数: 703 | 阅读 ≈ 1 分钟

VIM:
用vim太习惯了,现在都不习惯用IDE的文本编辑器了。刚才在桌面建了个TODO的文件,打开后(默认用gedit)写了两行就习惯性的输入了:

:w

结果原原本本的显示出来了,这才注意到这里不是vim :-),只好用Ctrl+s来保存,不过觉得很捌扭,把文本文件的默认打开方式换为了gvim,这样还好些 :-)

Mario:
比想象中难了很多,地图现在只能使用别人的地图编辑器Mappy来做,地图中的好多东西还没有解决,比如碰撞检测,目前只做了简单的一幅地图来测试,希望今天可以把地图这一块的问题解决,然后能把第一关的地图编辑出来。
图片资源也是一个问题,从别人程序那里找来的不太合适,我又PS一次,还是有些不太完美,还需要进一步改进。仍然有许多图片资源没办法得到,难道重新去整一套图片资源吗?怎么整?

用C++来写这个程序最大的问题还是对整体类的设计,感觉很乱,先做出来个大概吧,然后好好的考虑一下如何去安排这些类。

Comments

luguo: 我是在gedit里情不自禁地按了j,k。。。

crazyfranc: 看来习惯的力量真大! 图片我可以帮你找,或重新设计一些。我现在需要做新情节的策划吗?

草儿: 需要哪种方面的图片?或许我可以帮你找一些。

cocobear: 楼上: 合适的,就多出来一个函数么,弄一个tool的类封装一下,或者就干脆放在外面:-) 楼上的楼上: 就是Mario游戏中的资源,比如蘑菇,鸭子这类图片资源。 情节暂时不需要,等出来个雏形再说。

wind: 我按的是q和Shift+zz。

Amankwah: 呵呵,习惯啊,习惯啊?你用的C++?我用C写那个编码转换合适吗?

1…333435…72
cocobear

cocobear

爱折腾的技术宅一枚

359 日志
8 分类
182 标签
RSS
GitHub E-Mail Twitter 豆瓣
友情链接
  • 王聪
  • 老大
0%
© 2007 – 2020 cocobear | 521k | 7:54
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v6.7.0
Hosted by GitHub Pages
48923 56050