Tor源码分析一 -- 使用工具集

Tor源码 -- core分析 tor coreor connectioncircuitstream or connection or connection负责op与or或者or与or的连接(两个主机之间的连接)。 包括TLS连接,handshake等等。 到目前为止, tor有3种握手方式:certificate up-front, renegotiation, in-protocol. or_connection_st.h声明了or connection数据类型,connection_or.c文件有操作函数。 circuit stre 阅读详情

  Tor系统是用于匿名通信的一个系统,源代码的维护到今天已经快10年。笔者从今年3月份开始陆陆续续研究Tor系统的源码,由于源码量大,也有很多需要总结的地方,所以特地在这里开辟个Tor源码分析的系列文章,供自己总结,也供大家共同探讨。


1. 源码查看工具 -- SourceInsight

  本来Tor源码在Linux下分析和调试都可以比在Windows下更专业些,但是因为笔者本身大部分时间需要在Windows下工作,所以选择了Windows下的源码分析软件。SourceInsight是个非常好的源码分析软件,用于查看各种开源代码工程都非常方便。这里选用SourceInsight作为Tor源码的基本浏览和修改工具。


2. 文档生成工具 -- Doxygen

  关于Doxygen的基本介绍大家可以在网上找到很多。简单的说,Doxygen就是将源码内的信息进行总结,生成包括函数调用关系,函数介绍等信息。这对于宏观查看代码非常重要。Tor源码内很多函数都连续嵌套非常多层,靠人为记住是非常困难的。利用Doxygen的函数调用图,能帮助我们更好的查看函数之间的调用关系。这里不介绍Doxygen如何使用,百度上有许多。注:使用Doxygen时定要打开函数调用图的生成功能。


3. 编译工具 -- MinGW MSYS msyDTK

  为了在Windows上完成对Tor的编译,需要使用到下面一些列套件。好在这些部分在Tor的FAQ中已经很详细地说明如何使用,这里就仅仅将Tor中关于如何在WIndows下编译Tor源码的部分复制于此,请大家自行查看。

##
## Instructions for building Tor with MinGW (http://www.mingw.org/)
##

Stage One:  Download and Install MinGW.
---------------------------------------

Download mingw:
http://prdownloads.sf.net/mingw/MinGW-5.1.6.exe?download

Download msys:
http://prdownloads.sf.net/ming/MSYS-1.0.11.exe?download

Download msysDTK:
http://sourceforge.net/projects/mingw/files/MSYS%20Supplementary%20Tools/msysDTK-1.0.1/msysDTK-1.0.1.exe/download

Install MinGW, msysDTK, and MSYS in that order.  

Make sure your PATH includes C:\MinGW\bin.  You can verify this by right
clicking on "My Computer", choose "Properties", choose "Advanced",
choose "Environment Variables", select PATH.

Start MSYS(rxvt).

Create a directory called "tor-mingw".

Stage Two:  Download, extract, compile openssl
----------------------------------------------

Download openssl:
http://www.openssl.org/source/openssl-0.9.8l.tar.gz

Extract openssl:
Copy the openssl tarball into the "tor-mingw" directory.
Type "cd tor-mingw/"
Type "tar zxf openssl-0.9.8l.tar.gz"
(Note:  There are many symlink errors because Windows doesn't support
symlinks.  You can ignore these errors.)

Make openssl libraries:
Type "cd tor-mingw/openssl-0.9.8l/"
Type "./Configure -no-idea -no-rc5 -no-mdc2 mingw"
Edit Makefile and remove the "test:" and "tests:" sections.
Type "rm -rf ./test"
Type "cd crypto/"
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
Type "cd ../ssl/"
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
Type "cd .."
Type "cp *.h include/openssl/"
Type "find ./fips -type f -name "*.h" -exec cp {} include/openssl/ \;"
# The next steps can take up to 30 minutes to complete.
Type "make"
Type "make install"


Stage Three:  Download, extract, compile zlib
---------------------------------------------

Download zlib source:
http://www.zlib.net/zlib-1.2.3.tar.gz

Extract zlib:
Copy the zlib tarball into the "tor-mingw" directory
Type "cd tor-mingw/"
Type "tar zxf zlib-1.2.3.tar.gz"

CHOICE:

Make zlib.a:
Type "cd tor-mingw/zlib-1.2.3/"
Type "./configure"
Type "make"
Type "make install"

Done.


Stage Four: Download, extract, and compile libevent
------------------------------------------------------

Download the latest libevent release:
http://www.monkey.org/~provos/libevent/

Copy the libevent tarball into the "tor-mingw" directory.
Type "cd tor-mingw"

Extract libevent.

Type "./configure --enable-static --disable-shared"
Type "make"
Type "make install"

Stage Five:  Build Tor
----------------------

Download the current Tor alpha release source code from https://torproject.org/download.html.
Copy the Tor tarball into the "tor-mingw" directory.
Extract Tor:
Type "tar zxf latest-tor-alpha.tar.gz"

cd tor-<version>
Type "./configure"
Type "make"

You now have a tor.exe in src/or/.  This is Tor.
You now have a tor-resolve.exe in src/tools/.

Stage Six:  Build the installer
-------------------------------

Install the latest NSIS:
http://nsis.sourceforge.net/Download

Run the package script in contrib:
From the Tor build directory above, run:
"./contrib/package_nsis-mingw.sh"

The resulting Tor installer executable is in ./win_tmp/.


  上述所有的工具及源码都下载,安装完毕之后,就可以进入Tor源码的细节分析阶段。不过,在此之前,如果可能,还需要通读Tor源码的设计文档:

  https://www.torproject.org/docs/documentation.html.en

  上述网址需要翻墙才可以阅读,所以,或许还需要使用VPN或者GoAgent的方式事先翻墙。

  重点必读的设计文档包括:<Tor: the second-generation onion router>, <Tor main specification>

Tor源码文件分析 -- Main Main文件是Tor系统的主要执行函数所处文件,内容偏多,但是较于其他底层处理函数所在的文件,也算较少。所以这里做简要的分析,其中删去很多不常见的,不重要的函数,大家可以自行在源文件内部查看。 1. 全局变量   全局变量在文件头部定义,每个全局变量都已经有比较详尽的英文分析和解释,这里再做简单的罗列。   1)系统(先前)已读与已写字节数以及用于流量控制的令牌桶全局变量;( 阅读详情

相关推荐

Tor源码文件分析 -- Circuits全局变量

Tor系统源码中用于控制链路circuit的文件主要有三个,分别是:circuitlist.c,circuituse.c,circuitbuild.c。这三个文件分别主要针对的处理功能与他们的名字相类似,即分别处理链路的组织,使用和建立。在本篇中,我们只介绍主要用于链路部分的全局变量,即存在于这三个文件之中的全局变量的使用。此处不再罗列链路函数,因为链路部分的函数着实不少,尤其是链路建立部分。或许

WInScar的专栏 2637

网络攻防技术-实现Tor 加密流量分类(源码).zip

本资源包包含基于Python编写的Tor加密流量分类项目源码及相应的pkl模型文件。Tor网络旨在保护用户隐私和匿名性,其加密特性使得对流量的监测和分类变得复杂。该资源适合计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等相关领域的学生、教师和企业员工使用。通过学习该项目,用户可以掌握数据捕获、特征提取、数据预处理、模型训练与评估等流程,并深入了解网络编程、数据挖掘和机器学习等领域的知识。此资源为学习者提供了一个宝贵的实践平台,帮助他们在实际项目中巩固和应用所学知识。

Tor源码分析八 -- 客户端执行流程(second_elapsed_callback函数)

在之前的客户端源码分析中,我们讲述了整个客户端的事件集和相关调度规则。每一类事件的激活都有相应的条件,要么是socket可读写,要么是收到信号,要么是定时事件到达,还有手动的事件激活。总而言之,系统中添加的所有事件经过Libevent的调度,使得整个系统有条不紊的运行起来。同时,每个事件均有其对应的事件处理函数,在系统运行起来之后,一旦事件被激活,就会调用相应的回调函数进行处理。   本文我们着

WInScar的专栏 3483

网络反监控软件 Tor源码附带openssl开发包

网络反监控软件 Tor源码附带openssl开发包

Tor源码分析十 -- 连接和链路

源码分析到这个部分,为了让大家明白源码中的编码逻辑,不得不开始从头梳理程序内部的复杂连接和链接组织形式。否则大家后期会更加一头雾水。笔者开始分析源码之时,没有这些宏观的概念,只能死嚼代码,硬猜硬想,再加以检查代码进行验证,才得以明白程序的主要框架逻辑。如果再以猜测验证的模式向大家讲述源码,必定会越来越混乱。所以,在本节之中,我们会将系统中所有的连接类型,链路类型和他们之间的关系和代码之中的关联方式

WInScar的专栏 6405

Tor源码分析 -- 附录 Tor Manual

TOR(1) Manual Page Analysis NAME tor - The second-generation onion router SYNOPSIS tor [OPTION value]… DESCRIPTION tor is a connection-oriented anonymizing communication service. Use

WInScar的专栏 5570

在docker中编译tor 源码

在docker中编译tor 源码前言一、docker中创建自定义镜像及容器1. 创建镜像的目录并拉取Ubuntu16.04镜像:2.书写Dockerfile,并build构建镜像二、编译tor源码1. 下载Tor源码2.编译Tor源码三、运行tor参考连接 前言 本文将在docker中创建一个镜像,在镜像的基础上启动容器,然后编译tor-0.4.4.5.tar.gz(目前最新版)源码 一、docker中创建自定义镜像及容器 我们所说的生成镜像其实是在ubuntu镜像的基础上构建自己的镜像,因此首先需要.

weixin_42051109的博客 1851

Tor源码分析七 -- 握手协议

本节主要讲述Tor系统中所用到的握手协议。握手协议分三层:TCP握手;TLS握手;Tor握手。其中Tor握手又分为三个层次:OR握手;链路建立;流建立。   TCP的三次握手我想应该学计算机方向的朋友无人不知了,所以此处就略去。而TLS是SSL的升级版本,其握手过程与SSLv3几乎一致。同时由于TLS根据客户端的不同握手选择,会有些许握手过程中的差别,我们希望大家能够找到TLS相关的书籍翻阅。此

WInScar的专栏 9308

最新的_Tor_project_项目源代码_tor_dev.zip

最新的_Tor_project_项目源代码_tor_dev

Tor源码分析二 -- 目录结构

Tor由于经过了长年的开发,版本到现在已经有很多。笔者选用的是tor-0.2.3.25版本。关于版本变迁和更新说明,请大家自行查看:   https://gitweb.torproject.org/tor.git (需翻墙) 1. 源码目录关系图   Tor的源码目录中包括doc, contrib, src等一些列很莫名的文件。其实,在这些所有的文件中,除了src文件夹,其他都可

WInScar的专栏 6306

Tor源码分析三 -- 客户端执行流程(初始化)

Tor系统中,主机的身份包括有这几种:Client,Bridge Server,Relay Server,Directory Server。   当然,有的时候一台主机是可以身兼数个身份,提供不同的服务或获取服务。   我们从最简单的客户端配置的Tor来进行分析,事先了解整个Tor系统的执行规程,之后再具体分析其他身份时候的不同操作,从而加快了解系统的速度。此处要说明的是,由于笔者对Windo

WInScar的专栏 4147

ToR

托尔

TOR讨论(一)

通过研究资料表明,目前针对TOR的流量分析破坏有如下的方法,Chakravarty研究团队利用在哥伦比亚大学的一台运行着linux系统的Tor中继服务器做了实验测试,他们使用TOR网络获取出口节点与入口节点,分析出口节点与入口节点的网络元数据,比如数据量与数据时延,通过一定时间的数据搜集,计算相关系数,便可得出连接入口节点的主机与连接出口节点的主机之间是否发生通讯关系的结论。转自 《如何攻破匿名网...

LHF_debug的博客 904

Tor源码分析完整整理,书籍编撰

https://drive.google.com/folderview?id=0B3IWwDFNML7gfktlYjUwYjNHR25xbkVrZldyMk4zcHFWY3VpLTBDc3U3X0o5NHJYb0N1bWs&usp=sharing 上述链接是编撰到一半的Tor源码分析的文档。 有兴趣一起编撰的朋友请加前一篇Blog的QQ群聊。

WInScar的专栏 4029

Tor源码分析九 -- 客户端执行流程(网络信息的下载)

源码分析到这里,大家应该已经大致了解到Tor系统的前期启动没有做任何的下载操作。前期启动的最关键环节,就是正常开启Libevent的调度机制,从而有条不紊地进行系统内所有子模块的维护等。我们需要再次强调的是,系统的主进程内,是没有做任何直接的获取网络状态,获取路由描述符,获取额外路由信息的操作。系统将这些操作视为需要实时维护的工作,因为所有这些网络信息都有其时限。所以,对这些网络信息的获取,全部置

WInScar的专栏 4410

Tor源码分析四 -- 客户端执行流程(初入主循环)

在上个小节中,已经基本分析了Tor系统的初始化过程。该过程中,最重要的部分,就是对默认配置文件、输入配置文件以及命令行参数进行综合整理,定出最后的配置方案。而后通过配置方案,启动系统的基础部分。这里值得说明的是,Tor系统的所有配置选项,均可以在Tor Manual中找到。并且,根据Tor系统配置成不同的身份,使用的配置选项也会有细微差别。默认的配置固化在代码内部,有兴趣的朋友可以就初始化部分往下

WInScar的专栏 3758

Tor版本号解读

Tor是开源的匿名通信系统,工作需要,近期开始学习Tor相关知识。包括Tor的工作方式,特性,以及其他方面。 Tor源代码维护已久,版本更迭较快,版本号格式如下。 从0.1.0.1-rc开始,版本的格式如下: MAJOR.MINOR.MICRO[.PATCHLEVEL][-STATUS_TAG][ (EXTRA_INFO)]* 括号里的东西是可选的。和前面一样,MAJOR、MINOR、MICRO和PATCHLEVEL都是数字,缺位号等于0。所有的版本都应该完全通过这四个数字来区分。 ST.

lhy_uestc_11的博客 645

UNSW-NB15数据集:网络流量分析与恶意攻击检测实战指南

本文提供了UNSW-NB15数据集在网络流量分析与恶意攻击检测领域的实战指南。详细介绍了该数据集的构成、核心特征解析、特征工程处理、机器学习模型训练与评估方法,并探讨了模型部署及持续优化的挑战与思路,帮助读者构建高效的网络攻击检测系统。

weixin_29193359的博客 259
上一篇: C专家编程(二)
下一篇: Tor源码分析二 -- 目录结构
WInScar
博客等级 码龄17年 134粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值