HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/root/lib/fm-agent/library/__pycache__/forticlient_helper.cpython-39.pyc
a

��i��@s@ddlZddlmZddlZeeed�dd�ZGdd�d�ZdS)�N)�path)�
ems_serial�environment�returncCs:t�d�}|�|���|�|���|��dd�}|S)zO
    Calculate a new customer key based on the ems_serial and environment.
    �sha256r�)�hashlib�new�update�encode�	hexdigest)rrZhasher�customer_key�r�//usr/lib/fm-agent/library/forticlient_helper.py�calculate_customer_keys

rc@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�ForticlientHelperz7/Library/Application Support/Fortinet/FortiClient/data/z@/Library/Application Support/Fortinet/FortiClient/conf/vpn.plistcCsddd�|_t��|_dS)NZforticlient_serialr)zfct_uid.confzEMS_sn.conf)�data_files_map�logging�	getLogger�log)�selfrrr�__init__s�zForticlientHelper.__init__cCs�z�ddlm}|�|�}|jdkr0|�d|�}|j}z|�d�}|d|�}WnYn0|���d�}t|�dkr~WdS|d}|d}|d	}	t|�d
kr�|d}
n|d}
|d
kr�|dkr�|
dkr�|	WSWdSYdS0dS)Nr�zhttp://�:�.�����������������ZcomZ	fortisase�edge)	�urllib.parse�parse�urlparse�scheme�netloc�index�lower�split�len)r�urlr%Zparsed�host�idxZ
host_partsZ	top_level�domainrr"rrr�
parse_addresss2



zForticlientHelper.parse_addresscCs�ddl}t|jd��`}|�|�}|d��D]8}|�dd�}|r,|�|�}|r,|Wd�Sq,Wd�n1sz0Ytd��dS)Nr�rbZProfilesZServerzNo environment profile found)�plistlib�open�vpn_data�load�values�getr0�	Exception)rr2�f�dataZprofileInfo�server_name�envrrr�get_vpn_environmentFs

6z%ForticlientHelper.get_vpn_environmentc	Cs�t�|j�std��i}d}|j��D]d\}}|d7}tt�|j|�d��0}|���	�}t
|�dkrl|||<Wd�q&1s�0Yq&t
|���|kr�td��z|��|d<Wntd��Yn0|S)NzMissing forticlient datar��rzMissing forticlient keys�forticlient_environmentzMissing VPN data)
r�isdir�	data_pathr8r�itemsr3�join�readline�stripr+�keysr=)r�rvZ	key_count�fileZhs_keyZdfZdvrrr�get_handshake_dataTs"(z$ForticlientHelper.get_handshake_dataN)	�__name__�
__module__�__qualname__rBr4rr0r=rJrrrrrs
'r)r�osrr�strrrrrrr�<module>s