Το Σχόλιο Ένα σχόλιο στη συζήτηση A question about WA Web Network Monitor (Safe) από τον χρήστη Hahahahahah Hihihiαναφέρθηκε 17/08/2025 λόγω Ανεπιθύμητο
// ==UserScript==
// @name FB Security Helper (Panel)
// @namespace http://example.local/fb-sec-helper
// @version 1.0
// @description Panel cepat untuk menampilkan checklist keamanan Facebook, link ke setting penting, generator password, dan tips. Untuk penggunaan pada akun milik sendiri saja.
// @match https://*.facebook.com/*
// @match https://facebook.com/*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// --- simple helper: create floating panel ---
const css = `
#fbSecPanel {
position: fixed;
right: 16px;
bottom: 16px;
width: 300px;
max-height: 70vh;
overflow:auto;
z-index: 9999999;
background: linear-gradient(180deg,#ffffff,#f7f7f9);
box-shadow: 0 10px 30px rgba(0,0,0,0.25);
border-radius: 10px;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
color:#111;
padding:10px;
border:1px solid #dcdcdc;
}
#fbSecPanel h4 { margin:0 0 8px 0; font-size:16px; }
#fbSecPanel button { margin:4px 4px 4px 0; padding:6px 8px; border-radius:6px; border:1px solid #bbb; background:#fff; cursor:pointer; }
#fbSecPanel .section { margin-bottom:8px; }
#fbSecPanel .small { font-size:12px; color:#444; }
#fbSecPanel .closeBtn { float:right; background:transparent; border:none; font-weight:700; cursor:pointer; }
#fbSecPanel input[type="text"] { width:100%; padding:6px; box-sizing:border-box; border:1px solid #ccc; border-radius:6px; }
#fbSecPanel .ok { color:green; font-weight:700; }
#fbSecPanel .warn { color:#d85; font-weight:700; }
`;
const style = document.createElement('style');
style.textContent = css;
document.head.appendChild(style);
const panel = document.createElement('div');
panel.id = 'fbSecPanel';
panel.innerHTML = `
FB Security Helper
—
Status login: memeriksa…Quick linksBuka halaman setting penting:
Security & Login
Two-Factor
Privacy
Apps & Websites
Where You're Logged In
Checklist cepat
- Two-factor authentication (2FA): cek
- Kekuatan password: cek
- Sesi aktif lain: cek
- Aplikasi terhubung: cek
- Privasi profil (basic): cek
Password generatorPanjang: 16
Generate
Copy
Tips singkat
- Aktifkan 2FA (Authenticator app lebih aman daripada SMS).
- Periksa 'Where You're Logged In' dan logout sesi yang tidak dikenal.
- Cabut akses aplikasi yang tidak dikenal di Apps & Websites.
- Gunakan password manager untuk menyimpan password unik.
`;
document.body.appendChild(panel);
// toggle minimize
const toggleMin = document.getElementById('toggleMin');
let minimized = false;
toggleMin.addEventListener('click', () => {
minimized = !minimized;
if (minimized) {
panel.style.height = '40px';
panel.style.overflow = 'hidden';
toggleMin.textContent = '+';
} else {
panel.style.height = '';
panel.style.overflow = 'auto';
toggleMin.textContent = '—';
}
});
// quick links handler
panel.querySelectorAll('button[data-link]').forEach(btn => {
btn.addEventListener('click', () => {
const u = btn.getAttribute('data-link');
// open in new tab to avoid losing current browsing
window.open(u, '_blank');
});
});
// generator
const genBtn = document.getElementById('genPwBtn');
const out = document.getElementById('genPwOut');
const copyBtn = document.getElementById('copyPwBtn');
const pwLen = document.getElementById('pwLen');
const pwLenVal = document.getElementById('pwLenVal');
pwLen.addEventListener('input', () => pwLenVal.textContent = pwLen.value);
function generatePassword(len) {
const sets = {
lower: 'abcdefghijklmnopqrstuvwxyz',
upper: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
digits: '0123456789',
symbols: '!@#$%^&*()-_=+[]{};:,.<>?'
};
// ensure variety: include at least one from each of three sets
const all = sets.lower + sets.upper + sets.digits + sets.symbols;
let pw = '';
pw += sets.lower[Math.floor(Math.random()*sets.lower.length)];
pw += sets.upper[Math.floor(Math.random()*sets.upper.length)];
pw += sets.digits[Math.floor(Math.random()*sets.digits.length)];
for (let i = pw.length; i < len; i++) {
pw += all[Math.floor(Math.random()*all.length)];
}
// shuffle
pw = pw.split('').sort(()=>Math.random()-0.5).join('');
return pw;
}
genBtn.addEventListener('click', () => {
const p = generatePassword(parseInt(pwLen.value,10));
out.value = p;
});
copyBtn.addEventListener('click', async () => {
if (!out.value) return alert('Generate password dulu.');
try {
await navigator.clipboard.writeText(out.value);
copyBtn.textContent = 'Copied ✓';
setTimeout(()=>copyBtn.textContent = 'Copy',1200);
} catch (e) {
alert('Gagal copy: ' + e);
}
});
// login detection: try to find avatar or logout button or presence of cookie-like element
function detectLogin() {
let statusEl = document.getElementById('loginCheck');
// simplistic checks: presence of "profile" link or "messages" icon
const loggedIn = !!(document.querySelector('[aria-label="Home"]') || document.querySelector('a[aria-label="Profile"]') || document.querySelector('a[href*="logout"]'));
statusEl.textContent = loggedIn ? 'Anda ter-login ✓' : 'Tidak ter-login';
statusEl.className = loggedIn ? 'ok' : 'warn';
}
detectLogin();
// Basic checklist state (best-effort; many items require manual check)
function updateChecklist() {
// 2FA: cannot reliably detect from DOM. Set to "Periksa" and link to page.
document.querySelector('#chk-2fa .status').textContent = 'Tidak dapat dideteksi otomatis — buka Two-Factor';
document.querySelector('#chk-2fa .status').className = 'warn';
// password strength: best-effort — warn if password manager not detected (can't detect).
document.querySelector('#chk-pass .status').textContent = 'Generate password kuat di panel ini';
document.querySelector('#chk-pass .status').className = 'ok';
// sessions: manual check
document.querySelector('#chk-sessions .status').textContent = 'Buka "Where You\'re Logged In" untuk cek';
document.querySelector('#chk-sessions .status').className = 'warn';
// apps: manual check
document.querySelector('#chk-apps .status').textContent = 'Buka Apps & Websites untuk cabut akses';
document.querySelector('#chk-apps .status').className = 'warn';
// privacy: quick heuristic — check if profile is visible publicly by testing meta tags
let privacyStatus = 'tidak dapat dipastikan';
try {
const ogType = document.querySelector('meta[property="og:type"]');
if (ogType && ogType.content === 'profile') {
privacyStatus = 'Profil/public mungkin terlihat — review Privacy settings';
} else {
privacyStatus = 'Periksa Privacy settings';
}
} catch (e) {
privacyStatus = 'Periksa Privacy settings';
}
const el = document.querySelector('#chk-privacy .status');
el.textContent = privacyStatus;
el.className = 'warn';
}
updateChecklist();
// Optional: allow user to export checklist as text
function exportChecklist() {
const lines = [];
lines.push('FB Security Helper - Checklist');
lines.push('URL: ' + location.href);
document.querySelectorAll('#checklist li').forEach(li => {
lines.push('- ' + li.textContent.trim());
});
return lines.join('\n');
}
// Add export button
const exportBtn = document.createElement('button');
exportBtn.textContent = 'Export Checklist';
exportBtn.addEventListener('click', () => {
const data = exportChecklist();
const blob = new Blob([data], {type: 'text/plain;charset=utf-8'});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'fb-security-checklist.txt';
document.body.appendChild(a);
a.click();
a.remove();
URL.revokeObjectURL(url);
});
panel.appendChild(exportBtn);
// small accessibility: allow dragging panel
(function makeDraggable(el) {
let pos = {x:0,y:0,dx:0,dy:0,dragging:false};
el.style.cursor = 'default';
el.addEventListener('mousedown', (e) => {
if (e.target.tagName.toLowerCase() === 'button' || e.target.tagName.toLowerCase() === 'input' || e.target.isContentEditable) return;
pos.dragging = true;
pos.x = e.clientX;
pos.y = e.clientY;
pos.dx = parseInt(el.style.right || 16,10);
pos.dy = parseInt(el.style.bottom || 16,10);
el.style.transition = 'none';
document.body.style.userSelect = 'none';
});
window.addEventListener('mousemove', (e) => {
if (!pos.dragging) return;
const dx = pos.x - e.clientX;
const dy = pos.y - e.clientY;
// move by changing right/bottom
el.style.right = (pos.dx + dx) + 'px';
el.style.bottom = (pos.dy + dy) + 'px';
});
window.addEventListener('mouseup', () => {
pos.dragging = false;
el.style.transition = '';
document.body.style.userSelect = '';
});
})(panel);
// periodically update login detect every 10s
setInterval(detectLogin, 10000);
// End of script
})();
Hahahahahah HihihiΑποκλεισμένος (ο αναφερόμενος χρήστης) έχει κάνει:
Αυτή η αναφορά έχει στηριχθεί από συντονιστή.
Blatant comment spam