Add files via upload

This commit is contained in:
SynthX7
2024-07-07 01:44:44 -03:00
committed by GitHub
parent 3d15318e0d
commit 6b8f9fd84b
2 changed files with 150 additions and 0 deletions

150
senha.js Normal file
View File

@@ -0,0 +1,150 @@
// Importa os módulos necessários
const input = require('prompt-sync')({ sigint: true });
const fs = require('fs');
const crypto = require('crypto');
// Chave secreta para criptografia (substitua por uma chave mais segura em produção)
const chaveCriptografia = crypto.randomBytes(32);
const iv = crypto.randomBytes(16); // Vetor de inicialização (IV) para criptografia
// Nome do arquivo que contém a senha
const arquivo = 'senha.txt';
// Função para limpar o terminal
function clear() {
process.stdout.write('\x1Bc');
}
// Função para criptografar o texto
function encrypt(text) {
const cipher = crypto.createCipheriv('aes-256-cbc', chaveCriptografia, iv);
let encrypted = cipher.update(text, 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
}
// Função para descriptografar o texto
function decrypt(encryptedText) {
const decipher = crypto.createDecipheriv('aes-256-cbc', chaveCriptografia, iv);
let decrypted = decipher.update(encryptedText, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
// Função para exibir o menu inicial e obter a ação do usuário
function inicio() {
clear();
console.log("Bem vindo ao programa");
console.log("Digite o que quer fazer:");
console.log("1. Entrar");
console.log("2. Apagar senha");
console.log("3. Mudar senha\n");
let acao = parseInt(input("Digite: "));
while (![1, 2, 3].includes(acao)) {
console.error(`Opção inválida: ${acao}`);
console.log("Tente novamente");
acao = parseInt(input("Digite: "));
}
return acao;
}
// Função para apagar a senha do arquivo
function apagarSenha() {
console.log("Deseja realmente apagar a senha? Esta ação é irreversível (s/n)");
let escolha = input("Digite: ");
if (escolha.toLowerCase() === "s") {
console.log("Apagando...");
fs.writeFile(arquivo, "", "utf-8", (err) => {
if (err) {
console.error(`Erro ao apagar a senha: ${err}`);
} else {
console.log("Senha apagada com sucesso.");
reiniciarPrograma();
}
});
} else {
console.log("Operação cancelada. Voltando ao menu principal.");
iniciarPrograma();
}
}
// Função para mudar a senha no arquivo
function mudarSenha(data) {
if (data === "") {
let novaSenha = input("Digite a nova senha: ");
fs.writeFileSync(arquivo, encrypt(novaSenha), "utf-8");
console.log("Nova senha salva com sucesso.");
reiniciarPrograma();
} else {
let senhaAntiga = input("Digite a senha antiga: ");
while (decrypt(data) !== senhaAntiga) {
console.error("Senha incorreta, tente novamente");
senhaAntiga = input("Digite a senha antiga: ");
}
let novaSenha = input("Digite a nova senha: ");
fs.writeFileSync(arquivo, encrypt(novaSenha), "utf-8");
console.log("Nova senha salva com sucesso.");
reiniciarPrograma();
}
}
// Função para autenticar o usuário no programa
function entrarPrograma(data) {
if (data === "") {
console.log("Bem vindo ao programa.");
} else {
let senha = input("Digite a senha: ");
while (decrypt(data) !== senha) {
console.error("Senha incorreta, tente novamente");
senha = input("Digite a senha: ");
}
console.log("Bem vindo ao programa.");
}
}
// Função principal que chama outras funções com base na ação do usuário
function programa(acao, data) {
switch (acao) {
case 1:
entrarPrograma(data);
break;
case 2:
apagarSenha();
break;
case 3:
mudarSenha(data);
break;
default:
console.error(`Ação ${acao} não reconhecida.`);
break;
}
}
// Função para iniciar o programa
function iniciarPrograma() {
fs.readFile(arquivo, 'utf-8', (err, data) => {
if (err) {
console.error(`Erro ao ler o arquivo ${arquivo}: ${err}`);
data = "";
}
let acao = inicio();
programa(acao, data);
});
}
// Função para reiniciar o programa
function reiniciarPrograma() {
console.log('Deseja reiniciar o programa? (s/n)');
let rspst = input('Digite: ');
if (rspst.toLowerCase() === 's') {
iniciarPrograma();
} else {
console.log('Programa encerrado.');
process.exit(0);
}
}
// Inicia o programa pela primeira vez
iniciarPrograma();

0
senha.txt Normal file
View File