LucasMTA

protecao script

Recommended Posts

Posted (edited)

Então o cara compra o resource de vc e pede o código de ativação. Vc passa 1 dos 5 códigos que existem. Dai o cara vaza o resource na internet junto com esse código de ativação. Pronto, qualquer um pode baixar o resource zerado e usar o mesmo código pra ativá-lo. Ativar em um servidor não impede que no outro servidor esse código deixe de funcionar. Já que nos outros servidores, o código ainda vai estar em suas respectivas listas.


A questão de verificar se o IP está autorizado dai volta para a questão que estávamos discutindo antes, que seria a verificação com o fetchRemote.

Edited by Lord Henry

Share this post


Link to post

nao teria um jeito para deixar no proprio resource essa funcao de ip

sem precisar de outro pra export funcoes etc

Share this post


Link to post

Até tem. Mas dai o resource não vai conseguir dar stop em si mesmo caso não tenha permissão. Dai vc basicamente vai ter que ficar dando permissão admin pra todos os resources que tiverem esse bloqueio por IP.

Share this post


Link to post

Lord e amigos, e se no caso voce determina-se um comando para ativação do resource.

por exemplo no servidor atualmente voce usa "start namefile" ele ativa né.

E se no caso você determina-se para ativar o recurso como por exemplo "cod1 namefile", ele ativa o resource se o jogador tentar usar "start namefile" o resource é excluido ou algum arquivo dentro dele por exemplo

Não seria uma boa ideia para proteção de resource, porque ai apenas o dono ativa os resource por comando, ai por exemplo evitaria de landrazinho de vps roubar arquivos hospedados.

E se ele tenta-se ativar o resource pelo painel admin não conseguiria

Share this post


Link to post

Aí vc já está pensando "fora da casinha" mano. O que o painel admin faz é dar startResource, que é uma função nativa do MTA que inicia um resource. Você obrigatoriamente vai precisar usar essa função em algum momento para ativar um resource. Vc usando comandos ou não, vai usar a função em algum momento. Se vc bloquear essa função, o resource nunca será ativado.

O fato de usar um comando "secreto" para ativar o resource não muda em nada, comandos são facilmente vazáveis.

Share this post


Link to post
On 29/05/2019 at 12:50, SRG013 said:

nao teria um jeito para deixar no proprio resource essa funcao de ip

sem precisar de outro pra export funcoes etc

Também dá, só não vai dar stop no resource (cancelando o evento), em vez disso iria chamar uma função (da forma convencional ou com loadstring). E se a verificação falhar não chama; então esse código/função teria que ser a base do script.

 

13 hours ago, SRG013 said:

Lord e amigos, e se no caso voce determina-se um comando para ativação do resource.

por exemplo no servidor atualmente voce usa "start namefile" ele ativa né.

E se no caso você determina-se para ativar o recurso como por exemplo "cod1 namefile", ele ativa o resource se o jogador tentar usar "start namefile" o resource é excluido ou algum arquivo dentro dele por exemplo

Não seria uma boa ideia para proteção de resource, porque ai apenas o dono ativa os resource por comando, ai por exemplo evitaria de landrazinho de vps roubar arquivos hospedados.

E se ele tenta-se ativar o resource pelo painel admin não conseguiria

Talvez seria viável - impedindo o resource de ser iniciado caso não seja pelo comando especificado, mas ainda teria a questão de sobrescrever funções e de segurança, getCommandHandlers mostra todos comandos do servidor e iria vazar esse comando privado.

Não entendi por que não deixar o sistema de proteção que te ajudei pra tentar fazer de outra forma que não irá mudar em nada.

Share this post


Link to post

Olá.

Sobre proteção de scripts, a melhor forma, em minha opinião, é usando fetchRemote + SMS/E-mail. O script só será ativado se o responsável pelo número de telefone ou e-mail aceitar que ele seja ligado, recebendo um código ou algo do gênero.

Se você deseja criptografar arquivos como áudios (.mp3, .ogg, .cmf), imagens (.png, .jpg), shaders (.fx), o que eu recomendo e uso até hoje, é esta API: https://developers.convertio.co/pt/.

É necessário algum conhecimento para trabalhar com este. (E lembrando que para fazer isso, é preciso ativar o SD #22 e #23, dentro do seu servidor, para que arquivos com extensões desconhecidas pelo MTA sejam carregadas.)

  • Like 1

Share this post


Link to post
Posted (edited)
14 hours ago, asrzk said:

Olá.

Sobre proteção de scripts, a melhor forma, em minha opinião, é usando fetchRemote + SMS/E-mail. O script só será ativado se o responsável pelo número de telefone ou e-mail aceitar que ele seja ligado, recebendo um código ou algo do gênero.

Se você deseja criptografar arquivos como áudios (.mp3, .ogg, .cmf), imagens (.png, .jpg), shaders (.fx), o que eu recomendo e uso até hoje, é esta API: https://developers.convertio.co/pt/.

É necessário algum conhecimento para trabalhar com este. (E lembrando que para fazer isso, é preciso ativar o SD #22 e #23, dentro do seu servidor, para que arquivos com extensões desconhecidas pelo MTA sejam carregadas.)

Gostei dessa ideia de SMS, parece ser viável.

Edited by Jonas^

Share this post


Link to post

É sim! Porém, para usar serviços SMS, é necessário pagar uma pequena taxa por SMS enviado. Neste caso, o melhor método para ser usado é o e-mail. Há várias opções totalmente gratuitas e confiáveis.

:)

Share this post


Link to post
16 hours ago, asrzk said:

Se você deseja criptografar arquivos como áudios (.mp3, .ogg, .cmf), imagens (.png, .jpg), shaders (.fx), o que eu recomendo e uso até hoje, é esta API: https://developers.convertio.co/pt/.

Pelo que eu entendi, o site converte o formato do arquivo.

Não sei como o MTA consegue carregar corretamente tal arquivo ao realizar essa “fake” mudança de formato... ou você fica efetuando o processo inverso ?

Share this post


Link to post
13 minutes ago, MaligNos said:

Pelo que eu entendi, o site converte o formato do arquivo.

Não sei como o MTA consegue carregar corretamente tal arquivo ao realizar essa “fake” mudança de formato... ou você fica efetuando o processo inverso ?

O MTA é capaz de carregar sim! Como eu disse, é necessário ativar o SD #22 e #23 para que eles sejam carregados de forma correta.

Para carregar uma imagem com o formato YUV, por exemplo, ao invés de usar o dxDrawImage, a princípio você irá usar o dxCreateTexture, daí sim você irá carregar no dxDrawImage.

Já com arquivos de áudio, é um pouco mais complexo. Você irá converter o áudio (criptografando-o). Para carregar o áudio, você terá de fazer a conversão inversa. Digamos que você converteu um arquivo de áudio de MP3 para CMF (não é lido pelo MTA). Para convertê-lo e fazer o MTA ler, você irá converter de CMF para MP3, obter a data/resultado do fetchRemote, gerar um arquivo aleatório com a extensão .mp3, incluir neste arquivo o resultado obtido. Após isso, adicionar no meta.xml e carregar o áudio onde quiser.

(lembrando que após o carregamento do áudio, você deve deletá-lo do cache/pasta e retirá-lo do meta.xml)

  • Like 1

Share this post


Link to post

E com guiCreateStaticImage ?

Particularmente acho esse processo de conversão custoso, a quantidade de dados transferidos seria algo considerável, e a mudança de formato não garante a segurança do dado, você basicamente está mudando o cabeçalho do arquivo e evitando a leitura por algumas aplicações, mas o corpo, o conteúdo em si, é o mesmo.

Se não me engano, o fetchRemote tem um limite de dados para transferência, então dependendo do arquivo essa técnica não servirá.

Acho que algo localmente, usando talvez base64 juntamente com alguma criptografia seria mais eficaz e seguro.

Share this post


Link to post
4 minutes ago, MaligNos said:

Nunca tentei. Uso DX para a maioria dos scripts que faço.

5 minutes ago, MaligNos said:

Particularmente acho esse processo de conversão custoso, a quantidade de dados transferidos seria algo considerável, e a mudança de formato não garante a segurança do dado, você basicamente está mudando o cabeçalho do arquivo e evitando a leitura por algumas aplicações, mas o corpo, o conteúdo em si, é o mesmo.

Se não me engano, o fetchRemote tem um limite de dados para transferência, então dependendo do arquivo essa técnica não servirá.

Acho que algo localmente, usando talvez base64 juntamente com alguma criptografia seria mais eficaz e seguro.

Concordo plenamente. É BEM considerável. Mas não existe apenas essas formas de criptografia de arquivo. MTA dá bastante caminhos para o desenvolvedor proteger os scripts. :)

Share this post


Link to post
Posted (edited)
2 hours ago, asrzk said:

O MTA é capaz de carregar sim! Como eu disse, é necessário ativar o SD #22 e #23 para que eles sejam carregados de forma correta.

Para carregar uma imagem com o formato YUV, por exemplo, ao invés de usar o dxDrawImage, a princípio você irá usar o dxCreateTexture, daí sim você irá carregar no dxDrawImage.

Já com arquivos de áudio, é um pouco mais complexo. Você irá converter o áudio (criptografando-o). Para carregar o áudio, você terá de fazer a conversão inversa. Digamos que você converteu um arquivo de áudio de MP3 para CMF (não é lido pelo MTA). Para convertê-lo e fazer o MTA ler, você irá converter de CMF para MP3, obter a data/resultado do fetchRemote, gerar um arquivo aleatório com a extensão .mp3, incluir neste arquivo o resultado obtido. Após isso, adicionar no meta.xml e carregar o áudio onde quiser.

(lembrando que após o carregamento do áudio, você deve deletá-lo do cache/pasta e retirá-lo do meta.xml)

Tentei entender se tem uma diferença grande o suficiente para utilizar esse método no lugar das funções de codificação do próprio MTA. Mas pelo que entendi não muda muito.

Tenho o mesmo ponto de visto do Malignos, poderia fazê-lo evitando o uso de banda e utilizando a função encodeString com uma função de hash para a criptografia dos dados e decodeString para obter os dados originais.

As funções que citei seriam apropriadas para proteger no cache, em específico, do cliente. Já quanto a um resource vazado, creio que uma proteção efetiva seja hospedar esses arquivos, obtê-los no servidor e aplicando uma criptografia no raw data. Também tem outras formas de proteção, mas acredito que essa seja funcional e não é algo complexo de se fazer.

19 hours ago, asrzk said:

Olá.

Sobre proteção de scripts, a melhor forma, em minha opinião, é usando fetchRemote + SMS/E-mail. O script só será ativado se o responsável pelo número de telefone ou e-mail aceitar que ele seja ligado, recebendo um código ou algo do gênero.

Eu também pensei numa forma assim em vez do server IP. Mas de qualquer forma, o ponto fraco pela conclusão que cheguei não é método do fetchRemote e sim a vulnerabilidade das funções. Só que, comparando com a verificação do IP, sim é mais seguro.

Edited by DNL291

Share this post


Link to post

O ponto forte do uso de SMS/E-mail seria notificar o autor sobre as utilizações (ativações) trazendo por exemplo, qual IP ativou o resource, e com isso ser possível detectar casos de vazamento/roubo. Mas a segurança do resource em si (bloqueando utilizações indevidas), já seria o suficiente através do IP, pois o uso de SMS/E-mail para requisitar autorização de ativação se enquadraria mais como luxo, visto que o IP já é um dado que temos e é capaz de efetuar a autenticação através dele, sendo ainda que a utilização desses passos adicionais (gerar um código → enviar e-mail com o código → efetuar ação no e-mail → liberar ativação do resource) para autenticação, podem inclusive tornar o sistema mais vulnerável. Então acho que o ideal seria validar através do IP e caso o IP seja diferente do esperado, comunicasse o autor do resource de alguma forma.

Share this post


Link to post
Posted (edited)
15 hours ago, MaligNos said:

Então acho que o ideal seria validar através do IP e caso o IP seja diferente do esperado, comunicasse o autor do resource de alguma forma.

Também acho.

Mas a parte de automatizar e-mail parece ser complexa. Ta aí uma área que não possuo conhecimento algum, que seria essa comunicação de dados "OFF MTA".

Edited by Lord Henry

Share this post


Link to post
41 minutes ago, Lord Henry said:

Mas a parte de automatizar e-mail parece ser complexa. Ta aí uma área que não possuo conhecimento algum, que seria essa comunicação de dados "OFF MTA".

Infelizmente para esses casos deve-se recorrer a alguma aplicação externa, seja gratuita ou paga, que dai basta efetuar uma simples chamada com fetchRemote que a aplicação cuida do resto. Na wiki do fetchRemote tem até um exemplo de envio de e-mail.

Alguns sites que prestam esses serviços: E-mail: mailgun | sendgrid | mailtrap SMS: twilio, e vários outros por ai...

O envio de e-mail é mais viável, podendo inclusive criar seu próprio servidor SMTP responsável por enviar os e-mails, e dai não precisar criar essa dependência com aplicações externas. Caso não queira muito trabalho na configuração dos servidores SMTP+HTTP, pode alugar alguma hospedagem web, que no caso já terá esses serviços, além de possibilitar ações além do envio de e-mail, usando talvez PHP-SDK / Node.js-SDK

Já com SMS é mais complicado e custoso, visto as taxas das operadoras e etc… não optaria tal uso nesse caso.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.