a
    kÄ#d%0  ã                   @   s  d dl Z d dlmZmZ d dl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mZmZmZmZmZmZmZ ddddd	d
ddœZddddœZddddddddœZddddddœZdd d!œZG d"d#„ d#eƒZG d$d%„ d%eƒZ G d&d'„ d'eƒZ!eee!d(d(d)� eee!d(d(d)� dS )*é    N)ÚPacketÚbind_layers)ÚTCPÚUDP)ÚBitFieldÚBitEnumFieldÚX3BytesFieldÚ
ShortFieldÚXShortFieldÚFieldLenFieldÚPacketLenFieldÚ
XByteFieldÚXByteEnumFieldÚByteEnumFieldÚStrFixedLenFieldÚConditionalFieldÚ
FlagsFieldÚ	ByteFieldÚIntFieldÚ	XIntFieldÚStrLenFieldÚScalingFieldzLOGIN MESSAGEZ	HEARTBEATZLOCATIONZALARMzONLINE COMMANDzONLINE COMMAND REPLYEDzINFORMATION TRANSMISSION)é   é   é   é   é€   é   é”   zEXTERNAL POWER VOLTAGEzTERMINAL STATUS SYNCHRONIZATIONzDOOR STATUS)r   é   é   zNo Power (Shutdown)zExtremely Low BatteryzVery Low BatteryúLow BatteryZMediumÚHighz	Very High)r   r   é   é   r   r    é   z	No SignalzExtremely Weak SignalzVery Weak SignalzGood SignalzStrong Signal©r   r   r#   r$   r   ÚChineseZEnglish)r   r#   c                   @   s   e Zd Zdd„ ZdS )ÚBCDStrFixedLenFieldc                 C   s   t |tƒrt |¡S t |¡S ©N)Ú
isinstanceÚbytesÚbinasciiÚb2a_hexÚa2b_hex)ÚselfÚpktÚx© r2   úK/var/www/html/gsl.tools/lib/python3.9/site-packages/scapy/contrib/concox.pyÚi2h<   s    

zBCDStrFixedLenField.i2hN)Ú__name__Ú
__module__Ú__qualname__r4   r2   r2   r2   r3   r(   ;   s   r(   c                >   @   sÐ  e Zd ZdZeddeƒeedddd�dd	„ ƒeed
dƒdd	„ ƒeeddƒdd	„ ƒeeddƒdd	„ ƒeeddƒdd	„ ƒeeddƒdd	„ ƒeeddƒdd	„ ƒee	dddƒdd	„ ƒee	dddƒdd	„ ƒee
ddddd d!�d"d	„ ƒee
d#dddd d!�d$d	„ ƒeed%dƒd&d	„ ƒee	d'dd(ƒd)d	„ ƒeed*ddd+d,d-œƒd.d	„ ƒeed/ddd0d1d-œƒd2d	„ ƒeed3ddd4d5d-œƒd6d	„ ƒeed7ddd8d9d-œƒd:d	„ ƒee	d;dd<ƒd=d	„ ƒeed>dƒd?d	„ ƒeed@dƒdAd	„ ƒeedBdƒdCd	„ ƒeedDdƒdEd	„ ƒeedFdƒdGd	„ ƒeedHdƒdId	„ ƒeedJdddKdLd-œƒdMd	„ ƒeedNdddOdPd-œƒdQd	„ ƒeedRdddSdTd-œƒdUd	„ ƒeedVddWdXdYdZd[d\d]œƒd^d	„ ƒeed_dddSdTd-œƒd`d	„ ƒeedadddbdcd-œƒddd	„ ƒeededeƒdfd	„ ƒeedgdeƒdhd	„ ƒeedidjdkdldm�dnd	„ ƒeedodƒdpd	„ ƒeedldqdrd	„ ds�dtd	„ ƒeeduddXd\dvdYdwdxdydzd{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆœƒd‰d	„ ƒeedŠdeƒd‹d	„ ƒeedŒdeƒd�d	„ ƒeedŽdƒd�d	„ ƒeed�ddg d‘¢ƒd’d	„ ƒed“djƒed”djƒg+ZdjS )•ÚCRX1NewPacketContentzCRX1 New Packet ContentÚprotocol_numberr   Zterminal_idÚ00000000é   )Úlengthc                 C   s   t | jƒdko| jdkS )Nr    r   ©ÚlenÚoriginalr9   ©r0   r2   r2   r3   Ú<lambda>H   s    zCRX1NewPacketContent.<lambda>Úyearr   c                 C   s   t | jƒdko| jdv S ©Nr    )r   r   r=   r@   r2   r2   r3   rA   L   s   ÿÚmonthr   c                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   O   s   ÿÚdayc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   R   s   ÿÚhourc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   U   s   ÿÚminutec                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   X   s   Úsecondc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   [   s   Zgps_information_lengthr   c                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   ^   s
   ÿÿZpositioning_satellite_numberc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   a   s
   ÿÿZlatitudeg¹y–/¤¢>r%   z!I)ZscalingÚndigitsÚfmtc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   f   s   Z	longitudec                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   k   s   Úspeedc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   n   s   ÿZcourseé
   c                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   q   s   Zlatitude_hemisphereZSouthZNorth)r   r   c                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   w   ó    Zlongitude_hemisphereZEastZWestc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   }   rM   Zgps_been_positioningZNoZYesc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   ƒ   rM   Z
gps_statuszGPS real-timezDifferential positioningc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   ‰   rM   Zcourse_status_reservedr#   c                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   Œ   s
   ÿÿZ
lbs_lengthc                 C   s   t | jƒdko| jdv S )Nr    )r   r=   r@   r2   r2   r3   rA   �   s   Zmccc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   “   s   ÿZmncc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   –   s   ÿZlacc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   ™   s   ÿZcell_idc                 C   s   t | jƒdko| jdv S rC   r=   r@   r2   r2   r3   rA   �   s   Zmileagec                 C   s&   t | jƒdko$| jdv o$t | jƒdkS )Nr    )r   é   r=   r@   r2   r2   r3   rA       s   ÿZdefenceZDeactivatedZ	Activatedc                 C   s   t | jƒdko| jdv S ©Nr    )r   r   r=   r@   r2   r2   r3   rA   §   rM   ÚaccZLowr"   c                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   ­   rM   Zchargez
Not ChargeZChargingc                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   ³   rM   Úalarmr$   ZNormalZ	Vibrationz	Power Cutr!   ZSOSr&   c                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   ½   s   ÿZgps_trackingc                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   Ã   rM   Zoil_and_eletricityZ	ConnectedZDisconnectedc                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   É   rM   Zvoltage_levelc                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   Ì   s    Zgsm_signal_strengthc                 C   s   t | jƒdko| jdv S rO   r=   r@   r2   r2   r3   rA   Ð   s   ÿÚcommand_lengthNÚBZcommand_content)rJ   Z	length_ofc                 C   s   t | jƒdko| jdv S ©Nr    )r   r   r=   r@   r2   r2   r3   rA   ×   s    Zserver_flag_bitc                 C   s   t | jƒdko| jdv S rT   r=   r@   r2   r2   r3   rA   Ú   s   ÿÚ c                 C   s
   | j d S )Nr   )rR   r@   r2   r2   r3   rA   à   rM   ©Zlength_fromc                 C   s   t | jƒdko| jdv S rT   r=   r@   r2   r2   r3   rA   à   s    Zalarm_extendedz	Power cutzEnter fencez
Exit fencez
Over speedZDisplacementzEnter GPS dead zonezExit GPS dead zonezPower onzGPS First fix noticezLow batteryzLow battery protectionz
SIM Changez	Power offzAirplane modeZDisassembleZDoorzACC OnzACC Off)r   r   r#   r$   r   r    r%   é	   rL   é   é   é   é   é   é   é   r   r   é   éþ   éÿ   c                 C   s   t | jƒdko| jdv S ©Nr    )r   r   r   r=   r@   r2   r2   r3   rA   û   s   ÿÚlanguagec                 C   s   t | jƒdko| jdv S rb   r=   r@   r2   r2   r3   rA   ÿ   s   ÿÚsubprotocol_numberc                 C   s   t | jƒdko| jdv S ©Nr    ©r   r=   r@   r2   r2   r3   rA     s   ÿZexternal_batteryc                 C   s"   t | jƒdko | jdv o | jdkS )Nr    rf   r   ©r>   r?   r9   rd   r@   r2   r2   r3   rA     s   ÿZexternal_io_detection)Zdoor_statusZtrigger_statusZ	io_statusc                 C   s"   t | jƒdko | jdv o | jdkS re   rg   r@   r2   r2   r3   rA     s   Zinformation_serial_numberÚcrc)r5   r6   r7   Únamer   ÚPROTOCOL_NUMBERSr   r(   r   r   r   r   r
   r   r   r   r   ÚVOLTAGE_LEVELSÚGSM_SIGNAL_STRENGTHr   r   r   ÚLANGUAGEÚSUBPROTOCOL_NUMBERSr	   r   Úfields_descr2   r2   r2   r3   r8   B   sÆ  
ÿÿÿÿÿÿÿÿÿÿýÿýÿÿþüþüþüþüÿþÿÿÿþÿþüþüþüûÿø
þüþüÿÿþýüÿýüëÿèÿþÿþÿþû€ ±r8   c                   @   s€   e Zd ZdZeddƒeeddƒdd„ ƒeeddƒd	d„ ƒeed
de	dd„ d�dd„ ƒeedde	dd„ d�dd„ ƒeddƒgZ
dS )ÚCRX1NewzCRX1 NewÚ	start_bitéxx  Údefault_packet_lengthNc                 C   s
   | j dkS ©Nrr   ©rq   r@   r2   r2   r3   rA     rM   zCRX1New.<lambda>Úextended_packet_lengthc                 C   s
   | j dkS ©Niyy  ru   r@   r2   r2   r3   rA   "  rM   Zdefault_packet_contentc                 C   s   | j S r)   )rs   r@   r2   r2   r3   rA   '  rM   rV   c                 C   s
   | j dkS rt   ru   r@   r2   r2   r3   rA   (  rM   Zextended_packet_contentc                 C   s   | j S r)   )rv   r@   r2   r2   r3   rA   -  rM   c                 C   s
   | j dkS rw   ru   r@   r2   r2   r3   rA   .  rM   Zend_biti
  )r5   r6   r7   ri   r
   r   r   r	   r   r8   ro   r2   r2   r2   r3   rp     s@   þýþýýûýûêrp   iu"  )ZsportÚdport)"r,   Zscapy.packetr   r   Zscapy.layers.inetr   r   Zscapy.fieldsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   rn   rk   rl   rm   r(   r8   rp   r2   r2   r2   r3   Ú<module>
   sL   Pùýùû	þ V