14.225.254.32:443 (tcp/http/tls) - last seen on 2025-04-14 at 04:37:16 UTC
-
- IP
- 14.225.254.32
- Network
- 14.225.240.0/20
- Domain(s)
- *.localhost *.test avatar.test bio.test dangky.test node_modules.test otp.test push.test search.test tiktok.test views.test vote-app.test
- Device
-
<enterprise field>: device.class
- Operating System
- Microsoft Windows
- URL
-
https://14.225.254.32/ 200
- HTTP Title
- Ứng dụng cần License
- ASN
- AS135905
- Organization
- VIETNAM POSTS AND TELECOMMUNICATIONS GROUP
- Protocol
- http
- Source
- datascan
-
- NOTE
- This tab is a merge from current page results.
- CPE(s)
- Domain(s)
- *.localhost *.test avatar.test bio.test cloudzy.com dangky.test fw.test kw.test netvigator.com node_modules.test nscc.test otp.test prod-dial.com.mx push.test search.test soporte.test tiktok.test views.test vote-app.test wp-admin.test wp-content.test wp-includes.test xteamnetx.cloud
- Hostname(s)
- 208.82.86.172.static.cloudzy.com 42-98-143-213.static.netvigator.com FW.test KW.test NSCC.test avatar.test bio.test dangky.test dup-201-113-161-46.prod-dial.com.mx node_modules.test otp.test push.test search.test soporte.test views.test vote-app.test wp-admin.test wp-content.test wp-includes.test xteamnetx.cloud
- IP(s)
- 14.225.254.32 172.86.82.208 185.55.243.231 201.113.161.46 42.98.143.213
- Port(s)
- 443
- Protocol(s)
- http
- Subject Organization(s)
- Laragon
- Tag(s)
- URL(s)
- / /wp-content/plugins/ot-flatsome-vertical-menu/libs/menu-icons/includes/library/icon-picker/css/types/font-awesome.min.css?ver=4.6.1 /wp-content/plugins/woocommerce-products-filter/js/malihu-custom-scrollbar/ /wp-json/ /wp-json/oembed/1.0/embed?url=https%3A%2F%2Fxteamnetx.cloud%2F /xmlrpc.php?rsd
-
- Operating System
- Microsoft Windows
- Product
- Apache HTTP Server 2.4.62
- HTTP Component(s)
- PHP PHP 8.3.16 OpenSSL OpenSSL 3.0.15
- CPE(s)
-
<enterprise field>: cpe
-
- Issuer Common Name
- laragon
- Issuer Organization
- Laragon
- Subject Organization
- Laragon
- Subject Common Name
- laragon
- Subject Alt Name
- localhost avatar.test *.avatar.test bio.test *.bio.test dangky.test *.dangky.test node_modules.test *.node_modules.test otp.test *.otp.test push.test *.push.test search.test *.tiktok.test views.test *.views.test vote-app.test *.vote-app.test *.localhost *.test
- SHA256 Fingerprint
- 27480ecc9c59410fb44201adde18353abeb6ba1b381e1172c562a2eb8a051b64
- Validity Not Before
- 2025-04-12T02:51:05Z
- Validity Not After
- 2026-04-12T02:51:05Z
This feature requires at least a "Lion View" to unlock. Go to our Pricing page for more.
-
- Data MD5
- 980bed3507bb33f189331f9b9e7ff62b
- HTTP Header MD5
- 07f953860c93bf30420d19accabeeb34
- HTTP Body MD5
- 8830858fdd633d37f899d401989f1cca
-
HTTP/1.1 200 OK Date: Mon, 14 Apr 2025 04:37:14 GMT Server: Apache/2.4.62 (Win64) OpenSSL/3.0.15 PHP/8.3.16 X-Powered-By: PHP/8.3.16 Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=UTF-8 6136 <!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Ứng dụng cần License</title> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet"> <style> /* Reset & Font */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Roboto', sans-serif; background-color: #f4f4f9; color: #333; line-height: 1.6; padding-top: 70px; /* Để dành chỗ cho navbar cố định */ } /* Navbar */ .navbar { position: fixed; top: 0; left: 0; right: 0; height: 70px; background: #4CAF50; color: #fff; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; z-index: 1200; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .navbar .brand { font-size: 20px; font-weight: bold; } .navbar .license-info-nav { font-size: 14px; text-align: right; } .navbar .license-info-nav button { margin-top: 5px; padding: 6px 12px; font-size: 12px; font-weight: bold; border: none; border-radius: 6px; background: linear-gradient(135deg, #ff4b2b, #ff416c); color: #fff; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; } .navbar .license-info-nav button:hover { transform: scale(1.05); box-shadow: 0 4px 10px rgba(255,65,108,0.4); } .navbar .license-info-nav button:active { transform: scale(0.98); } /* Modal License */ #licenseModal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); display: flex; justify-content: center; align-items: center; z-index: 1000; } #licenseModal .modal-content { background: #fff; padding: 30px 20px; border-radius: 8px; width: 90%; max-width: 400px; text-align: center; box-shadow: 0 8px 20px rgba(0,0,0,0.2); animation: fadeIn 0.5s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } #licenseModal h2 { margin-bottom: 20px; color: #4CAF50; } #licenseModal input { width: 100%; padding: 12px; margin-bottom: 15px; font-size: 16px; border: 1px solid #ddd; border-radius: 4px; text-align: center; } #licenseModal button { width: 100%; padding: 12px; font-size: 16px; border: none; border-radius: 4px; background-color: #4CAF50; color: #fff; cursor: pointer; transition: background-color 0.3s ease; } #licenseModal button:hover { background-color: #45a049; } #licenseResult { margin-top: 10px; font-weight: 500; } /* Ứng dụng chính */ .container { max-width: 1200px; margin: 20px auto; padding: 40px; background: #fff; border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,0.1); display: none; position: relative; animation: fadeIn 0.5s ease; } .container h2 { text-align: center; color: #4CAF50; margin-bottom: 20px; } label { display: block; margin-bottom: 10px; font-size: 18px; font-weight: 500; } textarea { width: 100%; padding: 15px; font-size: 16px; margin-bottom: 20px; border: 1px solid #ddd; border-radius: 6px; resize: vertical; min-height: 200px; } .control-group { display: flex; flex-wrap: wrap; gap: 15px; justify-content: center; margin-bottom: 20px; } .control-group > * { flex: 1; min-width: 150px; } button, input[type="file"] { padding: 12px 15px; font-size: 16px; border: 1px solid #ddd; border-radius: 6px; cursor: pointer; background: #4CAF50; color: #fff; transition: background 0.3s ease; } button:hover, input[type="file"]:hover { background: #45a049; } column-toggle { display: flex ; flex-wrap: wrap; justify-content: center; align-items: center; gap: 15px; padding: 30px 20px; /* margin: 20px auto; */ /* background: #eef3f7; */ /* border: 1px solid #cdd7e0; */ border-radius: 8px; max-width: 800px; } .column-toggle .toggle-title { font-size: 16px; font-weight: bold; margin-right: 10px; color: #333; } .column-toggle label { font-size: 15px; color: #555; display: flex; align-items: center; gap: 5px; cursor: pointer; } .column-toggle input[type="checkbox"] { width: 16px; height: 16px; accent-color: #4CAF50; cursor: pointer; } .output-table { width: 100%; border-collapse: collapse; margin-top: 20px; } .output-table th, .output-table td { padding: 12px; text-align: center; border: 1px solid #ddd; } .output-table th { background: #f4f4f4; font-weight: bold; } .output-table tr:nth-child(even) { background: #f9f9f9; } .loading-img { width: 24px; height: 24px; vertical-align: middle; } .profile-icon { cursor: pointer; width: 24px; height: 24px; } #summary { font-size: 18px; font-weight: bold; margin-bottom: 10px; text-align: center; } .options-container { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; padding: 10px 20px; margin: 20px auto; background-color: #eef3f7; border: 1px solid #cdd7e0; border-radius: 8px; max-width: 1200px; } /* Sử dụng CSS Grid để xếp 8 switch thành 2 hàng, mỗi hàng 4 cột */ .column-toggle { display: grid ; grid-template-columns: repeat(4, 2fr); /* gap: 10px; */ width: 40%; } .column-toggle .toggle-title { grid-column: 1 / -1; /* Chiếm toàn bộ hàng đầu tiên */ font-size: 16px; font-weight: bold; margin-bottom: 10px; text-align: center; color: #333; } /* Kiểu cho Switch */ .switch { display: flex; flex-direction: column; align-items: center; cursor: pointer; } .switch input { opacity: 0; width: 0; height: 0; } .slider { position: relative; width: 40px; height: 20px; background-color: #ccc; border-radius: 20px; transition: 0.4s; margin-bottom: 5px; } .slider:before { position: absolute; content: ""; height: 16px; width: 16px; left: 2px; bottom: 2px; background-color: #fff; border-radius: 50%; transition: 0.4s; } .switch input:checked + .slider { background-color: #4CAF50; } .switch input:checked + .slider:before { transform: translateX(20px); } .switch .switch-text { font-size: 14px; color: #555; text-align: center; } /* Phần License Info Panel */ .license-info-panel { font-size: 14px; //text-align: right; padding: 20px; background: #ffffff; //border: 1px solid #ddd; border-radius: 8px; //box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); max-width: 300px; width: 300px; margin-top: 20px; } .export-btn { background-color: #3498db; color: white; padding: 10px 15px; border: none; width:200px; height:40px; border-radius: 5px; cursor: pointer; } .start-btn { background-color: #2ecc71; color: white; padding: 10px 15px; border: none; width:135px; height:40px; border-radius: 5px; cursor: pointer; } .check-live-btn { background-color: #e74c3c; color: white; padding: 10px 15px; border: none; width:135px; height:40px; border-radius: 5px; cursor: pointer; } button:hover { opacity: 0.8; } </style> <script src="https://cdn.jsdelivr.net/npm/otplib-ext-totp@7.0.2/otplib-browser.min.js"></script> <script defer> // Hàm kích hoạt License: gửi License Key đến API, lưu vào localStorage và hiển thị thông tin license function activateLicense() { const licenseKey = document.getElementById("licenseInput").value.trim(); const licenseResult = document.getElementById("licenseResult"); if (!licenseKey) { licenseResult.style.color = "red"; licenseResult.innerText = "Vui lòng nhập License Key của bạn!"; return; } fetch("license.php", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ license_key: licenseKey }) }) .then(response => response.json()) .then(data => { if (data.status === "valid") { licenseResult.style.color = "green"; licenseResult.innerText = data.message; // Lưu License Key và thông tin liên quan vào localStorage localStorage.setItem("licenseKey", licenseKey); localStorage.setItem("expiration_date", data.expiration_date); localStorage.setItem("registration_date", data.registration_date); localStorage.setItem("days_remaining", data.days_remaining); localStorage.setItem("licenseValid", "true"); // Ẩn modal License và hiển thị ứng dụng chính document.getElementById("licenseModal").style.display = "none"; document.getElementById("mainApp").style.display = "block"; displayLicenseInfo(); } else { licenseResult.style.color = "red"; licenseResult.innerText = data.message; } }) .catch(error => { licenseResult.style.color = "red"; licenseResult.innerText = "Lỗi kết nối đến server."; console.error(error); }); } // Hiển thị thông tin license từ localStorage trong navbar function displayLicenseInfo() { const licenseKey = localStorage.getItem("licenseKey"); const registration_date = localStorage.getItem("registration_date") || "N/A"; const expiration_date = localStorage.getItem("expiration_date") || "N/A"; const days_remaining = localStorage.getItem("days_remaining") || "N/A"; const licenseInfo = document.getElementById("licenseInfo"); licenseInfo.innerHTML = `<strong>License:</strong> ${licenseKey}<br/> <strong>Đăng ký:</strong> ${registration_date}<br/> <strong>Hết hạn:</strong> ${expiration_date}<br/> <strong>Còn lại:</strong> ${days_remaining} ngày<br> `; } // Hàm thoát License: xóa dữ liệu license từ localStorage và reload trang function logoutLicense() { localStorage.removeItem("licenseKey"); localStorage.removeItem("expiration_date"); localStorage.removeItem("registration_date"); localStorage.removeItem("days_remaining"); localStorage.removeItem("licenseValid"); location.reload(); } // Kiểm tra nếu đã lưu License và hợp lệ khi tải trang window.onload = function() { const storedLicense = localStorage.getItem("licenseKey"); const licenseValid = localStorage.getItem("licenseValid"); if (storedLicense && licenseValid === "true") { document.getElementById("licenseModal").style.display = "none"; document.getElementById("mainApp").style.display = "block"; displayLicenseInfo(); } else { document.getElementById("licenseModal").style.display = "flex"; } }; // Các hàm xử lý ứng dụng chính (giữ nguyên) let allCuts = []; let intervalId; const doubleClickThreshold = 500; function handleFileUpload(event) { const file = event.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = function(e) { document.getElementById("inputText").value = e.target.result; }; reader.readAsText(file); } function cutStrings() { allCuts = []; let inputText = document.getElementById("inputText").value; if (!inputText.trim()) { alert("Vui lòng nhập chuỗi cần cắt."); return; } let inputLines = inputText.split("\n"); inputLines.forEach(line => { let parts = line.split("|").slice(0, 5); allCuts.push(parts); }); let output = "<table class='output-table'>"; output += "<thead><tr>"; output += "<th class='col-stt'>STT</th>"; output += "<th class='col-uid'>UID</th>"; output += "<th class='col-pass'>Password</th>"; output += "<th class='col-2fa'>2FA</th>"; output += "<th class='col-email'>Email</th>"; output += "<th class='col-pass-email'>Pass Email</th>"; output += "<th class='col-status'>Status</th>"; output += "<th class='col-profile'>Tools</th>"; output += "</tr></thead>"; output += "<tbody id='otpTableBody'></tbody></table>"; document.getElementById("output").innerHTML = output; updateOTPCells(); if (intervalId) clearInterval(intervalId); } async function updateOTPCells() { const tbody = document.getElementById("otpTableBody"); if (!tbody) return; tbody.innerHTML = ""; for (let i = 0; i < allCuts.length; i++) { const stt = i + 1; const uid = allCuts[i][0]?.trim() || "<em>Chưa có dữ liệu</em>"; const pass = allCuts[i][1]?.trim() || "<em>Chưa có dữ liệu</em>"; const secret = allCuts[i][2]?.trim() || ""; const email = allCuts[i][3]?.trim() || "<em>Chưa có dữ liệu</em>"; const passEmail = allCuts[i][4]?.trim() || "<em>Chưa có dữ liệu</em>"; const otpCellContent = secret ? `<img src="https://i.pinimg.com/originals/f6/65/6a/f6656aa6fdb6b8f905dea0bcc2d71dd8.gif" class="loading-img" />` : "<em>Không có dữ liệu</em>"; const statusCellContent = `<em>...</em>`; const profileCellContent = `<img src="https://img.icons8.com/fluency-systems-regular/48/000000/settings.png" alt="Hồ sơ" class="profile-icon" onclick="openBrowserProfile('${uid}')"/>`; const rowHTML = `<tr id="row-${i}"> <td class="col-stt">${stt}</td> <td class="col-uid" onclick="copyToClipboard('${uid}')">${uid}</td> <td class="col-pass" onclick="copyToClipboard('${pass}')">${pass}</td> <td class="col-2fa" id="otpCell-${i}" onclick="copyToClipboard(this.innerText)" oncontextmenu="handleRightClick(event, ${i})">${otpCellContent}</td> <td class="col-email" onclick="copyToClipboard('${email}')">${email}</td> <td class="col-pass-email" onclick="copyToClipboard('${passEmail}')">${passEmail}</td> <td class="col-status" id="statusCell-${i}">${statusCellContent}</td> <td class="col-profile">${profileCellContent}</td> </tr>`; tbody.innerHTML += rowHTML; } for (let i = 0; i < allCuts.length; i++) { const secret = allCuts[i][2]?.trim() || ""; if (secret) { try { const code = otplib.authenticator.generate(secret); document.getElementById(`otpCell-${i}`).innerText = code; } catch (e) { document.getElementById(`otpCell-${i}`).innerText = "Lỗi"; console.error("Lỗi giải 2FA:", e); } } } } function toggleColumn(columnClass, checkbox) { const cells = document.querySelectorAll("." + columnClass); cells.forEach(cell => { cell.style.display = checkbox.checked ? "table-cell" : "none"; }); } function handleRightClick(event, index) { event.preventDefault(); const cell = document.getEle
-
{ "@category" : "datascan", "@timestamp" : "2025-04-14T04:37:16.000Z", "app" : { "extract" : { "domain" : [ "jsdelivr.net", "pinimg.com", "icons8.com", "googleapis.com" ], "file" : [ "license.php" ], "hostname" : [ "cdn.jsdelivr.net", "fonts.googleapis.com", "i.pinimg.com", "img.icons8.com" ], "url" : [ "https://cdn.jsdelivr.net/npm/otplib-ext-totp@7.0.2/otplib-browser.min.js", "https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap", "https://i.pinimg.com/originals/f6/65/6a/f6656aa6fdb6b8f905dea0bcc2d71dd8.gif", "https://img.icons8.com/fluency-systems-regular/48/000000/settings.png" ] }, "http" : { "bodymd5" : "8830858fdd633d37f899d401989f1cca", "bodymmh3" : 542157651, "component" : [ { "product" : "PHP", "productvendor" : "PHP", "productversion" : "8.3.16" }, { "product" : "OpenSSL", "productversion" : "3.0.15", "productvendor" : "OpenSSL" } ], "headermd5" : "07f953860c93bf30420d19accabeeb34", "headermmh3" : -1037103007, "title" : "\u1ee8ng d\u1ee5ng c\u1ea7n License" }, "length" : 16384 }, "asn" : "AS135905", "ca" : "false", "country" : "VN", "cpe" : "<enterprise field>: cpe", "cpecount" : "<enterprise field>: cpecount", "data" : "HTTP/1.1 200 OK\r\nDate: Mon, 14 Apr 2025 04:37:14 GMT\r\nServer: Apache/2.4.62 (Win64) OpenSSL/3.0.15 PHP/8.3.16\r\nX-Powered-By: PHP/8.3.16\r\nConnection: close\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n6136\r\n<!DOCTYPE html>\n<html lang=\"vi\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>\u1ee8ng d\u1ee5ng c\u1ea7n License</title>\n <link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n <style>\n /* Reset & Font */\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n body {\n font-family: 'Roboto', sans-serif;\n background-color: #f4f4f9;\n color: #333;\n line-height: 1.6;\n padding-top: 70px; /* \u0110\u1ec3 d\u00e0nh ch\u1ed7 cho navbar c\u1ed1 \u0111\u1ecbnh */\n }\n /* Navbar */\n .navbar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: 70px;\n background: #4CAF50;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 20px;\n z-index: 1200;\n box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n }\n .navbar .brand {\n font-size: 20px;\n font-weight: bold;\n }\n .navbar .license-info-nav {\n font-size: 14px;\n text-align: right;\n }\n .navbar .license-info-nav button {\n margin-top: 5px;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: bold;\n border: none;\n border-radius: 6px;\n background: linear-gradient(135deg, #ff4b2b, #ff416c);\n color: #fff;\n cursor: pointer;\n transition: transform 0.3s ease, box-shadow 0.3s ease;\n }\n .navbar .license-info-nav button:hover {\n transform: scale(1.05);\n box-shadow: 0 4px 10px rgba(255,65,108,0.4);\n }\n .navbar .license-info-nav button:active {\n transform: scale(0.98);\n }\n /* Modal License */\n #licenseModal {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0,0,0,0.6);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n #licenseModal .modal-content {\n background: #fff;\n padding: 30px 20px;\n border-radius: 8px;\n width: 90%;\n max-width: 400px;\n text-align: center;\n box-shadow: 0 8px 20px rgba(0,0,0,0.2);\n animation: fadeIn 0.5s ease;\n }\n @keyframes fadeIn {\n from { opacity: 0; transform: translateY(-20px); }\n to { opacity: 1; transform: translateY(0); }\n }\n #licenseModal h2 {\n margin-bottom: 20px;\n color: #4CAF50;\n }\n #licenseModal input {\n width: 100%;\n padding: 12px;\n margin-bottom: 15px;\n font-size: 16px;\n border: 1px solid #ddd;\n border-radius: 4px;\n text-align: center;\n }\n #licenseModal button {\n width: 100%;\n padding: 12px;\n font-size: 16px;\n border: none;\n border-radius: 4px;\n background-color: #4CAF50;\n color: #fff;\n cursor: pointer;\n transition: background-color 0.3s ease;\n }\n #licenseModal button:hover {\n background-color: #45a049;\n }\n #licenseResult {\n margin-top: 10px;\n font-weight: 500;\n }\n /* \u1ee8ng d\u1ee5ng ch\u00ednh */\n .container {\n max-width: 1200px;\n margin: 20px auto;\n padding: 40px;\n background: #fff;\n border-radius: 8px;\n box-shadow: 0 6px 20px rgba(0,0,0,0.1);\n display: none;\n position: relative;\n animation: fadeIn 0.5s ease;\n }\n .container h2 {\n text-align: center;\n color: #4CAF50;\n margin-bottom: 20px;\n }\n label {\n display: block;\n margin-bottom: 10px;\n font-size: 18px;\n font-weight: 500;\n }\n textarea {\n width: 100%;\n padding: 15px;\n font-size: 16px;\n margin-bottom: 20px;\n border: 1px solid #ddd;\n border-radius: 6px;\n resize: vertical;\n min-height: 200px;\n }\n .control-group {\n display: flex;\n flex-wrap: wrap;\n gap: 15px;\n justify-content: center;\n margin-bottom: 20px;\n }\n .control-group > * {\n flex: 1;\n min-width: 150px;\n }\n button, input[type=\"file\"] {\n padding: 12px 15px;\n font-size: 16px;\n border: 1px solid #ddd;\n border-radius: 6px;\n cursor: pointer;\n background: #4CAF50;\n color: #fff;\n transition: background 0.3s ease;\n }\n button:hover, input[type=\"file\"]:hover {\n background: #45a049;\n }\n column-toggle {\n display: flex\n;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n gap: 15px;\n padding: 30px 20px;\n /* margin: 20px auto; */\n /* background: #eef3f7; */\n /* border: 1px solid #cdd7e0; */\n border-radius: 8px;\n max-width: 800px;\n}\n .column-toggle .toggle-title {\n font-size: 16px;\n font-weight: bold;\n margin-right: 10px;\n color: #333;\n }\n .column-toggle label {\n font-size: 15px;\n color: #555;\n display: flex;\n align-items: center;\n gap: 5px;\n cursor: pointer;\n }\n .column-toggle input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n accent-color: #4CAF50;\n cursor: pointer;\n }\n .output-table {\n width: 100%;\n border-collapse: collapse;\n margin-top: 20px;\n }\n .output-table th, .output-table td {\n padding: 12px;\n text-align: center;\n border: 1px solid #ddd;\n }\n .output-table th {\n background: #f4f4f4;\n font-weight: bold;\n }\n .output-table tr:nth-child(even) {\n background: #f9f9f9;\n }\n .loading-img {\n width: 24px;\n height: 24px;\n vertical-align: middle;\n }\n .profile-icon {\n cursor: pointer;\n width: 24px;\n height: 24px;\n }\n #summary {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 10px;\n text-align: center;\n }\n .options-container {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 20px;\n padding: 10px 20px;\n margin: 20px auto;\n background-color: #eef3f7;\n border: 1px solid #cdd7e0;\n border-radius: 8px;\n max-width: 1200px;\n}\n\n/* S\u1eed d\u1ee5ng CSS Grid \u0111\u1ec3 x\u1ebfp 8 switch th\u00e0nh 2 h\u00e0ng, m\u1ed7i h\u00e0ng 4 c\u1ed9t */\n.column-toggle {\n display: grid\n;\n grid-template-columns: repeat(4, 2fr);\n /* gap: 10px; */\n width: 40%;\n}\n\n.column-toggle .toggle-title {\n grid-column: 1 / -1; /* Chi\u1ebfm to\u00e0n b\u1ed9 h\u00e0ng \u0111\u1ea7u ti\u00ean */\n font-size: 16px;\n font-weight: bold;\n margin-bottom: 10px;\n text-align: center;\n color: #333;\n}\n\n/* Ki\u1ec3u cho Switch */\n.switch {\n display: flex;\n flex-direction: column;\n align-items: center;\n cursor: pointer;\n}\n\n.switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n.slider {\n position: relative;\n width: 40px;\n height: 20px;\n background-color: #ccc;\n border-radius: 20px;\n transition: 0.4s;\n margin-bottom: 5px;\n}\n.slider:before {\n position: absolute;\n content: \"\";\n height: 16px;\n width: 16px;\n left: 2px;\n bottom: 2px;\n background-color: #fff;\n border-radius: 50%;\n transition: 0.4s;\n}\n.switch input:checked + .slider {\n background-color: #4CAF50;\n}\n.switch input:checked + .slider:before {\n transform: translateX(20px);\n}\n.switch .switch-text {\n font-size: 14px;\n color: #555;\n text-align: center;\n}\n\n/* Ph\u1ea7n License Info Panel */\n.license-info-panel {\n font-size: 14px;\n //text-align: right;\n padding: 20px;\n background: #ffffff;\n //border: 1px solid #ddd;\n border-radius: 8px;\n //box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n max-width: 300px;\n width: 300px;\n margin-top: 20px;\n}\n.export-btn {\n background-color: #3498db;\n color: white;\n padding: 10px 15px;\n border: none;\n width:200px;\n height:40px;\n border-radius: 5px;\n cursor: pointer;\n}\n\n.start-btn {\n background-color: #2ecc71;\n color: white;\n padding: 10px 15px;\n border: none;\n width:135px;\n height:40px;\n border-radius: 5px;\n cursor: pointer;\n}\n\n.check-live-btn {\n background-color: #e74c3c;\n color: white;\n padding: 10px 15px;\n border: none;\n width:135px;\n height:40px;\n border-radius: 5px;\n cursor: pointer;\n}\n\nbutton:hover {\n opacity: 0.8;\n}\n\n\n </style>\n <script src=\"https://cdn.jsdelivr.net/npm/otplib-ext-totp@7.0.2/otplib-browser.min.js\"></script>\n <script defer>\n // H\u00e0m k\u00edch ho\u1ea1t License: g\u1eedi License Key \u0111\u1ebfn API, l\u01b0u v\u00e0o localStorage v\u00e0 hi\u1ec3n th\u1ecb th\u00f4ng tin license\n function activateLicense() {\n const licenseKey = document.getElementById(\"licenseInput\").value.trim();\n const licenseResult = document.getElementById(\"licenseResult\");\n \n if (!licenseKey) {\n licenseResult.style.color = \"red\";\n licenseResult.innerText = \"Vui l\u00f2ng nh\u1eadp License Key c\u1ee7a b\u1ea1n!\";\n return;\n }\n \n fetch(\"license.php\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({ license_key: licenseKey })\n })\n .then(response => response.json())\n .then(data => {\n if (data.status === \"valid\") {\n licenseResult.style.color = \"green\";\n licenseResult.innerText = data.message;\n // L\u01b0u License Key v\u00e0 th\u00f4ng tin li\u00ean quan v\u00e0o localStorage\n localStorage.setItem(\"licenseKey\", licenseKey);\n localStorage.setItem(\"expiration_date\", data.expiration_date);\n localStorage.setItem(\"registration_date\", data.registration_date);\n localStorage.setItem(\"days_remaining\", data.days_remaining);\n localStorage.setItem(\"licenseValid\", \"true\");\n // \u1ea8n modal License v\u00e0 hi\u1ec3n th\u1ecb \u1ee9ng d\u1ee5ng ch\u00ednh\n document.getElementById(\"licenseModal\").style.display = \"none\";\n document.getElementById(\"mainApp\").style.display = \"block\";\n displayLicenseInfo();\n } else {\n licenseResult.style.color = \"red\";\n licenseResult.innerText = data.message;\n }\n })\n .catch(error => {\n licenseResult.style.color = \"red\";\n licenseResult.innerText = \"L\u1ed7i k\u1ebft n\u1ed1i \u0111\u1ebfn server.\";\n console.error(error);\n });\n }\n\n // Hi\u1ec3n th\u1ecb th\u00f4ng tin license t\u1eeb localStorage trong navbar\n function displayLicenseInfo() {\n const licenseKey = localStorage.getItem(\"licenseKey\");\n const registration_date = localStorage.getItem(\"registration_date\") || \"N/A\";\n const expiration_date = localStorage.getItem(\"expiration_date\") || \"N/A\";\n const days_remaining = localStorage.getItem(\"days_remaining\") || \"N/A\";\n \n const licenseInfo = document.getElementById(\"licenseInfo\");\n licenseInfo.innerHTML = `<strong>License:</strong> ${licenseKey}<br/>\n <strong>\u0110\u0103ng k\u00fd:</strong> ${registration_date}<br/>\n <strong>H\u1ebft h\u1ea1n:</strong> ${expiration_date}<br/>\n <strong>C\u00f2n l\u1ea1i:</strong> ${days_remaining} ng\u00e0y<br>\n `;\n }\n // H\u00e0m tho\u00e1t License: x\u00f3a d\u1eef li\u1ec7u license t\u1eeb localStorage v\u00e0 reload trang\n function logoutLicense() {\n localStorage.removeItem(\"licenseKey\");\n localStorage.removeItem(\"expiration_date\");\n localStorage.removeItem(\"registration_date\");\n localStorage.removeItem(\"days_remaining\");\n localStorage.removeItem(\"licenseValid\");\n location.reload();\n }\n // Ki\u1ec3m tra n\u1ebfu \u0111\u00e3 l\u01b0u License v\u00e0 h\u1ee3p l\u1ec7 khi t\u1ea3i trang\n window.onload = function() {\n const storedLicense = localStorage.getItem(\"licenseKey\");\n const licenseValid = localStorage.getItem(\"licenseValid\");\n if (storedLicense && licenseValid === \"true\") {\n document.getElementById(\"licenseModal\").style.display = \"none\";\n document.getElementById(\"mainApp\").style.display = \"block\";\n displayLicenseInfo();\n } else {\n document.getElementById(\"licenseModal\").style.display = \"flex\";\n }\n };\n\n // C\u00e1c h\u00e0m x\u1eed l\u00fd \u1ee9ng d\u1ee5ng ch\u00ednh (gi\u1eef nguy\u00ean)\n let allCuts = [];\n let intervalId;\n const doubleClickThreshold = 500;\n\n function handleFileUpload(event) {\n const file = event.target.files[0];\n if (!file) return;\n const reader = new FileReader();\n reader.onload = function(e) {\n document.getElementById(\"inputText\").value = e.target.result;\n };\n reader.readAsText(file);\n }\n\n function cutStrings() {\n allCuts = [];\n let inputText = document.getElementById(\"inputText\").value;\n if (!inputText.trim()) {\n alert(\"Vui l\u00f2ng nh\u1eadp chu\u1ed7i c\u1ea7n c\u1eaft.\");\n return;\n }\n let inputLines = inputText.split(\"\\n\");\n inputLines.forEach(line => {\n let parts = line.split(\"|\").slice(0, 5);\n allCuts.push(parts);\n });\n let output = \"<table class='output-table'>\";\n output += \"<thead><tr>\";\n output += \"<th class='col-stt'>STT</th>\";\n output += \"<th class='col-uid'>UID</th>\";\n output += \"<th class='col-pass'>Password</th>\";\n output += \"<th class='col-2fa'>2FA</th>\";\n output += \"<th class='col-email'>Email</th>\";\n output += \"<th class='col-pass-email'>Pass Email</th>\";\n output += \"<th class='col-status'>Status</th>\";\n output += \"<th class='col-profile'>Tools</th>\";\n output += \"</tr></thead>\";\n output += \"<tbody id='otpTableBody'></tbody></table>\";\n document.getElementById(\"output\").innerHTML = output;\n updateOTPCells();\n if (intervalId) clearInterval(intervalId);\n }\n\n async function updateOTPCells() {\n const tbody = document.getElementById(\"otpTableBody\");\n if (!tbody) return;\n tbody.innerHTML = \"\";\n for (let i = 0; i < allCuts.length; i++) {\n const stt = i + 1;\n const uid = allCuts[i][0]?.trim() || \"<em>Ch\u01b0a c\u00f3 d\u1eef li\u1ec7u</em>\";\n const pass = allCuts[i][1]?.trim() || \"<em>Ch\u01b0a c\u00f3 d\u1eef li\u1ec7u</em>\";\n const secret = allCuts[i][2]?.trim() || \"\";\n const email = allCuts[i][3]?.trim() || \"<em>Ch\u01b0a c\u00f3 d\u1eef li\u1ec7u</em>\";\n const passEmail = allCuts[i][4]?.trim() || \"<em>Ch\u01b0a c\u00f3 d\u1eef li\u1ec7u</em>\";\n const otpCellContent = secret \n ? `<img src=\"https://i.pinimg.com/originals/f6/65/6a/f6656aa6fdb6b8f905dea0bcc2d71dd8.gif\" class=\"loading-img\" />`\n : \"<em>Kh\u00f4ng c\u00f3 d\u1eef li\u1ec7u</em>\";\n const statusCellContent = `<em>...</em>`;\n const profileCellContent = `<img src=\"https://img.icons8.com/fluency-systems-regular/48/000000/settings.png\" alt=\"H\u1ed3 s\u01a1\" class=\"profile-icon\" onclick=\"openBrowserProfile('${uid}')\"/>`;\n const rowHTML = `<tr id=\"row-${i}\">\n <td class=\"col-stt\">${stt}</td>\n <td class=\"col-uid\" onclick=\"copyToClipboard('${uid}')\">${uid}</td>\n <td class=\"col-pass\" onclick=\"copyToClipboard('${pass}')\">${pass}</td>\n <td class=\"col-2fa\" id=\"otpCell-${i}\" onclick=\"copyToClipboard(this.innerText)\" oncontextmenu=\"handleRightClick(event, ${i})\">${otpCellContent}</td>\n <td class=\"col-email\" onclick=\"copyToClipboard('${email}')\">${email}</td>\n <td class=\"col-pass-email\" onclick=\"copyToClipboard('${passEmail}')\">${passEmail}</td>\n <td class=\"col-status\" id=\"statusCell-${i}\">${statusCellContent}</td>\n <td class=\"col-profile\">${profileCellContent}</td>\n </tr>`;\n tbody.innerHTML += rowHTML;\n }\n for (let i = 0; i < allCuts.length; i++) {\n const secret = allCuts[i][2]?.trim() || \"\";\n if (secret) {\n try {\n const code = otplib.authenticator.generate(secret);\n document.getElementById(`otpCell-${i}`).innerText = code;\n } catch (e) {\n document.getElementById(`otpCell-${i}`).innerText = \"L\u1ed7i\";\n console.error(\"L\u1ed7i gi\u1ea3i 2FA:\", e);\n }\n }\n }\n }\n\n function toggleColumn(columnClass, checkbox) {\n const cells = document.querySelectorAll(\".\" + columnClass);\n cells.forEach(cell => {\n cell.style.display = checkbox.checked ? \"table-cell\" : \"none\";\n });\n }\n\n function handleRightClick(event, index) {\n event.preventDefault();\n const cell = document.getEle", "datamd5" : "980bed3507bb33f189331f9b9e7ff62b", "datammh3" : 898781700, "device" : { "class" : "<enterprise field>: device.class" }, "domain" : [ "*.localhost", "*.test", "avatar.test", "bio.test", "dangky.test", "node_modules.test", "otp.test", "push.test", "search.test", "tiktok.test", "views.test", "vote-app.test" ], "extkeyusage" : [ "serverAuth" ], "fingerprint" : { "md5" : "607c6bdbcfe97cd36703575ed7f80442", "sha1" : "32b9e79f9c65faa72cbd9ef5d1da8bb88904dd98", "sha256" : "27480ecc9c59410fb44201adde18353abeb6ba1b381e1172c562a2eb8a051b64" }, "geolocus" : { "asn" : "AS135905", "continent" : "AS", "continentname" : "Asia", "country" : "VN", "countryname" : "Vietnam", "domain" : [ "vnnic.vn", "vnpt.vn" ], "isineu" : "false", "latitude" : "14.058324", "location" : "14.058324,108.277199", "longitude" : "108.277199", "netname" : "VNPT-VN", "organization" : "VNPT", "subnet" : "14.224.0.0/11" }, "hostname" : [ "avatar.test", "bio.test", "dangky.test", "node_modules.test", "otp.test", "push.test", "search.test", "views.test", "vote-app.test" ], "ip" : "14.225.254.32", "ipv6" : "false", "issuer" : { "city" : "Singapore", "commonname" : "laragon", "country" : "SG", "organization" : "Laragon", "organizationalunit" : "Server" }, "keyusage" : [ "digitalSignature", "keyEncipherment" ], "latitude" : "16.1667", "location" : "16.1667,107.8333", "longitude" : "107.8333", "node" : { "country" : "<enterprise field>: node.country", "groupid" : "<enterprise field>: node.groupid", "id" : "<enterprise field>: node.id", "physicalcountry" : "<enterprise field>: node.physicalcountry" }, "organization" : "VIETNAM POSTS AND TELECOMMUNICATIONS GROUP", "os" : "Windows", "osbits" : 64, "osvendor" : "Microsoft", "port" : 443, "product" : "HTTP Server", "productvendor" : "Apache", "productversion" : "2.4.62", "protocol" : "http", "protocolversion" : "1.1", "publickey" : { "algorithm" : "rsaEncryption", "length" : 2048 }, "reason" : "OK", "rtt" : 0.458981, "seen_date" : "2025-04-14", "serial" : "08:ce:03:80:13:8a:53:55:66:37:ec:48:2e:3a:b2:1c:9d:30:bd:0c", "signature" : { "algorithm" : "sha256WithRSAEncryption" }, "source" : "datascan", "srcip" : "91.196.152.43", "srcport" : 41959, "status" : 200, "subject" : { "altname" : [ "localhost", "avatar.test", "*.avatar.test", "bio.test", "*.bio.test", "dangky.test", "*.dangky.test", "node_modules.test", "*.node_modules.test", "otp.test", "*.otp.test", "push.test", "*.push.test", "search.test", "*.tiktok.test", "views.test", "*.views.test", "vote-app.test", "*.vote-app.test", "*.localhost", "*.test" ], "city" : "Singapore", "commonname" : "laragon", "country" : "SG", "organization" : "Laragon", "organizationalunit" : "Server" }, "subnet" : "14.225.240.0/20", "tag" : "<enterprise field>: tag", "tld" : [ "localhost", "test" ], "tls" : "true", "transport" : "tcp", "ttl" : 110, "url" : "/", "validity" : { "notafter" : "2026-04-12T02:51:05Z", "notbefore" : "2025-04-12T02:51:05Z" }, "version" : "v3", "wildcard" : "true" }