scapy.layers.ntp

NTP (Network Time Protocol). References : RFC 5905, RC 1305, ntpd source code

class scapy.layers.ntp.NTP(_pkt, /)[source]

Bases: Packet

Base class that allows easier instantiation of a NTP packet from binary data.

aliastypes = [<class 'scapy.layers.ntp.NTP'>, <class 'scapy.packet.Packet'>]
classmethod dispatch_hook(_pkt=None, *args, **kargs)[source]

Returns the right class for the given data.

mysummary()[source]
pre_dissect(s)[source]

Check that the payload is long enough to build a NTP packet.

class scapy.layers.ntp.NTPAuthenticator(_pkt, /, *, padding=b'', key_id=0, dgst=b'')[source]

Bases: Packet

Packet handling the “authenticator” part of a NTP packet, as defined in RFC 5905.

aliastypes = [<class 'scapy.layers.ntp.NTPAuthenticator'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<_NTPAuthenticatorPaddingField (NTPAuthenticator).padding>, <IntField (NTPAuthenticator).key_id>, <XStrFixedLenField (NTPAuthenticator).dgst>]
class scapy.layers.ntp.NTPClockStatusPacket(_pkt, /, *, clock_status=0, code=0)[source]

Bases: Packet

Packet handling the clock status fields.

aliastypes = [<class 'scapy.layers.ntp.NTPClockStatusPacket'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (NTPClockStatusPacket).clock_status>, <BitField (NTPClockStatusPacket).code>]
class scapy.layers.ntp.NTPConfPeer(_pkt, /, *, peeraddr='0.0.0.0', hmode=0, version=0, minpoll=0, maxpoll=0, flags=<Flag 0 ()>, ttl=0, unused1=0, keyid=0, keystr=b'', v6_flag=0, unused2=0, peeraddr6='::')[source]

Bases: Packet

Structure for passing peer configuration information.

aliastypes = [<class 'scapy.layers.ntp.NTPConfPeer'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPConfPeer).peeraddr>, <ByteField (NTPConfPeer).hmode>, <ByteField (NTPConfPeer).version>, <ByteField (NTPConfPeer).minpoll>, <ByteField (NTPConfPeer).maxpoll>, <FlagsField (NTPConfPeer).flags>, <ByteField (NTPConfPeer).ttl>, <ShortField (NTPConfPeer).unused1>, <IntField (NTPConfPeer).keyid>, <StrFixedLenField (NTPConfPeer).keystr>, <IntField (NTPConfPeer).v6_flag>, <IntField (NTPConfPeer).unused2>, <IP6Field (NTPConfPeer).peeraddr6>]
class scapy.layers.ntp.NTPConfRestrict(_pkt, /, *, addr='0.0.0.0', mask='0.0.0.0', flags=<Flag 0 ()>, m_flags=0, v6_flag=0, addr6='::', mask6='::')[source]

Bases: Packet

Structure used for specifying restrict entries.

aliastypes = [<class 'scapy.layers.ntp.NTPConfRestrict'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPConfRestrict).addr>, <IPField (NTPConfRestrict).mask>, <FlagsField (NTPConfRestrict).flags>, <ShortField (NTPConfRestrict).m_flags>, <IntField (NTPConfRestrict).v6_flag>, <IP6Field (NTPConfRestrict).addr6>, <IP6Field (NTPConfRestrict).mask6>]
class scapy.layers.ntp.NTPConfTrap(_pkt, /, *, local_address='0.0.0.0', trap_address='0.0.0.0', trap_port=0, unused=0, v6_flag=0, local_address6='::', trap_address6='::')[source]

Bases: Packet

Structure used to pass add/clear trap information to the client

aliastypes = [<class 'scapy.layers.ntp.NTPConfTrap'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPConfTrap).local_address>, <IPField (NTPConfTrap).trap_address>, <ShortField (NTPConfTrap).trap_port>, <ShortField (NTPConfTrap).unused>, <IntField (NTPConfTrap).v6_flag>, <IP6Field (NTPConfTrap).local_address6>, <IP6Field (NTPConfTrap).trap_address6>]
class scapy.layers.ntp.NTPConfUnpeer(_pkt, /, *, peeraddr='0.0.0.0', v6_flag=0, peeraddr6='::')[source]

Bases: Packet

Structure for passing peer deletion information.

aliastypes = [<class 'scapy.layers.ntp.NTPConfUnpeer'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPConfUnpeer).peeraddr>, <IntField (NTPConfUnpeer).v6_flag>, <IP6Field (NTPConfUnpeer).peeraddr6>]
class scapy.layers.ntp.NTPControl(_pkt, /, *, leap=0, version=2, mode=6, response=0, err=0, more=0, op_code=0, sequence=0, status=None, association_id=0, offset=0, count=None, data=None, authenticator=b'')[source]

Bases: NTP

Packet handling NTP mode 6 / “Control” messages.

aliastypes = [<class 'scapy.layers.ntp.NTPControl'>, <class 'scapy.layers.ntp.NTP'>, <class 'scapy.packet.Packet'>]
deprecated_fields: Dict[str, Tuple[str, str]] = {'status_word': ('status', '2.6.2')}
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (NTPControl).leap>, <BitField (NTPControl).version>, <BitEnumField (NTPControl).mode>, <BitField (NTPControl).response>, <BitField (NTPControl).err>, <BitField (NTPControl).more>, <BitEnumField (NTPControl).op_code>, <ShortField (NTPControl).sequence>, <scapy.fields.MultipleTypeField object>, <ShortField (NTPControl).association_id>, <ShortField (NTPControl).offset>, <FieldLenField (NTPControl).count>, <scapy.fields.MayEnd object>, <PacketField (NTPControl).authenticator>]
match_subclass = True
class scapy.layers.ntp.NTPControlStatusField(name: str, default: Optional[K], pkt_cls: Union[Callable[[bytes], Packet], Type[Packet]]  # noqa: E501)[source]

Bases: PacketField

The various types of the “status” field.

m2i(pkt, m)[source]
class scapy.layers.ntp.NTPErrorStatusPacket(_pkt, /, *, error_code=0, reserved=0)[source]

Bases: Packet

Packet handling the error status fields.

aliastypes = [<class 'scapy.layers.ntp.NTPErrorStatusPacket'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (NTPErrorStatusPacket).error_code>, <BitField (NTPErrorStatusPacket).reserved>]
class scapy.layers.ntp.NTPExtPacketListField(name: str, default: Optional[List[BasePacket]], pkt_cls: Optional[Union[Callable[[bytes], Packet], Type[Packet]]]  # noqa: E501 = None, count_from: Optional[Callable[[Packet], int]] = None, length_from: Optional[Callable[[Packet], int]] = None, next_cls_cb: Optional[Callable[[Packet, List[BasePacket], Optional[Packet], bytes], Optional[Type[Packet]]]]  # noqa: E501 = None, max_count: Optional[int] = None)[source]

Bases: PacketListField

PacketListField handling NTPv4 extensions (NTPExtension list).

getfield(pkt, s)[source]
m2i(pkt, m)[source]
class scapy.layers.ntp.NTPExtension(_pkt, /, *, type=0, len=0, value=b'')[source]

Bases: Packet

Packet handling a NTPv4 extension.

aliastypes = [<class 'scapy.layers.ntp.NTPExtension'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (NTPExtension).type>, <ShortField (NTPExtension).len>, <scapy.fields.PadField object>]
class scapy.layers.ntp.NTPExtensions(_pkt, /, *, extensions=[], mac=<NTPAuthenticator  |>)[source]

Bases: Packet

Packet handling the NTPv4 extensions and the “MAC part” of the packet.

aliastypes = [<class 'scapy.layers.ntp.NTPExtensions'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<NTPExtPacketListField (NTPExtensions).extensions>, <PacketField (NTPExtensions).mac>]
class scapy.layers.ntp.NTPHeader(_pkt, /, *, leap=0, version=4, mode=3, stratum=2, poll=10, precision=0, delay=0, dispersion=0, id='127.0.0.1', ref_id=b'', ref=0, orig=None, recv=0, sent=None)[source]

Bases: NTP

Packet handling the RFC 5905 NTP packet.

aliastypes = [<class 'scapy.layers.ntp.NTPHeader'>, <class 'scapy.layers.ntp.NTP'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (NTPHeader).leap>, <BitField (NTPHeader).version>, <BitEnumField (NTPHeader).mode>, <BitField (NTPHeader).stratum>, <SignedByteField (NTPHeader).poll>, <SignedByteField (NTPHeader).precision>, <FixedPointField (NTPHeader).delay>, <FixedPointField (NTPHeader).dispersion>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <TimeStampField (NTPHeader).ref>, <TimeStampField (NTPHeader).orig>, <TimeStampField (NTPHeader).recv>, <TimeStampField (NTPHeader).sent>]
guess_payload_class(payload)[source]

Handles NTPv4 extensions and MAC part (when authentication is used.)

match_subclass = True
class scapy.layers.ntp.NTPInfoAuth(_pkt, /, *, timereset=0, numkeys=0, numfreekeys=0, keylookups=0, keynotfound=0, encryptions=0, decryptions=0, expired=0, keyuncached=0)[source]

Bases: Packet

Structure used to return information concerning the authentication module.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoAuth'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoAuth).timereset>, <IntField (NTPInfoAuth).numkeys>, <IntField (NTPInfoAuth).numfreekeys>, <IntField (NTPInfoAuth).keylookups>, <IntField (NTPInfoAuth).keynotfound>, <IntField (NTPInfoAuth).encryptions>, <IntField (NTPInfoAuth).decryptions>, <IntField (NTPInfoAuth).expired>, <IntField (NTPInfoAuth).keyuncached>]
class scapy.layers.ntp.NTPInfoControl(_pkt, /, *, ctltimereset=0, numctlreq=0, numctlbadpkts=0, numctlresponses=0, numctlfrags=0, numctlerrors=0, numctltooshort=0, numctlinputresp=0, numctlinputfrag=0, numctlinputerr=0, numctlbadoffset=0, numctlbadversion=0, numctldatatooshort=0, numctlbadop=0, numasyncmsgs=0)[source]

Bases: Packet

Structure used to return statistics from the control module.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoControl'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoControl).ctltimereset>, <IntField (NTPInfoControl).numctlreq>, <IntField (NTPInfoControl).numctlbadpkts>, <IntField (NTPInfoControl).numctlresponses>, <IntField (NTPInfoControl).numctlfrags>, <IntField (NTPInfoControl).numctlerrors>, <IntField (NTPInfoControl).numctltooshort>, <IntField (NTPInfoControl).numctlinputresp>, <IntField (NTPInfoControl).numctlinputfrag>, <IntField (NTPInfoControl).numctlinputerr>, <IntField (NTPInfoControl).numctlbadoffset>, <IntField (NTPInfoControl).numctlbadversion>, <IntField (NTPInfoControl).numctldatatooshort>, <IntField (NTPInfoControl).numctlbadop>, <IntField (NTPInfoControl).numasyncmsgs>]
class scapy.layers.ntp.NTPInfoIOStats(_pkt, /, *, timereset=0, totalrecvbufs=0, freerecvbufs=0, fullrecvbufs=0, lowwater=0, dropped=0, ignored=0, received=0, sent=0, notsent=0, interrupts=0, int_received=0)[source]

Bases: Packet

I/O statistics.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoIOStats'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoIOStats).timereset>, <ShortField (NTPInfoIOStats).totalrecvbufs>, <ShortField (NTPInfoIOStats).freerecvbufs>, <ShortField (NTPInfoIOStats).fullrecvbufs>, <ShortField (NTPInfoIOStats).lowwater>, <IntField (NTPInfoIOStats).dropped>, <IntField (NTPInfoIOStats).ignored>, <IntField (NTPInfoIOStats).received>, <IntField (NTPInfoIOStats).sent>, <IntField (NTPInfoIOStats).notsent>, <IntField (NTPInfoIOStats).interrupts>, <IntField (NTPInfoIOStats).int_received>]
class scapy.layers.ntp.NTPInfoIfStatsIPv4(_pkt, /, *, unaddr='0.0.0.0', unbcast='0.0.0.0', unmask='0.0.0.0', v6_flag=0, ifname=b'', flags=0, last_ttl=0, num_mcast=0, received=0, sent=0, notsent=0, uptime=0, scopeid=0, ifindex=0, ifnum=0, peercnt=0, family=0, ignore_packets=0, action=0, _filler0=0)[source]

Bases: Packet

Interface statistics.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoIfStatsIPv4'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<scapy.fields.PadField object>, <scapy.fields.PadField object>, <scapy.fields.PadField object>, <IntField (NTPInfoIfStatsIPv4).v6_flag>, <StrFixedLenField (NTPInfoIfStatsIPv4).ifname>, <IntField (NTPInfoIfStatsIPv4).flags>, <IntField (NTPInfoIfStatsIPv4).last_ttl>, <IntField (NTPInfoIfStatsIPv4).num_mcast>, <IntField (NTPInfoIfStatsIPv4).received>, <IntField (NTPInfoIfStatsIPv4).sent>, <IntField (NTPInfoIfStatsIPv4).notsent>, <IntField (NTPInfoIfStatsIPv4).uptime>, <IntField (NTPInfoIfStatsIPv4).scopeid>, <IntField (NTPInfoIfStatsIPv4).ifindex>, <IntField (NTPInfoIfStatsIPv4).ifnum>, <IntField (NTPInfoIfStatsIPv4).peercnt>, <ShortField (NTPInfoIfStatsIPv4).family>, <ByteField (NTPInfoIfStatsIPv4).ignore_packets>, <ByteField (NTPInfoIfStatsIPv4).action>, <IntField (NTPInfoIfStatsIPv4)._filler0>]
class scapy.layers.ntp.NTPInfoIfStatsIPv6(_pkt, /, *, unaddr='::', unbcast='::', unmask='::', v6_flag=0, ifname=b'', flags=0, last_ttl=0, num_mcast=0, received=0, sent=0, notsent=0, uptime=0, scopeid=0, ifindex=0, ifnum=0, peercnt=0, family=0, ignore_packets=0, action=0, _filler0=0)[source]

Bases: Packet

Interface statistics.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoIfStatsIPv6'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IP6Field (NTPInfoIfStatsIPv6).unaddr>, <IP6Field (NTPInfoIfStatsIPv6).unbcast>, <IP6Field (NTPInfoIfStatsIPv6).unmask>, <IntField (NTPInfoIfStatsIPv6).v6_flag>, <StrFixedLenField (NTPInfoIfStatsIPv6).ifname>, <IntField (NTPInfoIfStatsIPv6).flags>, <IntField (NTPInfoIfStatsIPv6).last_ttl>, <IntField (NTPInfoIfStatsIPv6).num_mcast>, <IntField (NTPInfoIfStatsIPv6).received>, <IntField (NTPInfoIfStatsIPv6).sent>, <IntField (NTPInfoIfStatsIPv6).notsent>, <IntField (NTPInfoIfStatsIPv6).uptime>, <IntField (NTPInfoIfStatsIPv6).scopeid>, <IntField (NTPInfoIfStatsIPv6).ifindex>, <IntField (NTPInfoIfStatsIPv6).ifnum>, <IntField (NTPInfoIfStatsIPv6).peercnt>, <ShortField (NTPInfoIfStatsIPv6).family>, <ByteField (NTPInfoIfStatsIPv6).ignore_packets>, <ByteField (NTPInfoIfStatsIPv6).action>, <IntField (NTPInfoIfStatsIPv6)._filler0>]
class scapy.layers.ntp.NTPInfoKernel(_pkt, /, *, offset=0, freq=0, maxerror=0, esterror=0, status=0, shift=0, constant=0, precision=0, tolerance=0, ppsfreq=0, jitter=0, stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0)[source]

Bases: Packet

Structure used for returning kernel pll/PPS information

aliastypes = [<class 'scapy.layers.ntp.NTPInfoKernel'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoKernel).offset>, <IntField (NTPInfoKernel).freq>, <IntField (NTPInfoKernel).maxerror>, <IntField (NTPInfoKernel).esterror>, <ShortField (NTPInfoKernel).status>, <ShortField (NTPInfoKernel).shift>, <IntField (NTPInfoKernel).constant>, <IntField (NTPInfoKernel).precision>, <IntField (NTPInfoKernel).tolerance>, <IntField (NTPInfoKernel).ppsfreq>, <IntField (NTPInfoKernel).jitter>, <IntField (NTPInfoKernel).stabil>, <IntField (NTPInfoKernel).jitcnt>, <IntField (NTPInfoKernel).calcnt>, <IntField (NTPInfoKernel).errcnt>, <IntField (NTPInfoKernel).stbcnt>]
class scapy.layers.ntp.NTPInfoLoop(_pkt, /, *, last_offset=0, drift_comp=0, compliance=0, watchdog_timer=0)[source]

Bases: Packet

Loop filter variables.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoLoop'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<TimeStampField (NTPInfoLoop).last_offset>, <TimeStampField (NTPInfoLoop).drift_comp>, <IntField (NTPInfoLoop).compliance>, <IntField (NTPInfoLoop).watchdog_timer>]
class scapy.layers.ntp.NTPInfoMemStats(_pkt, /, *, timereset=0, totalpeermem=0, freepeermem=0, findpeer_calls=0, allocations=0, demobilizations=0, hashcount=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])[source]

Bases: Packet

Peer memory statistics.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoMemStats'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoMemStats).timereset>, <ShortField (NTPInfoMemStats).totalpeermem>, <ShortField (NTPInfoMemStats).freepeermem>, <IntField (NTPInfoMemStats).findpeer_calls>, <IntField (NTPInfoMemStats).allocations>, <IntField (NTPInfoMemStats).demobilizations>, <FieldListField (NTPInfoMemStats).hashcount>]
class scapy.layers.ntp.NTPInfoMonitor1(_pkt, /, *, lasttime=0, firsttime=0, lastdrop=0, count=0, addr='0.0.0.0', daddr='0.0.0.0', flags=0, port=0, mode=0, version=0, v6_flag=0, unused1=0, addr6='::', daddr6='::')[source]

Bases: Packet

Structure used for returning monitor data.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoMonitor1'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoMonitor1).lasttime>, <IntField (NTPInfoMonitor1).firsttime>, <IntField (NTPInfoMonitor1).lastdrop>, <IntField (NTPInfoMonitor1).count>, <IPField (NTPInfoMonitor1).addr>, <IPField (NTPInfoMonitor1).daddr>, <IntField (NTPInfoMonitor1).flags>, <ShortField (NTPInfoMonitor1).port>, <ByteField (NTPInfoMonitor1).mode>, <ByteField (NTPInfoMonitor1).version>, <IntField (NTPInfoMonitor1).v6_flag>, <IntField (NTPInfoMonitor1).unused1>, <IP6Field (NTPInfoMonitor1).addr6>, <IP6Field (NTPInfoMonitor1).daddr6>]
class scapy.layers.ntp.NTPInfoPeer(_pkt, /, *, dstaddr='0.0.0.0', srcaddr='0.0.0.0', srcport=0, flags=<Flag 0 ()>, leap=0, hmode=0, pmode=0, stratum=0, ppoll=0, hpoll=0, precision=0, version=0, unused8=0, reach=0, unreach=0, flash=0, ttl=0, flash2=0, associd=0, keyid=0, pkeyid=0, refid=0, timer=0, rootdelay=0, rootdispersion=0, reftime=0, org=0, rec=0, xmt=0, filtdelay=[0, 0, 0, 0, 0, 0, 0, 0], filtoffset=[0, 0, 0, 0, 0, 0, 0, 0], order=[0, 0, 0, 0, 0, 0, 0, 0], delay=0, dispersion=0, offset=0, selectdisp=0, unused1=0, unused2=0, unused3=0, unused4=0, unused5=0, unused6=0, unused7=0, estbdelay=0, v6_flag=0, unused9=0, dstaddr6='::', srcaddr6='::')[source]

Bases: Packet

Peer information structure.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoPeer'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPInfoPeer).dstaddr>, <IPField (NTPInfoPeer).srcaddr>, <ShortField (NTPInfoPeer).srcport>, <FlagsField (NTPInfoPeer).flags>, <ByteField (NTPInfoPeer).leap>, <ByteEnumField (NTPInfoPeer).hmode>, <ByteField (NTPInfoPeer).pmode>, <ByteField (NTPInfoPeer).stratum>, <ByteField (NTPInfoPeer).ppoll>, <ByteField (NTPInfoPeer).hpoll>, <SignedByteField (NTPInfoPeer).precision>, <ByteField (NTPInfoPeer).version>, <ByteField (NTPInfoPeer).unused8>, <ByteField (NTPInfoPeer).reach>, <ByteField (NTPInfoPeer).unreach>, <XByteField (NTPInfoPeer).flash>, <ByteField (NTPInfoPeer).ttl>, <XLEShortField (NTPInfoPeer).flash2>, <ShortField (NTPInfoPeer).associd>, <LEIntField (NTPInfoPeer).keyid>, <IntField (NTPInfoPeer).pkeyid>, <IPField (NTPInfoPeer).refid>, <IntField (NTPInfoPeer).timer>, <FixedPointField (NTPInfoPeer).rootdelay>, <FixedPointField (NTPInfoPeer).rootdispersion>, <TimeStampField (NTPInfoPeer).reftime>, <TimeStampField (NTPInfoPeer).org>, <TimeStampField (NTPInfoPeer).rec>, <TimeStampField (NTPInfoPeer).xmt>, <FieldListField (NTPInfoPeer).filtdelay>, <FieldListField (NTPInfoPeer).filtoffset>, <FieldListField (NTPInfoPeer).order>, <FixedPointField (NTPInfoPeer).delay>, <FixedPointField (NTPInfoPeer).dispersion>, <TimeStampField (NTPInfoPeer).offset>, <FixedPointField (NTPInfoPeer).selectdisp>, <IntField (NTPInfoPeer).unused1>, <IntField (NTPInfoPeer).unused2>, <IntField (NTPInfoPeer).unused3>, <IntField (NTPInfoPeer).unused4>, <IntField (NTPInfoPeer).unused5>, <IntField (NTPInfoPeer).unused6>, <IntField (NTPInfoPeer).unused7>, <FixedPointField (NTPInfoPeer).estbdelay>, <IntField (NTPInfoPeer).v6_flag>, <IntField (NTPInfoPeer).unused9>, <IP6Field (NTPInfoPeer).dstaddr6>, <IP6Field (NTPInfoPeer).srcaddr6>]
class scapy.layers.ntp.NTPInfoPeerList(_pkt, /, *, addr='0.0.0.0', port=0, hmode=0, flags=<Flag 0 ()>, v6_flag=0, unused1=0, addr6='::')[source]

Bases: Packet

Used to return raw lists of peers.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoPeerList'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPInfoPeerList).addr>, <ShortField (NTPInfoPeerList).port>, <ByteEnumField (NTPInfoPeerList).hmode>, <FlagsField (NTPInfoPeerList).flags>, <IntField (NTPInfoPeerList).v6_flag>, <IntField (NTPInfoPeerList).unused1>, <IP6Field (NTPInfoPeerList).addr6>]
class scapy.layers.ntp.NTPInfoPeerStats(_pkt, /, *, dstaddr='0.0.0.0', srcaddr='0.0.0.0', srcport=0, flags=<Flag 0 ()>, timereset=0, timereceived=0, timetosend=0, timereachable=0, sent=0, unused1=0, processed=0, unused2=0, badauth=0, bogusorg=0, oldpkt=0, unused3=0, unused4=0, seldisp=0, selbroken=0, unused5=0, candidate=0, unused6=0, unused7=0, unused8=0, v6_flag=0, unused9=0, dstaddr6='::', srcaddr6='::')[source]

Bases: Packet

Peer statistics structure.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoPeerStats'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPInfoPeerStats).dstaddr>, <IPField (NTPInfoPeerStats).srcaddr>, <ShortField (NTPInfoPeerStats).srcport>, <FlagsField (NTPInfoPeerStats).flags>, <IntField (NTPInfoPeerStats).timereset>, <IntField (NTPInfoPeerStats).timereceived>, <IntField (NTPInfoPeerStats).timetosend>, <IntField (NTPInfoPeerStats).timereachable>, <IntField (NTPInfoPeerStats).sent>, <IntField (NTPInfoPeerStats).unused1>, <IntField (NTPInfoPeerStats).processed>, <IntField (NTPInfoPeerStats).unused2>, <IntField (NTPInfoPeerStats).badauth>, <IntField (NTPInfoPeerStats).bogusorg>, <IntField (NTPInfoPeerStats).oldpkt>, <IntField (NTPInfoPeerStats).unused3>, <IntField (NTPInfoPeerStats).unused4>, <IntField (NTPInfoPeerStats).seldisp>, <IntField (NTPInfoPeerStats).selbroken>, <IntField (NTPInfoPeerStats).unused5>, <ByteField (NTPInfoPeerStats).candidate>, <ByteField (NTPInfoPeerStats).unused6>, <ByteField (NTPInfoPeerStats).unused7>, <ByteField (NTPInfoPeerStats).unused8>, <IntField (NTPInfoPeerStats).v6_flag>, <IntField (NTPInfoPeerStats).unused9>, <IP6Field (NTPInfoPeerStats).dstaddr6>, <IP6Field (NTPInfoPeerStats).srcaddr6>]
class scapy.layers.ntp.NTPInfoPeerSummary(_pkt, /, *, dstaddr='0.0.0.0', srcaddr='0.0.0.0', srcport=0, stratum=0, hpoll=0, ppoll=0, reach=0, flags=<Flag 0 ()>, hmode={0: 'reserved', 1: 'symmetric active', 2: 'symmetric passive', 3: 'client', 4: 'server', 5: 'broadcast', 6: 'NTP control message', 7: 'reserved for private use'}, delay=0, offset=0, dispersion=0, v6_flag=0, unused1=0, dstaddr6='::', srcaddr6='::')[source]

Bases: Packet

Sort of the info that ntpdc returns by default.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoPeerSummary'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPInfoPeerSummary).dstaddr>, <IPField (NTPInfoPeerSummary).srcaddr>, <ShortField (NTPInfoPeerSummary).srcport>, <ByteField (NTPInfoPeerSummary).stratum>, <ByteField (NTPInfoPeerSummary).hpoll>, <ByteField (NTPInfoPeerSummary).ppoll>, <ByteField (NTPInfoPeerSummary).reach>, <FlagsField (NTPInfoPeerSummary).flags>, <ByteField (NTPInfoPeerSummary).hmode>, <FixedPointField (NTPInfoPeerSummary).delay>, <TimeStampField (NTPInfoPeerSummary).offset>, <FixedPointField (NTPInfoPeerSummary).dispersion>, <IntField (NTPInfoPeerSummary).v6_flag>, <IntField (NTPInfoPeerSummary).unused1>, <IP6Field (NTPInfoPeerSummary).dstaddr6>, <IP6Field (NTPInfoPeerSummary).srcaddr6>]
class scapy.layers.ntp.NTPInfoSys(_pkt, /, *, peer='0.0.0.0', peer_mode=0, leap=0, stratum=0, precision=0, rootdelay=0, rootdispersion=0, refid=0, reftime=0, poll=0, flags=<Flag 0 ()>, unused1=0, unused2=0, unused3=0, bdelay=0, frequency=0, authdelay=0, stability=0, v6_flag=0, unused4=0, peer6='::')[source]

Bases: Packet

System info. Mostly the sys.* variables, plus a few unique to the implementation.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoSys'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IPField (NTPInfoSys).peer>, <ByteField (NTPInfoSys).peer_mode>, <ByteField (NTPInfoSys).leap>, <ByteField (NTPInfoSys).stratum>, <SignedByteField (NTPInfoSys).precision>, <FixedPointField (NTPInfoSys).rootdelay>, <FixedPointField (NTPInfoSys).rootdispersion>, <IPField (NTPInfoSys).refid>, <TimeStampField (NTPInfoSys).reftime>, <IntField (NTPInfoSys).poll>, <FlagsField (NTPInfoSys).flags>, <ByteField (NTPInfoSys).unused1>, <ByteField (NTPInfoSys).unused2>, <ByteField (NTPInfoSys).unused3>, <FixedPointField (NTPInfoSys).bdelay>, <FixedPointField (NTPInfoSys).frequency>, <TimeStampField (NTPInfoSys).authdelay>, <FixedPointField (NTPInfoSys).stability>, <IntField (NTPInfoSys).v6_flag>, <IntField (NTPInfoSys).unused4>, <IP6Field (NTPInfoSys).peer6>]
class scapy.layers.ntp.NTPInfoSysStats(_pkt, /, *, timeup=0, timereset=0, denied=0, oldversionpkt=0, newversionpkt=0, unknownversion=0, badlength=0, processed=0, badauth=0, received=0, limitrejected=0)[source]

Bases: Packet

System stats. These are collected in the protocol module.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoSysStats'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoSysStats).timeup>, <IntField (NTPInfoSysStats).timereset>, <IntField (NTPInfoSysStats).denied>, <IntField (NTPInfoSysStats).oldversionpkt>, <IntField (NTPInfoSysStats).newversionpkt>, <IntField (NTPInfoSysStats).unknownversion>, <IntField (NTPInfoSysStats).badlength>, <IntField (NTPInfoSysStats).processed>, <IntField (NTPInfoSysStats).badauth>, <IntField (NTPInfoSysStats).received>, <IntField (NTPInfoSysStats).limitrejected>]
class scapy.layers.ntp.NTPInfoTimerStats(_pkt, /, *, timereset=0, alarms=0, overflows=0, xmtcalls=0)[source]

Bases: Packet

Timer stats.

aliastypes = [<class 'scapy.layers.ntp.NTPInfoTimerStats'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<IntField (NTPInfoTimerStats).timereset>, <IntField (NTPInfoTimerStats).alarms>, <IntField (NTPInfoTimerStats).overflows>, <IntField (NTPInfoTimerStats).xmtcalls>]
class scapy.layers.ntp.NTPPeerStatusDataPacket(_pkt, /, *, association_id=0, peer_status=<NTPPeerStatusPacket  |>)[source]

Bases: Packet

Packet handling the data field when op_code is CTL_OP_READSTAT and the association_id field is null.

aliastypes = [<class 'scapy.layers.ntp.NTPPeerStatusDataPacket'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (NTPPeerStatusDataPacket).association_id>, <PacketField (NTPPeerStatusDataPacket).peer_status>]
class scapy.layers.ntp.NTPPeerStatusPacket(_pkt, /, *, configured=0, auth_enabled=0, authentic=0, reachability=0, reserved=0, peer_sel=0, peer_event_counter=0, peer_event_code=0)[source]

Bases: Packet

Packet handling the peer status fields.

aliastypes = [<class 'scapy.layers.ntp.NTPPeerStatusPacket'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (NTPPeerStatusPacket).configured>, <BitField (NTPPeerStatusPacket).auth_enabled>, <BitField (NTPPeerStatusPacket).authentic>, <BitField (NTPPeerStatusPacket).reachability>, <BitField (NTPPeerStatusPacket).reserved>, <BitEnumField (NTPPeerStatusPacket).peer_sel>, <BitField (NTPPeerStatusPacket).peer_event_counter>, <BitEnumField (NTPPeerStatusPacket).peer_event_code>]
class scapy.layers.ntp.NTPPrivate(_pkt, /, *, response=0, more=0, version=2, mode=7, auth=0, seq=0, implementation=0, request_code=0, err=0, nb_items=0, mbz=0, data_item_size=0, req_data=[], data=[], authenticator=b'')[source]

Bases: NTP

Packet handling the private (mode 7) messages.

aliastypes = [<class 'scapy.layers.ntp.NTPPrivate'>, <class 'scapy.layers.ntp.NTP'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitField (NTPPrivate).response>, <BitField (NTPPrivate).more>, <BitField (NTPPrivate).version>, <BitEnumField (NTPPrivate).mode>, <BitField (NTPPrivate).auth>, <BitField (NTPPrivate).seq>, <ByteEnumField (NTPPrivate).implementation>, <ByteEnumField (NTPPrivate).request_code>, <BitEnumField (NTPPrivate).err>, <BitField (NTPPrivate).nb_items>, <BitField (NTPPrivate).mbz>, <BitField (NTPPrivate).data_item_size>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
match_subclass = True
class scapy.layers.ntp.NTPPrivatePktTail(_pkt, /, *, tstamp=0, key_id=0, dgst=b'')[source]

Bases: Packet

include/ntp_request.h The req_pkt_tail structure is used by ntpd to adjust for different packet sizes that may arrive.

aliastypes = [<class 'scapy.layers.ntp.NTPPrivatePktTail'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<TimeStampField (NTPPrivatePktTail).tstamp>, <IntField (NTPPrivatePktTail).key_id>, <XStrFixedLenField (NTPPrivatePktTail).dgst>]
class scapy.layers.ntp.NTPPrivateReqPacket(_pkt, /, *, req_data=b'')[source]

Bases: Packet

Packet handling request data.

aliastypes = [<class 'scapy.layers.ntp.NTPPrivateReqPacket'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<StrField (NTPPrivateReqPacket).req_data>]
class scapy.layers.ntp.NTPPrivateReqPacketListField(name: str, default: Optional[List[BasePacket]], pkt_cls: Optional[Union[Callable[[bytes], Packet], Type[Packet]]]  # noqa: E501 = None, count_from: Optional[Callable[[Packet], int]] = None, length_from: Optional[Callable[[Packet], int]] = None, next_cls_cb: Optional[Callable[[Packet, List[BasePacket], Optional[Packet], bytes], Optional[Type[Packet]]]]  # noqa: E501 = None, max_count: Optional[int] = None)[source]

Bases: PacketListField

Handles specific request packets.

getfield(pkt, s)[source]
m2i(pkt, s)[source]
class scapy.layers.ntp.NTPPrivateRespPacketListField(name: str, default: Optional[List[BasePacket]], pkt_cls: Optional[Union[Callable[[bytes], Packet], Type[Packet]]]  # noqa: E501 = None, count_from: Optional[Callable[[Packet], int]] = None, length_from: Optional[Callable[[Packet], int]] = None, next_cls_cb: Optional[Callable[[Packet, List[BasePacket], Optional[Packet], bytes], Optional[Type[Packet]]]]  # noqa: E501 = None, max_count: Optional[int] = None)[source]

Bases: PacketListField

PacketListField handling the response data.

getfield(pkt, s)[source]
m2i(pkt, s)[source]
class scapy.layers.ntp.NTPSystemStatusPacket(_pkt, /, *, leap_indicator=0, clock_source=0, system_event_counter=0, system_event_code=0)[source]

Bases: Packet

Packet handling the system status fields.

aliastypes = [<class 'scapy.layers.ntp.NTPSystemStatusPacket'>, <class 'scapy.packet.Packet'>]
extract_padding(s)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<BitEnumField (NTPSystemStatusPacket).leap_indicator>, <BitEnumField (NTPSystemStatusPacket).clock_source>, <BitField (NTPSystemStatusPacket).system_event_counter>, <BitEnumField (NTPSystemStatusPacket).system_event_code>]
class scapy.layers.ntp.TimeStampField(name, default)[source]

Bases: FixedPointField

This field handles the timestamp fields in the NTP header.

any2i(pkt, val)[source]
i2m(pkt, val)[source]
i2repr(pkt, val)[source]
class scapy.layers.ntp.XLEShortField(name: str, default: int | None)[source]

Bases: LEShortField

XShortField which value is encoded in little endian.

i2repr(pkt, x)[source]