Share Code lấy trình tạo mã 2FA giống 2fa.live

2FA hay còn gọi là xác minh 2 bước giúp bạn bảo mật tài khoản Facebook hơn. Khi nhập Password đăng nhập Facebook xong, bạn cần phải cung cấp thêm mã 6 số ngẫu nhiên được cung cấp bởi trình tạo mã 2FA. Tuy nhiên nếu bạn không có điện thoại, bạn vẫn có thể tự làm cho mình trang Web lấy mã 2FA. Dưới đây là source  Code lấy mã 2FA giống 2fa.live. Cách thực hiện như sau:

Bộ source code dưới đây bạn có thể dùng cài xampp để chạy php trên Windows hoặc upload lên hosting.

Tạo File tên GoogleAuthenticator.php với nội dung

Mua clone facebook giá rẻ chất lượng nhất thị trường

<?php

class PHPGangsta_GoogleAuthenticator
{
    protected $_codeLength = 6;

    
    public function createSecret($secretLength = 16)
    {
        $validChars = $this->_getBase32LookupTable();

        
        if ($secretLength < 16 || $secretLength > 128) {
            throw new Exception('Bad secret length');
        }
        $secret = '';
        $rnd = false;
        if (function_exists('random_bytes')) {
            $rnd = random_bytes($secretLength);
        } elseif (function_exists('mcrypt_create_iv')) {
            $rnd = mcrypt_create_iv($secretLength, MCRYPT_DEV_URANDOM);
        } elseif (function_exists('openssl_random_pseudo_bytes')) {
            $rnd = openssl_random_pseudo_bytes($secretLength, $cryptoStrong);
            if (!$cryptoStrong) {
                $rnd = false;
            }
        }
        if ($rnd !== false) {
            for ($i = 0; $i < $secretLength; ++$i) {
                $secret .= $validChars[ord($rnd[$i]) & 31];
            }
        } else {
            throw new Exception('No source of secure random');
        }

        return $secret;
    }

  
    public function getCode($secret, $timeSlice = null)
    {
        if ($timeSlice === null) {
            $timeSlice = floor(time() / 30);
        }

        $secretkey = $this->_base32Decode($secret);

        $time = chr(0).chr(0).chr(0).chr(0).pack('N*', $timeSlice);
        
        $hm = hash_hmac('SHA1', $time, $secretkey, true);
        
        $offset = ord(substr($hm, -1)) & 0x0F;
        
        $hashpart = substr($hm, $offset, 4);

        $value = unpack('N', $hashpart);
        $value = $value[1];
        $value = $value & 0x7FFFFFFF;

        $modulo = pow(10, $this->_codeLength);

        return str_pad($value % $modulo, $this->_codeLength, '0', STR_PAD_LEFT);
    }

    
    public function setCodeLength($length)
    {
        $this->_codeLength = $length;

        return $this;
    }

    
    protected function _base32Decode($secret)
    {
        if (empty($secret)) {
            return '';
        }

        $base32chars = $this->_getBase32LookupTable();
        $base32charsFlipped = array_flip($base32chars);

        $paddingCharCount = substr_count($secret, $base32chars[32]);
        $allowedValues = array(6, 4, 3, 1, 0);
        if (!in_array($paddingCharCount, $allowedValues)) {
            return false;
        }
        for ($i = 0; $i < 4; ++$i) {
            if ($paddingCharCount == $allowedValues[$i] &&
                substr($secret, -($allowedValues[$i])) != str_repeat($base32chars[32], $allowedValues[$i])) {
                return false;
            }
        }
        $secret = str_replace('=', '', $secret);
        $secret = str_split($secret);
        $binaryString = '';
        for ($i = 0; $i < count($secret); $i = $i + 8) {
            $x = '';
            if (!in_array($secret[$i], $base32chars)) {
                return false;
            }
            for ($j = 0; $j < 8; ++$j) {
$x .= str_pad(base_convert(@$base32charsFlipped[@$secret[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
            }
            $eightBits = str_split($x, 8);
            for ($z = 0; $z < count($eightBits); ++$z) {
                $binaryString .= (($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48) ? $y : '';
            }
        }

        return $binaryString;
    }

    
    protected function _getBase32LookupTable()
    {
        return array(
            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', //  7
            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 15
            'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 23
            'Y', 'Z', '2', '3', '4', '5', '6', '7', // 31
            '=',  // padding char
        );
    }

   
    private function timingSafeEquals($safeString, $userString)
    {
        if (function_exists('hash_equals')) {
            return hash_equals($safeString, $userString);
        }
        $safeLen = strlen($safeString);
        $userLen = strlen($userString);

        if ($userLen != $safeLen) {
            return false;
        }

        $result = 0;

        for ($i = 0; $i < $userLen; ++$i) {
            $result |= (ord($safeString[$i]) ^ ord($userString[$i]));
        }

        
        return $result === 0;
    }
}

?>

Tạo file 2fa.php với nội dung:

<?php 

require_once 'GoogleAuthenticator.php';

if (isset($_GET['key']))
{
    $key = trim($_GET['key']);
    $ga = new PHPGangsta_GoogleAuthenticator();
    $code = $ga->getCode($key);
    $list = [
    "key"=>$key,
    "code"=>$code
    ];
    $daucatmoi = json_encode($list, JSON_PRETTY_PRINT);
    $memay = json_decode($daucatmoi, true);
    echo $memay['code'];
}
?>

Upload lên Hosting. Vậy là chúng ta có bộ source code lấy mã 2FA giống 2fa.live

Hoặc bạn có thể download nguyên source code tại đây : 2fa code ! chúc bạn thành công 😁

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *