1月29日 片片雪花不落别处 |
今天胃口不好,吃晚饭的时候,心不在焉,老婆看我不好好吃饭,生气了,她生起气来就像小孩儿一样两眼一瞪,嘴一噘然后就开始训我,我倒不在乎,嬉皮笑脸的死盯着她,她两眼一瞪对我说“好好吃饭!”,我就一边四目对视一边拼命往嘴里塞菜塞饭,终于看到她发毛了,她忍不住笑了,呵呵看来我还是很帅啊,眼神还会放电啊,每天看到她笑我就什么烦恼也没了。吃完饭想想这两天心烦主要还是为了太闲,都闲了快两年了,一直想等一个爆发的机会,都快憋疯了,想想这件事儿也是急不来的,再说这也不是我的错,掰指头数数原来在词霸组的40多个人已经走得只剩10来个人了,真有点不甘心,本可以大干一场的,现在确只有看着别人在打仗,没仗打的日子真是难捱......难解“悠悠我心”,相信“片片雪花不落别处”,我自有我的归处,我自有我的路...... 这两天一直在做IM的插件,突然想研究一下BT文件传输的技术,这里就研究做一个记录 我选择了libbt这个库做为我的研究对像一是因为是c的代码比较好调试跟踪,另外准备的工具就source insight、cygwin、gdb (一)在cygwin下编译libbt库 这一步没碰到什么困难,主要是得先编译两个库openssl和curl两个库,先configure一下,然后到libbt/src目录下直接改一下MAKEFILE就行了主要是加上openssl和curl库的路径CFLAGS:=-g -Wall -I../include -I../openssl-0.9.7e/include -I$(top_srcdir)/include,主要是加这一句就行,然后就编过了,编的时候可能会碰到几个问题,也好解决都是c语言的语法问题,只要做少量修改就行了,有一个错误SHA1没有定义,这个是openssl的问题我没仔细看可能就是少什么宏定义吧,我没搞他定义一个空的宏就行了,这样就可以编出三个文件btcheck.exe,btlist.ext,btget.exe (二)BT文件分析函数说明 BT文件格式还是挺有意思的,可以参考libbt/doc目录下的两个文件,我从网上还找了个中文的说明,结合调试的代码说一下,要分析BT文件格式可以调试btlist.exe,首先是bts_create_filestream这个函数主要是为生成一个btStream的结构,这里主要是一些函数指针,还有文件句柄的说,然后就是调benc_get_object去取第一个对象下面就是显示对象部份btObject_dump了这个函数也很简单,就是一个递归调用的打印出所有的对象,看到这儿就可以看到BT文件的解析过程了。今天就记到这儿了,明天和朋友们去滑雪,回来再看BT Tracker的东东,继续跟代码了。 (三)BT文件格式简单说明(网上扒的,怕被删了留下来) a.BT种子用bencoding编码 b.四种类型的数据:srings(字符串),integers(整数),lists(列表),dictionaries(字典) strings(字符串)编码为:<字符串长度>:<字符串> integers(整数)编码为:i<整数>e lists(列表)编码为:l<bencoding编码类型>e dictionaries(字典)编码为d<bencoding字符串><bencoding编码类型>e c.整个文件为一个字典结构,包含如下关键字
|
编程日记
最新推荐文章于 2022-03-31 23:21:29 发布