V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Byla vydána nová verze 2.4.64 svobodného multiplatformního webového serveru Apache (httpd). Řešeno je mimo jiné 8 bezpečnostních chyb.
Společnost xAI na síti 𝕏 představila Grok 4, tj. novou verzi svého AI LLM modelu Grok.
Ministerstvo vnitra odhalilo závažný kyberincident v IT systému resortu. Systém, do kterého se dostal útočník bez oprávnění, byl odpojen a nedošlo k odcizení dat [𝕏].
vstupní: _U9..vnIfeJymPPkVwPU výstupní: _UbD.ypiMD0vwV čem je problém?
Řešení dotazu:
Pokud funkcí crypt vygeneruju jakýkoliv hash kromě extended-des tak se to dá takto ověřit. Pro extended-des to nefunguje:<?php $password = crypt('mypassword'); // let the salt be automatically generated /* You should pass the entire results of crypt() as the salt for comparing a password, to avoid problems when different hashing algorithms are used. (As it says above, standard DES-based password hashing uses a 2-character salt, but MD5-based hashing uses 12.) */ if (crypt($user_input, $password) == $password) { echo "Password verified!"; } ?>
$password = crypt('retezec', '_U9..dCaX'); (crypt('retezec', $password) == $password) : toto je vždy FALSE
debian/patches/php_crypt_revamped.patch
a copak nevidím v ext/standard/crypt.c
:
if (salt[0]=='$' && salt[1]=='1' && salt[2]=='$') { /* CRYPT_MD5 */ #if PHP_MD5_CRYPT # warning Using system MD5 crypt function, which is OK on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # error Using PHP MD5 crypt function, should not happen on Debian system crypt_res = php_md5_crypt_r(str, salt, output); #endif } else if (salt[0]=='$' && salt[1]=='6' && salt[2]=='$') { /* CRYPT_SHA512 */ #if PHP_SHA512_CRYPT # warning Using system SHA512 crypt function, which is OK on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # error Using PHP SHA512 crypt function, should not happen on Debian system crypt_res = php_sha512_crypt_r(str, salt, output, sizeof(output)); #endif } else if (salt[0]=='$' && salt[1]=='5' && salt[2]=='$') { /* CRYPT_SHA256 */ #if PHP_SHA256_CRYPT # warning Using system SHA256 crypt function, which is OK on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # error Using PHP SHA256 crypt function, should not happen on Debian system crypt_res = php_sha256_crypt_r(str, salt, output, sizeof(output)); #endif } else if ( salt[0] == '$' && salt[1] == '2' && salt[2] == 'a' && salt[3] == '$' && salt[6] == '$' && ((salt[4] == '0' && salt[5] >= '4' && salt[5] <= '9') || (salt[4] >= '1' && salt[4] <= '2' && salt[5] >= '0' && salt[5] <= '9') || (salt[4] == '3' && salt[5] >= '0' && salt[5] <= '1'))) { /* CRYPT_BLOWFISH */ #if PHP_BLOWFISH_CRYPT # error Using system BlowFish crypt function, should not happen on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # warning Using PHP BlowFish crypt function, which is OK on Debian system crypt_res = php_crypt_blowfish_rn(str, salt, output, sizeof(output)); #endif } else if (salt[0]=='_' && salt_len == 9) { /* CRYPT_EXT_DES */ #if PHP_EXT_DES_CRYPT # error Using system extended DES crypt function, should not happen on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # warning Using PHP extended DES crypt function, which is OK on Debian system _crypt_extended_init_r(); crypt_res = _crypt_extended_r(str, salt, &extended_buffer); #endif } else { /* CRYPT_STD_DES */ #if PHP_STD_DES_CRYPT # warning Using system standard DES crypt function, which is OK on Debian system # if PHP_USE_SYSTEM_CRYPT_R crypt_res = crypt_r(str, salt, &buffer); # else crypt_res = crypt(str, salt); # endif #elif PHP_USE_PHP_CRYPT_R # error Using PHP standard DES crypt function, should not happen on Debian system _crypt_extended_init_r(); crypt_res = _crypt_extended_r(str, salt, &extended_buffer); #endif }Jak je na první pohled jasné, zatímco u standardního DES a u saltů s dolary to funguje, i když je samotný hash součástí saltu, tak zrovna u extended DES se testuje, zda je délka hashe přesně 9. Pokud je 9, zavolá se funkce
_crypt_extended_r
, která extended DES umí. No a pokud není délka 9, použije se postup pro standardní DES - což je právě volání systémového crypt
, který extended DES neumí. (To, že se to volá přesně takto, jsem si ověřil debuggerem.)
V upstream zdrojovych kodech PHP je tato část jinak - tam by ext des nejspíš buď fungovalo, nebo nefungovalo vůbec :).
Jako oprava by stačilo odstranění salt_len == 9
- v saltu standardního DESu by podtržítko být nemělo, takže standardní DES se od extended pozná i tak.
Není mi moc jasné, kde přesně se ty patche berou, tak nevím, komu můžeš poděkovat - zda maintainerům Debianu, nebo PHP.
Tiskni
Sdílej: