cyber_hack / app.py
NitinBot002's picture
Upload 3 files
d7472d8 verified
from flask import Flask, request, redirect, url_for, render_template_string
import sqlite3
import threading
import webbrowser
app = Flask(__name__)
DB_NAME = "risk_system.db"
# ---------- DATABASE SETUP ----------
def init_db():
conn = sqlite3.connect(DB_NAME)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS risk_list (
number TEXT PRIMARY KEY,
risk_level TEXT,
reviews TEXT
)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS aadhar_mapping (
number TEXT PRIMARY KEY,
aadhar TEXT
)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS aadhar_numbers (
aadhar TEXT,
number TEXT
)
""")
conn.commit()
conn.close()
init_db()
# ---------- HELPER FUNCTIONS ----------
def get_db():
return sqlite3.connect(DB_NAME)
def check_and_flag(number):
conn = get_db()
cursor = conn.cursor()
result = {"number": number, "risk": None, "reviews": None, "aadhar": None, "linked_numbers": []}
# Step 1: Risk List lookup
cursor.execute("SELECT risk_level, reviews FROM risk_list WHERE number=?", (number,))
row = cursor.fetchone()
if row:
result["risk"] = row[0]
result["reviews"] = row[1]
# Step 2: Aadhaar mapping
cursor.execute("SELECT aadhar FROM aadhar_mapping WHERE number=?", (number,))
aadhar_row = cursor.fetchone()
if aadhar_row:
aadhar = aadhar_row[0]
result["aadhar"] = aadhar
cursor.execute("SELECT number FROM aadhar_numbers WHERE aadhar=?", (aadhar,))
linked_numbers = [n[0] for n in cursor.fetchall()]
result["linked_numbers"] = linked_numbers
# Step 3: If risky, flag all linked numbers
if row:
for n in linked_numbers:
cursor.execute("INSERT OR IGNORE INTO risk_list VALUES (?, ?, ?)",
(n, row[0], "Auto-flagged via Aadhaar link"))
conn.commit()
conn.close()
return result
def add_review(number, review, risk_level="Medium"):
conn = get_db()
cursor = conn.cursor()
cursor.execute("SELECT reviews FROM risk_list WHERE number=?", (number,))
row = cursor.fetchone()
if row:
updated_reviews = row[0] + " | " + review
cursor.execute("UPDATE risk_list SET reviews=?, risk_level=? WHERE number=?",
(updated_reviews, risk_level, number))
else:
cursor.execute("INSERT INTO risk_list VALUES (?, ?, ?)", (number, risk_level, review))
conn.commit()
conn.close()
def get_all_risks():
conn = get_db()
cursor = conn.cursor()
cursor.execute("SELECT * FROM risk_list")
rows = cursor.fetchall()
conn.close()
return rows
# ---------- HTML TEMPLATES ----------
INDEX_HTML = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Risk Checker</title>
<style>
body { font-family: Arial, sans-serif; margin: 30px; }
h1 { color: #333; }
form { margin-bottom: 20px; }
input, select, button { padding: 8px; margin: 5px; }
.result { border: 1px solid #ddd; padding: 15px; border-radius: 8px; background: #f9f9f9; }
.risk { color: red; font-weight: bold; }
</style>
</head>
<body>
<h1>📞fraud Risk Checker</h1>
<!-- Check Number -->
<form method="POST">
<input type="text" name="number" placeholder="Enter mobile number" required>
<button type="submit">Check</button>
</form>
{% if result %}
<div class="result">
<h3>Result for {{ result.number }}</h3>
<p><b>Risk:</b> <span class="risk">{{ result.risk if result.risk else "Not in Risk List" }}</span></p>
<p><b>Reviews:</b> {{ result.reviews if result.reviews else "None" }}</p>
<p><b>Aadhaar:</b> {{ result.aadhar if result.aadhar else "Not linked" }}</p>
<p><b>Linked Numbers:</b> {{ result.linked_numbers if result.linked_numbers else "None" }}</p>
</div>
{% endif %}
<!-- Add Review -->
<h3>Add Review</h3>
<form action="{{ url_for('review_number') }}" method="POST">
<input type="text" name="number" placeholder="Number" required>
<input type="text" name="review" placeholder="Write your review" required>
<select name="risk_level">
<option value="Low">Low</option>
<option value="Medium" selected>Medium</option>
<option value="High">High</option>
</select>
<button type="submit">Submit Review</button>
</form>
<p><a href="{{ url_for('seed_data') }}">Seed demo data</a> | <a href="{{ url_for('all_risks') }}">View all risks</a></p>
</body>
</html>
"""
ALL_RISKS_HTML = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>All Risky Numbers</title>
<style>
body { font-family: Arial, sans-serif; margin: 30px; }
table { border-collapse: collapse; width: 100%; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>⚠ All Risky Numbers</h1>
<table>
<tr>
<th>Number</th>
<th>Risk Level</th>
<th>Reviews</th>
</tr>
{% for row in risks %}
<tr>
<td>{{ row[0] }}</td>
<td>{{ row[1] }}</td>
<td>{{ row[2] }}</td>
</tr>
{% endfor %}
</table>
<p><a href="{{ url_for('home') }}">Back</a></p>
</body>
</html>
"""
# ---------- FLASK ROUTES ----------
@app.route("/", methods=["GET", "POST"])
def home():
result = None
if request.method == "POST":
number = request.form.get("number")
result = check_and_flag(number)
return render_template_string(INDEX_HTML, result=result)
@app.route("/review", methods=["POST"])
def review_number():
number = request.form.get("number")
review = request.form.get("review")
risk_level = request.form.get("risk_level", "Medium")
if number and review:
add_review(number, review, risk_level)
return redirect(url_for("home"))
@app.route("/all")
def all_risks():
risks = get_all_risks()
return render_template_string(ALL_RISKS_HTML, risks=risks)
@app.route("/seed")
def seed_data():
conn = get_db()
cursor = conn.cursor()
cursor.execute("INSERT OR IGNORE INTO risk_list VALUES (?, ?, ?)",
("9999999999", "High", "Fraudulent calls reported"))
cursor.execute("INSERT OR IGNORE INTO aadhar_mapping VALUES (?, ?)",
("9999999999", "AADHAR123"))
cursor.execute("INSERT OR IGNORE INTO aadhar_mapping VALUES (?, ?)",
("8888888888", "AADHAR123"))
cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "9999999999"))
cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "8888888888"))
cursor.execute("INSERT OR IGNORE INTO aadhar_numbers VALUES (?, ?)", ("AADHAR123", "7777777777"))
conn.commit()
conn.close()
return redirect(url_for("home"))
def open_browser():
webbrowser.open_new("http://127.0.0.1:7860/")
# ---------- RUN ----------
if __name__ == "__main__":
threading.Timer(1, open_browser).start()
app.run(debug=False, port=7860, use_reloader=False)