可可熊D窝

Keep it simple, stupid


  • 首页

  • 关于

  • 标签182

  • 分类8

  • 归档359

  • 搜索

关闭留言板

发表 2009-12-13 | 分类 Life | 评论数:
| 字数: 332 | 阅读 ≈ 1 分钟

先要对在我的那个留言板里留言的几位朋友说声:“对不起”,好久都没注意到自己还有个留言板,所以上面的留言一直没有回复,今天都回复了一下,虽然有几个月前的留言,但我还是回复了。

这个留言板也没多大用处,所以就关了它。

这个网站也就剩下博客了,或许我应该把博客也搬走,比如换到GAE上面,这样就全面把自己交给google了,呵呵。

pythunder现在可以在google code里下载了,需要另一个aes.py文件支持。

Comments

Amankwah: 你还真水产啊~

aegiryy: 不要太依赖google,万一走人就麻烦了

crazyfranc: 博客不能关

cocobear: 我是说不用这个独立的博客,用google的。

草儿: 速度

est: 板凳

PyFetion 0.2 发布

发表 2009-12-12 | 分类 Life | 评论数:
| 字数: 6.5k | 阅读 ≈ 6 分钟

PyFetion 0.2版本发布,协议根据移动09.11.04的飞信版本:Fetion2008 3.5.2(安全加强版)

http://code.google.com/p/pytool/
更新内容包含:

  1. 增加查看飞信好友是否隐身功能
  2. 增加登录时状态的选择[隐身 在线 忙碌 离开]
  3. 日志改用Python的logging模块
  4. 增加对好友状态改变的处理( 如上线等)
  5. 重写TCP方式中的底层通信函数
  6. 使用对列保存接收到的多余消息( 例如发短信时本来应该返回200 OK 却先来了个BN通知消息,以前这样会出错,现在底层会把BN消息放在队列中,返回200 OK)
  7. 修改了一些异常处理方式
  8. 增加登出,删除好友函数
  9. 改写get_contactlist函数,使用一个dict保存当前的好友列表
  10. 增加一个receive函数 做客户端的时候可以在一个线程中主调用该函数,所有的消息都会yield出来(请参考fetion.py)
  11. 修正向PC发送消息的命令,飞信新增加了一个CatMsg的命令
  12. 增加接收从最新版本PC端发送的消息功能;这个比较麻烦新版本飞信对每一个新会话使用fork出一个线程的方式;

    John先给服务器说我要开个新会话,服务应答一个消息说,你去这个IP吧,带着这个密钥
    于是John就连到了这个IP,并使用这个密钥登录,接着发一个包含Bob的uri的邀请命令;
    服务器把这个通知(包含IP 密钥和邀请者John的uri)给Bob,Bob收到服务器的通知后也用同样的密钥登录该IP
    这时John收到Bob进入会话的消息,他就开始正式发消息了13. 许多清理了修正

  13. 调整类的结构
  14. 改用MIT License
  15. 增加了一个CLI的飞信客户端 跨平台支持
  16. Fedora8 Python2.5.1测试;Windowx XP Python2.6.4测试;Win7 Python2.6.2测试;Mac 10.5.7 Python2.5.1
  17. 我忘记在这里列出来的

./fetion.py
————————基于PyFetion的一个CLI飞信客户端————————-

命令不区分大小写中括号里为命令的缩写

help[?]            显示本帮助信息
ls[l]                列出好友列表
status[st]        改变飞信状态 参数[0隐身 1离开 2忙碌 3在线]
                     参数为空显示自己的状态
msg[m]           发送消息 参数为序号或手机号 使用quit退出
sms[s]            发送短信 参数为序号或手机号 使用quit退出
                     参数为空给自己发短信
find[f]            查看好友是否隐身 参数为序号或手机号
add[a]           添加好友 参数为手机号或飞信号
del[d]            删除好友 参数为手机号或飞信号
cls[c]            清屏
quit[q]           退出对话状态
exit[x]           退出飞信

fetion.py特色:

  1. 多线程支持,同时收发消息
  2. 添加,删除,好友,判断好友是否隐身功能
  3. 占用资源少,我正写这博客的时候官方的飞信占我96.8M的内存
  4. 跨平台支持
  5. 扩展性好,加两行代码就可以实现从手机发命令关机等功能
  6. 其它我没发现的

    Comments

taotao: 我错了,uuid是对的,但是在登录的第二步会返回500错误。我不知道这是是不是GAE对urllib重载导致的。出错的地方就在5次retry那,因为不是405错误,所以直接raise跳出了。

cocobear: 500错误是飞信服务器那边的问题,我试过了,可以登录,发短信 不过也遇到过500错误,飞信服务器不太稳定,前几天有一段时间就干脆登录不上去了。

yorks: 能改成手机终端登录吗?

可可熊: To:yorks 首先你手机得有一个shell,然后得支持Python。 我的手机太老了,不行。

非金属: 这么多人关注…

yorks: “””协议应该都是一样的吧。我不太清楚手机上协议和PC上的区别。 但是你用这样的协议在手机上实现了,也应该可以使用飞信的,除非你走的是移动的网络,然后移动直接判断你手机号那种方式。””” 移动有根据移动的网络(IP??)来判断登录方式?但是从您给出的协议上看,看不出移动是如何判断的?所以我想手机版的协议和PC版的协议应该不同,这仅仅猜测,无法验证呢。。。

柠檬园主: 用get_contactlist方法得到的好友列表里是这样的 {‘sip:888888888@fetion.com.cn;port=8888’:[‘nickname’,’13888888888’,’0’,’B’],’sip…..} 这样的格式,然后我在LOGIN的时候将这个LIST转换出另一个辞典 {‘13888888888’,’sip:88888888@fetion.com.cn;port=8888’} 再判断要发送的手机号,如果不是本机(登录手机号)并且号码在这个DICT里,就取出SIP来。然后在send的时候把原来和to由tel:13888888888改成了sip:888888888,但后怎么再login取出来的contactlist辞典里,value的list里的第二项总是空,也就没办法测试是否能成功了。郁闷。

柠檬园主: 原来是因为飞信改协议了。 不过按下面这个博客,他已经解决了。 {“2009年12月9日中国移动飞信服务器升级,变更了登录地址和部分协议。升级后的协议无法直接给接收方手机号(tel)发送短信,只能给飞信号(sip uri)、自己的手机号发送短信。本人通过重新抓包,对飞信协议进行分析,修改了sms.api.bz接口代码,通过将接收方手机号(tel)转换为 user-id,再通过user-id转换为飞信号(sip uri),进行短信发送,一切OK。”} 地址:http://blog.s135.com/fetion_api/

cocobear: 你可以参考fetion.py 从手机号获取对应的uri 使用Uri发送短信就可以了。

cocobear: 给好友发短信,使用sip:xxx 这种方式,而不是直接使用手机号,移动目前不支持手机号那种方式。

柠檬园主: 搞定了,就是按上面的办法。 在login里增加下面for k,v开始的部分 #self.get_personal_info() if not self.get_contactlist(): d_print(“get contactlist error”) return False for k,v in self.contactlist.items(): print v print k[:13] if k[:4]==’sip:’ and len(v[1])==11 and v[1].isdigit(): self.num2sip[v[1]] = k[:13] send_msg下的这个判断 elif flag != “CatMsg” and len(to) == 11 and to.isdigit(): 下面改成: if to != self.mobile_no and to in self.num2sip.keys(): to = self.num2sip[to] else: to = “tel:”+to 当然num2sip = {}要在class前面先定义一下。

辉: 是JDK吗 JDK是1.6 用的JyDT支持Jython2.1

cocobear: Python版本低了,要2.5以上。

辉: 我下了个Jython2.5 运行fetion.py又出现下面的错误啊Traceback (most recent call last): File “fetion.py”, line 450, in sys.exit(main()) File “fetion.py”, line 399, in main mobile_no = raw_input(toEcho(“13810389680”)) File “fetion.py”, line 347, in toEcho return str.decode(‘utf-8’).encode((os.name == ‘posix’ and ‘utf-8’ “””or ‘cp936’”””)) TypeError: expected a str

cocobear: To: 剑23 刚修正了这个问题,感谢反馈。

匆匆: 真不错。上一个星期还看PyFetion呢,这周就更新了:) BTW:好像用退格键删中文会有问题,好像只删了半个中文。。。 Exception in thread Thread-4: Traceback (most recent call last): File “/usr/lib64/python2.6/threading.py”, line 522, in __bootstrap_inner self.run() File “./fetion.py”, line 90, in run self.cmd(raw_input(self.hint)) File “./fetion.py”, line 107, in cmd self.phone.send_sms(toUTF8(arg)) File “./fetion.py”, line 344, in toUTF8 return str.decode((os.name == ‘posix’ and ‘utf-8’ or ‘cp936’)).encode(‘) File “/usr/lib64/python2.6/encodings/utf_8.py”, line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xe8 in position 3: uned end of data

可可熊: To:BackFire 你可以看下PyFetion.log 卡在哪儿了,估计是你网络的问题。

BackFire: 我这里python fetion.py输入手机号和密码之后,就一直显示滚动的“—>” 为啥?

剑23: 好友列表序号对应有问题,显示的序号对应有些正确,但有些对不上

可可熊: select只有使用TCP方式才需要用到,uuid以前似乎正常。或者自己写一个这样的函数。

yorks: “””To:yorks 首先你手机得有一个shell,然后得支持Python。 我的手机太老了,不行。””” 其实我是想了解一下fetion手机版的协议?不知道如何下手!

柠檬园主: 可可熊,我是从SVN上当的PYF下来, 目前还在本地开发测试,但为什么只能发送给自己?给飞信好友发都收不到,并且也不返回错误,这个是飞信服务器的问题吗?代码如下: phone = PyFetion.PyFetion(“13XXXXXXXX”,”XXXXXXXX”,”HTTP”) #try: phone.login() #只能发送给飞信好友(或自己) phone.send_sms(msg) #发给自己 phone.send_sms(msg,”15XXXXXXX20”) #发给好友 phone.logout()

可可熊: To:匆匆 删除中文有没问题啊,这个是raw_input这个函数,你自己手动试下这个函数,你看出错吗?

CODY: 用CLS客户端,接收信息的速度特别慢,有时候还收不到,这是什么原因?

可可熊: To:CODY 接收从PC来的信息会慢一点,有5秒的延时; 收不到是收不到哪儿的信息呢?有没有具体的日志

CODY: 原因已经查明,你在self._sock.recv中没有设置超时,导致卡死在那里。 加了setTimeOut后就不会卡死了。。。

zengleo: 这个真棒,一直关注可可熊博客~ 呵呵!

cocobear: 如果你是从浏览器里面复制的代码,可能会出错的,直接下载代码,或者使用SVN.

taotao: select不要就行了吧,但是好像uudi系列函数工作不太正常,所以没搞定。。。

草儿: 希望pyfetion越来越强大,虽然现在不用飞信了,还是顶一个。

taotao: 可可熊真勤劳^^

taotao: 谢谢之余想问下这个支不支持群发短信的呢?

a: 感谢cocobear的辛勤劳作,向你表示由衷的敬意! 你的PyFetion真的很棒!

可可熊: To:taotao GAE上使用HTTP方式,我测试过HTTP方式,发送短信 消息是没问题的,不过我没有在GAE上测试。 你可以测试一下。 HTTP方式的变化不大

阿神: nice work. keep up!

Homer: 支持一下作者的辛勤工作~ 辛苦了~

小卒: 太好了,先收下了。

可可熊: 协议应该都是一样的吧。我不太清楚手机上协议和PC上的区别。 但是你用这样的协议在手机上实现了,也应该可以使用飞信的,除非你走的是移动的网络,然后移动直接判断你手机号那种方式。

taotao: To:可可熊 En, it’s ok, thank you!

taotao: 请问可可熊,现在2009的协议是不是GAE就真不能用了呢?

1: 在python2.6测试成功,期待可以移植到python3.1 我自己试过用2to3来转换,转换后由于python3默认定义所有字符串就是unicode,而且严格区分bytes与str对象,后来实在搞不惦哈

可可熊: To:taotao 群发短信就是一个一个的发短信,你可以写个循环 for i in []: send_sms(‘hi’,i) To:1 python 3.1改动还比较大,我没有环境测试。等这个版本的一些问题解决了我会折腾下3.1

辉: 运行Fetion.py时出现错误Traceback (innermost last): File “fetion.py”, line 7, in ? File “F:\bea\workplace\Test\.cachedir\packages\PyFetion\PyFetion.py”, line 97 class SIPC(): ^ SyntaxError: invalid syntax 是怎么回事啊,我在eclipse上装的Jython 不懂Python 帮下忙谢谢

cocobear: 你的版本是多少,好像不支持这class。

nsnake: 不知道他的手机号到url是怎么转换的

tina: 你好,试了下查看好友隐身的功能。一输入就卡住了 只能重启pyfetion 试了很多人 都不行 请问这是为什么呢

可可熊: 可能对方的版本的原因,我是在旧的版本上测试的。

韩世界15680180146: 我下了你的新版本,就2个文件。这个应该是LINUX下用的吧。有WINDOWS下的版本吗???

天文也: https://uid.fetion.com.cn/ssiportal/SSIAppSignIn.aspx 不可用了?请楼主确认!

smilepig: @天文也 飞信换协议了又~~~等可可熊更新吧~~

frank: 最近开始不能用了,是不是uri变了还是什么,麻烦更新下,谢谢。

手动生成X509证书

发表 2009-10-19 | 分类 编程相关 | 评论数:
| 字数: 1.9k | 阅读 ≈ 2 分钟

X509证书的详细描述在rfc2459中。

简单的来说X509证书是这样的:

Certificate  ::=  SEQUENCE  {> 
        tbsCertificate       TBSCertificate,> 
        signatureAlgorithm   AlgorithmIdentifier,> 
        signatureValue       BIT STRING  }> 

   TBSCertificate  ::=  SEQUENCE  {> 
        version         [0]  EXPLICIT Version DEFAULT v1,> 
        serialNumber         CertificateSerialNumber,> 
        signature            AlgorithmIdentifier,> 
        issuer               Name,> 
        validity             Validity,> 
        subject              Name,> 
        subjectPublicKeyInfo SubjectPublicKeyInfo,> 
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,> 
                             -- If present, version shall be v2 or v3> 
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,> 
                             -- If present, version shall be v2 or v3> 
        extensions      [3]  EXPLICIT Extensions OPTIONAL> 
                             -- If present, version shall be v3> 
        }

X509由三部分组成,分别是TBSCertificate,AlgorithmIdentifier ,signatureValue 。TBSCertificate包含了证书的详细信息,如证书编号,颁发者,发行者,过期日期等;AlgorithmIdentifier 是指证书自身使用数字签名算法标识,TBSCertificate中也有一个AlgorithmIdentifier,这个是证书可以用作的数字签名算法标识;signatureValue是指使用AlgorithmIdentifier 所指定的算法对整个TBSCertificate签名得到的数字签名。

可以使用openssl命令行工具生成X509证书,不过需要用openssl先生成一对RSA密钥对,如果只有公钥需要生产证书,就需要自己通过编程调用openssl函数来生成证书了。openssl自带的例子中有一个生成证书的例子,不过也是先生成一对RSA密钥对。

通过对openssl源代码的分析,可以X509_set_pubkey函数只是用到了RSA结构中的公钥,所以我们可以通过自己创建一个openssl的RSA结构,只设置RSA密钥对中的公钥,来完成证书的生成。

参考代码

该函数入口参数是一个证书的主题名,和128字节的公钥(1024位;RSA中的modulus INTEGER—-n),返回一个证书ID,和DER编码的证书,默认使用的publicExponent INTEGER, – e为65535。

参考:
RFC2459
PKCS#1
openssl

Comments

欢欢: 搜些证书的东西,竟然链接到了你这里,呵呵~

Kermit Mei: 现在都不敢来DP这里了,每次进来,都是满头雾水……貌似每篇我都看不懂了……

草儿: 你到底在公司是做什么,怎么什么都研究

luguo: DP同学是名全面的选手。。。

Jerry: 有个供参考的资料,X.509标准简介:http://www.wosign.com/Basic/x509.htm

在T400上装了MAC

发表 2009-09-27 | 分类 Life | 评论数:
| 字数: 576 | 阅读 ≈ 1 分钟

机器型号:T400-2767CTO

MAC版本:ideneb 1.5.1 mac 10.5.7

使用硬盘安装助手+变色龙(ddmac)从硬盘安装[相关的文章可以G之]

在选择安装包的时候需要注意:
声卡驱动:选择VoodooHDA
网卡驱动:选择Intel82566
芯片驱动:INTEL ICH
电源驱动:VoodooBattery

独立显卡驱动目前似乎没有;无线网卡也不行
输入法使用FIT

感觉还不错,最好使用硬盘安装,而不是刻碟,我刻碟装时速度慢死了.

Comments

evil0x86: 不知道r61 上是否可以.

草儿: 靠,安装比linux难搞多了,真是折腾啊,十一再说。

agate: 哈! 我曾经也试过 T400 安装 MAC 10.5 也是显卡无法搞定. 所以终究放弃了. 我等了 http://www.insanelymac.com/forum/index.php?showtopic=107526 N久了, ATI3470的驱动始终是 coming soon. 啥时候你试验成功了, 一定要奔走相告噢!

可可熊: 呵呵 显卡使用集成的也行 一般使用差不多

可可熊: agate 你的博客验证码太复杂了 我都认不出来,这样就失去了验证码的意义 我觉得WP自己的SPAM做的已经很好了,没什么必要用验证码的。

网页前端编程

发表 2009-08-25 | 分类 Life | 评论数:
| 字数: 415 | 阅读 ≈ 1 分钟

IE6竟然不能连接向同一个网页发请求[做个按钮使用ajax请求一个网址 你们在服务器上发现 其实IE6只发了一次 但是ajax返回确是成功的]

IE7对iframe标签的支持竟然有问题–>http://zhengrenchi.blogbus.com/logs/23056446.html

IE6与IE6 div标签的默认值不一样。

JS代码报错的位置竟然不是真正出错的位置!

…….

就这些简单的问题折腾了我好几天。web前端编程太麻烦了,这么痛苦的开发环境,真是受不了。

Comments

草儿: 刚接触一个新领域肯定会犯错,呵呵,不过以coco的实力,这些都不怕的。

Allen.M: 第一个问题,基本没本入门的AJAX的书都会讲的,一般链接里面加个时间戳就可以了.IE6这样设计也是有道理的,不重复请求相同的资源。

Allen.M: 写错了,是每本

可可熊: 呵呵,我没看过ajax的书,我也是多加了个参数[当前时间]

1…789…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