Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 10.2 a 9.8. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Vypíchnout lze CLI AI asistenta goose. Podrobnosti v poznámkách k vydání (10.2 a 9.8).
Organizace Apache Software Foundation (ASF) vydala verzi 30 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Byla vydána nová verze 7.0 svobodného open source redakčního systému WordPress. Kódové jméno Armstrong bylo vybráno na počest amerického jazzového trumpetisty a zpěváka Louise Armstronga (What A Wonderful World).
V Drupalu byla nalezena a opravena kritická zranitelnost SA-CORE-2026-004 (CVE-2026-9082). Útočník může provádět libovolné SQL dotazy na webech používajících databázi PostgreSQL.
Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost HP.
O víkendu proběhla demopárty Outline 2026. Publikována byla prezentovaná dema. Upozornit lze na 16 bajtové, opravdu šestnáct bajtové, zvukově obrazové demo Wake Up! 16b (YouTube).
Byla vydána nová verze 9.5 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání a na YouTube.
Dnes a zítra probíhá vývojářská konference Google I/O 2026. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).
Canonical vydal Ubuntu Core 26. Vychází z Ubuntu 26.04 LTS a podporováno bude 15 let. Ubuntu Core je minimální neměnný operační systém určený pro vestavěné systémy.
Bylo vydáno OpenBSD 7.9. Po dlouhé době opět se songem: Diamond in the Rough.
Mám obývací pokoj oknem "prosvícen" wifi signálem jednoho místního providera. Koukal jsem se jak pokročila technologie louskání WEPu, a překvapeně zjistil že slabé inicializační vektory jsou minulostí, že aircrack-ng používá jiný, mnohem účinnější útok. Stačí nasbírat dost inicializačních vektorů, spustit na ně aircrack, a máte WEP heslo. Podrobných návodů je na netu dost. Jenže co s takovým heslem? Krást se nemá, a to ani internetová konektivita.
Spokojím se proto s pasivním monitorováním, a dekódováním šifrovaných packetů pomocí airdecap-ng. Po mírném opatchování umí fungovat i jako filtr, číst pcap file ze standardního vstupu, a posílat dekódované packety na standardní výstup. Na vstupu i výstupu může být tcpdump, nebo něco jiného. Asi jsem blízko antény která je na straně gatewaye, protože packety které vidím chodí vždy z internetu směrem k uživatelům. Samotný tcpdump či wireshark je docela nepraktický, proto jsem spáchal jednoduchý skript, který packety mění na něco použitelného, tj soubory. Co skript dělá:
- rekonstruuje TCP streamy, a zpracovává "HTTP 200 OK" odpovědi.
- prázdné packety a SYN/FIN flagy pro jednoduchost zcela ignoruje, spoléhá se na timeouty.
- connection: keep-alive, a transfer-encoding: chunked jsou podporovány.
- content-encoding: gzip produkuje .gz soubory, takže se snadno prohlížejí.
- soubory rozhazuje do adresářů podle cílové IP adresy, čísluje a pojmenovává podle zdrojové IP. Škoda že nejde zjisit původní URL, program proto použije alespoň předchozí CNAMEs k dané IP.
- příponu nastavuje podle content-type hlavičky.
A jak to vypadá? Normálně, co by kdo taky mohl čekat.. updaty antivirů, google, seznam, centrum, idos, dpmb, atlas.cz, O2, vodafone, motobazar, libimseti, baculky.cz, fotbal.sport.cz, youtube, super.cz...
$ cat decouder.py
#! /usr/bin/python
from struct import unpack
from string import join, split, index
import sys, re, os
cn = {}
ns = {}
def ip(a):
n = ns.get(a)
if not n: return join([str(ord(i)) for i in a], '.')
return cn.get(n) or n # prefer CNAMEs
def pcap(read):
if unpack('IH14xI', read(24)) != (0xA1B2C3D4, 2, 1):
print 'not an ethernet pcap file'
sys.exit(1)
flow = {}; flow_lim = 16
while 1:
try:
tm, l = unpack('I4xI4x', read(16))
pkt = read(l)
dm, sm, t, i, l, p, chk, s, d = unpack(
'!6s6sHBxH5xBH4s4s', pkt[:34])
except: break # eof
if t != 0x800 or i & 0xf0 != 0x40: continue # not ip
pkt = pkt[14 + 4*(i & 0xf) : 14 + l]
if p == 0x6: # tcp
sp, dp, seq, l, f, chk = unpack(
'!HHI4xBB2xH', pkt[:18])
pkt = pkt[4*(l >> 4):]
if not pkt: continue
if len(flow) > flow_lim: # collect garbage
flush(flow, tm - 180)
flow_lim = len(flow) * 2
data = flow.setdefault((s, d, sp, dp), [tm, '', seq])
if data[0] < tm - 180: # reusing old
tcp(s, d, data[1])
data[1] = ''
elif data[2] != seq: continue
data[0] = tm; data[1] += pkt
data[2] = (seq + len(pkt)) & 0xffffffff
if p == 0x11: # udp
sp, dp, l, chk = unpack('!HHHH', pkt[:8])
if sp == 53: dns(pkt[8:l])
flush(flow, 1e99)
def flush(flow, tm):
n = 0
l = flow.items()
l.sort(key = lambda x: x[1][0]) # in tm order
for k, data in l:
if data[0] >= tm: break
tcp(k[0], k[1], data[1])
del flow[k]; n += 1
def dns(pkt):
f, q, r = unpack('!2x3H4x', pkt[:12]); i = 12
if f & 0xfa0f != 0x8000: return
def name(i, pkt = pkt):
s = ''; si = None; c = 0
while 1:
n = ord(pkt[i]); i += 1
if n >= 0xc0:
c += 1
if not si: si = i + 1
elif c > 10: return # prevent dos
i = (n - 0xc0) << 8 | ord(pkt[i])
continue
if n == 0: return s[:-1], si or i
s += pkt[i:i + n] +'.'; i += n
for p in range(q): # skip queries
i = name(i)[1] + 4
for p in range(r): # response
s, i = name(i)
t, c, n = unpack('!HH4xH', pkt[i:i + 10])
if t == 1 and c == 1 and n == 4: # A
ns[pkt[i + 10:i + 14]] = s
if t == 5 and c == 1: # CNAME
cn[name(i + 10)[0]] = s
i += 10 + n
dirs = {}
def rx(regex, s, n = 1):
m = re.search(regex, s)
return m and m.group(n)
def tcp(s, d, doc):
while doc[:5] == 'HTTP/':
try: l, doc = split(doc, '\r\n', 1)
except: return
ok = split(l)[1]
ct = ce = sz = None
while 1: # mime cruft
try: l, doc = split(doc, '\r\n', 1)
except: return
if not l: break
ct = ct or rx('^Content-Type: (\S+/)?([^; ]+)', l, 2)
ce = ce or rx('^Content-Encoding: (\S+)', l)
sz = sz or rx('^Transfer-Encoding: (\S+)', l) \
or rx('^Content-Length: (\d+)', l)
if doc[:5] == 'HTTP/': continue # IIS/6.0 @#%$$&!!
if ct in ('x-javascript', 'javascript'): ct = 'js'
elif not ct: ct = 'unknown'
if ce == 'gzip': ct += '.gz'
if sz == 'chunked': # unchunk
out = ''
while 1:
try: l, doc = split(doc, '\r\n', 1); l = int(l, 16)
except: return
out += doc[:l]
doc = doc[l + 2:]
if l == 0: break
else:
try: sz = int(sz)
except: sz = len(doc)
if len(doc) < sz: return
out = doc[:sz]
doc = doc[sz:]
if ok != '200' or len(out) < 1024: continue
dir = 'HTTP-'+ ip(d)
n = dirs[dir] = dirs.get(dir, 0) + 1
if n == 1: os.mkdir(dir)
n = '%s/%04d-%s.%s' % (dir, n, ip(s), ct)
open(n, 'w').write(out)
print n, len(out)
pcap(sys.stdin.read)
Tiskni
Sdílej:
Takže BTW z prvního komentáře zůstává.
Ohledně předmětu mého komentáře. Pokud by četl obsah té komunikace (a to i kdyby byla nešifrovaná), tak to legální není.
Nikdo nesmí porušit listovní tajemství ani tajemství jiných písemností a záznamů, ať již uchovávaných v soukromí, nebo zasílaných poštou a nebo jiným způsobem, s výjimkou případů a způsobem, které stanoví zákon. Stejně se zaručuje tajemství zpráv podávaných telefonem, telegrafem nebo jiným podobným zařízením.
elektronická pošta je poštou a i písemnosti v elektronické podobě jsou písemnostmi (ve smyslu § 40 občanského zákoníku) a i pro ně platí obdobná pravidla jako pro ostatní písemnosti
Mně to s tím zářením připomíná, jakoby na sebe sousedi hulákali čínsky a já se pod pohrůžkou zákona nesměl naučit čínsky, natož je poslouchat.
S tou čínštinou je to špatný příklad. Mnohem přilehavější je ten s tou dopisní obálkou.Vzhledem k jisté podobnosti mezi šířením zvukových a rádiových vln a (ne)srozumitelnosti přenášené informace mi připadá lepší ten můj. Chápu, že podle zákona je to jinak. Tímto postojem rozhodně neříkám, že fandím odposlechům sousedů... jen se mi víc líbí, když to v Internetu/sítích funguje více jako svět za dávných dob (tj. žádná státní regulace/kontrola)
Ovšem oni na sebe asi nekřičí čínsky za účelem znemožnění odposlechu, ale protože jsou to dva Číňani.Špatný příklad. Já osobně ve škole používám španělštinu pro utajení obsahu konverzace s kamarádem
Mám na své okolí posílat policii, když mě odposlouchává?
Rozdíl je mezi vnikat někam a pasivně poslouchat. Rádiové vlny jsou plně pasivní odposlech. Navíc - proč oni smí a já ne: http://www.zive.cz/h/Bleskovky/AR.asp?ARI=133851 ?
Rozdíl je mezi vnikat někam a pasivně poslouchat. Rádiové vlny jsou plně pasivní odposlech.Pokud nelámete šifrovací klíče. A i kdyby komunikace byla nešifrovaná, vy při tom odposlechu moc pasivní nejste. Když narazíte na obsazený kanál, měl byste z něj uhnout, ne poslouchat. Když uslyšíte ve škole, že se někdo baví tajně španělsky, zvolíte s kamarádem taky jiný jazyk
Stejně, ať je to poslech aktivní nebo pasivní, zákonný či nezákonný, je to nemorální. Dál není co řešit.
Navíc - proč oni smí a já ne.Oni toho smí, co vy ne…
Jen si tak říkám, jestli je v provozu ta anténa na bezdrát (BreezeNet) na střeše služebny, na kterou koukám z okna
airodump-ng ukazuje RXQ 80-100%, bez jakékoliv antény, jen na běžnou PCMCIA kartu...