PPPoe攻击调试记录

姓名:石廷澳      学号:21011210031    学院:通信工程学院

【嵌牛导读】今天调PPPoe攻击的发现阶段,调了一天,踩了一天的坑,主要是自己第一次接触有MAC核的工程。今天就记录一下。

【嵌牛鼻子】PPPoe攻击调试记录

【嵌牛提问】如何避免跳进以太网数据帧的坑

【嵌牛正文】

引言

今天调PPPoe攻击的发现阶段,调了一天,踩了一天的坑,主要是自己第一次接触有MAC核的工程。今天就记录一下。本人写PPPoe攻击仅作为学习使用,不做其他危害国家社会的事情!!!

MAC核复位

MAC核的复位是高电平复位 ,而我的PPPoe的.v文件是低电平复位,这个bug调了一上午。我在modelsim上仿真没有问题,电脑向我发PADI数据帧,逻辑上FPGA模仿服务器应该发送PADO数据帧,但是Wireshark什么帧也没有抓到,也就是说没有触发我的状态机。一开始以为数据没有从MAC传给我,然后在vivado上抓信号,发现数据已经接收了,也就是说MAC没有问题,我代码逻辑的问题。最后突然想起一个比较被人忽略但确实最重要的信号,也就是复位信号。

这是MAC核其中一个always块,很显然里面复位是高电平复位,而我的复位默认是低电平复位,导致我的代码一直处于复位状态,状态机没有跳转,发送PADO数据帧的状态没有被触发。BUG定位于此。

以太网无用帧

当用网线连接两个设备,设备会定期发送无用帧来保持链接。 FPGA发送PADO帧,用vivado抓到发送的帧有很多杂数据,里面有我发的数据,也有很多不是我发的数据。一开始以为是我手写FIFO的问题,然后用vivado的FIFO ip核替换,结果还是这样,当快被定位到玄学问题的时候,发现Wireshark抓到了UDP帧。然后按帧类型为触发条件抓信号,发现果然这个UDP帧的载荷写进了FIFO(我把载荷存到FIFO中,需要的时候再读出来)。也就是说我的写FIFO条件松了,加上帧类型后没有问题。

以太网最小帧长

以太网最小帧长是64个字节,不足64个字节都会补0补成64个字节,但是Wireshark抓到的帧不会显示补的0。 读FIFO的时候回读出好多0,最后发现是这个问题,然后写FIFO就多加了个条件,按照帧长进行写使能。

欺骗用的MAC地址

PPPoe要用一个MAC地址当做自己的服务器地址,因为测试的时候也没注意,所以就顺便起了个48位的MAC地址,以为没有问题,因为MAC地址有好多。但是FPGA发PADS帧,Wireshark能抓到,但是帧里面会报错,说不符合IEEE标准。然后到网上搜了一下,发现MAC的每位数据都是有含义的,所以不能乱给。于是用了自己电脑的MAC地址,没有什么问题。 

如下图所示,其前3字节表示OUI(Organizationally Unique Identifier),是IEEE的注册管理机构给不同厂家分配的代码,区分不同的厂家。后3字节由厂家自行分配 。 

MAC地址最高字节(MSB)的低第二位(LSb)表示这个MAC地址是全局的还是本地的,即U/L(Universal/Local)位,如果为0,表示是全局地址,所有的OUI这一位都是0。MAC地址最高字节(MSB)的低第一位(LSb),表示这个MAC地址是单播还是多播,0表示单播。

以上就是今天遇到的BUG,收获颇多!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 说明 在不同的平台,会使用不同的网络组件,形成具有集成不同功能种类的网络协议。 在Linux上,一般会有很齐全...
    wit_yuan阅读 4,333评论 0 3
  • 姓名:顿皓 学号:19020100178 学院:丁香2号书院 转自:https://blog.csdn.net/x...
    lemonlem阅读 1,885评论 0 0
  • [toc] 0. 概述与模型对比 参考地址1 参考地址2 TCP 可靠性传输 模型对比图如下:对比图 OSI 参考...
    h428阅读 933评论 0 0
  • 第五章 数据链路层 数据链路层的作用:在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方...
    NJUST江波阅读 753评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,605评论 28 53