JavaScript is required

创建一个网络包解码器分析DEVP2P协议

创建一个网络包解码器分析DEVP2P协议

笔记#网络协议#Wireshark#Lua#解码器

1.安装虚拟机软件

VMware16下载地址:https://pan.baidu.com/s/14tM3ApjTBXTA80aqmsbUnw?pwd=adc8

激活码的话上网搜有很多

安装好的界面是这样的:

img

Ubuntu 下载

两种方式:

(1)官网下载

https://ubuntu.com/download![img](https://free-img.400040.xyz/4/2024/11/04/67288bf500222.png)

点击Ubuntu 24.04.1 LTS即可开始下载

img

最新版 Ubuntu 24.04.1 LTS 大小为 5.8 GB,由于官网是从国外服务器下载,速度比较慢。

这里推荐另外一种下载方式:

(2)清华镜像网站下载

点击清华大学开源软件镜像站 - Ubuntu 24.04.1页面中的ubuntu-24.04.1-desktop-amd64.iso

img

创建虚拟机

1、打开VMware Workstation软件,点击**"创建新的虚拟机"。(或者点击左上角“文件 -> 新建虚拟机”**)

img

2、进入导向窗口,选择**“自定义”**选项,进入下一步

img

3、点击下一步

**注:**选项 硬件兼容性(H),这里选择默认值即可,进入下一步(系统会显示与你的选择相兼容的VMware产品及版本的列表,以及你的选择所具有的限制和不可用的功能)

img

4、选择**“安装程序光盘映像文件”,点击输入框旁边的“浏览”**按钮。找到自己前边下载好的镜像,双击选择。

如果能看到如图标注的小字**“已检测到Ubuntu 64 位 24.04.1”,说明安装包是对的,并且可以正常安装,这时点击“下一步”**

img

5、设置安装信息:全名和密码随便写,用户名只能用小写字母、数字和破折号,输入完毕后,点击**“下一步”**

img

6、虚拟机名称为“Ubuntu24.04.1_64 位”(这个根据个人习惯,随便写),虚拟机的路径自定义,根据自己的实际情况修改,它关系到硬盘空间的大小,建议选择可用空间比较大的盘符。点击**“下一步”**

img

7、 设置处理器参数,选处理器数量和内核数量建议根据自身处理器情况来。这里处理器数量我设置为4,内核数量为2。点击**“下一步”**

注:每个处理器的内核数量一定要修改成 2。

img

8、 内存选择建议 4 GB,单击“下一步”。

img

9、网络类型这里,使用网络地址转换(NAT)(E)

10、SCSI 控制器类型选择推荐的**“LSI Logic”,点击“下一步”**

img

11、虚拟磁盘类型选择推荐的**“SCSI”,点击“下一步”**

img

12、选择**“新建虚拟磁盘”,点击“下一步”**

img

13、设置磁盘容量,并选择“将虚拟磁盘拆分成多个文件”。(这里磁盘大小看个人需求,大于等于推荐的大小)容量默认是 20 GB,这里建议弄大一点,不然空间不够,单击**“下一步”**。

img

14、磁盘文件命名。(自行修改或默认命名)单击**“下一步”**。

img

15、到这一步虚拟机已经创建完成!可以直接点击“完成”,也可以点击“自定义硬件”,修改内存大小、处理器内核等设置。

img

16、自定义硬件,可自行修改

img

注意,到这一步只是把 Ubuntu 的虚拟机创建好了,并不是把 [Ubuntu 系统](https://so.csdn.net/so/search?q=Ubuntu 系统&spm=1001.2101.3001.7020)安装了,正式的安装需要启动虚拟机。

五、Ubuntu 系统安装过程的配置

虚拟机创建好后,可以通过点击下图中两个按钮中的任意一个启动虚拟机

img

启动虚拟机后出现如下界面,即可进入安装界面,由于博主英文水平有限,这里博主选择了中文(简体),各位英语大神们可以选择英文。

img

保持默认即可,点击**“下一步”**

img

这里我们选择交换安装(交互安装,系统会对我们进行引导安装),相信看到博主这篇文章的朋友应该对这部分知识也不是很懂,那我们就按照引导逐步安装吧~

img

保持默认选项,点击**“下一步”**

img

注意这里,*不用勾选*,对于初学者来说,我们暂时用不到那么多内容

img

选择安装方式,保持默认即可,点击**“下一步”**

img

设置账户信息

img

选择地区,时区选择**“shanghai”**

img

确认安装信息,点击**“安装”**

img

接下来就是等待安装完成后

点击账号图标,输入密码,即可进入

2.安装Docker

  • Ubuntu 22.04
  • linux内核版本 6.8(版本不低于3.10)

更新ubuntu

crystal
$ sudo apt update



$ sudo apt upgrade



$ sudo apt full-upgrade

添加docker库

1 安装docker的必要依赖

sql
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

2 添加docker GPG密钥

cobol
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

这里选择从阿里云上docker密钥添加,官方密钥存在网络问题,添加命令会不成功,成果了之后也下载不了docker。 这里会将密钥写入ubuntu密钥环中(/etc/apt/trusted.list)

3 添加docker仓库

csharp
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

这里也是选择阿里的镜像源。

更新apt

sql
sudo apt update

安装docker

lua
 sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

验证Docker安装

使用以下命令验证Docker是否安装成功:

bash
sudo docker --version

你应该会看到Docker的版本信息。

运行Docker Hello World容器

运行一个简单的Hello World容器以确保Docker正常工作:

bash
sudo docker run hello-world

正常情况下,会看到Docker成功下载Hello World镜像并运行的输出

拉镜像大概率会出错,因为从官网上拉取存在网络问题(搞不懂墙这个干啥

修改“/etc/docker/daemon.json”文件(如果没有,可以手动创建),在该文件内添加如下内容:

bash
#使用vim打开daemon.json文件
sudo vim /etc/docker/daemon.json
#向文件中添加如下内容
{
    "registry-mirrors": [ "https://你的地址.mirror.swr.myhuaweicloud.com" ]
}

按“Esc”,输入:wq保存并退出。

目前各大镜像站都挂掉很多了,我目前在用的镜像站为"https://dockerpull.org"

附件:目前国内可用Docker镜像源汇总(截至2024年11月) - CoderJia

重启docker测试拉取是否成功



项目实现

相关资料

1 安装Wireshark和特定版本的LUA

linux的python版本要为3.10

text
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install lua5.2 liblua5.2-dev wireshark python3.10

2 更改权限并复制Lunatic Python LUA ⇔ Python桥接二进制文件

python.so为文章最开始编译得来的

text
sudo chmod +x python.so
cp python.so /usr/local/lib/lua/5.2/

关于python.so是从哪来的:

python在linux编译后的文件为.so这个由编译Lunatic-Python得到 不会编译的可以找我要我编译好的(

link python.so, https://short-link.me/OIk7, https://pic3.zhimg.com/80/v2-58b297e0356a934ce8595de873e5b70e_720w.webp

要自己编译的话见项目文档Lunatic-Python

link python.so, https://github.com/jmkemp20/lunatic-python, https://pic1.zhimg.com/80/v2-593dd0a3b84d023b3827b97e81e0242a_720w.webp

3 克隆LUA解码器和PYDEVP2P项目

text
git clone https://github.com/jmkemp20/lua-devp2p-wireshark-dissector.git
git clone https://github.com/jmkemp20/pydevp2p.git

4 安装PYDEVP2P PIP包

text
cd pydevp2p
pip install -e .
sudo pip install -e .

5 创建Wireshark插件目录(本地用户和root)

text
mkdir -p ~/.local/lib/wireshark/plugins
sudo mkdir -p /usr/local/lib/wireshark/plugins

6 符号链接或复制.lua解码器文件到Wireshark插件目录

text
ln -s <location of cloned dissector>/rlpx.lua ~/.local/lib/wireshark/plugins/rlpx.lua
ln -s <location of cloned dissector>/discovery.lua ~/.local/lib/wireshark/plugins/discovery.lua
sudo ln -s <location of cloned dissector>/rlpx.lua /usr/local/lib/wireshark/plugins/rlpx.lua
sudo ln -s <location of cloned dissector>/discovery.lua /usr/local/lib/wireshark/plugins/discovery.lua

其实可以直接复制这些.lua文件到wireshark插件目录下

7 Live GETH Docker Startup

Step 1) 确保Docker和Docker Compose已安装并正在运行

检查Docker版本:

text
docker --version

pic

检查Docker Compose版本:

text
docker-compose --version

pic

Step 2) 克隆GETH-Docker存储库
text
git clone https://github.com/jmkemp20/geth-docker.git
cd geth-docker
Step 3) 构建自定义docker镜像
text
./build-dockers.sh

在这一步会遇到go语言依赖无法拉取的情况

解决方法是在dockerfile.manual的第10行中添加go代理如下:

Step 4) 启动路由器容器
text
docker-compose up -d bridge-router
Step 5) 打开Wireshark并连接到网络接口
text
sudo wireshark

会有几个br网桥,进入10.1.X.X网络

Step 6) 依次启动每个GETH节点/客户端容器
text
docker-compose up -d geth-ubuntu-bootnode
docker-compose up -d geth-client-1
docker-compose up -d geth-client-2
docker-compose up -d geth-client-3

运行结果如下:

开始捕获rlpx和devP2P网络


本文档历史版本

link 本文档历史版本, https://zhongye1.github.io/posts/cc887582.html, https://pic1.zhimg.com/80/v2-593dd0a3b84d023b3827b97e81e0242a_720w.webp

附注:使用wsl构建不可行

er>