-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
603365a
commit 9d4aa47
Showing
7 changed files
with
826 additions
and
830 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -30,8 +30,8 @@ | |
<meta property="article:modified_time" content="2022-02-06T08:15:16.658Z"> | ||
<meta property="article:author" content="[email protected]"> | ||
<meta property="article:tag" content="java"> | ||
<meta property="article:tag" content="javacc"> | ||
<meta property="article:tag" content="lisp"> | ||
<meta property="article:tag" content="javacc"> | ||
<meta name="twitter:card" content="summary"> | ||
|
||
|
||
|
@@ -305,8 +305,8 @@ <h2 id="测试代码"><a href="#测试代码" class="headerlink" title=" 测试 | |
<footer class="post-footer"> | ||
<div class="post-tags"> | ||
<a href="/tags/java/" rel="tag"># java</a> | ||
<a href="/tags/javacc/" rel="tag"># javacc</a> | ||
<a href="/tags/lisp/" rel="tag"># lisp</a> | ||
<a href="/tags/javacc/" rel="tag"># javacc</a> | ||
</div> | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,7 +27,7 @@ | |
<meta property="og:description" content="bt种子文件bt通过种子文件分享已经是一个过去时了,2009年btChina就已经关闭了。现在一般都是 使用磁力链接来分享文件。那么为什么种子文件分享不再流行了呢?为什么要用磁力链接呢? 磁力链接怎么实现的呢? 嗯这是这个系列要研究的问题。但是要研究磁力链接的实现原理,最好先从种子文件开始。"> | ||
<meta property="og:locale" content="zh_CN"> | ||
<meta property="article:published_time" content="2019-01-08T16:00:00.000Z"> | ||
<meta property="article:modified_time" content="2022-02-06T09:04:19.410Z"> | ||
<meta property="article:modified_time" content="2023-07-15T08:55:05.263Z"> | ||
<meta property="article:author" content="[email protected]"> | ||
<meta property="article:tag" content="bitTorrent"> | ||
<meta property="article:tag" content="protocol"> | ||
|
@@ -231,7 +231,7 @@ <h1 class="post-title" itemprop="name headline"> | |
<i class="far fa-calendar-check"></i> | ||
</span> | ||
<span class="post-meta-item-text">更新于</span> | ||
<time title="修改时间:2022-02-06 17:04:19" itemprop="dateModified" datetime="2022-02-06T17:04:19+08:00">2022-02-06</time> | ||
<time title="修改时间:2023-07-15 16:55:05" itemprop="dateModified" datetime="2023-07-15T16:55:05+08:00">2023-07-15</time> | ||
</span> | ||
|
||
|
||
|
@@ -269,8 +269,8 @@ <h2 id="编码方式-bencoding"><a href="#编码方式-bencoding" class="headerl | |
<p>Lists are encoded as an ‘l’ followed by their elements (also bencoded) followed by an ‘e’. For example l4:spam4:eggse corresponds to [‘spam’, ‘eggs’].</p> | ||
<p>Dictionaries are encoded as a ‘d’ followed by a list of alternating keys and their corresponding values followed by an ‘e’. For example, d3:cow3:moo4:spam4:eggse corresponds to {‘cow’: ‘moo’, ‘spam’: ‘eggs’} and d4:spaml1:a1:bee corresponds to {‘spam’: [‘a’, ‘b’]}. Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics).</p> | ||
</blockquote> | ||
<p>翻译为BNF语法呢,就是如下</p> | ||
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">string : num ':' {CHAR}*</span><br><span class="line"></span><br><span class="line">num : 0 </span><br><span class="line"> | [1-9][0-9]+ </span><br><span class="line"> | '-' [1-9][0-9]+</span><br><span class="line"></span><br><span class="line">integer : 'i' num 'e'</span><br><span class="line"></span><br><span class="line">list : 'l' {element}* 'e'</span><br><span class="line"></span><br><span class="line">dic : 'd' {pair}* 'e'</span><br><span class="line"></span><br><span class="line">pair : string element</span><br><span class="line"></span><br><span class="line">element : string</span><br><span class="line"> | integer</span><br><span class="line"> | list</span><br><span class="line"> | dic</span><br></pre></td></tr></table></figure> | ||
<p>翻译为eBNF语法呢,就是如下</p> | ||
<figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">string</span> : num ':' {CHAR}*</span><br><span class="line"></span><br><span class="line"><span class="attribute">num</span> : 0 </span><br><span class="line"> | [1-9][0-9]+ </span><br><span class="line"> | '-' [1-9][0-9]+</span><br><span class="line"></span><br><span class="line"><span class="attribute">integer</span> : 'i' num 'e'</span><br><span class="line"></span><br><span class="line"><span class="attribute">list</span> : 'l' {element}* 'e'</span><br><span class="line"></span><br><span class="line"><span class="attribute">dic</span> : 'd' {pair}* 'e'</span><br><span class="line"></span><br><span class="line"><span class="attribute">pair</span> : string element</span><br><span class="line"></span><br><span class="line"><span class="attribute">element</span> : string</span><br><span class="line"> | integer</span><br><span class="line"> | list</span><br><span class="line"> | dic</span><br></pre></td></tr></table></figure> | ||
|
||
<h2 id="解码"><a href="#解码" class="headerlink" title="解码"></a>解码</h2><p>根据BNF实现的解码代码如下, 把<code>get_content()</code>方法中path替换为种子文件的路径,运行就可以看到。 | ||
返回的解析结果中会有<code>info_hash</code>,该值是根据info的bencoding的二进制串计算的sha1值。这个值很重要 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,8 +32,8 @@ | |
<meta property="article:modified_time" content="2023-01-12T09:57:51.378Z"> | ||
<meta property="article:author" content="[email protected]"> | ||
<meta property="article:tag" content="算法"> | ||
<meta property="article:tag" content="ChatGPT"> | ||
<meta property="article:tag" content="rust"> | ||
<meta property="article:tag" content="ChatGPT"> | ||
<meta name="twitter:card" content="summary"> | ||
<meta name="twitter:image" content="http://threelambda.com/images/2023-1-12-8queens-problem.png"> | ||
|
||
|
@@ -271,8 +271,8 @@ <h2 id="最后"><a href="#最后" class="headerlink" title="最后"></a>最后</ | |
<footer class="post-footer"> | ||
<div class="post-tags"> | ||
<a href="/tags/%E7%AE%97%E6%B3%95/" rel="tag"># 算法</a> | ||
<a href="/tags/ChatGPT/" rel="tag"># ChatGPT</a> | ||
<a href="/tags/rust/" rel="tag"># rust</a> | ||
<a href="/tags/ChatGPT/" rel="tag"># ChatGPT</a> | ||
</div> | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,15 +19,15 @@ | |
|
||
<script class="next-config" data-name="main" type="application/json">{"hostname":"threelambda.com","root":"/","images":"/images","scheme":"Pisces","darkmode":false,"version":"8.17.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":false,"style":null},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script> | ||
|
||
<meta name="description" content="这是&#x61;&#x6c;&#x65;&#110;&#121;&#109;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#109;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。 BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 Bi"> | ||
<meta name="description" content="这是&#x61;&#108;&#x65;&#x6e;&#121;&#x6d;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#x6d;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下: BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 BitTorrent"> | ||
<meta property="og:type" content="website"> | ||
<meta property="og:title" content="关于作者"> | ||
<meta property="og:url" content="http://threelambda.com/about/index.html"> | ||
<meta property="og:site_name" content="3.λ.形而下技术博客"> | ||
<meta property="og:description" content="这是&#x61;&#x6c;&#x65;&#110;&#121;&#109;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#109;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。 BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 Bi"> | ||
<meta property="og:description" content="这是&#x61;&#108;&#x65;&#x6e;&#121;&#x6d;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#x6d;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下: BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 BitTorrent"> | ||
<meta property="og:locale" content="zh_CN"> | ||
<meta property="article:published_time" content="2023-07-15T08:49:41.587Z"> | ||
<meta property="article:modified_time" content="2023-07-15T08:49:41.587Z"> | ||
<meta property="article:published_time" content="2023-07-15T08:53:50.358Z"> | ||
<meta property="article:modified_time" content="2023-07-15T08:53:50.358Z"> | ||
<meta property="article:author" content="[email protected]"> | ||
<meta name="twitter:card" content="summary"> | ||
|
||
|
@@ -200,10 +200,9 @@ <h1 class="post-title" itemprop="name headline">关于作者 | |
|
||
|
||
<div class="post-body"> | ||
<p>这是<a href="mailto:alenym@qq.com">alenym@qq.com</a>的技术博客,以下是作者一些个人项目。</p> | ||
<ul> | ||
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/btsniffer">bt-sniffer</a> 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。</p> | ||
<p>这是<a href="mailto:alenym@qq.com">alenym@qq.com</a>的技术博客,以下是作者一些个人项目。</p> | ||
<ul> | ||
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/btsniffer">bt-sniffer</a> 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下:<ul> | ||
<li><a href="/2019/01/09/2019-1-9-bt-1/" title="BitTorrent协议(一)之解析种子文件">BitTorrent协议(一)之解析种子文件</a></li> | ||
<li><a href="/2019/01/10/2019-1-10-bt-2/" title="BitTorrent协议(二)之获取下载源">BitTorrent协议(二)之获取下载源</a></li> | ||
<li><a href="/2019/01/21/2019-1-21-bt-3/" title="BitTorrent协议(三)之磁力链接获取元数据">BitTorrent协议(三)之磁力链接获取元数据</a></li> | ||
|
@@ -212,12 +211,9 @@ <h1 class="post-title" itemprop="name headline">关于作者 | |
<li><a href="/2019/02/18/2019-2-18-bt-6/" title="BitTorrent协议(六)之种子嗅探器">BitTorrent协议(六)之种子嗅探器</a></li> | ||
</ul> | ||
</li> | ||
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/minilisp">mini-lisp</a> 是一个精简的Lisp语言解释器,实现了闭包,宏等特性。(基于Java)</p> | ||
</li> | ||
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/simple-socks5">simple-socks5</a> 是一个基于netty的socks5代理。(基于Java)</p> | ||
</li> | ||
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/scraper">scraper</a> 是一个网页数据采集的工具。(基于JavaScript & Ruby on Rails)</p> | ||
</li> | ||
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/minilisp">mini-lisp</a> 是一个精简的Lisp语言解释器,实现了闭包,宏等特性。</li> | ||
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/simple-socks5">simple-socks5</a> 是一个基于netty的socks5代理。</li> | ||
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/scraper">scraper</a> 是一个网页数据采集的工具。</li> | ||
</ul> | ||
|
||
</div> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.