82 lines
2.3 KiB
Bash
Executable File
82 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Valide les mots de passe O365 en masse
|
|
# Usage: ./validate-passwords.sh [LIMIT]
|
|
|
|
LIMIT=${1:-50}
|
|
LOG_FILE="/var/log/wevads/password-validation.log"
|
|
mkdir -p /var/log/wevads
|
|
|
|
echo "$(date) - Validating $LIMIT accounts" >> $LOG_FILE
|
|
|
|
ACCOUNTS=$(PGPASSWORD=admin123 psql -U admin -d adx_system -t -A -c "
|
|
SELECT id, admin_email, admin_password
|
|
FROM admin.office_accounts
|
|
WHERE status = 'Active'
|
|
AND admin_password IS NOT NULL
|
|
AND (password_status IS NULL OR password_status != 'invalid')
|
|
ORDER BY last_check ASC NULLS FIRST
|
|
LIMIT $LIMIT;
|
|
")
|
|
|
|
VALID=0
|
|
INVALID=0
|
|
SMTP_DISABLED=0
|
|
|
|
while IFS='|' read -r ID EMAIL PASS; do
|
|
[ -z "$ID" ] && continue
|
|
|
|
RESULT=$(python3 << PYEOF
|
|
import smtplib
|
|
try:
|
|
server = smtplib.SMTP('smtp.office365.com', 587, timeout=15)
|
|
server.starttls()
|
|
server.login('$EMAIL', '$PASS')
|
|
server.quit()
|
|
print("VALID")
|
|
except smtplib.SMTPAuthenticationError as e:
|
|
if b"5.7.139" in e.smtp_error:
|
|
print("SMTP_DISABLED")
|
|
else:
|
|
print("INVALID")
|
|
except:
|
|
print("ERROR")
|
|
PYEOF
|
|
)
|
|
|
|
case $RESULT in
|
|
VALID)
|
|
((VALID++))
|
|
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
|
|
UPDATE admin.office_accounts
|
|
SET password_status='valid', last_check=NOW()
|
|
WHERE id=$ID;
|
|
" 2>/dev/null
|
|
echo "✅ $EMAIL"
|
|
;;
|
|
INVALID)
|
|
((INVALID++))
|
|
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
|
|
UPDATE admin.office_accounts
|
|
SET password_status='invalid', last_check=NOW()
|
|
WHERE id=$ID;
|
|
" 2>/dev/null
|
|
echo "❌ $EMAIL - Invalid password"
|
|
;;
|
|
SMTP_DISABLED)
|
|
((SMTP_DISABLED++))
|
|
PGPASSWORD=admin123 psql -U admin -d adx_system -c "
|
|
UPDATE admin.office_accounts
|
|
SET password_status='smtp_disabled', last_check=NOW()
|
|
WHERE id=$ID;
|
|
" 2>/dev/null
|
|
echo "⚠️ $EMAIL - SMTP disabled"
|
|
;;
|
|
esac
|
|
|
|
sleep 1
|
|
done <<< "$ACCOUNTS"
|
|
|
|
echo ""
|
|
echo "Results: $VALID valid, $INVALID invalid, $SMTP_DISABLED smtp_disabled"
|
|
echo "$(date) - Results: $VALID valid, $INVALID invalid, $SMTP_DISABLED smtp_disabled" >> $LOG_FILE
|