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