Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.
Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.
Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.
Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i
… více »QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.
Byla vydána nová verze 259 správce systému a služeb systemd (Wikipedie, GitHub).
Cloudflare Radar poskytuje aktuální informace o globálním internetovém provozu, útocích nebo trendech. Publikován byl celkový přehled za rok 2025. Globální internetový provoz vzrostl v roce 2025 o 19 %.
Správní rada americké mediální skupiny Warner Bros. Discovery (WBD) podle očekávání odmítla nepřátelskou nabídku na převzetí od firmy Paramount Skydance za 108,4 miliardy dolarů (2,25 bilionu Kč). Paramount podle ní neposkytl dostatečné finanční záruky. Akcionářům proto doporučuje nabídku od Netflixu.
#! /usr/bin/python
from re import findall
rotor={
'I': ('EKMFLGDQVZNTOWYHXUSPAIBRCJ','Q'),
'II': ('AJDKSIRUXBLHWTMCQGZNPYFVOE','E'),
'III': ('BDFHJLCPRTXVZNYEIWGAKMUSQO','V'),
'IV': ('ESOVPZJAYQUIRHXLNFTGKDCMWB','J'),
'V': ('VZBRGITYUPSDNHLXAWMJQOFECK','Z'),
'VI': ('JPGVOUMFYQBENHZRDKASXLICTW','MZ'),
'VII': ('NZJHGRCXMYSWBOUFAIVLPEKQDT','MZ'),
'VIII':('FKQHTLXOCBJSPDZRAMEWNIUYGV','MZ'),
'BETA': ('LEYJVCNIXWPBQMDRTAKZGFUHOS',''),
'GAMMA':('FSOKANUERHMBTIYCWLQPZXVGJD',''),
}
reflector={
3:{
'A':'EJMZALYXVBWFCRQUONTSPIKHGD',
'B':'YRUHQSLDPXNGOKMIEBFZCWVJAT',
'C':'FVPJIAOYEDRZXWGCTKUQSBNMHL',},
4:{
'B':'ENKQAUYWJICOPBLMDXZVFTHRGS',
'C':'RDOBJNTKVEHMLFCWZAXGYIPSUQ',},}
def enigma(rot,pos,sst='',rst='1-1-1',ref='B'):
O=lambda c:ord(c)-65
# setup rotors
N=findall('(\w+)',rot)
rot=[map(O,rotor[n][0]) for n in N]
nxt=[map(O,rotor[n][1]) for n in N]
rst=[int(r)-1 for r in findall('(\d+)',rst)]
pos=[O(p)-r for p,r in zip(findall('(\w)',pos),rst)]
# setup 'steckerbrett'
xlt=range(26)
for i,j in findall('(\w)[->]?(\w)',sst):
i=O(i);j=O(j);xlt[i],xlt[j]=xlt[j],xlt[i]
# select reflector
ref=map(O,reflector[len(N)][ref])
def enc(c):
if not 'A'<=c<='Z':return c
# move rotors
if (pos[-2]+rst[-2])%26 in nxt[-2]:pos[-3]+=1;pos[-2]+=1
elif (pos[-1]+rst[-1])%26 in nxt[-1]:pos[-2]+=1
pos[-1]+=1
# encode
c=xlt[O(c)]
for r,p in reversed(zip(rot,pos)):
c=r[(c+p)%26]-p
c=ref[c%26]
for r,p in zip(rot,pos):
c=r.index((c+p)%26)-p
return chr(65+xlt[c%26])
return lambda s:''.join(map(enc,s))
e=enigma('I-II-III','FOK','DO PI CE')
print e('ETHS OUATY QSUXULM AH BGQA VMDCU FCID')
Tiskni
Sdílej:
.
.
No jestli ty další soubory jsou interpret, tak možná
. Komentáře toho moc navíc nezaberou (zvlášť v komprimovaným zdrojáku).
Ale jo, jestli byl grafickej, tak asi nějaký obrázky... Což ale nemění můj názor na efektivnost toho skriptu (i když je v pythonu).
.
.
stale existuji zpravy z WW II sifrovane enigmou ktere jeste nikdo nerozsifroval ....
.
.
Pro porovnání můžeš použít jednoduchý simulátor, který by měl odpovídat tomu prográmku nahoře:Note that although the ring settings (ringstellung) were a required part of the setup, they did not actually affect the message encryption because the rotors were positioned independently of the rings.Nojo, máš pravdu, asi fakt kecají. Jestli jsou posouvací čudlíky na těch prstencích a ne přímo na rotorech, tak to vliv na šifrování určitě má. Vypadá to na +3 řádky kódu :) Ta odkazovaná verze simulátoru neumí tenkej reflektor a 4 rotory.. nebo se mi to tak aspoň jeví.. ale pro odladění to snad bude dobrý. Na to byla nejlepší papárová enigma: http://mckoss.com/Crypto/Paper%20Enigma.pdf
Osobně pro důvěrnou korespondenci dávám přednost starému dobrému Vigenérovi v kapesním provedení (když teda nemám po ruce počítač s libovolným BASICem, tam je to otázka deset minut), pro kratší zprávy to stačí a u delších se dá šifrovat dvojitě. První heslo třeba 11 znaků, druhé 13, dohromady dají 143 znaky dlouhé a na to se nechytají ani Babbage s Kasiskim dohromady, pokud teda nebudu posílat román
A pokud stejná hesla nepoužiji opakovaně, samozřejmě.
). Zajímavý byl reflektor D, ten se dal zapojit libovolně pomocí kablíků, také dost neobvyklá věc, mám pocit že s tím si na konci války v Bletchley Parku už neporadili.

10 PRINT "+-----------------------------------------------+" 20 PRINT "| Simulátor německého šifrovacího stroje ENIGMA |" 30 PRINT "| v1.0 - vojenské modely I, M3, M4 |" 40 PRINT "+-----------------------------------------------+" 100 DIM p$(10),q$(10),o$(10),r$(4),k$(4),tr(4),op(4),ov(4) 110 DEF FNv$(w$)=CHR$(ASC(w$)-(w$>="a" AND w$<="z")/(1>0)*32) 120 DEF FNn(w$)=w$<"A" OR w$>"Z" 200 READ s$:RESTORE 210 FOR i=0 TO 10 220 READ q$(i),o$(i):p$(i)=q$(i) 230 FOR j=1 TO 26 240 MID$(p$(i),ASC(MID$(q$(i),j,1))-64)=CHR$(j+64) 250 NEXT j 260 NEXT i 270 FOR i=0 TO 4 280 READ r$(i) 290 NEXT i 300 FOR i=0 TO 4 310 READ k$(i) 320 NEXT i 330 mo=3 400 DATA "ABCDEFGHIJKLMNOPQRSTUVWXYZ"," " 410 DATA "EKMFLGDQVZNTOWYHXUSPAIBRCJ","Q" 420 DATA "AJDKSIRUXBLHWTMCQGZNPYFVOE","E" 430 DATA "BDFHJLCPRTXVZNYEIWGAKMUSQO","V" 440 DATA "ESOVPZJAYQUIRHXLNFTGKDCMWB","J" 450 DATA "VZBRGITYUPSDNHLXAWMJQOFECK","Z" 460 DATA "JPGVOUMFYQBENHZRDKASXLICTW","ZM" 470 DATA "NZJHGRCXMYSWBOUFAIVLPEKQDT","ZM" 480 DATA "FKQHTLXOCBJSPDZRAMEWNIUYGV","ZM" 490 DATA "LEYJVCNIXWPBQMDRTAKZGFUHOS"," " 500 DATA "FSOKANUERHMBTIYCWLQPZXVGJD"," " 510 DATA "EJMZALYXVBWFCRQUONTSPIKHGD" 520 DATA "YRUHQSLDPXNGOKMIEBFZCWVJAT" 530 DATA "FVPJIAOYEDRZXWGCTKUQSBNMHL" 540 DATA "ENKQAUYWJICOPBLMDXZVFTHRGS" 550 DATA "RDOBJNTKVEHMLFCWZAXGYIPSUQ" 560 DATA "B123","AAA","AAA","" 570 DATA "BJELRQZVJWARXSNBXORSTNCFME" 1000 PRINT " Zadej sestavení kotoučů (Einstellung)" 1010 PRINT "ENIGMA I - například A213" 1020 PRINT " 1. znak = typ reflektoru: A (Umkehrwalze)" 1030 PRINT " 2.-4. znak = rotory zleva doprava: 1 až 3 (Walzen)" 1040 PRINT "ENIGMA M3 - například B213" 1050 PRINT " 1. znak = typ reflektoru: B,C (Umkehrwalze)" 1060 PRINT " 2.-4. znak = rotory zleva doprava: 1 až 8 (Walzen)" 1070 PRINT "ENIGMA M4 - například CG864" 1080 PRINT " 1. znak = typ 'tenkého' reflektoru: B,C (Umkehrwalze 'dünn')" 1090 PRINT " 2. znak = typ 'tenkého' rotoru: B=Beta,G=Gamma (Griechenwalze)" 1100 PRINT " 3.-5. znak = rotory zleva doprava: 1 až 8 (Walzen)" 1200 PRINT "Aktuální nastavení: ";k$(0) 1210 PRINT "Zapiš novou konfiguraci nebo nic pro ponechání:" 1220 INPUT "",t$:GOSUB 7000:IF LEN(t$)=0 THEN t$=k$(0) 1230 mo=LEN(t$)-1:IF mo<3 OR mo>4 THEN PRINT "*** Chybná konfigurace!"+CHR$(7):GOTO 1200 1240 IF LEFT$(t$,1)<"A" OR LEFT$(t$,1)>"C" THEN PRINT "*** Špatný typ reflektoru!"+CHR$(7):GOTO 1200 1250 tr(0)=ASC(LEFT$(t$,1))-65 1260 IF mo=3 THEN GOTO 1400 1300 IF tr(0)=0 THEN PRINT "*** ENIGMA M4 nemohla používat reflektor A!"+CHR$(7):GOTO 1200 1310 tr(0)=tr(0)+2 1320 z$=MID$(t$,2,1) 1330 IF z$<>"B" AND z$<>"G" THEN PRINT "*** Špatný typ 'tenkého' rotoru!"+CHR$(7):GOTO 1200 1340 tr(1)=(ASC(z$)-61)/5+8 1400 FOR i=mo-2 TO mo 1410 z$=MID$(t$,i+1,1) 1420 IF z$<"1" OR z$>"8" THEN PRINT "*** Špatný typ rotoru!"+CHR$(7):GOTO 1200 1430 tr(i)=VAL(z$) 1440 NEXT i 1450 k$(0)=t$ 2000 PRINT " Zadej nastavení prstenců (Ringstellung)," 2010 PRINT "například EZY pro ENIGMU M3 nebo AEZY pro ENIGMU M4:" 2020 PRINT "Aktuální nastavení: ";k$(1) 2030 PRINT "Zapiš novou hodnotu nebo nic pro ponechání:" 2040 INPUT "",t$:GOSUB 7000:IF LEN(t$)=0 THEN t$=k$(1) 2050 IF LEN(t$)<>mo THEN PRINT "*** Chybná délka!"+CHR$(7):GOTO 2000 2060 FOR i=1 TO mo 2070 z$=MID$(t$,i,1) 2080 IF FNn(z$) THEN PRINT "*** Chybné nastavení!"+CHR$(7):GOTO 2000 2090 op(i)=ASC(z$)-65 2200 NEXT i 2210 k$(1)=t$ 3000 PRINT " Zadej počáteční postavení rotorů (Grundstellung)," 3010 PRINT "například XPI pro ENIGMU M3 nebo FXPI pro ENIGMU M4" 3020 PRINT "Aktuální otočení: ";k$(2) 3030 PRINT "Zapiš novou pozici nebo nic pro ponechání:" 3040 INPUT "",t$:GOSUB 7000:IF LEN(t$)=0 THEN t$=k$(2) 3050 IF LEN(t$)<>mo THEN PRINT "*** Chybná délka!"+CHR$(7):GOTO 3000 3060 FOR i=1 TO mo 3070 z$=MID$(t$,i,1) 3080 IF FNn(z$) THEN PRINT "*** Chybné nastavení!"+CHR$(7):GOTO 3000 3090 ov(i)=ASC(z$)-65 3200 NEXT i 3210 k$(2)=t$ 4000 PRINT " Zadej propojovací kabely (Steckerverbindungen)," 4010 PRINT "max. 13 dvojic písmen, oddělených jednou mezerou," 4020 PRINT "například AF ZM XV WN CP KL" 4030 PRINT "Aktuální nastavení: ";k$(3) 4040 PRINT "Zapiš nové propojení, tečku pro zrušení nebo nic pro ponechání:" 4050 INPUT "",t$:GOSUB 7000:IF LEN(t$)=0 THEN GOTO 5000 4060 IF LEFT$(t$,1)=" " THEN t$=MID$(t$,2):GOTO 4060 4070 IF RIGHT$(t$,1)=" " THEN t$=LEFT$(t$,LEN(t$)-1):GOTO 4070 4080 IF LEFT$(t$,1)="." THEN RESTORE:READ s$:GOTO 5000 4090 RESTORE:READ s$ 4100 t$=t$+" " 4110 PRINT "Zapojuji: "; 4120 FOR i=1 TO LEN(t$) STEP 3 4130 PRINT MID$(t$,i,3); 4140 IF FNn(MID$(t$,i,1)) OR FNn(MID$(t$,i+1,1)) THEN PRINT " *** Chybný znak!"+CHR$(7):GOTO 4000 4150 x=ASC(MID$(t$,i,1))-64:y=ASC(MID$(t$,i+1,1))-64 4160 IF MID$(s$,x,1)<>CHR$(x+64) OR MID$(s$,y,1)<>CHR$(y+64) THEN PRINT " *** Pozice už je obsazena!"+CHR$(7):GOTO 4000 4170 w$=MID$(s$,x,1):MID$(s$,x)=MID$(s$,y,1):MID$(s$,y)=w$ 4180 NEXT i:PRINT 4190 k$(3)=t$ 5000 PRINT " Napiš text pro (de)šifrování: " 5010 INPUT "",t$:GOSUB 7000:IF LEN(t$)=0 THEN t$=k$(4) 5020 FOR i=1 TO LEN(t$) 5030 z$=MID$(t$,i,1) 5040 IF FNn(z$) THEN GOTO 5600 5100 FOR j=1 TO LEN(o$(mo-1)) 5110 IF ov(mo-1)+65<>ASC(MID$(o$(tr(mo-1)),j,1)) THEN GOTO 5150 5120 ov(mo-2)=(ov(mo-2)+1)MOD 26 5130 ov(mo-1)=(ov(mo-1)+1)MOD 26 5140 GOTO 5190 5150 NEXT j 5160 FOR j=1 TO LEN(o$(mo)) 5170 IF ov(mo)+65=ASC(MID$(o$(tr(mo)),j,1)) THEN ov(mo-1)=(ov(mo-1)+1)MOD 26 5180 NEXT j 5190 ov(mo)=(ov(mo)+1)MOD 26 5300 PRINT "|"; 5310 FOR j=1 TO mo 5320 PRINT CHR$(ov(j)+65)+"|"; 5330 NEXT j 5340 PRINT " "+z$; 5400 z$=MID$(s$,ASC(z$)-64,1) 5410 FOR j=mo TO 1 STEP -1 5420 z$=CHR$(65+(ASC(MID$(q$(tr(j)),1+(ASC(z$)+ov(j)-op(j)-13)MOD 26,1))-ov(j)+op(j)-13)MOD 26) 5430 NEXT j 5440 z$=MID$(r$(tr(0)),ASC(z$)-64,1) 5450 FOR j=1 TO mo 5460 z$=CHR$(65+(ASC(MID$(p$(tr(j)),1+(ASC(z$)+ov(j)-op(j)-13)MOD 26,1))-ov(j)+op(j)-13)MOD 26) 5470 NEXT j 5480 z$=MID$(s$,ASC(z$)-64,1) 5490 PRINT " = "+z$:MID$(t$,i)=z$ 5600 NEXT i 5700 PRINT t$:k$(4)=t$ 5710 PRINT "Konečné postavení rotorů: "; 5720 FOR i=1 TO mo 5730 z$=CHR$(ov(i)+65) 5740 PRINT z$; 5750 MID$(k$(2),i)=z$ 5760 NEXT i 5770 PRINT 6000 INPUT "Pokračovat v práci? (A/N) ",t$:t$=t$+" " 6010 IF LEFT$(FNv$(t$),1)<>"N" THEN GOTO 1000 6020 PRINT "(C)2010 FARAON" 6030 END 7000 FOR i=1 TO LEN(t$) 7010 MID$(t$,i) = FNv$(MID$(t$,i,1)) 7020 NEXT i 7030 RETURN
Pokud se END na řádku 6030 nahradí příkazem SYSTEM, tak se navíc interpret sám ukončí (případně EXIT, QUIT, BYE, podle toho co kdo použijete).
30 PRINT "| v1.1 - vojenské modely I, M3, M4 |" 4080 IF LEFT$(t$,1)="." THEN PRINT "Odpojuji vše.":RESTORE:READ s$:k$(3)="":GOTO 5000 4090 t$=t$+" ":IF LEN(t$)<3 THEN GOTO 5000 4100 RESTORE:READ z$ 4120 FOR i=1 TO LEN(t$)-2 STEP 3 4130 MID$(t$,i+2)=" ":PRINT MID$(t$,i,3); 4160 IF MID$(z$,x,1)<>CHR$(x+64) OR MID$(z$,y,1)<>CHR$(y+64) THEN PRINT " *** Pozice už je obsazena!"+CHR$(7):GOTO 4000 4170 w$=MID$(z$,x,1):MID$(z$,x)=MID$(z$,y,1):MID$(z$,y)=w$ 4190 s$=z$:k$(3)=t$