Para alterar a chave do MEGA deve-se alterar a função dele responsável por gerar as chaves das pastas. A função por padrão usa valores aleatórios, porém ela será alterada para usar valores definidos.
Para utilizar deve-se abrir o console JavaScript presente nas ferramentas de desenvolvedor. Essas são geralmente abertas com a tecla de atalho F12 e o console com a tecla ESC, depois que as ferramentas forem abertas.
Aviso: por medida de segurança alguns navegadores não permitem que textos sejam colados no console sem que o o risco seja confirmado antes. Caso isso ocorra siga as instruções apresentadas.
Use o seguinte comando para determinar se a chave escolhida pode ser usada ou não em uma pasta do MEGA. Copie o comando abaixo, altere a chave e aperte enter. Os limites mínimos e máximos são mostrados por meio das barras.
`hentais-com-historia
------------------=====`.split('\n')
.reduce((a,b,c)=>[a,b=a32_to_base64(c=base64_to_a32(a)),c.length!==4?
'Inválida':a===b?'Válida':'Válida, com problemas']).join('\n');
Nota: quando a chave aparecer "Válida, com problemas" é que ela funciona na versão JavaScript (https://mega.nz/ e extensões) mas não deverá funcionar em aplicativos já que eles não interpretam a chave da mesma maneira que o site.
Após definida a chave use o código a seguir para trocar o gerador padrão de chaves. Não esqueça de trocar a chave padrão no código:
(function(){var q=base64_to_a32('hentais-com-historia'), _rand=rand;
if(q.length!==4)throw Error('O tamanho da chave está fora do esperado');
rand=function(n){var result = q.shift()||_rand.apply(this, arguments);
return result;}}());
Assim que o gerador for trocado compartilhe uma pasta de sua preferência e chave usada pela pasta será a escolhida. Repita o processo para outras pastas se assim o quiser.
Importante: caso a chave mostrada tenha caracteres a mais do que a escolhida você pode ignorá-los. Motivo: a senha digitada e a senha mostrada ao serem processados resultam exatamente nos mesmos valores, porém eles ao serem convertidos de volta para texto podem a apresentar caracteres a mais que não são necessários por que a função que faz isso não simplifica a chave.
O objetivo dessa ferramente é proporcionar maior segurança a quem usa o MEGA possibilitando que a chave da pasta seja transmitida separada do link dela. Como por exemplo:
A: Qual é o link?
B: É https://mega.nz/#F!0J5G3JCb e a senha é "hentais-com-historia"
Outro ponto importante é que isso encurta o link compartilhado e podendo assim ser transmitido com muito mais facilidade por meios de voz, entre outros.
Em termos de segurança alterar a chave diminui a segurança. Porém pretendo com essa ideia, caso ela seja mais disseminada e a utilização facilitada, mostrar que há possibilidade de melhorias do MEGA.
Algo que poderia ser implementado por eles nesse sentido seria a possibilidade de usar o alongamento de chave , o que melhoraria a segurança com os mesmos benefícios das chaves personalizadas. Outro alteração necessária é que quando a senha é digitada pelo usuário que essa não seja mostrada nem visualmente nem na URL da página, para maior privacidade e segurança.
Esse método é baseado no código fonte do cliente JavaScript do MEGA, que pode ser acessado pelo endereço https://mega.nz ou pelas extensões oficiais. Não foram encontrados nenhum problema de compatibilidade nessas condições, seja para a versão atual do código ou versões antigas.
Já no cliente oficial do MEGA para Android esses links não funcionam, isso por esse
não suportar links sem a chave de decriptografia e por que não suporta a chave
simplificada. O cliente de linha de comando megadl também mostra os mesmos problemas.
Alguns dos bugs acima ou estão sendo corrigidos ou já foram reportados.
Ainda há mais clientes para serem testados. Não posso testar em outras plataformas que não citei. Caso possível faça o teste e comente esse gist com os resultados.
- v1: postagem do gist
- v2: tradução da mensagem de erro
- v3: remoção do código de teste
- v4: melhora do código de teste e na explicação de alguns pontos
- v5: melhor compatibilidade entre navegadores
- v6: usando chave ao invés de senha, adicionados mais objetivos
- v7: adicionado aviso de compatibilidade
- v8: problemas reportados
- v9: avisar automaticamente sobre chaves que possam não funcionar