воскресенье, 13 марта 2011 г.

Разбираем процесс сетевого общения в деталях. Эмулируем сервер.


Наше дело застопорилось и видимо продвигаться дальше не хочет. Все возможные варианты были перебраны, но присылаемый ответ от сервера нам так и не удалось преобразовать для последующей отправки обратно. Видно уж очень хитрый алгоритм применяется. Как же быть? В нашем случае не нужно рвать волосы на голове или груди, не нужно брать волшебный бубен и исполнять тайный танец. А все потому, что в нашем распоряжении имеется парочка трюков. Итак, приступим к вскрытию этого хитрого алгоритма преобразования полученного сообщения – идентификатора сетевого клиента, который назовем для краткости Id. Есть два пути:
1)      Для этого нам понадобится тысяча часов неустанного наблюдения за посылаемыми пакетами, запись их в экселевкий файл, выделение всех уникальных сообщений, создание математической формулы для расчета преобразования.
2)      Создание собственного сервера, а затем посыл данных каких мы хотим, чтобы узнать, как все-таки отвечает на них клиент.
Ну что, выбираем вариант №2?

Немного поколдовав над кодом программы и немного его видоизменив, получаем уже не клиент, а сервер который будет вместо настоящего сервера игры получать и отправлять данные, общаясь с настоящим клиентом. То есть задумка такая:
1)      Запускаем собственный сервер, который будет ожидать от настоящего клиента сообщения «EFEFEFEF».
2)      Посылаем в ответ «CFCFCFCF» + некоторое сообщение («Х»).
3)      Смотрим, как на это сообщение отреагирует клиент и что пришлет нам.
Так что вместо «Х»? Ну, поскольку, «Х» это кусочек, который имеет размер 4 байта, то значит нужно отсылать все возможные комбинации этих 4 байтов. То есть:
0 0 0 0
0 0 0 1
0 0 0 2
0 0 0 3
0 0 0 255
0 0 1 0
0 0 1 1
0 0 255 255
0 1 0 0
255 255 255 254
255 255 255 255

Солидное количество информации. Количество пакетов, которые нужно отправить и принять умопомрачительное. Если еще учесть, что это потом нужно будет все записать, то волосы встают дыбом.
Предлагаю разбить все общение с клиентом нашего сервера на мини-тесты. Другими словами будем следить за изменениями в шестнадцатеричной системе и изменять за один раз на одну шестнадцатеричную единицу. Что-то похожее на это:
00 00 00 00
00 00 00 01
00 00 00 02
00 00 00 0D
00 00 00 0F

00 00 00 10
00 00 00 20
00 00 00 F0

00 00 01 00
00 00 02 00
00 00 0F 00

10 00 00 00
20 00 00 00
F0 00 00 00

Соответственно отследить 16 разных сообщений проще, чем 4 294 967 296 повторов. И будем надеяться на чудо, что нам повезет, и мы увидим хоть что-то похожее на общую формулу изменения Id.
На практике получается, что нужно запустить цикл с повтором 15 и изменять:
1)      Для увеличения первой шестнадцатеричной единицы будем на каждом шаге прибавлять 1.
2)      Для увеличения второй шестнадцатеричной единицы будем на каждом шаге прибавлять 16.
Все это нужно проделать с каждым из 4 байт.

Пробная версия программы.

Начинаем тестирование. Запускаем NPA в режиме захвата локально траффика. Запускаем наш сервер. Запускаем клиент, пытаемся подключиться. Но неожиданно обнаруживаем, что в ответ на 16 пакетов с разными сообщениями, нам в ответ клиент прислал всего лишь одно. Чувство огорчения пусть не сильно нас тревожит. Ведь нам удалось подделать сервер и заставить думать клиент, что он общается с настоящим сервером. Это большая победа. И теперь осталось всего-навсего вручную, без всяких циклов послать 16 х 16 сообщений и записать все результаты в табличном виде.
Пробная версия программы №2.


Первый результат уже получен, дело за малым. Увеличивать каждый раз на шестнадцатеричную единицу отсылаемое сообщение и фиксировать результат.
Итак, первая пара готова.
Послали: CFCFCFCF00000000 .
Получили: CACACACA7A2B0004 .

Ну и напоследок пара замечаний:
Не стоит волноваться, если ваша программа-сервер начнет занимать 40 – 60 % мощности процессора – это нормально для консольного сервера.
Переменная ans1len нужна, для того чтобы хранить размер передаваемой строки по сети, если же будет использоваться strlen (ans1[]), то размер будет определен неправильно, поскольку в строке имеются спец символы, в частности {0xCF, 0xCF, 0xCF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0}. Это означаем, что после измерения длины строки с помощью функции strlen, мы получим неправильную длину – 4 символа. Ведь 0x00 это ноль, а ноль как известно – признак конца строки.

четверг, 10 марта 2011 г.

Разбираем процесс сетевого общения в деталях. Эпизод 2.


Наших знаний пока что хватило на то, чтобы связаться с сервером и получить хоть что-то от него вразумительное в ответ. Теперь же, чтобы продвигаться дальше нужно разузнать, что все-таки отвечает сервер, как это обрабатывать и какой запрос посылать следующим.
Как уже нам известно сервер в ответ на приветствие должен прислать «CFCFCFCF» + Х. В след за этим нужно послать запрос «CACACACA»+ Х. Допустим что «Х» это одно и то же. Попробуем выделять кусок после «CFCFCFCF» и отправлять его, только в начало поставив «CACACACA».
Для удобства заведем массив header[5], куда будем складывать первые 4 полученных байта. Поскольку уже видно, что каждое сообщение передаваемое от сервера к клиенту и обратно имеет постоянную часть и часть, которая может изменяться. И, соответственно, каждый раз когда приходит сообщение будем смотреть на его заголовок, а уж потом разбираться что будем с ним делать.
В результате должно получиться что-то вроде:

Прежде чем запустить пример, нужно поставить NPA в режим захвата локального трафика. Ну что, попробуем?
Ответ сервера на приветствие:

Пробуем послать тоже самое, изменив заголовок:

Ответ один и тот же:


И так повторяя раз за разом, можно убедиться, что исходное предположение о том, «что пришло в теле сообщения то и отправляем серверу» неверно. Нам постоянно приходят сообщения с заголовком «DF DF DF DF» + X + Y. Думаю, что нетрудно заметить, что X везде одинаковый. В нашем примере это «13 E0 58 9E».

Посмотрим за процессом общения настоящего клиента и сервера. Запускам клиент игры. Подключаемся. Стреляем. Отключаемся. Что нас интересует? Прокручиваем весь список отправленных сообщений до конца. И видим, что общение всегда заканчивается сообщением с заголовком «DF DF DF DF». Только этот пакет посылает клиент. Получается, мы узнали две важных вещи.
1)      «DF DF DF DF» - это заголовок пакета, которым завершается общение между клиентом и сервером. Послать его может и клиент, и сервер.
2)      «X» - это своеобразный кусочек, который отправляется сервером и служит уникальным идентификатором для клиента. Как это определить? Очень просто – запустить процесс подключения и отключения настоящего клиента игры раз 100 и проследить за тем, что приходит в сообщении от сервера после заголовка «CACACACA» и сравнить с тем, что отравляется клиентом в сообщении, которым все завершается, то есть после «DF DF DF DF». Совпадает все 100 раз. Итак, это уникальный идентификатор клиента сетевой игры.

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

Но так и остался открытым вопрос, что все-таки нужно отправлять серверу, после получения Id?

суббота, 5 марта 2011 г.

Разбираем процесс сетевого общения в деталях. Эпизод 1.


В прошлый раз мы умели начать разговор с сервером, причем сервер нам даже ответил. Настала пора вплотную заняться изучением содержимого ответа и вообще попробовать побольше разузнать о том, что посылают клиент и сервер друг другу. Что для этого понадобится?
Хороший текстовый редактор. Стандартный блокнот не подойдет. Notepad++ то, что нам нужно. Качаем http://notepad-plus-plus.org/download .
Табличный процессор. Обычно это Microsoft Excel.
Установили? Тогда продолжим.
Поскольку нам придется постоянно переключаться между клиентом игры и окном захвата трафика, то лучше установить запуск игры в оконном режиме. Для этого открываем папку, в которой находится игра и находим файл «config.cfg» или «godlypc.cfg», если запускаем игру с максимальными настройками. Открываем с помощью блокнота или NPP (Notepad++). Находим строку «FullScreen = 1» и изменяем на 0. Результатом должно стать «FullScreen = 0». Теперь закрываем текстовый файл, предварительно не забыв сохранить. Вот теперь мы готовы исследовать сообщения сервера и клиента.

Создаем простой Excel файл. Первая колонка будет содержать время, вторая строку, которая будет  содержимым первого переданного сетевого пакета за сеанс игры.

Эпизод 1.
Запускаем сервер. Запускаем перехватчик трафика. Запускаем игру, теперь уже в оконном режиме. Что нас интересует? Прежде всего, с чего начинается взаимодействие. То есть процесс выглядит следующим образом. Записываем в первую колонку текущее время, вместе с секундами (их можно увидеть два раза щелкнув на табло времени в системном трее). В нашей запущенной игре (клиенте) выбираем «Подключиться», дожидаемся, когда все этапы пройдут успешно и появится танк на поле боя, стреляем, отключаемся. Открываем окно с захваченным трафиком.
В окне появилось много строк, но что конкретно мы ищем? Мы ищем первое сообщение, которое посылается по сети. Находим место, с которого начинается общение.


Копируем его в Excel (выделив текст, нажимаем правой кнопкой и «Copy as Hex»). В результате будем иметь что-то вроде:

И так хотя бы раз десять.

Теперь все ясно. Общение всегда начинается клиентом и всегда словами «EFEF EFEF». Оно и понятно, ведь сервер не сможет узнать о существовании страждущего поиграть, пока тот сам не намекнет об этом и поздоровается. Мы уже разобрались, как это реализовать.

Эпизод 2.
Теперь черед разобраться с тем, а что отвечает нам сервер? Для этого ищем, какими были вторые сообщения в сеансах связи. Проделываем тот же трюк как в эпизоде 1, только теперь ищем 2-е сообщения а затем копируем содержимое сообщения в 3-ю колонку. Например, вот так:


Видно, что в сообщении сервера повторяется «CFCFCFCF», а вот что идет дальше? И почему все время изменяется? Пока предположений нет. Что делать? Давайте дальше двигаться. Посмотрим, что посылает клиент, когда увидит в сообщении «CFCFCFCF» + еще что-то.

Эпизод 3.
Ну что, уже не так весело? В окне NPA теперь ищем третьи сообщения в сеансах связи между клиентом и сервером.


И что мы видим? В ответе постоянно «CACACACA» + еще что-то. Но это что-то отличается от того, что приходит от сервера.

В голову приходит пока одно, попробовать схему:
Пришло в сообщении «CFCFCFCF» + х.
Отправить «CACACACA» + х.

пятница, 4 марта 2011 г.

Современные тенденции на рынке ипотеки.

Наиболее распространенные в России ипотечные программы – это кредиты на приобретение готовых квартир. В период кризиса это была практически единственная хоть как-то действующая ипотечная программа. С конца 2009 года в продуктовые линейки банков стали возвращаться кредиты на покупку жилья на этапе строительства, загородного жилья, земельных участков, под залог имеющейся недвижимости.

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

Не особенно распространенные до кризиса кредиты на приобретение земельных участков сегодня выдают немногие банки – Банк Сосьете Женераль Восток (БСЖВ), банк «Зенит», РосЕвроБанк, Россельхозбанк. 17 марта 2010 года ТрансКредитБанк запустил программу кредитования в рублях на приобретение земельных участков для индивидуального жилищного или дачного строительства под залог приобретаемой земли. Кредиты предоставляются на приобретение земельных участков в Подмосковье, продавцами которых являются ЗАО УК "Солид - Фонды недвижимости" и ООО "Кузяево-Трейд". Минимальный первоначальный взнос по кредиту - 30 % стоимости земельного участка. Кредиты выдаются на короткий срок от 1 до 5 лет под 16-18% годовых, при условии оформления заемщиком полисов страхования жизни и потери трудоспособности, а также предмета залога от гибели и ущерба. В случае выбора заемщиком иных условий страхования процентная ставка по кредиту выше на 2 процентных пункта уровня базовой ставки.

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

Появились первые программы коммерческой ипотеки, не имевшие широкого распространения и до кризиса. Сегодня получить кредит на приобретение объекта коммерческой недвижимости под залог приобретаемой недвижимости можно в Абсолют Банке, Московском кредитном банке, Росбанке, банке "Уралсиб", Ханты-Мансийском банке.


Кредиты на приобретение квартир на этапе строительства
Сейчас практически все банки, предлагающие ипотеку, выдают кредиты на покупку квартир в строящихся домах под залог прав на приобретаемую квартиру. Еще в прошлом году к этому виду кредитования вернулись ВТБ 24, банк «ДельтаКредит», Московский кредитный банк (МКБ). Одним из немногих, кто не прекращал в кризис кредитовать приобретение жилья на этапе строительства, был Сбербанк.

Одна из самых выгодных ипотечных программ для приобретения квартиры на этапе строительства с 1 марта 2010 года появилась в продуктовой линейке Газпромбанка под названием «Юбилейный ипотечный кредит». Приобретение квартиры в строящихся домах». Кредиты предоставляются в рублях, минимальная процентная ставка составляет 13% годовых, первоначальный взнос - от 20%. Погашение кредита может осуществляться аннуитетными или дифференцированными платежами. Обеспечением на период строительства дома служит залог имущественных прав требования и либо страхование финансовых рисков, либо поручительство третьих лиц - с даты предоставления кредита до регистрации права собственности на квартиру.

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

Если жилье приобретается не у партнеров банка, в большинстве случаев обязательным требованием для получения кредита является готовность дома не ниже 60%. В то же время, заемщики, которые берут кредит на приобретение строящегося жилья, предпочитают выбирать объекты высокой степени готовности, памятуя о риске недостроя и повышенной ставке по кредиту до момента регистрации жилья в собственность.

Впрочем, по партнерским программам условия кредитования могут быть более мягкими, чем даже на приобретение готового жилья - более низкие первоначальный взнос по ипотеке и размер процентной ставки. Например, процентные ставки по кредитам на квартиры, предлагаемые на продажу компанией «МИЭЛЬ-Новостройки» в рамках партнерских программ с банками, начинаются от 15% годовых.

Нордеа Банк в феврале снизил ставки по ипотечным кредитам на долевое участие в строительстве для приобретения квартир в домах, возводимых концерном «ЮИТ ДОМ». Минимальная ставка по кредиту на период до момента оформления ипотеки составляет от 13,5%, а с момента оформления ипотеки на приобретаемую квартиру - 12%.

В марте Нордеа Банк и компания «ЮИТ Московия» провели совместную акцию, в рамках которой банк отменил комиссию за выдачу ипотечного кредита на покупку квартир как в строящихся, так и в готовых объектах компании. «ЮИТ Московия» при этом предоставляла получателям кредитов скидку на квартиры от 3% до 5% и брала на себя расходы по государственной регистрации сделки.

Из-за нестабильной экономической ситуации у банков заметно сузился круг потенциальных заемщиков и среди юридических, так и физических лиц, поэтому они стремятся использовать все имеющиеся возможности заработать в секторе розничного кредитования, в том числе, предоставляя кредиты на приобретение строящегося жилья. При этом кризис показал, что опасения по поводу качества кредитов на приобретение жилья на этапе строительства были преувеличены. Как известно, при выдаче именно таких кредитов банкам была всегда свойственна повышенная придирчивость, которая, как видно, и принесла добрые плоды. Елена Тарасова, старший вице-президент ВТБ 24, в ходе выступления на Всероссийской конференции «Ипотечное кредитование в России - перезагрузка рынка», прошедшей в декабре 2009 года, отметила, что по кредитам на строительство жилья в ипотечном портфеле ВТБ 24 фиксируется самый низкий уровень просрочки.


Ипотека для приобретения загородного жилья
Ипотека для приобретения загородного жилья возвращается на рынок чуть менее активнее, чем кредитование квартир в строящихся домах. Кредиты на приобретение и строительство коттеджей и таунхаусов предлагают Банк Москвы, банк «Жилфинанс», Банк Сосьете Женераль Восток (БСЖВ), ВТБ 24, Городской Ипотечный Банк, Банк Интеза, КредитЕвропа Банк, Нордеа Банк, Росбанк, Россельхозбанк, Сбербанк, Связь-Банк, ЮниКредит Банк. С 1 июня к этому списку добавился банк "Московское ипотечное агентство" (МИА).

Помимо этого некоторые банки предлагают кредиты на приобретение земельных участков, в частности, Абсолют Банк, БСЖВ, Россельхозбанк, Ханты-Мансийский банк. С марта 2010 года ТрансКредитБанк начал выдавать кредиты на приобретение земельных участков для индивидуального жилищного или дачного строительства в Подмосковье. Кредиты предоставляются в рублях, на срок от 1 года до 5 лет, на сумму от 200 тыс. до 3 млн. рублей, минимальный первоначальный взнос - 30% от стоимости земельного участка, процентная ставка 16 - 18% годовых в зависимости от размера первоначального взноса.

Главное отличие ипотечных программ по приобретению загородного жилья в большинстве случаев теперь проявляется в величине первоначального взноса, чтобы получить кредит на загородный дом, в большинстве случае надо вложить на 10% больше собственных средств, чем при покупке в кредит квартиры – от 40 до 50%.

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


Нецелевые ипотечные кредиты под залог имеющейся недвижимости
Нецелевые ипотечные кредиты под залог имеющейся недвижимости становятся более доступными. Процентные ставки по ним падают, соотношение кредит/залог увеличивается.
РосЕвроБанк в феврале увеличил размер кредита по программе «Залог» до 70% от стоимости жилья. 2 июня 2010 года Банк Сосьете Женераль Восток (БСЖВ) в июне снизил величину первоначального взноса для заемщиков, приобретающих в кредит загородное жилье, с 40% до 30% и уравнял процентные ставки по кредитам на приобретение загородного жилья и на приобретение квартир.

Банк «Московское Ипотечное Агентство» («МИА») в марте изменил условия выдачи ипотечных кредитов под залог квартиры на вторичном рынке в Москве или Подмосковье таким образом, что они теперь являют собой одно из самых выгодных предложений на рынке. Размер кредита увеличился с 50% до 30% от оценочной стоимости объекта залога. Максимальный срок кредитования увеличился с 10 до 30 лет. Минимальная процентная ставка снижена с 17,5% до 12,6% годовых при условии подтверждения доходов справкой по форме 2-НДФЛ.


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

Если на начало года рефинансирование предлагали только ВТБ 24 и Сбербанк, то сейчас можно такую программу можно найти еще и в Банке Сосьете Женераль Восток (БСЖВ), Газпромбанке, Газэнергопромбанке, банке "ЖилФинанс", Банке Москвы, банке "Московское ипотечное агентство" (МИА), Национальном резервном банке.

Ставки, по которым заемщикам других банков предлагается рефинансировать кредиты на приобретение жилья на вторичном рынке, начинаются от 13% годовых по кредитам в рублях (Сбербанк) и от 9,1% годовых по кредитам в долларах США (ВТБ 24). Некоторые банки, как ВТБ 24 и Сбербанк, устанавливают ставки по программе рефинансирования на том же уровне, что и для кредитов по аналогичным программам (на приобретение жилья на вторичном рынке, под залог имеющейся недвижимости). Однако можно встретить и банки, у которых процентные ставки при получении кредитов на рефинансирование несколько выше, чем по базовым ипотечным программам (Альфа-Банк, БСЖВ).

Ряд банков держит программы рефинансирования в своей ипотечной линейке с чисто декоративной целью. Например, Альфа-Банк предлагает рефинансировать кредиты на приобретение жилья на вторичном рынке. По новому кредиту, выданному в рублях, ставки составляют 17,5 - 19,5% годовых и 14 - 16% - в долларах США. У БСЖВ и Национального резервного банка ставки пониже, но все равно гораздо выше, чем у ВТБ 24, Сбербанка, Газпромбанка и банка "ЖилФинанс". В то же время рефинансирование кредитов под залог недвижимости в Газпромбанке тоже явно предлагается лишь для вида: в рублях - под 19% годовых, в долларах – под 14%.


Реализация заложенной недвижимости
Кризис заставил некоторые банки сформировать отдельную программу кредитования для реализации заложенного жилья. Получив согласие неплатежеспособных заемщиков на реализацию заложенного по ипотеке жилья, банки сформировали базы данных недвижимости, которую можно приобрести в кредит из под залога. Подобные предложения есть, например, у Абсолют Банка, банк «Жилфинанс», ВТБ 24, банков «ДельтаКредит» и «КИТ Финанс», Собинбанка, банка «Хоум Кредит». Единичные предложения можно видеть у АМТ-Банка (экс БТА-Банка), ДжиИ Мани Банка и Райффайзенбанка. Большой популярности эти программы не завоевали, поскольку жилье выставляется на продажу по докризисной стоимости, которая существенно выше сегодняшних расценок на квартиры и дома. Впрочем, негласно представители ипотечных банков признают, что относительно цены жилья уже можно торговаться. В то же время, покупатель заложенного по ипотечному кредиту жилья может неплохо сэкономить на риэлторских услугах. Приобретая заложенное по ипотеке жилье, не надо тратиться на комиссионные за его поиск, а также за проверку этого жилья на юридическую чистоту, поскольку банк озаботился этим, еще когда принимал решение о выдаче кредита на его приобретение.

Часть банков предлагают кредиты на заложенное жилье значительно дешевле, чем по любой другой программе. Банк «КИТ-Финанс» готов сбыть ипотечные залоги своих злостных должников по тем же ставкам, по которым они были предоставлены в 2007 - 2008 годах. У банка «ДельтаКредит» минимальная ставка по кредитам подобного рода в рублях равняется всего 10,5%, а в долларах США - 5,75% годовых.

У ВТБ 24 по кредитам в рублях процентная ставка устанавливается в соответствии с условиями кредитного договора текущего заемщика, осуществляющего продажу объекта, но не более ставки рефинансирования Центрального банка РФ на дату принятия банком решения (на данный момент – 8% годовых), в долларах и евро – не выше 10% годовых. При этом размер процентной ставки не зависит от срока кредитования и размера первоначального взноса. Чтобы стимулировать реализацию ипотечных залогов, ВТБ 24 минимизировал все расходы заемщика на получение и обслуживание кредитов, которые предоставляются для приобретения такого жилья: не взимается единоразовая комиссия за выдачу ипотечного кредита, досрочное погашение кредита без комиссий возможно с первого дня после выдачи без ограничений по срокам и сумме.

Другие банки менее щедры, например, Собинбанк предлагает приобрести у него в кредит заложенное жилье под 15,5% годовых в рублях и 13% в долларах. Совсем неконкурентоспособным выглядит предложение БЖФ: минимальная ставка по кредитам в рублях – 21% годовых, в долларах США – 16,75%.


Реструктуризация
Следствием кризиса в ипотеке стали специальные программы реструктуризации просроченной задолженности. В частности, их предлагают Альфа-Банк, ОТП Банк, Юниаструм Банк. Эти программы позволяют изменить график погашения кредита с тем, чтобы отсрочить или рассрочить выплату просроченного долга, а также прекратить начисление штрафных санкций за просрочку. Проблема просроченной задолженности, в основном, решается путем снижение кредитной нагрузки за счет удлинения срока кредита. Менее охотно банки соглашаются предоставить заемщику «кредитные каникулы» на срок от 3 до 6 месяцев, во время которых размер платежа значительно снижается. Наибольшую фантазию при разработке вариантов реструктуризации проявил Юниаструм Банк, у которого заемщик может перевести долг на другое лицо или привлечь дополнительных созаемщиков.

Однако большинство банков предпочитает обговаривать условия реструктуризации ипотеки с заемщиками в индивидуальном порядке. Зато некоторые кредиторы сочли перспективным способ решения проблемы просроченной задолженности по ипотеке путем предоставления стабилизационного кредита по примеру Агентства по реструктуризации ипотечных жилищных кредитов (АРИЖК). Такие программы разработали Абсолют Банк, Банк Москвы, ВТБ 24, ГПБ-ипотека, банк «КИТ Финанс», Сбербанк, Собинбанк. Кредит предоставляется в объеме, достаточном для совершения платежей по основному кредиту на срок до одного года.

источник

четверг, 3 марта 2011 г.

Квартирный вопрос: свое жилье или чужое?

Живет человек. Но живет не в вакууме, а среди людей. Имеет место проживания. И если этот человек молод, то, конечно же, проживает с родителями. Приходит момент, когда хочется отделиться и попробовать настоящего вкуса жизни вольной. Мысли такие приходят со временем каждому. Хорошим вариантом является наличие какой-никакой работы. Желательно, опять же, оплачиваемой. Потому как без собственных доходов и мечты о жизни вольной очень часто несбыточны. Ну, предположим, есть заработок. Как получить свое собственное жилье, чтобы вздохнуть свободно. Вариантов сегодня существует множество, как уверяет нас денно и нощно СМИ. К примеру, можно накопить нужную сумму складывая под матрас деньги или храня в банке, но это долго и вряд ли кто-то способен так долго копить Ну, или можно вступить в КПК (это который кредитно-потребительский кооператив), но лопаются они ежегодно по 3 штуки или в пересчете на обманутых дольщиков это по 2-3 тысячи человек – не вариант. Самый стандартный и привычный способ – это ипотечный кредит в банке. Мало риска, выгодные условия, ну и доверие – это все-таки солидное учреждение.
Давайте разбираться, сколько вся эта затея будет стоить реально. Допустим, что цены на квартиру (возьмем для начала однокомнатную) будут в пределах 1,5 миллионов рублей. Жители Москвы и Питера пусть  умножают на нужный коэффициент стоимость жилья, а заодно и зарплаты.
Выбор банка дело добровольное. Самым доступным и присутствующим почти в любом городе является Сбербанк. Тем более сегодняшняя кампания по возврату доверия и уважения через СМИ формирует положительный образ этого заведения среди россиян. Давайте взглянем на условия, на которых этот банк предоставляем ипотечные кредиты. Не забываем, что хочется жить отдельно сегодня, сейчас. Так что строящиеся квартиры не берутся в расчет.


Красным прямоугольником выделена процентная ставка, которая будет применяться для расчета платежей за ипотеку. В качестве исходных данных принимаем тот факт, что зарплатная карта Сбербанка есть не у всех, а правильнее сказать, лишь у единиц, так называемых бюджетных работников. А второе допущение, что максимум , что сможет набрать человек желающий взять ипотеку, будет стремиться к очень скромной сумме, то есть 15% от суммы ипотечного кредита (это если повезет, если все друзья, знакомые, родственники скинутся хоть по десять тысяч), что примерно равно 225 тысячам. Наш очень оптимистичный вариант понемногу начинает вырисовываться.

Брать кредит надолго это просто великолепно. Но вот просыпаться и каждое утро думать о том, что нависает груз долга перед кем-то это не самое приятное чувство. Значит, стараемся минимизировать срок бремени. Минимум как видно – 10 лет.

А теперь запускаем калькулятор и начинаем считать.

1500000 – 22500 = 1275000.

Это сумма, которую нужно взять по ипотечному кредиту. Теперь посчитаем общую сумму, которую человек должен выплатить за 10 лет в виде процентов за кредит.  Для этого считаем сколько будет 13,5 процентов от этой суммы и умножаем на количество лет.

1 275 000 х (13,5 / 100) х 10 = 172 125 х 10 = 1 721 250.

Итоговая стоимость квартиры:

1 721 250 + 1 500 000 = 3 221 250.

Довольно внушительная сумма. Получается, что взяв в кредит мы получаем квартиру по стоимости в 2 раза дороже, чем ее реальная стоимость.

Теперь посчитаем, а сколько будет нужно платить в месяц:
1)      Оплата суммы самого кредита (то, что мы занимаем у банка для покупки квартиры). Для этого делим всю сумму на 10 лет, за которые мы должны ее выплатить, а потом еще на 12 месяцев, ведь выплаты производятся раз в месяц.

1 500 000 / (10 * 12) = 12 500.

2)      Оплата суммы процентов за пользование кредитом. Схема такая же, как и в 1 пункте.

1 721 250 / (10 * 12) = 14 343,75.

Для того чтобы посчитать сколько реально придется платить в месяц сложим два получившихся числа:

12 500 + 14 343,75 = 26 843,75.

Солидная сумма выходит, однако. А чтобы реально выплачивать такие деньги в месяц ваша зарплата должны быть тысяч на 10 больше, как, впрочем, и ваших двух поручителей, а то и всех трех.

Если у вас зарплата меньше  40 тысяч, то вам явно не стоит дергаться и бегать по банкам.

Поэтому, самым простым решением в данном случае, является съемная квартира, далекая от центра города. Такое решение вопроса обойдется намного дешевле, всего в 6 – 8 тысяч. Согласитесь разница существенная. Но это только если вам нужно побыть одному и попробовать вкус настоящего независимого человека, без притязаний на собственность и со стойкой зависимостью от арендодателей.

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


среда, 2 марта 2011 г.

Подделываем сообщение клиента.


Продолжаем развивать и закреплять успех, который был достигнут. Что мы уже знаем? Знаем, как подсмотреть за общением сервера и клиента. Знаем, как выглядят сообщения и что конкретно отправляют друг другу сервер и клиент. Даже умеем отправлять какие-то сообщения и пытались принимать ответ от сервера.
Давайте теперь детально разберемся что и, самое главное, как будет отсылать и принимать от сервера. Для этого обратимся к исходному коду main.cpp, котрый является каркасом нашего собственного клиента. В этом коду уже все, что нам нужно есть.
Функция отправки сообщений по выбранному адресу и порту:

sendto(my_sock,(char*) адрес указателя на ваш массив ,strlen(адрес указателя на ваш массив),0, (sockaddr *) &srv_addr,sizeof(srv_addr));

Для этой функции нужно подготовить массив данных, которые будем отправлять.
Как нам уже известно, инициируется соединение клиентом. Он отсылает на сервер данные «EFEF EFEF». Но вот вопрос как эти данные хранить в нашей программе? И что это за буквы такие? Тут нам поможет значение «length», которое определяет количество байтов. Ага. Значит речь идет о байтах. И получается, что это 4 байта. Но у нас 8 символов непонятных. Не будем гадать на кофейной гуще, а лучше проясним ситуацию. Для представления данных в программах может использоваться несколько вариантов типов данных, один из них это шестнадцатеричное представление, в котором числа представляются в виде от 0 до F (соответствует числу 15). Это как раз наш случай, только записать нужно правильно: 0xEF. Соответственно получаем четыре числа - 0xEF 0xEF 0xEF 0xEF. Если же перевести из шестнадцатеричной системы исчисления в десятичную, то получится четыре числа 239.
Вопрос на засыпку, как связаны байты, символы, и числа? Если вы помните, то в компьютере информация хранится в виде битов, которые принимают значение 0 или 1. Эти самые биты принято хранить в виде наборов по 8 штук, а называют их байтами. 1 байт = 8 бит или 256 различных состояний. То есть этот набор битов разрешает хранить какие-то значения, в количестве 256 штук, ими могут быть, например, числа от 0 до 255. Во многих языках есть специальный тип данных byte. А в Си++ для этих целей используется тип char. Да-да, тот самый char, который предназначен для хранения символьных данных. Но мы-то знаем, что символьный тип хранится как число этого символа в кодовой таблице. В итоге получается, что наше первое настоящее сообщение, отсылаемое серверу, будет хранится в виде символьного массива, примерно так:

char hello1[] = { 239, 239, 239, 239 , 0}; //EFEFEFEF
или
char hello1[] = { 0xEF, 0xEF, 0xEF, 0xEF , 0};

После отправки сообщения выведем на консоль сообщение, что делаем и что посылаем:

printf("%s: %s\n", "Send to server ", &hello1[0]);

И будем придерживаться правила, что после отправки или приема сообщения будем выводить соответствующие уведомления на экран.
Ну и что же. Отправили сообщение серверу, в ответ он тоже что-то ответит нам? Хранить это нужно где-то?

char buff[2*1024+1]; // в этот массив будем принимать сообщения, приходящие от сервера

Все уже готово и есть в исходном коде (в самом начале). На всякий случай возьмем массив побольше, чтоб точно хватило. Однако и этого может не хватить, по ходу разработки будет видно.

Функция приема сообщений по выбранному адресу и порту:

int n=recvfrom(my_sock,&buff[0],sizeof(buff)-1,0, (sockaddr *) &server_addr, &server_addr_size);

После приема сообщения, его содержимое можно найти в массиве buff, а количество символов пришедших от сервера будет лежать в переменной n.
Чтобы правильно формировать массив нужно в конец добавлять символ нуля, иначе при работе с массивом как со строкой могут случится казусы. Значит добавляем в конец массива, что полагается:

buff[n]=0;

Попробуем вывести то, что прислал нам сервер.

printf("%s: %s\n", "Coming from server ", &buff[0]);

Исходный код:  main.cpp
 
Великолепно, все получилось. Даже не нужно обращаться к Network Protocol Analyzer. Пример того, что должно появиться на экране консольного приложения приведен в самом начале статьи.

вторник, 1 марта 2011 г.

Как пользоваться инструментом сетевого анализа?


Первая радость несколько поостыла и теперь самое время разобраться как правильно пользоваться Network Protocol Analyzer. Как вы уже поняли, между клиентом и сервером происходит общение посредством передачи сетевых пакетов. Но возникает вопрос, как и самое главное что смотреть, чтобы узнать, а что все-таки передают друг другу эти программы. Возвращаемся к главному окну захвата «Loopback» пакетов.

Как видно, на вкладке «Packet View» много строчек, каждая из которых что-то да значит. Давайте разбираться, как читать эти строки. Чтобы действительно понять, что в них содержится нужно прокомментировать, что означает заголовок каждого столбца.
№ - ну, тут понятно, что это порядковый номер пойманного пакета с данными.
Process – отображает имя процесса, к которому относятся пакеты.
Time – пока нам это поле кажется не таким уж и важным.
Local Address – локальный адрес.
< = > - хитрое поле, которое для нас является пожалуй самым значащим. Это поле определяет кто кому отправил пакет, либо от сервера к клиенту или наоборот.
Remote Address – удаленный адрес.
Length – длина сообщения в байтах.



Теперь попробуем прочитать первое сообщение, применив полученные знания. Для этого будем выделять мышкой нужное сообщение. Нам понадобится три поля. Local Address, <=>, Remote Address. Ну, и что можно сказать про этот пакет?


Отправлен он нашим сервером с Local Address (0.0.0.0:12300, где первая часть до двоеточия это IP адрес, а вторая это порт) какому-то ПО по Remote Address 38.112.120.110 и чего-то там еще (кстати, у вас может быть и другой адрес). А откуда мы узнали, что отправлял наш сервер, а не наоборот? За это отвечает стрелочка => в поле «<=>». А что это за ПО, которое сидит по Remote Address? Это специальное ПО, которое является тоже сервером, но его функциями является лишь организация оповещения всех потенциальных игроков через Интернет, что вот еще один сервер доступен для игры. В общем и целом первый пакет нам не интересен. И в дальнейшем такие пакеты мы не будем рассматривать, потому что общение нашего сервера с удаленным сервером нам не интересно.

А вот второй пакет более интересен. От кого и кому? Игровой клиент с адрема Remote Address 127.0.0.1 и порта 12350 послал сообщение серверу на Local Address 0.0.0.0 и порт 12300. Это то, что нужно! Наш игровой клиент послал какие-то данные серверу. Но какие? Понятно, что это 4 байта. И если выделен пакет с номером 2 то в окошке ниже «Packet View» мы увидим: «EFEF EFEF». Это оно и есть.

Третий пакет уже отправляет сервер в сторону игрового клиента (стрелка =>). А само сообщение выглядит; «CFCF CFCF».

Дальше уже можно и без подсказок пробежаться по пакетам и посмотреть на общение двух программ – клиента и сервера.

В итоге получается, что общение с сервером начинается с сообщения «EFEF EFEF», в ответ на которое сервер говорит «CFCF CFCF». Осталось только попробовать и посмотреть, что получится.