Freeze & Cubo
Cubo Cubo
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Π€Ρ€ΠΈΠ·ΠΈ! Π― Ρ‚ΡƒΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ для систСмы обнаруТСния Π²Ρ‚ΠΎΡ€ΠΆΠ΅Π½ΠΈΠΉ, которая сама учится Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ сСтСвого Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ – ΠΊΠ°ΠΊ искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ встрСчаСтся с Тёсткой Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ. Ввоя ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ Π½ΠΈΠΊΡ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ. ПомоТСшь ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ?
Freeze Freeze
Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ. ΠŸΡ€ΠΈΡˆΠ»ΠΈ ΠΌΠ½Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΈ схСму ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, я ΠΏΠΎΡΠΌΠΎΡ‚Ρ€ΡŽ, Π½Π΅Ρ‚ Π»ΠΈ логичСских Π΄Ρ‹Ρ€ ΠΈ подскаТу, ΠΊΠ°ΠΊ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ состояний.
Cubo Cubo
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, дорогая. Π‘ΠΌΠΎΡ‚Ρ€ΠΈ, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. МоТСшь ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Π”ΠΎΠ±Π°Π²Π»ΡŽ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ схСму Π½Π° ASCII послС ΠΊΠΎΠ΄Π°. **Набросок Π½Π° Python (ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ систСмы обнаруТСния Π²Ρ‚ΠΎΡ€ΠΆΠ΅Π½ΠΈΠΉ)** ```python # intrusion_detector.py import time import json from collections import defaultdict class IntrusionDetector: def __init__(self, thresholds): self.thresholds = thresholds # Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, {'port_scan': 100, 'failed_login': 5} self.logs = defaultdict(list) # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ IP-адрСса self.alerts = [] def ingest_log(self, log_entry): """ log_entry – это ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ: {'src_ip': str, 'dst_port': int, 'event': str, 'timestamp': float} """ src = log_entry['src_ip'] self.logs[src].append(log_entry) self._evaluate(src) def _evaluate(self, src_ip): entries = self.logs[src_ip] now = time.time() # ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° старых записСй (Ρ…Ρ€Π°Π½ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдниС 60 сСкунд) self.logs[src_ip] = [e for e in entries if now - e['timestamp'] <= 60] # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ эвристики port_scans = len(set(e['dst_port'] for e in self.logs[src_ip] if e['event'] == 'connection_attempt')) failed_logins = len([e for e in self.logs[src_ip] if e['event'] == 'failed_login']) if port_scans > self.thresholds['port_scan']: self._trigger_alert(src_ip, 'port_scan') if failed_logins > self.thresholds['failed_login']: self._trigger_alert(src_ip, 'failed_login') def _trigger_alert(self, src_ip, alert_type): alert = { 'src_ip': src_ip, 'type': alert_type, 'time': time.time() } self.alerts.append(alert) print(f"[ALERT] ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ {alert_type} с {src_ip}") def get_alerts(self): return self.alerts # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования if __name__ == "__main__": detector = IntrusionDetector({'port_scan': 50, 'failed_login': 3}) # Π˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π»ΠΎΠ³ΠΎΠ² for i in range(60): detector.ingest_log({ 'src_ip': '192.168.1.10', 'dst_port': 22 + i % 5, 'event': 'connection_attempt', 'timestamp': time.time() }) time.sleep(0.1) ``` **Π‘Ρ…Π΅ΠΌΠ° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… (ASCII)** ``` [Π‘Π΅Ρ‚Π΅Π²ΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ] | v [ΠšΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€ Π»ΠΎΠ³ΠΎΠ²] --> (ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ) --> [IntrusionDetector] | | v v [Π‘ΡƒΡ„Π΅Ρ€ Π»ΠΎΠ³ΠΎΠ²] [ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ] | | +-----------------+ | v [Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅/Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ] ``` ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹: - `Π‘ΡƒΡ„Π΅Ρ€ Π»ΠΎΠ³ΠΎΠ²` Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅ события для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ IP-адрСса. - `_evaluate()` примСняСт эвристику Π½Π° Ρ…ΠΎΠ΄Ρƒ. - ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² простой список ΠΈ выводятся Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ. Π‘ΠΊΠ°ΠΆΠΈ, ΠΊΠ°ΠΊ Ρ‚Π΅Π±Π΅ ΠΏΠΎΡ€ΠΎΠ³ΠΈ, ΠΈΠ»ΠΈ Π΄ΡƒΠΌΠ°Π΅ΡˆΡŒ, Π½ΡƒΠΆΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ слоТный ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚.