Теми от: Април '10
Бъг при въвеждането на пароли за WinRAR, или...?
Преди някоя и друга седмица открих един странен бъг в реализацията на WinRAR при ползване на кирилишки пароли (ако ползвате латиница/цифри/пунктоация може да спите спокойно). Цялото нещо се свежда до добре известната поговорка: "Това, че даден софтуер е писан от родолюбив руснак, не значи, че работи безпроблемно с кирилица" :)
Ето и малко подробности за бъга... вие знаехте ли, че може да ползвате пароли на кирилица (или на какъв-да-е друг не-latin език) за RAR-архиви? Е, аз не знаех, но рекох да проверя. Това се случва покрай доразработването на моя RAR-паролотрошач (който ускорих с 10-20% и прочее). За целите на теста, първо тръгнах от най-често ползваната RAR програма - WinRAR. Избрах си 5 файла и ги криптирах с паролата «България», при опция за криене на файловите имена. WinRAR прие паролата ми, след което архивчето се дешифрира успешно със същата парола (и неуспешно с произволна друга). Успешно се дешифрира и при използване на конзолната версия на програмката под cmd.exe прозорец.
Като стъпка две, прехвърлих тестовия RAR под Linux и тествах да го разшифровам там. Този път обаче, даде грешка и не поиска да се разархивира. Много странно — помислих си да не би нещо автора на `unrar' да си е оставил ръцете в кода за превръщането на стринговете към unicode... прекомпилирах програмката в debug и се зарових. За мое учудване, Fedora 11 конзолата прилично подаваше на програмата "utf-8" кодиран стринг, т.е. "България" се състоеше от 16 8-битови char-a + 1 терминиращ NUL. След което низът коректно се обръщаше до wchar_t. Всъщност, терминалната `unrar' програмка под Linux работеше съвсем коректно! Зарових се още малко в Windows-а, и открих, че в cmd.exe терминал, като въвеждам кирилица, всъщност излизат питанки. И всъщност, че въведената парола се интерпретира изцяло като питанки. Сиреч, "България" = "????????".
Къде се оказа проблемът? От настройките на Windows: Control Panel->Regional and Language options->"Language for Non-unicode programs". Като се сложи на "Bulgarian", всичко заспива.
И сега, вече сигурно сте се досетили какъв е бъга. Ако един неподозиращ човек, на който горната Windows настройка не е зададена на "Bulgarian" (както си е всъщност при default инсталация на Windows-а), то той може да си мисли, че въвежда супер здрава парола (например, "ХакерЩрасе"), а всъщност паролата на архива му ще бъде елементарно счупяемата "??????????"!
Тъжното в цялата история е, че в кода на unrar ясно се вижда старанието на руснака да поддържа всячески не-латински символи... и все пак програмата му не е unicode-safe.
Интерпретацията на кирилишката парола като питанки, и приемането й за валидна парола от страна на WinRAR, подсказва и друг, по-общ проблем, със сигурността на паролите: WinRAR би трябвало да засича такива "пословично слаби" пароли, и (поне) да предупреждава потребителя да се замисли за по-яка парола. Така, хващането на такива скрити проблеми ще става от само себе си.
Публикувано в категория Интересно -- 22 Apr 2010, 03:02, 0 коментара -- View in English
Засичане на ритъм
Неотдавна се зачудих дали няма полезен начин да използвам сензора за натоварване на паметта на моето EpoX 9NPA+ дъно. За който не знае - този сензор показва натоварването/трафика към паметта. В idle примигва едва-едва, но ако пуснете интензивен бенчмарк, който прави достатъчно трафик към паметта, сензора почва да свети ярко.
Преди седмица (тъкмо си слушах «Moloko - Sing it back») измислих и един як начин да се използва сензора за засичане на ритъма на някаква песен. Ето го показано в действие:
YouTube - Beat visualization on Epox 9NPA+
Локално копие (H.264 750 kbps)
За целта беше достатъчно да се напише visualization plugin за XMMS, който ползва някакъв прост beat detection алгоритъм, и, когато засече удар, да "светва" сензора. Светването на сензора се предизвиква чрез голямо количество memcpy()-та в 64-мегабайтов масив :) Сегашния алгоритъм е чувствителен само към ниските честоти (затова не хваща солобарабаните, както можете да видите в клипчето на втората песен)
Публикувано в категория Технологии -- 19 Apr 2010, 11:07, 0 коментара -- View in English