baforms/form_tester.py
2025-05-22 11:45:26 +02:00

63 lines
1.8 KiB
Python

import sqlite3
import requests
import json
BOUNDARY = "----boundary"
def get_active_sites(db):
cursor = db.cursor()
cursor.execute("SELECT address FROM websites WHERE active = 1")
return [row[0] for row in cursor.fetchall()]
def get_form_fields(db, address):
cursor = db.cursor()
cursor.execute("SELECT form_fields FROM data WHERE website_address = ?", (address,))
row = cursor.fetchone()
return json.loads(row[0]) if row else None
def build_multipart_body(fields, boundary):
lines = []
for name, value in fields.items():
lines.append(f"--{boundary}")
lines.append(f'Content-Disposition: form-data; name="{name}"')
lines.append("")
lines.append(str(value))
lines.append(f"--{boundary}--")
lines.append("")
return "\r\n".join(lines).encode("utf-8")
def submit_form(site_url, form_fields):
url = 'https://' + site_url.rstrip('/') + "/index.php?option=com_baforms"
body = build_multipart_body(form_fields, BOUNDARY)
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "*/*",
"Content-Type": f"multipart/form-data; boundary={BOUNDARY}",
"Referrer": site_url,
"Origin": site_url,
}
try:
response = requests.post(url, data=body, headers=headers)
response.raise_for_status()
status = f"[{response.status_code}] {'OK' if response.ok else 'BŁĄD'}"
print(f"{status}: {site_url}")
except Exception as e:
print(f"[!] {site_url} {e}")
def main():
db = sqlite3.connect('form_filler.db');
for site in get_active_sites(db):
form_fields = get_form_fields(db, site)
if not form_fields:
print(f"Nie znaleziono formularza na stronie {site}")
continue
submit_form(site, form_fields)
if __name__ == "__main__":
main()