Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/master/lib/rex/proto/ms_dnsp.rb
Views: 15981
# -*- coding: binary -*-1# frozen_string_literal: true23require 'bindata'45module Rex::Proto6module MsDnsp7# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dnsp/39b03b89-2264-4063-8198-d62f62a6441a8class DnsRecordType9DNS_TYPE_ZERO = 0x000010DNS_TYPE_A = 0x000111DNS_TYPE_NS = 0x000212DNS_TYPE_MD = 0x000313DNS_TYPE_MF = 0x000414DNS_TYPE_CNAME = 0x000515DNS_TYPE_SOA = 0x000616DNS_TYPE_MB = 0x000717DNS_TYPE_MG = 0x000818DNS_TYPE_MR = 0x000919DNS_TYPE_NULL = 0x000A20DNS_TYPE_WKS = 0x000B21DNS_TYPE_PTR = 0x000C22DNS_TYPE_HINFO = 0x000D23DNS_TYPE_MINFO = 0x000E24DNS_TYPE_MX = 0x000F25DNS_TYPE_TXT = 0x001026DNS_TYPE_RP = 0x001127DNS_TYPE_AFSDB = 0x001228DNS_TYPE_X25 = 0x001329DNS_TYPE_ISDN = 0x001430DNS_TYPE_RT = 0x001531DNS_TYPE_SIG = 0x001832DNS_TYPE_KEY = 0x001933DNS_TYPE_AAAA = 0x001C34DNS_TYPE_LOC = 0x001D35DNS_TYPE_NXT = 0x001E36DNS_TYPE_SRV = 0x002137DNS_TYPE_ATMA = 0x002238DNS_TYPE_NAPTR = 0x002339DNS_TYPE_DNAME = 0x002740DNS_TYPE_DS = 0x002B41DNS_TYPE_RRSIG = 0x002E42DNS_TYPE_NSEC = 0x002F43DNS_TYPE_DNSKEY = 0x003044DNS_TYPE_DHCID = 0x003145DNS_TYPE_NSEC3 = 0x003246DNS_TYPE_NSEC3PARAM = 0x003347DNS_TYPE_TLSA = 0x003448DNS_TYPE_ALL = 0x00FF49DNS_TYPE_WINS = 0xFF0150DNS_TYPE_WINSR = 0xFF0251end5253class MsDnspAddr4 < BinData::Primitive54string :data, length: 45556def get57Rex::Socket.addr_ntoa(self.data)58end5960def set(v)61raise TypeError, 'must be an IPv4 address' unless Rex::Socket.is_ipv4?(v)6263self.data = Rex::Socket.addr_aton(v)64end65end6667class MsDnspAddr6 < BinData::Primitive68string :data, length: 166970def get71Rex::Socket.addr_ntoa(self.data)72end7374def set(v)75raise TypeError, 'must be an IPv6 address' unless Rex::Socket.is_ipv6?(v)7677self.data = Rex::Socket.addr_aton(v)78end79end8081# see: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dnsp/6912b338-5472-4f59-b912-0edb536b6ed882class MsDnspDnsRecord < BinData::Record83endian :little8485uint16 :data_length, initial_value: -> { data.length }86uint16 :record_type87uint8 :version88uint8 :rank89uint16 :flags90uint32 :serial91uint32be :ttl_seconds92uint32 :reserved93uint32 :timestamp94choice :data, selection: :record_type do95ms_dnsp_addr4 DnsRecordType::DNS_TYPE_A96ms_dnsp_addr6 DnsRecordType::DNS_TYPE_AAAA97string :default, read_length: :data_length98end99end100end101end102103104