scapy.contrib.mac_control

MACControl

author

Thomas Tannhaeuser, hecke @ naberius .

license

GPLv2

该模块是免费软件. 您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它; 许可的版本2,或(由您选择)任何更高的版本.

分发该模块是希望它会有用,但是没有任何保证; 甚至没有对适销性或特定用途适用性的暗示保证. 有关更多详细信息,请参见GNU通用公共许可证.

description
This module provides Scapy layers for the MACControl protocol messages:
  • Pause

  • Gate

  • Report

  • Register/REQ/ACK

  • 基于类的流控制

normative references:
  • IEEE 802.3x

NOTES
class scapy.contrib.mac_control.MACControl

Bases: scapy.packet.Packet

DEFAULT_DST_MAC = '01:80:c2:00:00:01'
FLAG_ACK = 3
FLAG_DEREGISTER = 2
FLAG_NACK = 4
FLAG_REGISTER = 1
OP_CODES = {1: 'pause', 2: 'gate', 3: 'report', 4: 'register req', 5: 'register', 6: 'register_ack', 257: 'class based flow control'}

Register *消息使用的标志

OP_CODE_CLASS_BASED_FLOW_CONTROL = 257
OP_CODE_GATE = 2
OP_CODE_PAUSE = 1
OP_CODE_REGISTER = 5
OP_CODE_REGISTER_ACK = 6
OP_CODE_REGISTER_REQ = 4
OP_CODE_REPORT = 3
REGISTER_FLAGS = {1: 'register', 2: 'deregister', 3: 'ack', 4: 'nack'}
aliastypes
guess_payload_class(payload)
post_build(pkt, pay)

如果需要,在框架中添加填充.

请注意,仅当薪水为无/空时才添加填充. 这使我们可以在需要时(pi带)在MACControl * PDU之后添加#noqa:E501任何有效负载.

class scapy.contrib.mac_control.MACControlClassBasedFlowControl

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |    RESERVED   |C|C|C|C|C|C|C|C|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         C0 PAUSE TIME         |         C1 PAUSE TIME         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         C2 PAUSE TIME         |         C3 PAUSE TIME         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         C4 PAUSE TIME         |         C5 PAUSE TIME         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         C6 PAUSE TIME         |         C7 PAUSE TIME         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Fig. MACControlClassBasedFlowControl               
MACControlClassBasedFlowControl字段

_op_code

ShortField

257

_reserved

ByteField

0

c7_enabled

BitField (1位)

0

c6_enabled

BitField (1位)

0

c5_enabled

BitField (1位)

0

c4_enabled

BitField (1位)

0

c3_enabled

BitField (1位)

0

c2_enabled

BitField (1位)

0

c1_enabled

BitField (1位)

0

c0_enabled

BitField (1位)

0

c0_pause_time

ShortField

0

c1_pause_time

ShortField

0

c2_pause_time

ShortField

0

c3_pause_time

ShortField

0

c4_pause_time

ShortField

0

c5_pause_time

ShortField

0

c6_pause_time

ShortField

0

c7_pause_time

ShortField

0

class scapy.contrib.mac_control.MACControlGate

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           TIMESTAMP           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. MACControlGate                        
MACControlGate字段

_op_code

ShortField

2

timestamp

IntField

0

exception scapy.contrib.mac_control.MACControlInvalidSpeedException

Bases: scapy.error.Scapy_Exception

class scapy.contrib.mac_control.MACControlPause

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           PAUSE TIME          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. MACControlPause                       
MACControlPause字段

_op_code

ShortField

1

pause_time

ShortField

0

get_pause_time(speed=4)

以秒为单位获得给定链接速度的暂停时间

Parameters

speed –选择链接速度以获得暂停时间,必须为ETHER_SPEED_MBIT_ [10,100,1000]#noqa:E501

Returns

暂停时间(以秒为单位)

Raises

MACControlInvalidSpeedException –在无效的速度选择器上

class scapy.contrib.mac_control.MACControlRegister

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           TIMESTAMP           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |     FLAGS     |ECHOED ASSIGNED|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |        ECHOED SYNC TIME       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. MACControlRegister                      
MACControlRegister字段

_op_code

ShortField

5

timestamp

IntField

0

flags

ByteEnumField

0

echoed_assigned_port

ShortField

0

echoed_sync_time

ShortField

0

class scapy.contrib.mac_control.MACControlRegisterAck

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           TIMESTAMP           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |     FLAGS     |ECHOED ASSIGNED|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |        ECHOED SYNC TIME       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. MACControlRegisterAck                    
MACControlRegisterAck字段

_op_code

ShortField

6

timestamp

IntField

0

flags

ByteEnumField

0

echoed_assigned_port

ShortField

0

echoed_sync_time

ShortField

0

class scapy.contrib.mac_control.MACControlRegisterReq

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           TIMESTAMP           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |         ASSIGNED PORT         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     FLAGS     |           SYNC TIME           |ECHOED PENDING |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. MACControlRegisterReq                    
MACControlRegisterReq字段

_op_code

ShortField

4

timestamp

IntField

0

assigned_port

ShortField

0

flags

ByteEnumField

0

sync_time

ShortField

0

echoed_pending_grants

ByteField

0

class scapy.contrib.mac_control.MACControlReport

Bases: scapy.contrib.mac_control.MACControl

aliastypes
fields_desc
显示类似RFC的架构
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             OP CODE           |           TIMESTAMP           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |     FLAGS     | PENDING GRANTS|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. MACControlReport                       
MACControlReport字段

_op_code

ShortField

3

timestamp

IntField

0

flags

ByteEnumField

0

pending_grants

ByteField

0