Tools - Share

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

5/5 - (1 bình chọn)

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

<?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 😁

Phúc Thành

Hi mình là Phúc Thành ! Thích làm những gì mình thích ^^ ! Phương châm là "No Pain, No Gain" 😊 😊

Recent Posts

Mở tài khoản ngân hàng Lộc Phát Bank online trên ứng dụng LPBank 2025

Ngân hàng Thương mại Cổ phần Lộc Phát Việt Nam (LPBank) tiền thân là Ngân…

4 tháng ago

Hướng dẩn tạo 1000 proxy v6 từ vps chưa tới 200k để nuôi tài khoản

Proxy IPv6 là gì ? Khi bạn sử dụng proxy là một cách để che…

8 tháng ago

Đóng pin thay thế cho các loại máy công cụ,xe điện – Vũng Liêm – Vĩnh Long

Máy khoan, dụng cụ điện và các thiết bị tương tự đang ngày càng được…

8 tháng ago

Nhận Đóng,Sửa Pin Máy Công Cụ, Máy Khoan Pin Tại Vũng Liêm – Vĩnh Long – Toàn Quốc

Máy khoan pin,Máy công cụ v.v ngày càng được sử dụng nhiều hơn vì tính di động…

8 tháng ago

Nhận đóng pin các loại máy công cụ,pin bình đề xe máy,lưu trử vv giá tốt toàn quốc

Bạn đang tìm kiếm dịch vụ nhận đóng pin chuyên nghiệp trên toàn quốc? HT PIN là…

8 tháng ago

DỊCH VỤ QUẢN TRỊ WEBSITE, CHĂM SÓC WEBSITE TOÀN DIỆN

Dịch vụ quản trị website chuyên nghiệp  Chăm sóc website toàn diện, giải pháp marketing…

1 năm ago