Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: Autenticação 2FA para Usuário Root no WSL

--- # naldodj-wsl-2FA ## Autenticação 2FA para Usuário Root no WSL ### Introdução O Windows Subsystem for Linux (WSL) é uma ferramenta poderosa que permite aos desenvolvedores executar um ambiente Linux diretamente no Windows. No entanto, a segurança é uma preocupação importante, especialmente quando se trata de acessar o usuário root. Neste post, vamos mostrar como configurar a autenticação de dois fatores (2FA) para o usuário root ao acessar o WSL, garantindo uma camada adicional de segurança. ### Objetivo Vamos configurar um script de login que valida a senha do root e usa autenticação 2FA baseada em Time-based One-Time Password (TOTP), usando ferramentas comuns como `openssl`, `oathtool`, e `perl`. ### Passo 1: Instalar as Ferramentas Necessárias Primeiro, precisamos garantir que temos todas as ferramentas necessárias instaladas. Isso inclui `openssl`, `oathtool`, e `perl`. ```bash sudo apt-get update sudo apt-get install openssl oathtool perl ``` Para os scripts em Lua.

BlackTDN :: utThread (tBigNThread) : Exemplo de Uso classe em AdvPL

Exemplo de uso para a classe em AdvPL: utThread (ndjlib031.prg).

Obs.: A classe utThread é completamente dependente de tBigNThread (tBigNThread.prg: um vez que deriva desta) então, para executar o exemplo de teste abaixo, compile, também, os programas que se encontram aqui.

Ao exemplo:

#include "tBigNumber.ch"

#define TST_MAXTHREAD 15

user procedure ThreadT1()
local oProcess:=MsNewProcess():New({||thProcess(oProcess)})
oProcess:Activate()
return

static function thProcess(oProcess)
Local oThread:=utThread():New(oProcess)
Local nThread
Local nThreads:=TST_MAXTHREAD
Local nValor1
Local nValor2
Local nTotal
oThread:Start(nThreads)
oProcess:SetRegua1(nThreads)
oProcess:SetRegua2(0)
For nThread:=1 To nThreads
nValor1:=nThread
nValor2:=(nThreads-nThread)
oProcess:IncRegua2()
if ((nThread%2)==0)
oThread:setEvent(nThread,{"u_Sum",nValor1,nValor2})
else
oThread:setEvent(nThread,"u_Sum('"+NToS(nValor1)+"','"+NToS(nValor2)+"')")
endif
oProcess:SetRegua1()
Next nThread
oThread:Notify()
oThread:Wait()
oThread:Join()
aResults:=oThread:getAllResults(.T.)
oThread:Finalize()
nTotal:=0
aEval(aResults,{|r,i|ConOut("Result Index["+NToS(i)+"]",r,Replicate("-",20)),nTotal+=Val(r)})
ConOut("Total:",nTotal)
return

user function Sum(xValor1,xValor2)
local nValor1:=if(valType(xValor1)=="C",Val(xValor1),xValor1)
local nValor2:=if(valType(xValor2)=="C",Val(xValor2),xValor2)
//-----------------------------------------------------------
//OBS.: NAO ESPERE QUE ESSA INFOMACAO SEJA IMPRESSA NA ORDEM
// AFINAL: MT
ConOut(;
Replicate("-",20),;
"[ProcName(2)]",ProcName(2),;
"[ProcName(1)]",ProcName(1),;
"[ProcName(0)]",ProcName(),;
"[ThreadID]",ThreadID(),;
"[nValor1]",nValor1,;
"[nValor2]",nValor2,;
Replicate("-",20);
)
return((nValor1+nValor2))

[]s

иαldσ dj


P.S.: Não entendeu nadinha? Isso não é Problema! Que tal dar uma passadinha antes no TUDO EM ADVPL.

Comentários

Postagens mais visitadas