Анализ уязвимости банк-клиента

За последнее время многое написали об уязвимостях интернет-банков и банкоматов. Я решил добавить свои пять копеек и проанализировать банк-клиент достаточно известной фирмы на тему получения доступа к счету сторонними лицами.

Читать дальше →

Краткий очерк: Exherbo

В какой-то момент я являлся пользователем операционной системы Gentoo. То была эпоха 2005-2006. Операционная система достигла своего апогея. Определить это было крайне просто: humanum est errare, и можно было запросто найти пару опечаток в gentoo-handbook, что я с радостью и делал. Живость, с которой всё происходило, удивляла. Дистрибутив жил полноценной жизнью, forums.gentoo.org мгновенно отзывался на любые вопросы. Баги фиксились мгновенно, любые гигантские циклические зависимости, необходимость что-то пилить для получения автоматического билда, исключались — ведь для этого нужно было поступиться идеологией — заставить пользователя запустить что-то дважды или пилить там, где должна работать автоматика! KISS.

Читать дальше →

Автозаполнение форм оффлайн

Привет, %username%!
Хочу поделиться одной занимательной историей, которая произошла на моей работе.
Одной сотруднице начальство поставило задачу: провести анкетирование всех наших партнеров и внести данные через форму на внутреннем сайте. Форма достаточно внушительная, содержит множество полей разных типов (текстовые, выпадающие списки, чекбоксы и т.д.) Да и партнеров тоже немалое количество.
Доступа к внутреннему сайту у них, разумеется, нет, поэтому сами они эту форму заполнить не могут. В общем, прикинув объем работы, пришла эта сотрудница за помощью в наш IT-отдел.
И вот какое решение было придумано.

Читать дальше →

Новый вид лаборатории или знакомство с LabView

В настоящее время использование компьютеров в научных исследованиях не ограничивается имитационным моделированием на основе математических моделей. Мы давно привыкли к тому, что компьютер применяется для приема, обработки и анализа сигналов от реальных физических объектов и управления ими. При этом возникает потребность в электрических датчиках, преобразователях сигналов и специальном программном обеспечении. Все эти элементы занимают большое пространство и требуют вторичных преобразований и обработки сигналов. Кроме этого, требуются дополнительные расчеты и вычисления, например, для определения погрешности приборов при поверке, пересчете физических параметров сред и т.п.

Упростить рутинные операции при поверке приборов и при съеме данных с различных датчиков могут аппаратно-программные комплексы (АПК), в мои руки попало чудо венгерского гения на базе среды LabView, опытом работы с которым и хотел бы поделиться. Выглядит это так:

Читать дальше →

Замена стандартного текста в «Wordpress»

День добрый.

Наткнулся на вопрос о смене стандартных фраз в файлах Wordpress`a. Не могу ответить на него комментарием по причине отсутствия аккаунта на хабре, поэтому немного напишу здесь.
Читать дальше →

Typo3 и разработка социально-ориентированных сайтов

imageБыло уже довольно много споров и обсуждений по поводу того можно ли строить на Typo3 социальные сайты.

В большинстве случаев лидирует мнение, что эта система предназначена в основном для создания сайтов-визиток и сайтов компаний, но никак ни для сайтов ориентированных на создаваемый пользователями контент.

Попробуем разобраться в этом вопросе и в последующих очерках рассматривать возможности этой системы, ее плагинов и их настройку.

Читать дальше →

Заметка о первых шагах в линуксе

Возможно, кого то это заинтересует, возможно, кого то привлечет. Есть такая операционная система Linux. Многие, завидев ее у меня спрашивают: «А что это за винда такая у тебя?», дак вот, это не винда, далеко не она. И когда говоришь это друзьям и знакомым, они возникают, типа какая разница… А разница на самом деле огромная, даже принципиальная. Линукс — это совершенно другая операционка, работающая по другой архитектуре (в сравнении с виндой). Говорить об этом не буду, ибо все написано на великой и могучей википедии ().
Читать дальше →

.Net Проблемы миграции х86 проектов на х64 OS и способы их решения

Проблема 1: «Microsoft Silverlight cannot be used in browser running in 64bit mode»

С данной проблемой чаще всего можно столкнуться в WinForms приложении, содержащем в себе WebBrowser Control. При попытке отобразить в этом контроле Silverlight страницу, в Windows 7 x64 пользователь вместо страницы увидит указанную ошибку, в то время как в любой x86 операционной системе это же приложение будет работать идеально.

В чем причина? А причина элементарна — Microsoft Silverlight не поддерживает работу в x64bit процессе. Если ваше приложение скомпилировано под AnyCPU target platform, оно будет запушено как x64 приложение на х64 OS и Silverlight, способный работать только в 32-bit процессе, просто не будет работать.

Решение: Как Вы вероятно уже догадались, единственный вариант решение этой проблемы на текущий момент – это компилировать приложение по x86 платформу принудительно.

Проблема 2: В x64 OS при изменении размера окна приложения не перерисовываются и/или не меняют свой размер некоторые вложенный контролы, хотя под x86 OS такой проблемы не наблюдалось.

Источник этой проблемы детально описан у Микрософт в этой статье:
Deeply nested controls do not resize properly when their parents are resized

В двух словах суть проблемы с следующем: при изменении размера формы, она вызывает SetWindowPos чтобы изменить размер своим дочерним контролов. Каждый дочерний контрол получает сообщение WM_WINDOWPOSCHANGED, в результате которого вызывает SetWindowPos уже для своих дочерних контролов следующего уровня. Каждый вызов SetWindowPos выполняется в режиме ядра, что в конечном счете приводит к переполнению стека ядра (kernel stack overflow) которое перехватывается и молча гасится дабы не показывать в результате «синий экран смерти». А как итог, размеры глубоко вложенных контролов остаются не измененными и сами контролы – не перерисованными.

На самом деле это проблема присуща не только x64 OS, но и x86 при достаточном количестве уровней вложенности. Но почему же тогда приложение отлично работает в 32bit OS и отказывается так же исправно работать в 64bit OS? Да все дело в том, что при переходе на 64-bit архитектуру размер указателя вырос с 4 байт до 8 байт. А что стало с размером стека ядра? Догадались? Правильно – он остался точно таким же. Вот и получается, что если для x64 максимальное поддерживаемое число уровней вложенности составляет примерно 20-25, то для x86 архитектуры это число будет в 2 раза выше 40-50.

Решение: Если не считать банального изменения дизайна так, чтобы уменьшить число уровней вложенности, наиболее безболезненное и простое решение будет разорвать в ключевых местах рекурсию вызова OnSizeChanged заменив ее на множественные kernel-to-user mode callbacks:

protected override void OnSizeChanged(EventArgs e) {
 if (Handle != null) { BeginInvoke(new Action(base.OnSizeChanged), e); } 
 }