B编码(Bencode)解析

2023-10-27

突然就想要解析了。。代码写的好乱。

 

想起来以前GIF图片使用的LZW的编码我还没写完解析呢。。近期大概也会写的吧。。

 

解析了一个7k的,在我这已经算小的种子文件了。


└─dictionary
    ├─string:announce
    ├─string:http://tracker.ktxp.com:6868/announce
    ├─string:announce-list
    ├─list
    ├─string:created by
    ├─string:BitComet/1.25
    ├─string:creation date
    ├─string:1301449953
    ├─string:encoding
    ├─string:UTF-8
    ├─string:info
    ├─dictionary
    ├─string:nodes
    └─list

 

第一个list里的内容是这样的:

 <list>
  <list>
   string:http://tracker.ktxp.com:7070/announce
  </list>
  <list>
   string:http://tracker.ktxp.com:6868/announce
  </list>
 </list>

大概明白是怎么一回事了。

虽然好像这东西跟json很像?没注意过哪里有这个跟json的比较.

不过这东西有点太傻了。。它唯一的好处就是不像json那样,解析起来传统上需要分2部,词法分析和语法分析。

bencode的解码基本上完全可以把2步合起来。。

 

总之,种子文件的根节点是一个字典。

字典里面的第一个映射是由announce映射到一个主tracker

然后是由announce-list映射到一个列表,列表的内容是一个由tracker服务器组成的表。

字典里面剩下的内容是created by信息,creation date信息,encoding信息,info信息。

前2个的内容都是字符串,info信息是一个字典。

info字典的第一个内容就是files。

files的内容是一个列表,列表中每一个元素都是字典。

这些字典中的每一个当然都是对文件的描述。

 

有以下这些描述:

ed2k,filehash,length,path,path.utf-8

由于根字典下有:

 string:encoding
 string:UTF-8

所以这里的path.utf-8和path的值是一样的。

 

刚刚说到info字典的一个对象,files列表

info字典还有以下对象:

name,name.utf-8,piece length,pieces

说起这个pieces对象我就觉得囧。

所以说,这B编码的字符串根本不是字符串嘛。其实是字节流吧。

像filehash这样的东西都用字符串表示,不觉得很奇怪吗?理论上来说filehash应该是一个整数。

当然,更不济的情况下应该是一个由整数组成的列表。

算了,以后我懂了,不能把B编码中的字符串类型看成是C字符串,把它看做char型数组还差不多。

 

而pieces。。哎。。

 

说完info字典,根字典下还有最后一个对象是nodes列表。。这个列表的内容都是列表,里面是由一个其实标识着数字的字符串和一个整数0组成的。

你看,又把字符串和整数混着用了。。

 

 刚刚看到一个好贴:

http://hi.baidu.com/52taoist/blog/item/7ada6a5ea0a6934ffaf2c0fa.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

B编码(Bencode)解析 的相关文章

随机推荐

  • build JAX from source code

    Building from source JAX documentation
  • visual studio:不能加载.vdproj

    总结 下载后关闭所有vs项目 重新打开目标工程 需要完成次扩展的后续安装任务 参考 https www cnblogs com hofmann p 11183457 htm
  • 122FPS,51.9mAP 超轻量关键点检测算法PP-TinyPose来啦!

    在人机交互场景中 机器可以识别人的手势 肢体动作 表情 你可知背后的核心技术是什么吗 没错 就是关键点检测技术 它能帮你实现精准的人机交互任务 如手势控制 智能健身 体感游戏等 还可以识别交通违规 打架斗殴 违规操作等异常行为 话不多说 我
  • DVWA——XSS(Dom low&medium)

    此文章只用于学习 请勿用作其他违法犯罪行为 以下部分文字内容以图片形式展示 因为JS代码打不上去 目录 前言 XSS攻击流程 XSS的危害 XSS的漏洞类型 JS基本语句 XSS Dom Low XSS Dom Medium 前言 XSS被
  • Ubantu扩展SWAP区,使用gparted,以及死机非热启动解决方法

    Ubantu扩展SWAP区 使用gparted 以及死机非热启动解决方法 Swap分区 强制重启 扩充SWAP Swap分区 Swap分区是用来扩展内存的 即使用一部分硬盘空间作为交换 个人认为电脑内存大于16G即不需要分配Swap空间 我
  • Python字符串替换的3种方法

    Python字符串替换笔记主要展示了如何在Python中替换字符串 Python中有以下几种替换字符串的方法 本文主要介绍前三种 replace方法 常用 translate方法 re sub方法 字符串切片 根据Python字符串切片方法
  • springboot + redis多数据源 + jedis集群模式

    最近有个项目需要redis支持多个集群 网上搜了下 发现有个开源的项目spring boot starter dynamic redis 代码写的挺好 可惜只有单机版的 于是fork了他的代码改了下 支持jedis集群模式 新代码昨天已提交
  • 如何用人工智能预测股票(完整项目)

    本文由 沈庆阳 所有 转载请与作者取得联系 前言 十分钟实现人工智能股价预测 是一个深度学习的练习项目 其通过机器学习算法 根据过去几年与某只股票相关的K线走势 公司相关报道的情感分析作为数据集 通过训练来得到可以预测股价的机器学习模型 并
  • VS2008, MFC 文件的操作4 - CFile类, CFileDialog类 方式 文本方式打开

    接上一节笔记 VS2008 MFC 文件的操作3 Win32 API 方式 文本方式打开 1 代码 及 点击 子菜单项 WriteFile 时候的可选文件 void Cvs2008 SX jiaocheng12View OnFileWrit
  • 【vscode代码片段增加和删除】

    目录 一 概述 二 详解 三 实例 一 概述 项目开发中 存在很多重复代码 可将其抽取出来定义成自己的代码片段 提高编码效率 实现快捷开发 二 详解 详解1 选择并打开代码片段文件 详解2 删除代码片段文件 代码片段文件创建后会一直保存在本
  • Java7对资源释放操作的简化

    学会使用finally释放资源 public class TryCatchResourceDemo public static void main String args try 这里面只能放置资源对象 用完会自动关闭 自动调用资源对象的c
  • 童年回忆——超级玛丽(内含源码inscode一键运行)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • RuoYi-Cloud版本限制一个账户只能在一个地方登陆

    RuoYi Cloud版本限制一个账户只能在一个地方登陆 一 前言 二 参考 三 代码实现 三 一 在ruoyi auth模块下的bootstrap yml文件下新增一个配置soloLogin用于限制多终端同时登录 三 二 我是在Cache
  • GUI编程(二)

    Swing Swing是GUI 图形用户界面 开发工具包 早期的AWT 抽象窗口工具包 组件开发的图形用户界面 要依赖本地系统 当把AWT组件开发的应用程序移植到其他平台的系统上运行时 不能保证其外观风格 因此AWT是依赖于本地系统平台的
  • 简单上手Raspberry Pi Pico(macOS+MicroPython)

    昨天写了Ubuntu安装Thonny并连接Pico进行开发的文章 https blog csdn net MacwinWin article details 113097180 今天就来说说在macOS上如何安装Thonny并连接Pico
  • Kubernetes 自动化诊断工具:k8sgpt-operator

    背景 在 Kubernetes 上 从部署 Deployment 到正常提供服务 整个流程可能会出现各种各样问题 有兴趣的可以浏览 Kubernetes Deployment 的故障排查可视化指南 2021 中文版 从可视化指南也可能看出这
  • 图的构建和遍历

    图是一种包括节点和边的数据结构 本文对图的构建 图的遍历给出详细的代码 其中 图的表示方法有 邻接矩阵 邻接表 图的遍历方法有 深度优先搜索 DFS 广度优先搜索 BFS 1 图的表示 1 1 邻接矩阵 include
  • python生成词云--完整代码示例

    工作之余 写个python生成词云来玩玩 运行环境 pycharm 需要引入wordcloud包 中文分词需要用到jieba 随便找了一篇介绍 故宫的文章 以该文章为例生成词云 from wordcloud import WordCloud
  • 协同办公工具:在线白板初起步,在线设计已红海

    在产业数字化转型 疫情常态化等多重背景下 在线办公 远程办公的需求不断增长 协同办公市场规模进一步扩大 吸引传统OA厂商 互联网企业 初创公司等玩家入局 市场竞争愈加激烈 按业务划分 协同办公市场可以分为综合协同管理平台 垂直协同办公软件厂
  • B编码(Bencode)解析

    突然就想要解析了 代码写的好乱 想起来以前GIF图片使用的LZW的编码我还没写完解析呢 近期大概也会写的吧 解析了一个7k的 在我这已经算小的种子文件了 dictionary string announce string http trac