A comment on A question about WA Web Network Monitor (Safe) by Hahahahahah Hihihi was reported 17-08-2025 for Spam

Hahahahahah HihihiBannedقال:

// ==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 links
Buka 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 generator
Panjang: 16



Generate
Copy

Tips singkat
  1. Aktifkan 2FA (Authenticator app lebih aman daripada SMS).
  2. Periksa 'Where You're Logged In' dan logout sesi yang tidak dikenal.
  3. Cabut akses aplikasi yang tidak dikenal di Apps & Websites.
  4. 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 HihihiBanned (the reported user) has made:

This report has been upheld by a moderator.

Blatant comment spam