PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` 3 peA$@s(ddlmZddlZddlZddlZddlZddlZddlZddlZy ddlZWnddl j ZYnXy ddl Z WndZ YnXy ddl Z WndZ YnXy ddl Z Wn:ek ry ddlZ Wnek rdZ YnXYnXddZddZddZd d Zd d ZGd ddeZdS))datetimeNccs@tjddkrt}nt}x"|dD]}|d@V|dL}q"WdS)Nr)sys version_infoZxrangerange)nrngir &/usr/lib/fm-agent/library/inspector.pymac_address_octets"s  rcCs ddt|D}djt|S)zw Expresses a decimal integer in standard MAC address format ex: 7267271067680 -> '06:9c:0b:1c:48:20' cSsg|] }d|qS)z%02xr ).0ar r r 3sz&int_to_mac_address..:)rjoinreversed)r valuesr r rint_to_mac_address-srcCs,tj}dtjkr(|jjdr(tj}|S)Ndarwinz.arpa)socketgetfqdnrplatformlowerendswith gethostname)hostnamer r rget_fqdn8s  r c CsHdtjkrdSy*tjddd}tjdj|\}}|jSdSdS)NrZscutilT)excz{} --get ComputerName)rr agent_utilwhichexecute_commandformatstrip)Zsc_util_outputr r rget_server_nameDs r)cCstjd}tjj}dtjji}d|kry\tjd}tjdj|\}}d|krt|j j ddj j d |d <n|j d j|Wn6t k r}z|j d jt|WYdd}~XnX|S) N InspectorrrZioregz6{} -d2 -c IOPlatformExpertDevice | grep IOPlatformUUIDr="uuidzioreg error: {}zGather UUID failure: {})logging getLoggerrrrr"r#r$r%r&spliterror Exceptioninfostr)logZ my_platformrvZ ioreg_binrcr(er r rget_platform_uuidsTs   "r:c@seZdZddgZdZddZd'ddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd(d!d"Zd#d$Zd%d&ZdS))r*z/etc/apt/sources.listz/etc/yum.repos.d/panopta.repozhttp://packages.panopta.com/cCs ||_dS)N)agent)selfr;r r r__init__oszInspector.__init__NcCsi}tjd}y|j|j|j|j|j|j|j|j|j|j|j|j|j|j |j|j |j|j |j|j |j|j ||j|jtjdkr|j|jWn4tk r}z|jdj|WYdd}~XnX|S)Nr*rrrzget_all facts: {})rrr)r/r0updateget_phacter_factsget_agent_factsget_python_factsget_process_factsget_mac_addressesget_hardware_factsget_time_facts get_hostnameget_platform_factsget_machine_factsget_wifi_factsget_dem_network_factsrrget_cloud_factsr3r4r%)r< wifi_infofactsr6r9r r r get_all_factsrs(  "zInspector.get_all_factsc CsLi}dtjkrHy,tjd\}}|jddj}||d<Wn YnX|S)Nrzsw_vers | grep ProductVersionrr,Z MacOSVersion)rrr"r$r1r&)r<rMr'r(pvr r rrGs  zInspector.get_platform_factscCsi}t|d<|S)Nr)r )r<rMr r rrFs zInspector.get_hostnamec Csdi}y6tjd\}}dj|jjddd}||d<Wn$tj|jj}|j dYnX|S)Nzls -l /etc/localtime/rtimezonezUnable to get Time Zone) r"r$rr&r1r/r0 __class____name__ exception)r<rMretcoder(rQr6r r rrEs zInspector.get_time_factscCsi}tjd krtjjd krtj|jj}y ddl }Wn|j diSxR|j D]H}y||||<WqVt k rtj \}}}|jd||wVYqVXqVW|S) Nrrlinuxwindowsrz9Unable to import phacter, skipping system fact collectionzCould not collect fact '%s': %s)rrW)rrXrY)rrrsystemrr/r0rSrTphacterr4Zphactsr3exc_infowarn)r<rMr6r[Zfactr'r9r r rr?s     zInspector.get_phacter_factsc CsRdii}dtjjkryjtjd\}}xV|jjdD]D}y0|jjdd\}}|dkrh|j|d|<Wq6w6Yq6Xq6WWn$tj|j j }|j d YnXy$t j d t j d }||dd <Wn$tj|j j }|j d YnXnZytjd\}}xr|jjdD]`}y|jjdd\}}WnwYnX|jjjddjdd}|j}||d|<qWWn$tj|j j }|j d YnXytjd\}}xt|jjdD]b}|jj} | djjdrt| d|dd <| djjdrt| d|dd<qWWn$tj|j j }|j d YnX|S)z= Gather CPU and memory specs for the machine hardwarerzsysctl -a | grep machdep.cpu rr,machdep.cpu.brand_stringmachdep.cpu.core_countz Unable to get CPU hardware facts SC_PHYS_PAGES SC_PAGE_SIZEZ mem_totalz#Unable to get memory hardware factsZlscpuz(s) r'zfree -mrZmemZswapZ swap_total)r`ra)rrrr"r$r&r1r/r0rSrTrUossysconfreplace startswithint) r<rMrVr(linekeyvaluer6Z total_memZfieldsr r rrDsZ  zInspector.get_hardware_factsc Csi}tjjtjjt|d<tjj|jj|d<d|d<xX|jD]N}tjj|r@y0t |}|j |j k|d<|j |dr~PWq@Yq@Xq@Wd}dt jkstjjdrd}||d <|S) NZinstalled_timeZ used_manifestFZinstalled_from_repoZpanoptarz /etc/fm-agentZ fortimonitorZ agent_brand)rfpathgetctimeabspath__file__existsr; manifest_fileSOURCE_LIST_PATHSopen PANOPTA_REPOreadcloserr)r<rMZsource_list_pathZ source_listbrandr r rr@s&   zInspector.get_agent_factsc Csdii}tj|dd<tj|dd<tj|dd<tj|dd<ytj|dd<Wn.tk rtrdjtj|dd<YnXt j|dd<|S) Npythonr processorversionunamedistreZ sys_platform) rr{python_versionr}r~AttributeErrordistrorlinux_distributionr)r<rMr r rrAszInspector.get_python_factsc Cs i}y^tjddd}|jdd|j}|jdkr`tj|j}d|d<|d |d <||d <|SWn YnXyd d i}tjddd}|jdd|d|j}|jdkrxtj|j}d|d<|d|d <d|kr|d=x2|jdij D]\}}|d"kr|dj |qW||d <y*|j j }|jdddk} | |d d<Wn.t k rrtj|jj} | jdYnX|SWn YnXypddi}tjddd}|jdd|d|j}|jdkrtj|j}d|d<|d d!|d <||d <|SWn YnXiS)#Nz169.254.169.254)timeoutGETz*/latest/dynamic/instance-identity/documentZawsZcloud_providerZ instanceIdZcloud_instance_idZcloud_metadatazMetadata-FlavorZGooglezmetadata.google.internalz,/computeMetadata/v1/instance/?recursive=true)headersZgcpidZserviceAccounts attributes /attribute/sshkeys /vmdnssetting/enable-osloginr;Zenable_gcp_attributestruezBUnable to parse manifest file to determine gcp attributes actions.ZMetadataz)/metadata/instance?api-version=2017-04-02ZazureZcomputeZvmId)rrrr)httplibHTTPConnectionrequest getresponsestatusjsonloadsrwgetitemspopr; get_manifestr3r/r0rSrTrU) r<rMhrdatarrlrmmanifestZenabled_gcp_attributesr6r r rrK$sh       zInspector.get_cloud_factscCsFi}tdkr|St}xtjD]}|j|jq Wt||d<|S)N processes)psutilsetZ process_iteraddnamelist)r<rMrprocr r rrBfs zInspector.get_process_factsccsVddl}xH|jjD]8\}}x.|D]&}|j|jkr6q$|jdkrBq$|jVq$WqWdS)Nrz00:00:00:00:00:00)rZ net_if_addrsrfamilyZAF_LINKaddress)r<rZifaceaddrsaddrr r rmac_address_iterts   zInspector.mac_address_itercCsi}yddl}t|j|d<Wn$tj|jj}|jdYnXy4g}x"t|j D]\}}|j |qZW||d<WnNt k rtj|jj}|jdYn$tj|jj}|jdYnX|S)NrZ uuid_getnodezCUnable to import uuid module. Skipping MAC address fact collection.Z macaddressz=Unable to import psutil, skipping MAC address fact collectionz+Unknown error during MAC address collection) r.rZgetnoder/r0rSrTr4 enumeraterappend ImportError)r<rMr.r6rr Zmac_addrr r rrC~s& zInspector.get_mac_addressesc Cshi}d|i}yBd}|j|}|rL||d}|jdd|d<|jdd|d<Wn|jYnX|S) NZmachine_descriptionZSPHardwareDataTyperZ serial_numberrdserialZ machine_modelZmodel)query_system_profilerrclear)r<mdrMtkrr4r r rrHs  zInspector.get_machine_factsc Csi}d|i}yT|jdd|d<|jdd|d<|jdd|d<|jdd|d <|jd d|d <Wn|jYnXtjj|d <|S) NZ DEMWifiInfoZSSIDrdZssidZBSSIDZbssidZchannelz link authZsecurity_algorithmZNSSZnss timestamp)rrrutcnowr)r<rLrrMr r rrIszInspector.get_wifi_factsc Csg}d|i}yd}|j|}|r|j|g}x|D]x}|jdijdd}|sPq2|jd|jdg|gd}|j||jdd} | r2x"| jd gD]} |d j| qWq2WWntjd |jYnX|S) NZ!DEMNetworkInterfaceConfigurationsZSPNetworkDataTypeZIPv4ZRouter_namer^)r description dns_serversZgatewaysDNSZServerAddressesrrJ)rrrr/rUr) r<rrMrr4Z network_infosZniZrouteritemZdns_infosar r rrJs0       zInspector.get_dem_network_factsc CsZy@tjd}ddlm}m}||d|g|d}tj|jj}|St j ddSdS)NZsystem_profilerr)PopenPIPEz-json)stdoutr) r"r# subprocessrrrrrrwr/rU)r<Z info_typesprrdrr r rrs  zInspector.query_system_profiler)N)N)rT __module__ __qualname__rtrvr=rNrGrFrEr?rDr@rArKrBrrCrHrIrJrr r r rr*ks&   7B  r*)rtimer"rrfrr/rr http.clientclientrrrr simplejsonrrr r)r:objectr*r r r rs@