
    hvv                        d Z ddlZddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ i d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+i d,d-d.d/d0d1d2d+d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLi dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdni dodpdqdrdsd+dtdudvdwdxdydzd{d|d}d~dddddddddddddddddi ddddddddddddddddddddddddddddddddddi dddddddddddddddd+ddddēddƓddȓddʓdd̓ddΓddГddғi ddԓdd֓ddؓddړddܓddޓddddddddddddddddddddddi dddddddddddd ddddddddd	d
ddddddddddddi dddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8i d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZi d[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd+dZ  G d de          Z! G d de!          Z" G d de"          Z# G d de"          Z$ G d de#          Z% G d de#          Z& G d de#          Z' G d de#          Z( G d de#          Z) G d de#          Z* G d de#          Z+ G d de#          Z, G d de#          Z- G d de#          Z. G d de#          Z/ G d de#          Z0 G d de#          Z1 G d de#          Z2 G d de#          Z3 G d de#          Z4 G d de#          Z5 G d de#          Z6 G d de#          Z7 G d de#          Z8 G d de#          Z9 G d de#          Z: G d de#          Z; G d de#          Z< G d de#          Z= G d de#          Z> G d de#          Z? G d de#          Z@ G d de#          ZA G dÄ de#          ZB G dń de#          ZC G dǄ de#          ZD G dɄ de#          ZE G d˄ de"          ZF G d̈́ deF          ZG G dτ deF          ZHdф ZI G d҄ deF          ZJ G dԄ de"          ZK G dք deK          ZL G d؄ deK          ZM G dڄ deK          ZN G d܄ deK          ZO G dބ deK          ZP G d deK          ZQ G d deK          ZR G d deK          ZS G d deK          ZT G d deK          ZU G d deK          ZVi di d
dddddddddddddddddddddd dd"dd$dd&dd(dd*dddddd dddddddddd	d
ddd"dddddd&dddddddd+dd	dAddddWdddd+d+d+dd d!d"d#d$d%d&d'd(dad)d*d+d,d-dii d
d.dd/dd0dd1dd2dd3dd4dd5dd6dd7dd8d d9d"d:d$d;d&d<d(d=d*d>d?d@dAdBdCdDdEdi ddFd
dGddHddIddJddKddLddMddNddOddPddQd dRd"dSd$dTd&dUd(dVi d*dWd,dXd.dYd0dZd2d[d3d\d5d]d7d^d9d_d;d`d=dad?dbdAdcdCdddEdedGdfdIdgdhdidjdkdldmdndodpdqdr
ddsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddd(dddddd-dddddi dddddddddddddddddddddddddddddddddddddddddddddddiddÐdĐdŐdƜdǐdȐdɐdʐdːd̐d͐dΐdϜdАdѐdҐdӜdԜZW G dՄ de"          ZX G dׄ deX          ZY G dل deX          ZZ G dۄ deX          Z[ G d݄ deX          Z\ G d߄ deX          Z] G d deX          Z^ G d de          Z_ G d de!          Z` G d de!          Zai d
dddddddddddddddddddddd dd"dd2dd3dd5dd7di d9dd;dd=dd?ddAddCddEddGd dIddKddWddYdd[dd]dd_ddaddkd	d
ddddddddZb G d de          Zc eeecd            eeecd            eeecd            eeecd            eeecd            eeecd            e
eecdd           dS (  z
RADIUS (Remote Authentication Dial In User Service)

To disable Radius-EAP defragmentation (True by default), you can use::

    conf.contribs.setdefault("radius", {}).setdefault("auto-defrag", False)
    N)orbraw)PacketPaddingbind_layersbind_bottom_up)	ByteFieldByteEnumFieldIntFieldStrLenFieldXStrLenFieldXStrFixedLenFieldFieldLenFieldPacketLenFieldPacketListFieldIPFieldMultiEnumField)UDP)EAP)conf)Scapy_Exception   z	User-Name   zUser-Password   zCHAP-Password   zNAS-IP-Address   zNAS-Port   zService-Type   zFramed-Protocol   zFramed-IP-Address	   zFramed-IP-Netmask
   zFramed-Routing   z	Filter-Id   z
Framed-MTU   zFramed-Compression   zLogin-IP-Host   zLogin-Service   zLogin-TCP-Port   
Unassigned   zReply-Message   zCallback-Number   zCallback-Id      zFramed-Route   zFramed-IPX-Network   State   Class   Vendor-Specific   zSession-Timeout   zIdle-Timeout   zTermination-Action   zCalled-Station-Id   zCalling-Station-Id    zNAS-Identifier!   zProxy-State"   zLogin-LAT-Service#   zLogin-LAT-Node$   zLogin-LAT-Group%   zFramed-AppleTalk-Link&   zFramed-AppleTalk-Network'   zFramed-AppleTalk-Zone(   zAcct-Status-Type)   zAcct-Delay-Time*   zAcct-Input-Octets+   zAcct-Output-Octets,   zAcct-Session-Id-   zAcct-Authentic.   zAcct-Session-Time/   zAcct-Input-Packets0   zAcct-Output-Packets1   zAcct-Terminate-Cause2   zAcct-Multi-Session-Id3   zAcct-Link-Count4   zAcct-Input-Gigawords5   zAcct-Output-Gigawords6   7   zEvent-Timestamp8   zEgress-VLANID9   zIngress-Filters:   zEgress-VLAN-Name;   zUser-Priority-Table<   zCHAP-Challenge=   zNAS-Port-Type>   z
Port-Limit?   zLogin-LAT-Port@   zTunnel-TypeA   zTunnel-Medium-TypeB   zTunnel-Client-EndpointC   zTunnel-Server-EndpointD   zAcct-Tunnel-ConnectionE   zTunnel-PasswordF   zARAP-PasswordG   zARAP-FeaturesH   zARAP-Zone-AccessI   zARAP-SecurityJ   zARAP-Security-DataK   zPassword-RetryL   PromptM   zConnect-InfoN   zConfiguration-TokenO   EAP-MessageP   zMessage-AuthenticatorQ   zTunnel-Private-Group-IDR   zTunnel-Assignment-IDS   zTunnel-PreferenceT   zARAP-Challenge-ResponseU   zAcct-Interim-IntervalV   zAcct-Tunnel-Packets-LostW   zNAS-Port-IdX   zFramed-PoolY   CUIZ   zTunnel-Client-Auth-ID[   zTunnel-Server-Auth-ID\   zNAS-Filter-Rule]   ^   zOriginating-Line-Info_   zNAS-IPv6-Address`   zFramed-Interface-Ida   zFramed-IPv6-Prefixb   zLogin-IPv6-Hostc   zFramed-IPv6-Routed   zFramed-IPv6-Poole   zError-Causef   zEAP-Key-Nameg   zDigest-Responseh   zDigest-Realmi   zDigest-Noncej   zDigest-Response-Authk   zDigest-Nextnoncel   zDigest-Methodm   z
Digest-URIn   z
Digest-Qopo   zDigest-Algorithmp   zDigest-Entity-Body-Hashq   zDigest-CNoncer   zDigest-Nonce-Counts   zDigest-Usernamet   zDigest-Opaqueu   zDigest-Auth-Paramv   zDigest-AKA-Autsw   zDigest-Domainx   zDigest-Staley   z
Digest-HA1z   zSIP-AOR{   zDelegated-IPv6-Prefix|   zMIP6-Feature-Vector}   zMIP6-Home-Link-Prefix~   zOperator-Name   zLocation-Information   zLocation-Data   zBasic-Location-Policy-Rules   zExtended-Location-Policy-Rules   zLocation-Capable   zRequested-Location-Info   zFramed-Management-Protocol   zManagement-Transport-Protection   zManagement-Policy-Id   zManagement-Privilege-Level   zPKM-SS-Cert   zPKM-CA-Cert   zPKM-Config-Settings   zPKM-Cryptosuite-List   zPKM-SAID   zPKM-SA-Descriptor   zPKM-Auth-Key   zDS-Lite-Tunnel-Name   zMobile-Node-Identifier   zService-Selection   zPMIP6-Home-LMA-IPv6-Address   zPMIP6-Visited-LMA-IPv6-Address   zPMIP6-Home-LMA-IPv4-Address   zPMIP6-Visited-LMA-IPv4-Address   zPMIP6-Home-HN-Prefix   zPMIP6-Visited-HN-Prefix   zPMIP6-Home-Interface-ID   zPMIP6-Visited-Interface-ID   zPMIP6-Home-IPv4-HoA   zPMIP6-Visited-IPv4-HoA   zPMIP6-Home-DHCP4-Server-Address   z"PMIP6-Visited-DHCP4-Server-Address   zPMIP6-Home-DHCP6-Server-Address   z"PMIP6-Visited-DHCP6-Server-Address   zPMIP6-Home-IPv4-Gateway   zPMIP6-Visited-IPv4-Gateway   zEAP-Lower-Layer   zGSS-Acceptor-Service-Name   zGSS-Acceptor-Host-Name   zGSS-Acceptor-Service-Specifics   zGSS-Acceptor-Realm-Name   zFramed-IPv6-Address   zDNS-Server-IPv6-Address   zRoute-IPv6-Information   zDelegated-IPv6-Prefix-Pool   zStateful-IPv6-Address-Pool   zIPv6-6rd-Configuration   zAllowed-Called-Station-Id   zEAP-Peer-Id   zEAP-Server-Id   zMobility-Domain-Id   zPreauth-Timeout   zNetwork-Id-Name   zEAPoL-Announcement   zWLAN-HESSID   zWLAN-Venue-Info   zWLAN-Venue-Language   zWLAN-Venue-Name   zWLAN-Reason-Code   zWLAN-Pairwise-Cipher   zWLAN-Group-CipherzWLAN-AKM-SuitezWLAN-Group-Mgmt-CipherzWLAN-RF-Band)            c                       e Zd ZdZdZ edde           eddddd	 
           eddd           gZ	i Z
ed             Zedd            Zd Zd ZdS )RadiusAttributez{
    Implements a RADIUS attribute (RFC 2865). Every specific RADIUS attribute
    class should inherit from this one.
    zRadius Attributetyper   lenNvalueBc                 0    t          | j                  dz   S Nr   r   r   pktxs     W/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/radius.py<lambda>zRadiusAttribute.<lambda>   s    C	NNQ,>     adjust c                     | j         dz
  S r   r   r   s    r   r   zRadiusAttribute.<lambda>   s    1 r   length_fromc                 p    t          | d          r| | j        | j        <   dS | | j        | j        j        <   dS )zI
        Registers the RADIUS attributes defined in this module.
        valN)hasattrregistered_attributesr   r   default)clss    r   register_variantz RadiusAttribute.register_variant   sC     3 	>14C%cg...:=C%ch&6777r   c                 j    |r0t          |d                   }| j                            ||           S | S )zM
        Returns the right RadiusAttribute class for the given data.
        r   )r   r   get)r   _pktargskargs	attr_types        r   dispatch_hookzRadiusAttribute.dispatch_hook   s:      	ADGI,00C@@@
r   c                     | j         }|:t          |          }|d d         t          j        d|          z   |dd          z   }|S )Nr   !Br   r   structpackselfppaylengths       r   
post_buildzRadiusAttribute.post_build  sI    >VVF"1"D&111AabbE9Ar   c                     t           S N)r   )r	  _s     r   guess_payload_classz#RadiusAttribute.guess_payload_class  s    r   r  )__name__
__module____qualname____doc__namer
   _radius_attribute_typesr   r   fields_descr   classmethodr   r  r  r   r   r   r   r      s         
 Dfa!899eT7C>>	@ 	@ 	@GR-D-DEEE	K > > [>    [      r   r   c                   .     e Zd ZdZdgZdZd fd	Z xZS )	_SpecificRadiusAttrza
    Class from which every "specific" RADIUS attribute defined in this module
    inherits.
    r   Tr   Nr   c                 l    t          t          |           j        ||||fi | | j        | j        d<   | j        j                            d          }t          |          dk     r,t          d
                    | j        j                            |d                             dd          | _        d S Nr   RadiusAttr_r   zInvalid class name: {}r   r  -)superr  __init__r   fields	__class__r  splitr   r   formatreplacer  r	  r   post_transform	_internal_underlayerr#  
name_partsr$  s          r   r"  z_SpecificRadiusAttr.__init__  s    1!4((1		
 	

 	
 	
 	
 #hF^,22=AA
z??Q!(//0GHH   qM))#s33			r   r   Nr   N)r  r  r  r  	__slots__match_subclassr"  __classcell__r$  s   @r   r  r    sU         
 IN4 4 4 4 4 4 4 4 4 4r   r  c                   Z    e Zd ZdZ edde           edd           edd          gZdS )	_RadiusAttrIntValueR
    Implements a RADIUS attribute which value field is 4 bytes long integer.
    r   r   r   r   r   r   N)	r  r  r  r  r
   r  r	   r   r  r  r   r   r3  r3  .  sQ         
 	fa!899	%!KKKr   r3  c                       e Zd ZdZdZdS )RadiusAttr_User_NameRFC 2865r   Nr  r  r  r  r   r  r   r   r6  r6  :          N
CCCr   r6  c                       e Zd ZdZdZdS )RadiusAttr_NAS_Portr7  r   Nr8  r  r   r   r;  r;  ?  r9  r   r;  c                       e Zd ZdZdZdS )RadiusAttr_Framed_MTUr7  r#   Nr8  r  r   r   r=  r=  D          N
CCCr   r=  c                       e Zd ZdZdZdS )RadiusAttr_Login_TCP_Portr7  r'   Nr8  r  r   r   r@  r@  I  r>  r   r@  c                       e Zd ZdZdZdS )RadiusAttr_Session_Timeoutr7  r6   Nr8  r  r   r   rB  rB  N  r>  r   rB  c                       e Zd ZdZdZdS )RadiusAttr_Idle_Timeoutr7  r7   Nr8  r  r   r   rD  rD  S  r>  r   rD  c                       e Zd ZdZdZdS ) RadiusAttr_Framed_AppleTalk_Linkr7  r@   Nr8  r  r   r   rF  rF  X  r>  r   rF  c                       e Zd ZdZdZdS )#RadiusAttr_Framed_AppleTalk_Networkr7  rA   Nr8  r  r   r   rH  rH  ]  r>  r   rH  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Delay_TimeRFC 2866rD   Nr8  r  r   r   rJ  rJ  b  r>  r   rJ  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Input_OctetsrK  rE   Nr8  r  r   r   rM  rM  g  r>  r   rM  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Output_OctetsrK  rF   Nr8  r  r   r   rO  rO  l  r>  r   rO  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Session_TimerK  rI   Nr8  r  r   r   rQ  rQ  q  r>  r   rQ  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Input_PacketsrK  rJ   Nr8  r  r   r   rS  rS  v  r>  r   rS  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Output_PacketsrK  rK   Nr8  r  r   r   rU  rU  {  r>  r   rU  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Link_CountrK  rN   Nr8  r  r   r   rW  rW    r>  r   rW  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Input_GigawordsRFC 2869rO   Nr8  r  r   r   rY  rY    r>  r   rY  c                       e Zd ZdZdZdS ) RadiusAttr_Acct_Output_GigawordsrZ  rP   Nr8  r  r   r   r\  r\    r>  r   r\  c                       e Zd ZdZdZdS )RadiusAttr_Egress_VLANIDzRFC 4675rS   Nr8  r  r   r   r^  r^    r>  r   r^  c                       e Zd ZdZdZdS )RadiusAttr_Port_Limitr7  rY   Nr8  r  r   r   r`  r`    r>  r   r`  c                       e Zd ZdZdZdS )RadiusAttr_ARAP_SecurityrZ  rd   Nr8  r  r   r   rb  rb    r>  r   rb  c                       e Zd ZdZdZdS )RadiusAttr_Password_RetryrZ  rf   Nr8  r  r   r   rd  rd    r>  r   rd  c                       e Zd ZdZdZdS )RadiusAttr_Tunnel_PreferencezRFC 2868rp   Nr8  r  r   r   rf  rf    r>  r   rf  c                       e Zd ZdZdZdS ) RadiusAttr_Acct_Interim_IntervalrZ  rr   Nr8  r  r   r   rh  rh    r>  r   rh  c                       e Zd ZdZdZdS )#RadiusAttr_Acct_Tunnel_Packets_LostzRFC 2867rs   Nr8  r  r   r   rj  rj    r>  r   rj  c                       e Zd ZdZdZdS )%RadiusAttr_Management_Privilege_LevelzRFC 5607r   Nr8  r  r   r   rl  rl            N
CCCr   rl  c                       e Zd ZdZdZdS )RadiusAttr_Mobility_Domain_IdRFC 7268r   Nr8  r  r   r   ro  ro    rm  r   ro  c                       e Zd ZdZdZdS )RadiusAttr_Preauth_Timeoutrp  r   Nr8  r  r   r   rr  rr    rm  r   rr  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_Venue_Inforp  r   Nr8  r  r   r   rt  rt    rm  r   rt  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_Reason_Coderp  r   Nr8  r  r   r   rv  rv    rm  r   rv  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_Pairwise_Cipherrp  r   Nr8  r  r   r   rx  rx    rm  r   rx  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_Group_Cipherrp  r   Nr8  r  r   r   rz  rz    rm  r   rz  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_AKM_Suiterp  r   Nr8  r  r   r   r|  r|    rm  r   r|  c                       e Zd ZdZdZdS )!RadiusAttr_WLAN_Group_Mgmt_Cipherrp  r   Nr8  r  r   r   r~  r~    rm  r   r~  c                       e Zd ZdZdZdS )RadiusAttr_WLAN_RF_Bandrp  r   Nr8  r  r   r   r  r    rm  r   r  c                        e Zd ZdZdgZd fd	Z edde           ed	dd
dd            e	d
dd           gZ
 xZS )_RadiusAttrHexStringValzg
    Implements a RADIUS attribute which value field is a string that will be
    as a hex string.
    r   r   Nr   c                 l    t          t          |           j        ||||fi | | j        | j        d<   | j        j                            d          }t          |          dk     r,t          d
                    | j        j                            |d                             dd          | _        d S r  )r!  r  r"  r   r#  r$  r  r%  r   r   r&  r'  r  r(  s          r   r"  z _RadiusAttrHexStringVal.__init__  s    5%t,,5		
 	

 	
 	
 	
 #hF^,22=AA
z??Q!(//0GHH   qM))#s33			r   r   r0   r   r   r   c                 0    t          | j                  dz   S r   r   r
  r   s     r   r   z _RadiusAttrHexStringVal.<lambda>      AGq 0 r   r   c                 (    | j         r
| j         dz
  ndS )Nr   r   r   r
  s    r   r   z _RadiusAttrHexStringVal.<lambda>	  s    QU8Q		PQ r   r   r-  )r  r  r  r  r.  r"  r
   r  r   r   r  r0  r1  s   @r   r  r    s         
 I4 4 4 4 4 4" 	fb"9::00	
 	
 	
 	Wb.Q.QRRR
KKKKKr   r  c                       e Zd ZdZdZdS )RadiusAttr_User_Passwordr7  r   Nr8  r  r   r   r  r    r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Stater7  r0   Nr8  r  r   r   r  r    r>  r   r  c                     t          j        d| j                  }|t          j        d| j                  z  }|t          j        d| j                  z  }d}| j        D ]}|t          |          z  }||z   |z   S )zA
    Pack RADIUS data prior computing the authentication MAC
    r  !Hr   )r  r  codeidr   
attributesr   )radius_packetpacked_req_authenticator
packed_hdrpacked_attrsattrs        r   prepare_packed_datar    s    
 T=#566J&+dM$4555J&+dM$5666JL( " "D		!00<??r   c                   |    e Zd ZdZdZ edde           edddd           edd	d
          gZ	e
d             ZdS ) RadiusAttr_Message_AuthenticatorrZ  rm   r   r0   r   r*   r   r   z                r'   )r  c                     | t                    }t          |j        dz
            |_        t	          | |          }t          j        ||t          j                  }|	                                S )zm
        Computes the "Message-Authenticator" of a given RADIUS packet.
        (RFC 2869 - Page 33)
        r   )
r  	bytearrayr   r   r  hmacnewhashlibmd5digest)r  r  shared_secretr  dataradius_hmacs         r   compute_message_authenticatorz>RadiusAttr_Message_Authenticator.compute_message_authenticator6  s[     =>tx!|,,
"=2JKKh}dGK@@!!###r   N)r  r  r  r  r   r
   r  r   r   r  staticmethodr  r  r   r   r  r  '  s        N
C 	fb"9::		
 	
 	';r:::	K $ $ \$ $ $r   r  c                   `    e Zd ZdZdgZ edde           edd           edd          gZ	d	S )
_RadiusAttrIPv4AddrValzM
    Implements a RADIUS attribute which value field is an IPv4 address.
    r   r   r   r   r   r   z0.0.0.0N)
r  r  r  r  r.  r
   r  r	   r   r  r  r   r   r  r  J  sZ          I 	fa!899	%##KKKr   r  c                       e Zd ZdZdZdS )RadiusAttr_NAS_IP_Addressr7  r   Nr8  r  r   r   r  r  X  r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Framed_IP_Addressr7  r   Nr8  r  r   r   r  r  ]  r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Framed_IP_Netmaskr7  r    Nr8  r  r   r   r  r  b  r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Login_IP_Hostr7  r%   Nr8  r  r   r   r  r  g  r>  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Framed_IPX_Networkr7  r/   Nr8  r  r   r   r  r  l  r>  r   r  c                       e Zd ZdZdZdS )&RadiusAttr_PMIP6_Home_LMA_IPv4_AddressRFC 6572r   Nr8  r  r   r   r  r  q  rm  r   r  c                       e Zd ZdZdZdS ))RadiusAttr_PMIP6_Visited_LMA_IPv4_Addressr  r   Nr8  r  r   r   r  r  v  rm  r   r  c                       e Zd ZdZdZdS )*RadiusAttr_PMIP6_Home_DHCP4_Server_Addressr  r   Nr8  r  r   r   r  r  {  rm  r   r  c                       e Zd ZdZdZdS )-RadiusAttr_PMIP6_Visited_DHCP4_Server_Addressr  r   Nr8  r  r   r   r  r    rm  r   r  c                       e Zd ZdZdZdS )"RadiusAttr_PMIP6_Home_IPv4_Gatewayr  r   Nr8  r  r   r   r  r    rm  r   r  c                       e Zd ZdZdZdS )%RadiusAttr_PMIP6_Visited_IPv4_Gatewayr  r   Nr8  r  r   r   r  r    rm  r   r  LoginFramedzCallback LoginzCallback FramedOutboundAdministrativez
NAS PromptzAuthenticate OnlyzCallback NAS Promptz
Call CheckzCallback AdministrativeVoiceFaxzModem RelayzIAPP-RegisterzIAPP-AP-CheckzAuthorize OnlyzFramed-ManagementzAdditional-Authorization)r*   r+   PPPSLIPz'AppleTalk Remote Access Protocol (ARAP)z1Gandalf proprietary SingleLink/MultiLink protocolzXylogics proprietary IPX/SLIPzX.75 SynchronouszGPRS PDP Context)r   r   r   r   r   r   r   NonezSend routing packetszListen for routing packetszSend and Listen)r   r   r   r   zVJ TCP/IP header compressionzIPX header compressionzStac-LZS compressionTelnetRloginz	TCP ClearzPortMaster (proprietary)LATzX25-PADz	X25-T3POSz=TCP Clear Quiet (suppresses any NAS-generated connect string))	r   r   r   r   r   r   r   r   r   DefaultzRADIUS-Request)r   r   StartStopzInterim-UpdatezAccounting-OnzAccounting-OffzTunnel-StartzTunnel-StopzTunnel-RejectzTunnel-Link-StartzTunnel-Link-StopzTunnel-Link-RejectFailed)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   RADIUSLocalRemoteDiameter)r   r   r   r   zUser RequestzLost CarrierzLost ServicezIdle TimeoutzSession TimeoutzAdmin ResetzAdmin Rebootz
Port Errorz	NAS ErrorzNAS Requestz
NAS RebootzPort UnneededzPort PreemptedzPort SuspendedzService UnavailableCallbackz
User ErrorzHost RequestzSupplicant RestartzReauthentication FailurezPort ReinitializedzPort Administratively Disabledz
Lost Power)r*   r+   r,   r-   r.   r/   AsyncSyncz	ISDN SynczISDN Async V.120zISDN Async V.110VirtualPIAFSzHDLC Clear ChannelzX.25zX.75zG.3 FaxzSDSL - Symmetric DSLzAADSL-CAP - Asymmetric DSL, Carrierless Amplitude Phase Modulationz.ADSL-DMT - Asymmetric DSL, Discrete Multi-Tonez#IDSL - ISDN Digital Subscriber LineEthernetz.xDSL - Digital Subscriber Line of unknown typeCablezWireles - OtherzWireless - IEEE 802.11z
Token-RingFDDIzWireless - CDMA2000zWireless - UMTSzWireless - 1X-EVIAPPzFTTP - Fiber to the PremiseszWireless - IEEE 802.16zWireless - IEEE 802.20zWireless - IEEE 802.22zPPPoA - PPP over ATMz$PPPoEoA - PPP over Ethernet over ATMz)PPPoEoE - PPP over Ethernet over Ethernetz(PPPoEoVLAN - PPP over Ethernet over VLANz2PPPoEoQinQ - PPP over Ethernet over IEEE 802.1QinQzxPON - Passive Optical NetworkzWireless - XGPz WiMAX Pre-Release 8 IWK Functionz'WIMAX-WIFI-IWK: WiMAX WIFI Interworkingz6WIMAX-SFF: Signaling Forwarding Function for LTE/3GPP2z*WIMAX-HA-LMA: WiMAX HA and or LMA functionzWIMAX-DHCP: WIMAX DHCP servicez'WIMAX-LBS: WiMAX location based servicezWIMAX-WVS: WiMAX voice service)
r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   z(Point-to-Point Tunneling Protocol (PPTP)zLayer Two Forwarding (L2F)z#Layer Two Tunneling Protocol (L2TP)z(Ascend Tunnel Management Protocol (ATMP)z Virtual Tunneling Protocol (VTP)z0IP Authentication Header in the Tunnel-mode (AH)zIP-in-IP Encapsulation (IP-IP)z*Minimal IP-in-IP Encapsulation (MIN-IP-IP)z:IP Encapsulating Security Payload in the Tunnel-mode (ESP)z!Generic Route Encapsulation (GRE)zBay Dial Virtual Services (DVS)zIP-in-IP TunnelingzVirtual LANs (VLAN))r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   zIPv4 (IP version 4)zIPv6 (IP version 6)NSAPzHDLC (8-bit multidrop)zBBN 1822802zE.163 (POTS)zE.164 (SMDS, Frame Relay, ATM)zF.69 (Telex)zX.121 (X.25, Frame Relay)IPX	Appletalkz	Decnet IVzBanyan Vinez!E.164 with NSAP format subaddressz!Only allow access to default zonezUse zone filter inclusivelyzNot usedzUse zone filter exclusivelyzNo EchoEcho   z Residual Session Context Removed   zInvalid EAP Packet (Ignored)i  zUnsupported Attributei  zMissing Attributei  zNAS Identification Mismatchi  zInvalid Requesti  zUnsupported Servicei  zUnsupported Extensioni  zInvalid Attribute Valuei  zAdministratively Prohibitedi  zRequest Not Routable (Proxy)i  zSession Context Not Foundi  zSession Context Not Removablei  zOther Proxy Processing Errori  zResources Unavailablei  zRequest Initiatedi  z&Multiple Session Selection UnsupportedzLocation-Info-RequiredzResponse Too Big)i  iY  TADIGREALME212ICCReserved)rK   rL   rM   rN      zRetransmission allowedCIVIC_LOCATIONGEO_LOCATIONUSERS_LOCATIONNAS_LOCATION)r   r   r   r   SNMPz	Web-basedNETCONFFTPTFTPSFTPRCPSCP)r   r   r   r   r   r   r   r   zNo-ProtectionzIntegrity-Protectionz$Integrity-Confidentiality-Protection)r   r   r   )r   r   r   c            	       j    e Zd ZdZdgZ edde           edd           edde	d d	
          gZ
dS )_RadiusAttrIntEnumValr4  r   r   r   r   r   r   c                     | j         S r  )r   r  s    r   r   z_RadiusAttrIntEnumVal.<lambda>  s     r   I)
depends_onfmtN)r  r  r  r  r.  r
   r  r	   r   _radius_attrs_valuesr  r  r   r   r  r    sq          I 	fa!899	% ''	
 	
 	

KKKr   r  c                       e Zd ZdZdZdS )RadiusAttr_Service_Typer7  r   Nr8  r  r   r   r  r    r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Framed_Protocolr7  r   Nr8  r  r   r   r  r    r9  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Status_TyperK  rC   Nr8  r  r   r   r   r     r>  r   r   c                       e Zd ZdZdZdS )RadiusAttr_Acct_AuthenticrK  rH   Nr8  r  r   r   r  r    r>  r   r  c                       e Zd ZdZdZdS )RadiusAttr_Acct_Terminate_CauserK  rL   Nr8  r  r   r   r  r    r>  r   r  c                       e Zd ZdZdZdS )RadiusAttr_NAS_Port_Typer7  rX   Nr8  r  r   r   r  r    r>  r   r  c                       e Zd ZdZd ZdS )_EAPPacketFieldzF
    Handles EAP-Message attribute value (the actual EAP packet).
    c                     d }t          j        d|dd                   d         }|dk     rt          |          }nt          j        |          }|S )Nr  r   r   r      )r  unpackr   r   	raw_layer)r	  r   mreteap_packet_lens        r   m2iz_EAPPacketField.m2i  sS    tQqsV44Q7C a&&CC.##C
r   N)r  r  r  r  r  r  r   r   r  r    s-         	 	 	 	 	r   r  c                   z    e Zd ZdZdZdZ edde           edddd	d
            e	dde
d           gZd ZdS )RadiusAttr_EAP_Messagez<
    Implements the "EAP-Message" attribute (RFC 3579).
    rl   Tr   rk   r   Nr   r   c                     |dz   S r   r  r   s     r   r   zRadiusAttr_EAP_Message.<lambda>  s
    !a% r   r   r   c                     | j         dz
  S r   r   r  s    r   r   zRadiusAttr_EAP_Message.<lambda>  s    	 r   r   c                 $   t           j                            di                               dd          s|S t          | j        t           j                  r|}| j        j        }|rt          j        d|d d                   d         dk    rt          j        d|dd                   d         }|s|S ||d|         z   ||d          }}|d	k     rt          |          | _        |S |r't          j        d|d d                   d         dk    |S )
Nradiuszauto-defragTr  r   r   rk   r   r
  )
r   contribsr   
isinstancer   r  loadr  r  r   )r	  sr   bufr  s        r   post_dissectz#RadiusAttr_EAP_Message.post_dissect  s   }  2..22=$GG 	Hdj$.11 	A*/C dAbqbE2215;;tQqsV44Q7 Hq6{*AfggJQC<<!$SDJH  dAbqbE2215;; r   )r  r  r  r  r  r/  r
   r  r   r  r   r  r  r  r   r   r  r    s          DNfb"9::''	
 	
 	
 	S6I6IJJJ
K    r   r  c                       e Zd ZdZdZdZ edde           edddd	d
            e	dd           e
dd           edddd	d            eddd           gZdS )RadiusAttr_Vendor_SpecificzO
    Implements the "Vendor-Specific" attribute, as described in RFC 2865.
    r5   Tr   r4   r   Nr   r   c                 0    t          | j                  dz   S )Nr   r   r   s     r   r   z#RadiusAttr_Vendor_Specific.<lambda>:  s    #ci..1"4 r   r   	vendor_idr   vendor_type
vendor_lenc                 0    t          | j                  dz   S r   r   r  s     r   r   z#RadiusAttr_Vendor_Specific.<lambda>C  r  r   r   c                     | j         dz
  S r   )r"  r  s    r   r   z#RadiusAttr_Vendor_Specific.<lambda>E  s    q|a7G r   r   )r  r  r  r  r  r/  r
   r  r   r   r	   r   r  r  r   r   r  r  ,  s          DNfb"9::44	
 	
 	
 	a  	-##00	
 	
 	
 	GR-G-GHHH%KKKr   r  zAccess-RequestzAccess-AcceptzAccess-RejectzAccounting-RequestzAccounting-Responsez*Accounting-Status (now Interim Accounting)zPassword-RequestzPassword-AckzPassword-RejectzAccounting-MessagezAccess-ChallengezStatus-Server (experimental)zStatus-Client (experimental)zResource-Free-RequestzResource-Free-ResponsezResource-Query-RequestzResource-Query-Responsez"Alternate-Resource-Reclaim-RequestzNAS-Reboot-RequestzNAS-Reboot-ResponsezNext-PasscodezNew-PinzTerminate-SessionzPassword-ExpiredzEvent-RequestzEvent-ResponsezDisconnect-RequestzDisconnect-ACKzDisconnect-NAKzCoA-RequestzCoA-ACKzCoA-NAKzIP-Address-AllocatezIP-Address-ReleasezProtocol-ErrorzExperimental Use)rN   rO               r
  r  c            
           e Zd ZdZdZ edde           edd           eddd	d
d            e	ddd           e
d	g ed           gZd Zd ZdS )Radiusz0
    Implements a RADIUS packet (RFC 2865).
    r  r  r   r  r   r   Nr  Hc                 0    t          | j                  dz   S Nr,   )r   r  r   s     r   r   zRadius.<lambda>  s    #cn"5"5": r   r   authenticatorr   r'   c                     | j         dz
  S r-  r   r   s    r   r   zRadius.<lambda>  s    CGbL r   r   c                 x    t          | |          }t          j        ||z             }|                                S )zI
        Computes the authenticator field (RFC 2865 - Section 3)
        )r  r  r  r  )r	  packed_request_authr  r  
radius_macs        r   compute_authenticatorzRadius.compute_authenticator  s:    
 #4)<==[!566
  """r   c                     ||z  }| j         }|:t          |          }|d d         t          j        d|          z   |dd          z   }|S )Nr   r  r   r  r  s       r   r  zRadius.post_build  sR    	S>VVF"1"D&111AabbE9Ar   )r  r  r  r  r  r
   _packet_codesr	   r   r   r   r   r  r3  r  r  r   r   r*  r*  x  s          Dfa//	$::	
 	
 	
 	/2r2200		
 	
 	
K&# # #    r   r*  i  )sport)dporti  i  )r6  r7  )dr  r  r  r  scapy.compatr   r   scapy.packetr   r   r   r   scapy.fieldsr	   r
   r   r   r   r   r   r   r   r   r   scapy.layers.inetr   scapy.layers.eapr   scapy.configr   scapy.errorr   r  r   r  r3  r6  r;  r=  r@  rB  rD  rF  rH  rJ  rM  rO  rQ  rS  rU  rW  rY  r\  r^  r`  rb  rd  rf  rh  rj  rl  ro  rr  rt  rv  rx  rz  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r5  r*  r  r   r   <module>r?     s"       ! ! ! ! ! ! ! ! E E E E E E E E E E E E- - - - - - - - - - - - - - - - - - - - - - - - - - " ! ! ! ! !                   ' ' ' ' ' '@{@@ @ 	@
 z@ ~@ @ @ @ @ @ @ @ @ @  !@" #@ @$ %@& '@( )@* +@, -@. /@0 1@2 3@4 5@6 7@8 9@: ;@< =@> ?@@ A@B C@D E@ @ @F G@H I@J K@L "M@N O@P Q@R S@T U@V W@X Y@Z [@\ ]@^ _@` a@b c@d e@f g@ @ @h i@j k@l m@n o@p q@r s@t u@v w@x y@z {@| }@~ @@ A@B C@D  E@F  G@H  I@ @ @J K@L M@N O@P Q@R S@T U@V W@X Y@Z [@\ ]@^ _@` a@b !c@d e@f g@h !i@j k@ @ @l "m@n o@p q@r s@t u@v w@x y@z {@| }@~ @@ A@B C@D E@F G@H 	I@J K@L M@ @ @N 	O@P Q@R S@T 	U@V 	W@X Y@Z [@\ ]@^ 	_@` 	"a@b c@d 	e@f 	g@h i@j 	k@l 	m@n o@ @ @p q@r s@t u@v 	 w@x 	y@z 	 {@| }@~ 	@@ A@B 	&C@D 	)E@F 	G@H 	"I@J 	%K@L 	*M@N 	O@P 	%Q@ @ @R S@T U@V 	W@X 	Y@Z [@\ 	]@^ _@` 	a@b 	!c@d 	e@f 	&g@h 	)i@j 	&k@l 	)m@n 	o@p 	"q@r 	"s@ @ @t 	%u@v 	w@x 	!y@z 	*{@| 	-}@~ 	*@@ 	-A@B 	"C@D 	%E@F 	G@H 	$I@J 	!K@L 	)M@N 	"O@P 	Q@R 	"S@T 	!U@ @ @V 	%W@X 	%Y@Z 	![@\ 	$]@^ _@` a@b 	c@d 	e@f 	g@h 	i@j k@l 	m@n 	o@p 	q@r 	s@t 	u@v 	w@ @x 
	!		@ @ @ F. . . . .f . . .b4 4 4 4 4/ 4 4 4<	 	 	 	 	- 	 	 	    .   
    -   
    /   
     3   
    !4   
    1   
    ':   
    *=   
    !4   
    #6   
    $7   
    #6   
    $7   
    %8   
    !4   
    &9   
    ':   
    2   
    /   
    2   
     3   
    #6   
    ':   
    *=   
    ,?   
    $7   
    !4   
    !4   
    "5   
    &9   
    #6   
     3   
    (;   
    1   " " " " "1 " " "J    6   
    .   
@ @ @ $ $ $ $ $'> $ $ $F    0        6   
    #9   
    #9   
    5   
    $:   
    -C   
    0F   
    1G   
    4J   
    )?   
    ,B   q	7	8 	
 	
	
 	
: 	
 	
< 	
 	
  	L 	% 	G 	E 	M 	O  	O!" 	#$  &'  q4 4>* 7qL !'	 Oq^ )#!	 aqp %J
 
sqL  OqZ   ]qB 	 EqT 	>	> 	
> 	
>	
 	
 	
= 	
> 	
< 	
; 	M 	L 	O 	 	 	!  	J!" 	L#$  & ,/  WqL -	7-	6- 	
;- 	
	-
 	
- 	
9- 	
7- 	
- 	
6- 	
6- 	I- 	"- 	O- 	<- 	1-  	J!-" 	<#- -$ 	G%-& 	'-( 	$)-* 	L+-, 	F--. 	!/-0 	1-2 	3-4 	F5-6 	*7-8 	$9-: 	$;-< 	$=-> 	"?-@ 	2A-B 	7C-D 	6E- -F A,.5D8,5,Y- - -Oqn 5'05-=+7G/- ! qqR   #+'/ Uqz .((	 }qL  OqZ /+ 	$ 	 	
 	* 	 	" 	$ 	& 	* 	+ 	( 	, 	+ 	$  	 !" 	5#$ &'  ]qJ  Mq^ 	#aqn 	  	 	 !1 Y	q q q h	    /   (    3   
    !6   
    "7   
     5   
    &;   
    4   
    n   "" " " " "_ " " "J       <+++ + 	+
 + 3+ + ~+ + + + &+ &+ +  +   !+" !#+ +$ ,%+& '+( )+* 
++, -+. 	/+0 1+2 3+4 5+6 7+8 9+: ;+< =+> ?+@ 	A+B 	C+D E+ +F 							U+ + +\( ( ( ( (V ( ( (V sF$ ' ' ' ' sF$ ' ' ' ' sF$ ' ' ' ' sF$ ' ' ' ' sF$ ' ' ' ' sF$ ' ' ' ' Ct4 0 0 0 0 0 0r   