Что такое код swf_lookat

Содержание

swf_lookat

swf_lookat — Define a viewing transformation

Описание

Defines a viewing transformation by giving the viewing position and the coordinates of a reference point in the scene.

Список параметров

x-coordinate for the viewing position

y-coordinate for the viewing position

z-coordinate for the viewing position

x-coordinate for the reference point

y-coordinate for the reference point

z-coordinate for the reference point

Controls the rotation along with viewer’s z axis.

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Примеры

Пример #1 A simple 3D-rotation around a text

swf_openfile ( «php://stdout» , 320 , 200 , 25 , 1 , 1 , 1 );

swf_ortho (- 100 , 100 , — 100 , 100 , — 100 , 100 ); // create 3D coordinates

swf_definefont ( 0 , «Pix3» );
swf_addcolor ( 0 , 0 , 0 , 1 );
swf_fontsize ( 10 );
swf_fonttracking ( 0.2 );

for ( $i = 0 ; $i 628 ; $i += 8 ) <
$j = $i / 100 ;
swf_pushmatrix ();
swf_translate ( 0 , 0 , 0 );
swf_perspective ( 100 , 1 , 0 , 10 );
swf_lookat ( sin ( $j ) * 60 , 50 , cos ( $j ) * 60 , 0 , 0 , 0 , 0 );

swf_definetext ( 1 , ‘HotKey@’ , 0 );
swf_translate (- 50 , 0 , 0 );

swf_placeobject ( 1 , 10 );

swf_definetext ( 2 , ‘example.com’ , 0 );
swf_translate ( 55 , 0 , 0 );
swf_placeobject ( 2 , 11 );

swf_showframe ();
swf_removeobject ( 10 );
swf_removeobject ( 11 );
swf_popmatrix ();
>

Как открыть swf

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

1. Воспользуйтесь браузером, установленным в системе — Internet Explorer, Google Chorme, FireFox или Opera (скачать браузер для установки можно с сайтов их производителей, все браузеры полностью бесплатны). Скорее всего, браузер сможет открыть такой файл сразу. Если этого не произойдет, значит, браузеру не хватает плагина, обрабатывающего формат ShokWave Flash. Как правило, его скачивание и установка происходят полностью автоматически. Необходимо просто подождать, после чего вновь попытаться открыть файл.

2. Можно открыть swf с помощью видеплеера, применяемого для просмотра видеофильмов, такого как Media Player Classic, входящий в состав k-lite codec pack, или kmplayer. Как правило, подобные программы уже поддерживают этот широко распространенный формат, и воспроизводят флеш-анимацию также, как обычный видеофайл.

3. Для того, чтобы не только открыть файл swf, но и создать такой файл, установите Adobe (Macromedia) Flash. Это мощный инструмент для разработки флеш-роликов, игр и других продуктов, позволяющий, разумеется, также и просматривать готовые результаты работы.

20 способов использования QR-кодов

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

Маленькая справка: QR-код- это матричный код (двумерный штрих-код), разработанный компанией «Denso Wave». Аббревиатура QR (quick response) означает «быстрый отклик». Возможность распознавания кодов сканирующим оборудованием делает их такими популярными в рекламе, торговле, производстве, логистике. В QR-код можно закодировать любую информацию, текст, URL. Для создания кодов существуют сайты-генераторы, где каждый может поэкспериментировать. А для считывания кодов необходима простая программа, которая устанавливается на более-менее современный мобильный телефон.

Вот здесь (а также на других сайтах) вы можете провести собственные эксперименты:

Несколько месяцев назад моя подруга выходила замуж, и я решила подарить новобрачным футболки из серии «Just Married», где сзади была надпись, спереди были зашифрованы мои свадебные поздравления. Сейчас я довольно часто делают такие шифровальческие подарки своим друзьям.

На самом деле, я пишу этот пост, прежде всего, чтобы разобраться, какие же еще способы применения QR-кодов существуют. Возможно, и вы возьмете что-нибудь себе на заметку!

1). Открытки, плакаты, наружная реклама, с зашифрованным сообщением или пожеланием;

2). Скидки: вы можете предъявить код с вашего телефона для сканирования в магазине, и получить скидку;

3). Ссылки для скачивания файлов, музыки, подкастов, видео, афиши. Вы не только можете скачать что-то в интернете, но и воспользоваться таким устройством, как iCandy, которое будет переключать ваши любимые караоке-мелодии сразу после сканирования штрих-кодов (http://www.youtube.com/watch?v=GPryGwdm1Sg

Недавно был опубликован пост, о том, как можно скачать афишу клуба «Космонавт», используя QR-код (http://www.lookatme.ru/flows/tehnologii/posts/104667-afisha-iz-qr-koda)

4). Зашифрованный URL: как правило, адрес того сайта, куда нас хочет привлечь рекламодатель. На сегодняшний день это самый популярный способ использования кода, после штрих-кодов;

5). Видоизмененный логотип известных брендов, который тоже может включать в себя URL;

6). Приглашение «добавить в друзья» в Facebook или другой социальной сети;

7). Часы, которые замысловатым образом показывают время;

8). Google-mapping в туризме: пишут, что использование QR-кодов, расположенных на городских достопримечательностях, и отсылающих пользователей на Google-карты места, либо рассказывающих о самом месте и указывающих на местоположение объекта, было успешно использовано в Украине, Львове. Очень удобно для туристов, которые не знают кириллицы;

9). Лоттереи: Tissot «Scan to Win» campaign, предоставляла возможность каждому, сканирующему код, зарегистрироваться и стать участником виртуальной лотереи, выигрышем которой были бы часы измвестной швейцарской марки;

10). Электронный билет: вы получаете QR-код через смс и предъвляете его на железнодорожной станции или в аэропорту;

11). Японскую визу также дополняет QR-код;

12). Визитные карточки, на которых ваши контакты также представлены в виде кода, и которые при сканировании смартфоном, добавляются в вашу адресную книгу;

13). Штрих-код на товарах-самый первый и самый распространенный способ применения;

14). Татуировка- дополнительный вариант нательного рисунка, а также возможный способ «чипирования» людей;

15). Дизайн одежды и аксессуаров;

16). Архитектурный дизайн;

В Японии (Tashikawa) решили использовать QR-коды не просто в оформлении здания, но, которые при сканированнии специальным приложением для IPhone, позволяли бы узнать всю актуальную информацию о магазине. Приложение отображало «в дополнении» силуэты людей, прогуливающихся по торговому центру; нажав на человечка пользователь мог видеть различные комментрии появляющиеся в специальных «speech bubbles» on-line. Используя это приложение можно было узнать о распродажах, а также получить специальные купоны.

Видео о запуске этого проекта N building вы можете посмотреть здесь: http://vimeo.com/8468513

Проект дизайна бизнес-центра в ОАЭ

17). Кладбища: японцы решили почтить память своих умерших родственников и вписали всю необходимую информацию о человеке в матричный код. Возможно, это также удобно для ведения базы данных кладбища;

18). Психогеография- течение, возникшее в середине 50-х годов, берущее свое начало с Yellow Arrows. Идея состоит в том, что каждый объект городского пространства имеет определенный психологический портрет, составленный из воспоминаний, ассоциаций, событий, произошедших с людьми, рядом с этим объектом. Раньше люди оставляли желтые стрелки- как метки, а сейчас присваивают зданию, парку, или другому объекту в городе, код, а в интернете выкладывают свои истории, относящиеся к данному объекту, дополняя таким образом реальным облик виртуальным двойником. Это что-то напоминающее надписи «Вася был здесь».

19). Семапедия (www.semapedia.org): сайт, где вы также можете соединить объекты реального мира с миром виртуальным, присвоив объекту QR-код, и связав его со статьей в Википедии.

20). Объявления в газетах и журналах

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

Как открыть файл SWF

SWF – это особый формат, разработанный специально для веб-приложений и использования в интернет-среде. Это формат для хранения различного рода анимации, графического контента и даже коротких видео и аудио файлов небольшого объёма.

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

Аббревиатура «swf» изначально расшифровывалась как «ShockWave Format». Теперь, для того, чтобы не было путаницы с другими флеш-приложениями, этот формат называется «Small Web Format» (маленький веб-формат).

Как и чем открыть SWF?

К сожалению, открыть данный файл с помощью стандартных средств просмотра изображений Windows не представляется возможным. Тут ситуация очень схожа с форматом «GIF», который хоть и отображается как изображение, но запустить анимацию нельзя. Так чем же всё-таки можно просмотреть такого рода файлы?

Браузеры

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

Запустить swf-файл используя браузер просто:

    Дважды кликните на необходимом swf-файле.

Готово! Браузер откроет наш файл, и впредь все swf-файлы будут ассоциироваться с данной программой.

Adobe Flash Player

Второй доступный и очевидный вариант – использовать программные продукты от «Adobe», так как именно эта компания на данный момент – основной разработчик любого ПО с технологией Flash. Самый распространённый продукт, который есть у каждого – Flash Player.

Итак, чтобы открыть данный тип файлов в этой программе необходимо:

    Открыть Adobe Flash Player, используя ярлык на рабочем столе или через меню «Пуск». В окне программы открываем функцию верхней панели «File» («Файл»), в открывшемся подменю выбираем «Open» («Открыть»).

Готово! Файл откроется и будет воспроизведён Flash Player-ом.

На заметку! Ещё один более быстрый способ – выделить необходимый файл и нажать правой клавишей мыши. В контекстном подменю выбрать подпункт «Открыть с помощью» («Open with»), и уже в нём выбрать Флеш-плеер.

С помощью медиаплеера

Для этого способа подойдёт любой проигрыватель видео для Windows – самый популярный KMPlayer, распространённый VLC media player, или чуть менее известный GOM player. Впрочем, список подходящих программ достаточно велик.

Разберём на примере KM-плеера. Последовательность действий проста:

    Запускаем КМПлеер. Важно открыть именно саму программу, а не конкретный файл. Так будет удобнее, и это поможет избежать вылетов.

На заметку! Также можно запустить файл в плеере, используя контекстное меню. Однако это сработает только в том случае, если программа присутствует в данном подменю.

Видео — Чем открыть файл SWF

Понравилась статья?
Сохраните, чтобы не потерять!

Как вставить флеш игры и swf ролики на сайт

Чтобы отображать на сайте flash ролики или игры используется swf файлы. Например, я таким образом, создавал сайт с флеш играми, которые очень легко подключал за счет тега object.

Для этого вам понадобится загрузить swf файл в директорию сайта (пусть будет demo.swf в корневой папке) и прописать в html страничке следующий код:

Если вы откроете страницу с таким кодом, то увидите свою флешку (например, игру, которая будет работать). Это достаточно простой код. В нем мы выставили размеры, которые должен занимать swf на экране.

Более правильный код подключения ниже:

Он отличается от первого большим количеством параметров (param). classid — имеет константное значение, означающее, что мы используем ActiveX элемент.

Сами параметры вы можете дополнять, в зависимости от ваших задач внутри тега object:

— Качество ролика. Значения: low | autolow | autohigh | high | medium | best

— Заливка фона внутри области ролика, в формате #RRGGBB, например: #ffffff

— Включить ли автопроигрывание ролика. Значения: true | false.

— Нужно ли включать зацикливание ролика. То есть, если включено, то после окончания воспроизведения, начнет проигрывать его заново. Значения: true | false.

— Настраивает положение swf ролика внутри его фрэйма. Значения: l | r | t | b — влево, вправо, вверх и вниз

Существуют и другие параметры для управления swf, но этих основ будет достаточно для вставки обычных флэш анимаций и игр на сайт.

Что такое код swf_lookat

Задумались о получении сертификата ISTQB, но пока не знаете с какой стороны подойти к этому вопросу?

• Продукт у нас хороший, и вы бы сами убедились, если бы не…

Онлайн-тренинги

Конференции

Что пишут в блогах (EN)

Разделы портала

Про инструменты

Локаторы веб-элементов в тест-автоматизации
12.08.2020 00:00

Автор: Энди Найт (Andy Knight)
Оригинал статьи
Перевод: Ольга Алифанова

Если вы занимаетесь тест-автоматизацией через веб-интерфейс (например, при помощи Selenium WebDriver), то, возможно, тратите много рабочего времени на поиск элементов на странице – к примеру, кнопок, полей ввода и блоков. Поиск нужных элементов может быть сложным делом, особенно в тех случаях, когда у них нет уникальных идентификаторов или имен классов. Это руководство поможет вам профессионально находить любые веб-элементы.

Что такое веб-элементы?

Веб-элемент – это индивидуальная сущность, генерирующаяся на веб-странице. Элементы – это все то, что пользователь видит (а иногда и не видит) на странице – заголовки, кнопки «ОК», поля ввода, текстовые блоки… Элементы в HTML определяются через имя тэга, атрибуты и содержание. У них также могут быть дочерние элементы – например, таблицы. CSS может применяться к элементам и менять их цвета, размеры и расположение. Языки программирования обычно получают доступ к веб-элементам как к нодам в объектной модели документа (DOM).

Что такое локаторы веб-элементов?

Веб-элементы и локаторы – это разные вещи. Локатор веб-элемента – это объект, который находит и возвращает веб-элементы на странице по заданному запросу. Короче говоря, локаторы находят элементы.

Зачем нужны локаторы? Как пользователи, мы взаимодействуем с веб-страницами визуально. Мы смотрим, скроллим, кликаем и печатаем посредством браузера. Тест-автоматизация, однако, взаимодействует со страницами программно: ей нужен закодированный способ поиска и манипулирования теми же самыми элементами. Традиционная автоматизация не будет «смотреть» на страницу, как человек – вместо этого она будет искать через DOM.

(Более современные технологии автоматизации позволяют визуальное тестирование – об этом будет сказано чуть позже).

Selenium WebDriver разделяет вопросы поиска элементов и взаимодействия с ними. Вызовы WebDriver для этих двух целей часто идут подряд.

WebDriver предоставляет следующие типы запросов для локаторов через «By»:

provides the following locator query types using “By”:

Какой из них лучше? Обсудим далее.

Локаторы могут возвращать несколько элементов, или вообще их не вернуть! Вот пример:

Большие тест-фреймворки часто используют шаблоны дизайна для структурирования локаторов и взаимодействий. Модель Page Object организует локаторы и методы действий в классы – по странице или по компоненту. Однако я крайне рекомендую шаблон Screenplay, а не Page Object, потому что части Screenplay лучше подаются повторному использованию и масштабированию. Вне зависимости от модели локаторы необходимы.

Как найти элементы?

Элементы могут с трудом поддаваться поиску, когда вы пишете локаторы для тест-автоматизации. Для упрощения работы я использую инструменты разработчика Chrome вместе с моей IDE. Почему Chrome?

  • Все так делают (посмотрите на информацию о долях рынка у браузеров).
  • Инструменты Chrome легко использовать, и они дают много полезной информации.

Чтобы исследовать любую страницу в Chrome, просто кликните правой кнопкой на любом месте страницы:

Вуаля! Инструменты разработчика откроются. Для поиска веб-элементов мы воспользуемся вкладкой Elements.

В Chrome легко выделить элемент визуально. Выберите инструмент «Select» в верхнем левом углу панели инструментов разработчика (она выглядит как квадрат с курсором). Иконка должна поменять цвет на синий.

Затем переместите курсор к нужному элементу на странице. Вы увидите, как каждый элемент подсвечивается, когда вы наводите на него мышь. Соответствующий исходный HTML-код на вкладке Elements также будет подсвечен. Чудненько! Кликните на нужном элементе, чтобы подсветка сохранилась после смещения курсора.

Теперь вы можете изучить тег элемента, классы, атрибуты, содержание, родительские и дочерние элементы.

Как писать хорошие локаторы?

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

Мой список предпочтения типов запросов в порядке убывания:

  1. ID (если уникален)
  2. Имя (если уникально)
  3. Имя класса
  4. CSS-селектор
  5. XPath без текста или индексирования
  6. Текст ссылки/частичный текст ссылки.
  7. XPath с текстом и/или индексированием.

Уникальные ID, имена и имена классов крайне упрощают создание локаторов: запросы будут краткими и не требуют дополнительных якорей. Всегда ратуйте, чтобы ваши разработчики использовали уникальные идентификаторы (например, имена классов) для всех элементов. Однако у многих элементов таких идентификаторов нет, и локаторам приходится полагаться на более сложные CSS-селекторы и (содрогнувшись) XPath. Если это случилось с вами, вот мои рекомендации:

  • Используйте родительские элементы как якоря, если у них есть уникальный идентификатор:
    • Пример CSS-селектора: “#some-list > li”
    • XPath-пример: “//ul[@ , проверяя классы в XPath.
      • Пример: “//div[contains(@class, ‘some-class’)]”
      • У элементов зачастую больше одного класса.
      • “contains” проверит подстроку вместо полной строки класса.
      • Но будьте осторожны, потому что под выдачу попадут также “some-class2”!

    Всегда тестируйте локаторы, в них часто встречаются ошибки синтаксиса и ложноположительные значения. Chrome DevTools упрощает их тестирование – нажмите Ctrl+F на вкладке элементов и вставьте запрос локатора в поле поиска. DevTools подсветит все соответствующие элементы по порядку. Шик-блеск-красота!

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

    1. Запускаю тест без дебага со своей IDE.
    2. Устанавливаю на локаторе брейкпойнт.
    3. Жду, пока тест остановится.
    4. Захожу в DevTools в активном окне Chrome.
    5. Проверяю DOM и тестирую локатор на живой странице.

    Что делать, если тесты нестабильны?

    Тестирование через Web UI часто критикуют за нестабильность, потому что тесты часто падают из-за непредвиденных причин. Однако большая часть ненадежности, с которой сталкиваются тестировщики Web UI (и, зачастую, пользователи Selenium WebDriver как такового) связана с тем, что все Web-взаимодействия изначально создают гоночные условия. Автоматизация и браузер работают независимо друг от друга, и взаимодействие должно синхронизироваться с состоянием страницы. В противном случае WebDriver будет выдавать исключения из-за таймаутов, устаревших и не найденных элементов. В ряде случаев эти проблемы возникают не каждый раз, поэтому их тяжело отследить и исправить.

    Лучший способ избежать гоночных условий таков – всегда ожидайте существования элемента, прежде чем взаимодействовать с ним. Это кажется элементарным, но про это легко забыть. Пакеты Selenium WebDriver всегда предлагают какую-то разновидность объекта WebDriverWait, заставляющего драйвер ожидать истинности определенного условия перед дальнейшими действиями. Простейший способ проверить, существует ли элемент – это проверить список элементов, возвращаемый вызовом FindElements (для списка элементов) и убедиться, что он непустой. Добавление дополнительного вызова для каждого взаимодействия может показаться затратным, однако дизайн-шаблоны хорошо спроектированных фреймворков (например, Screenplay) могут автоматически осуществлять подобные проверки.

    Еще одна хорошая практика – всегда получать «свежие» элементы. Иногда автоматизация вначале получит ряд элементов, а затем через второй запрос получит следующую часть. Или же, в случае с Page Object Factory (никогда ей не пользуйтесь – если в трех словах, она отвратительна), элементы получаются один раз при конструировании Page Object, а затем на них ссылаются. Вне зависимости от способа – чем дольше существует объект на веб-странице, тем более он подвержен тому, чтобы устареть и вызвать исключения. Я видел элементы, необъяснимо устаревающие, даже если они еще присутствовали на странице. Всегда запрашивайте элемент тогда, когда он нужен – в этом случае он не успеет устареть!

    Как искусственный интеллект может помочь в тестировании Web UI?

    Ряд новых основанных на ИИ проектов и продуктов направлен на улучшение автоматизированного тестирования Web UI по сравнению с традиционными методами:

    • Applitools расширяет автоматизацию Selenium WebDriver, добавляя проверки на необычные визуальные различия.
    • Testim может автоматически исправлять сломанные локаторы, что позволяет избежать нестабильности тестов, связанной с изменениями фронтэнда.
    • Mabl – это помощник, который выучит и запустит тесты, которому его научили разработчики, без создания какого-либо кода.
    • Test.ai прогоняет распространенные пользовательские тесты вроде авторизации, поиска и покупок в мобильных приложениях, основываясь на знаниях ИИ о ряде других приложений.
    • Rainforest QA использует краудсорсинг и ИИ для прогона ручных тестов, конкретизированных командой, так, что они получаются почти как автоматизированные.

    Множество инструментов тестирования, основанных на ИИ, очень полезны, но держите в уме, что под капотом они все-таки пользуются локаторами.

    SWIFT коды банков

    SWIFT коды банков

    Введение в SWIFT — код простыми словами

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

    Зачем нужен

    Код SWIFT нужен для получения международного финансового трансфера, который передают отправителю вместе с остальными данными. В набор цифр и букв упакована информация направление платежа: страна, область, банк. СВИФТ код присваивается согласно всемирной структуре унификации (ISO 9362 (ISO 9362 — BIC)), страна типируется по ISO 3166. Простыми словами, что такое SWIFT код — это имя, получаемое при регистрации для идентификации.

    Расшифровка SWIFT кода

    Согласно международным стандартам, СВИФТ код банка записан сочетанием 8 или 11 букв и цифр, разделен на 4 смысловые группы в формате:

    XXXX XX XX XXX -разукрасить четырьмя цветами

    • 1 группа ( первые 4-е символа ) — сокращенное персональное название финансового участника (банк/организация) SABR;
    • 2 группа ( 5-й и 6-й символ ) — аббревиатура страны получателя, в данной кодировке: RU;
    • 3 группа ( 7-й и 8-й символ )— территориальная принадлежность головного подразделения: ММ (Москва);
    • Последние ( три символа) — код подразделения, Самарский регион: SE1.

    Как узнать SWIFT код?

    Информация о том, состоит ли банк в системе и коды предоставляются в офисе финансовой организации, а также:

    • на официальном сайте банка на странице банковских реквизитов;
    • на официальном сайте российского представительства РОССВИФТ на странице SWIFT-коды всех банков России или в нашем разделе SWIFT и БИК коды банков
    • на официальном сайте Банка России в разделе Справочник.

    Swift код бинбанка

    Справочная информация

    SWIFT-код BINORUMM
    БИК 044525117
    Организация ПАО «БИНБАНК»
    Для перечисления средств в долларах США (USD):
    Платить через: The Bank of New York Mellon, New York
    NY, 10286 USA, SWIFT: IRVTUS3N
    Корреспондентский счет: 890-0514-841
    Банк-получателя: SWIFT: BINORUMM B&N BANK, Moscow
    Для перечисления средств в евро (EUR):
    Платить через: Commerzbank AG, Frankfurt am Main, Germany
    SWIFT: COBADEFF
    Корреспондентский счет: 400887073501EUR
    Банк-получателя: SWIFT: BINORUMM B&N BANK, Moscow
    Для перечисления средств в тенге (KZT):
    Платить через: HALYK SAVINGS BANK OF KAZAKSTAN, Almaty, KZ
    SWIFT-code: HSBKKZKXXXX
    Банк-посредник: BANK OTKRITIE FINANCIAL CORPORATION (PUBLIC JOINT-STOCK COMPANY) Moscow, RU,
    SWIFT-code: JSNMRUMMXXX
    Корреспондентский счет: 30109398500000000006
    Банк-получателя: B AND N BANK (PUBLIC JOINT-STOCK COMPANY), Moscow, RU,
    SWIFT-code: BINORUMMXXX
    Греческий филиал ПАО «БИНБАНК»
    www.bnbank.gr
    Перевод в евро (EUR)
    Bank B&N BANK GREEK BRANCH
    Syngrou Av. 130, 11745, Athens, Greece
    SWIFT CODE KEDRGRAA
    Direct member of Target2
    Перевод в долларах США (USD)
    Bank B&N BANK GREEK BRANCH
    Syngrou Av. 130, 11745, Athens, Greece
    SWIFT CODE KEDRGRAA
    Corr. account no
    SWIFT / BIC
    30303840000000000200 with B&N Bank (Public Joint-Stock Company) BINORUMM
    Corr. account no 854273430 of B&N Bank (Public Joint-Stock Company)
    with J.P. Morgan Chase Bank, New York, USA
    SWIFT / BIC CHASUS33
    Рублевый перевод (RUB)
    Bank B&N BANK GREEK BRANCH
    Syngrou Av. 130, 11745, Athens, Greece
    SWIFT / BIC KEDRGRAA
    Corr. account no
    SWIFT / BIC
    30303810700000000200 with B&N Bank (Public Joint-Stock Company)
    BINORUMM
    Corr. account no 30101810245250000117 of B&N Bank (Public Joint-Stock Company) with Central Bank of Russian Federation
    BIK code 044525117 of B&N Bank (Public Joint-Stock Company)

    Swift код АЛЬФА-БАНК

    Справочная информация

    SWIFT-код ALFARUMM
    БИК 044525593
    Организация АО «АЛЬФА-БАНК»

    Полное фирменное наименование АКЦИОНЕРНОЕ ОБЩЕСТВО «АЛЬФА-БАНК»
    Сокращенное фирменное наименование АО «АЛЬФА-БАНК»
    Полное фирменное наименование на английском языке Joint Stock Company «ALFA-BANK»
    Сокращенное фирменное наименование на английском языке AO «ALFA-BANK»
    Место нахождения: 107078, г. Москва, ул. Каланчевская, д. 27
    Почтовый адрес: 107078, г. Москва, ул. Каланчевская, д. 27
    Центральный офис
    Адрес: 107078, Москва, ул. Каланчевская, 27
    Тел.: +7 495 620-91-91
    Телекс: 412089 ALFA RU
    S.W.I.F.T.: ALFARUMM
    email: mail@alfabank.ru

    В Центральном офисе обслуживание клиентов не производится.
    По вопросам обслуживания просьба обращаться в отделения Альфа-Банка.

    Swift код Банк ВТБ

    Справочная информация

    SWIFT-код VTBRRUM2MS2
    БИК 044030832
    Организация ПАО «Банк ВТБ»

    Полное название: Банк ВТБ (публичное акционерное общество)
    Генеральная лицензия на осуществление банковских операций: № 1000
    Адрес местонахождения: 190000, г. Санкт-Петербург, ул. Большая Морская, д. 29
    Почтовый адрес: Банк ВТБ (ПАО), ул. Воронцовская, д. 43, стр. 1, г. Москва, 109147
    Единая справочная служба: 8-800-100-24-24 (бесплатный звонок по России)
    (495) 777-24-24 Факс:(495) 258-47-81
    Электронная почта:info@vtb.ru (для справок и предложений)
    compliance@msk.vtb.ru (для инсайдеров)
    Интернет-сайт: www.vtb.ru

    Реквизиты для клиентов ВТБ (ПАО) и экс-Банка Москвы (ПАО)

    Филиал «Центральный» Банка ВТБ (ПАО) г. Москва

    Корсчет: к/с: 30101810145250000411 в Главном управлении Банка России по Центральному федеральному округу г. Москва
    БИК: 044525411
    ИНН: 7702070139
    КПП: 770943002
    SWIFT:VTBRRUM2MS2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Северо-Западный» Банка ВТБ (ПАО) г. Санкт-Петербург

    Корсчет: 30101810940300000832 в Северо-Западном Главном управлении Центрального банка Российской Федерации
    БИК: 044030832
    ИНН: 7702070139
    КПП: 783543011
    SWIFT: VTBRRUM2SP2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Уральский» Банка ВТБ (ПАО) г. Екатеринбург

    Корсчет: 30101810765770000545 в Расчетно-кассовом центре Уральского главного управления Центрального банка Российской Федерации
    БИК: 046577545
    ИНН: 7702070139
    КПП: 665843003
    SWIFT: VTBRRUM2EK2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Дальневосточный» Банка ВТБ (ПАО) г. Южно-Сахалинск

    Корсчет: 30101810364010000818 в Отделении по Сахалинской области Дальневосточного главного управления Центрального банка Российской Федерации
    БИК: 046401818
    ИНН: 7702070139
    КПП: 650143001
    SWIFT: VTBRRUM2KH2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Сибирский» Банка ВТБ (ПАО) г. Новосибирск

    Корсчет: 30101810850040000788 в Сибирском главном управлении Центрального банка Российской Федерации
    БИК: 045004788
    ИНН: 7702070139
    КПП: 540643001
    SWIFT: VTBRRUM2NS2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Приволжский» Банка ВТБ (ПАО) г. Нижний Новгород

    Корсчет: 30101810922020000728 в Расчетно-кассовом центре Советский г. Нижний-Новгород Волго-Вятского Главного управления Центрального банка Российской Федерации
    БИК: 042282728
    ИНН: 7702070139
    КПП: 526043001
    SWIFT: VTBRRUM2NI2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Северо-Кавказский» Банка ВТБ (ПАО) г. Ставрополь

    Корсчет: 30101810707020000802 в Отделении по Ставропольскому краю Южного главного управления Центрального банка Российской Федерации
    БИК: 040702802
    ИНН: 7702070139
    КПП: 263443001
    SWIFT: VTBRRUM2ST2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Филиал «Южный» Банка ВТБ (ПАО) г. Ростов-на Дону

    Корсчет: 30101810160150000063 в Отделении по Ростовской области Южного главного управления Центрального банка Российской Федерации
    БИК: 046015063
    ИНН: 7702070139
    КПП: 616443001
    SWIFT: VTBRRUM2RN2
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    Реквизиты экс-ВТБ24 (ПАО)

    Филиал № 6602 Банка ВТБ (публичное акционерное общество) в г. Екатеринбурге

    Корсчет: 30101810165770000501
    БИК: 046577501
    ИНН: 7702070139
    КПП: 667143002
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 6602 in Ekaterinburg

    SWIFT: VTBRRUM2EK3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 7806 Банка ВТБ (публичное акционерное общество) в г. Санкт-Петербурге

    Корсчет: 30101810240300000707
    БИК: 044030707
    ИНН: 7702070139
    КПП: 783543012
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 7806 in Saint-Petersburg

    SWIFT: VTBRRUM2SP3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 6318 Банка ВТБ (публичное акционерное общество) в г. Самаре

    Корсчет: 30101810422023601968
    БИК: 043601968
    ИНН: 7702070139
    КПП: 631543002
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 6318 in Samara

    SWIFT: VTBRRUM2SA3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 5440 Банка ВТБ (публичное акционерное общество) в г. Новосибирске

    Корсчет: 30101810450040000719
    БИК: 045004719
    ИНН: 7702070139
    КПП: 540143001
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 5440 in Novosibirsk

    SWIFT: VTBRRUM2NS3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 3652 Банка ВТБ (публичное акционерное общество) в г. Воронеже

    Корсчет: 30101810545250000855
    БИК: 042007855
    ИНН: 7702070139
    КПП: 366643002
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 3652 in Voronezh

    SWIFT: VTBRRUM2VR3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 2351 Банка ВТБ (публичное акционерное общество) в г. Краснодаре

    Корсчет: 30101810703490000758
    БИК: 040349758
    ИНН: 7702070139
    КПП: 231043002
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 2351 in Krasnodar

    SWIFT: VTBRRUM2KD3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 2754 Банка ВТБ (публичное акционерное общество) в г. Хабаровске

    Корсчет: 30101810708130000713
    БИК: 040813713
    ИНН: 7702070139
    КПП: 272143002
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 2754 in Khabarovsk

    SWIFT: VTBRRUM2KH3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Филиал № 7701 Банка ВТБ (публичное акционерное общество) в г. Москве

    Корсчет: 30101810345250000745
    БИК: 044525745
    ИНН: 7702070139
    КПП: 770943003
    № счета: № счета получателя
    Получатель: Фамилия, имя, отчество

    VTB Bank (public joint-stock company) Branch N 7701 in Moscow

    SWIFT: VTBRRUM2MS3
    with PJSC VTB BANK, MOSCOW,
    SWIFT: VTBRRUMM

    Swift код Сбербанк

    Справочная информация

    SWIFT-код SABRRUMM
    БИК 044525225
    Организация ПАО «Сбербанк России»
    Полное фирменное наименование Публичное акционерное общество «Сбербанк России»
    Сокращенное фирменное наименование ПАО Сбербанк
    Юридический адрес Россия, Москва, 117997, ул. Вавилова, д. 19
    Почтовый адрес Москва, 117997, ул. Вавилова, д. 19
    Телеграфный адрес г. Москва, В-312, Россбербанк
    Телефакс + 7 (495) 957-57-31, + 7 (495) 747-37-31
    Телетайп 114569 SBRF RU
    Телекс 414733 SBRF RU
    SWIFT-код SABRRUMM
    Код Reuters Dealing SBRF, SBRR, SBRO
    E-mail sberbank@sberbank.ru
    Сайт www.sberbank.ru, www.sberbank.com
    Реквизиты ПАО Сбербанк Кор. счет 30101810400000000225
    в Главном управлении Центрального банка Российской Федерации по Центральному федеральному округу г. Москва (ГУ Банка России по ЦФО)
    БИК 044525225
    КПП 773601001
    ИНН 7707083893
    ОГРН 1027700132195
    Коды ОКПО 00032537
    ОКТМО 45397000000
    ОКВЭД 64.19
    ОКОГУ 4100104
    ОКФС 41
    ОКОПФ 12247
    ОКАТО 45293554000

    Основная информация

    Валюта Рубли РФ, иностранная валюта (доллары США, евро и др.) 1
    Срок исполнения перевода Максимально – 2 рабочих дня
    Максимальная сумма Без ограничений 2
    Возможность отмены перевода Есть

    Комиссия за перевод

    Получить наличные 3 в другом банке,
    зачислить на счет в другом банке
    Рубли РФ 2%
    мин. 50 руб.
    макс. 1500 руб.
    Иностранная валюта 1%
    мин. 15 долл. США
    макс. 200 долл. США
    SWIFT— коды филиалов Сбербанка России

    Swift код ТИНЬКОФФ БАНК

    Справочная информация

    SWIFT-код TICSRUMMXXX
    БИК 044525974
    Организация АО «ТИНЬКОФФ БАНК»

    Реквизиты банка ТИНЬКОФФ БАНК

    Кор. счёт 30101810145250000974
    ОГРН 1027739642281
    ИНН 7710140679
    КПП 771014067
    ОКПО 29290881
    ОКАТО 45283587000
    ОКТМО 45372000000
    ОКВЭД 64.19

    БИК АО «ТИНЬКОФФ БАНК»

    БИК 044525974
    Корреспондентский счет 30101810145250000974
    Полное название организации АО «ТИНЬКОФФ БАНК»
    Короткое название организации ТИНЬКОФФ БАНК
    Тип организации Банк
    Расположение организации МОСКВА
    Код SWIFT TICSRUMMXXX

    Swift код Raiffeisenbank

    Справочная информация

    SWIFT-код RZBMRUMM
    БИК 044525700
    Организация АО «Райффайзенбанк»

    Полное фирменное наименование (в соответствии с учредительными документами) на русском языке: Акционерное общество «Райффайзенбанк»
    на английском языке: Joint Stock Company Raiffeisenbank
    Сокращенное фирменное наименование на русском языке: АО «Райффайзенбанк»
    на английском языке: AO Raiffeisenbank
    Юридический адрес
    (в соответствии с учредительными документами): 129090, Москва, ул.Троицкая, д.17, стр. 1
    Почтовый адрес: 129090, Москва, ул. Троицкая, д. 17, стр. 1
    Телефон/Факс: +7 495 721-99-00/ +7 495 721-99-01
    Код отрасли по ОКОНХ 96120
    Код организации по ОКПО 42943661
    Номер корреспондентского счета в рублях 30101810200000000700
    БИК 044525700
    ИНН 7744000302
    КПП 770201001
    ОКВЭД 64.19 (КДЕС Ред. 2)
    ОГРН 1027739326449
    SWIFT RZBMRUMM

    Райффайзенбанк осуществляет переводы в следующих валютах:

    USD — Доллар США US Dollar

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank CITIBANK NA
    399 Park Avenue, New York, NY 10022, USA
    S.W.I.F.T. CITIUS33
    ABA 021000089
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 36343873
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter
    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank THE BANK OF NEW YORK MELLON
    One Wall Street, New York, NY 10286, USA
    S.W.I.F.T. IRVTUS3N
    ABA 021000018
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 8901303402
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы (далее ОПФ) в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус)
    Адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank Raiffeisen Bank International AG
    Am Stadtpark 9, A-1030 Vienna, Austria
    S.W.I.F.T. RZBAATWW
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 001-55.025.928
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank National Australia Bank LTD
    800 Bourke Street, Docklands, Melbourne, VIC 3008, Australia
    S.W.I.F.T. NATAAU33
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 1803 135101 500
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank Priorbank Joint Stock Company
    31 A. Khoruzhey Str., Minsk, Belarus
    S.W.I.F.T. PJCBBY2X
    Счет в банке- корреспонденте
    Acc. with correspondent bank № BY15PJCB1702643000026RZBM933
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank Raiffeisen Bank International AG
    Am Stadtpark 9, A-1030 Vienna, Austria
    S.W.I.F.T. RZBAATWW
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 071-55.025.928
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank Union Bank of Switzerland (UBS)
    45 Bahnhofstrasse, 8021 Zurich, Switzerland
    S.W.I.F.T. UBSWCHZH80A
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 6927205K
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary
    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес
    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information
    Назначение платежа, раскрывающее экономическую суть
    Примеры:
    Для получателя юридического лица:
    Payment for tour service, contract # 1 dd. 01.01.2010
    Для получателя физического лица:
    Transfer for current expenses of my daughter

    Банк-корреспондент
    Банка получателя
    Correspondent bank of
    beneficiary’s bank BANK OF CHINA (RUSSIA)
    Prospekt Mira 72, Moscow, Russia, 129110
    S.W.I.F.T. BKCHRUMM
    Счет в банке- корреспонденте
    Acc. with correspondent bank № 30109156400000000023
    Банк получателя
    Beneficiary’s bank Raiffeisenbank AO
    Адрес банка получателя
    Beneficiary’s bank address 129090, Russia, Moscow, Troitskaya str. 17, bld. 1
    S.W.I.F.T. RZBMRUMM
    Счет получателя
    Beneficiary’s Acc. № № счета получателя (20-значный)
    Получатель
    Beneficiary

    Наименование организации с обязательным указанием организационно-правовой формы в соответствии с учредительными документами/ полное ФИО получателя (для индивидуальных предпринимателей — ФИО полностью и правовой статус), адрес

    Примеры:
    Для получателя юридического лица:
    OOO Romashka
    125555, Russia, Moscow, Svobody str., 1
    Для получателя индивидуального предпринимателя:
    IP Ivanov Ivan Ivanovich
    150552, Moscow, Lesnaya str., 1 bld. 15
    Для получателя физического лица:
    Anna Igorevna Smirnova
    160355, Russia, Moscow, Lodochnaya str., 5, bld. 13
    Назначение платежа
    Remittance Information

    Назначение платежа, раскрывающее экономическую суть

    Что такое код swf_lookat

    The swf_lookat() function defines a viewing transformation by giving the viewing position (the parameters view_x , view_y , and view_z ) and the coordinates of a reference point in the scene, the reference point is defined by the reference_x , reference_y , and reference_z parameters. The twist controls the rotation along with viewer’s z axis.

    You can really do stunning 3D effects using swf_lookat() [and swf_ortho, of course].
    Here is a little example of doing a simple 3D-rotation around a text.
    The Text is split up into 2 parts, because Flash does not (yet?) support perspective-skewing, only rotation, 2D-skew and scaling. But if you split your 3D-object up into several parts, each part is transformed seperately and you can trick around that loss of perspective-skew.

    Have a lot of fun experimenting with that piece of code!

    — — — — — — >8 — cut here — — — — —
    ( «Content-type: application/x-shockwave-flash» );
    swf_openfile ( «php://stdout» , 320 , 200 , 25 , 1 , 1 , 1 );

    swf_ortho (- 100 , 100 , — 100 , 100 , — 100 , 100 ); #create 3D coordinates

    swf_definefont ( 0 , «Pix3» );
    swf_addcolor ( 0 , 0 , 0 , 1 );
    swf_fontsize ( 10 );
    swf_fonttracking ( 0.2 );
    for ( $i = 0 ; $i 628 ; $i += 8 ) <
    $j = $i / 100 ;
    swf_pushmatrix ();
    swf_translate ( 0 , 0 , 0 );
    swf_perspective ( 100 , 1 , 0 , 10 );
    swf_lookat ( sin ( $j )* 60 , 50 , cos ( $j )* 60 , 0 , 00 , 0 , 0 );

    swf_definetext ( 1 , «HotKey@» , 0 );
    swf_translate (- 50 , 0 , 0 );

    swf_placeobject ( 1 , 10 );

    swf_definetext ( 2 , «hehe.com» , 0 );
    swf_translate ( 55 , 0 , 0 );
    swf_placeobject ( 2 , 11 );

    swf_showframe ();
    swf_removeobject ( 10 );
    swf_removeobject ( 11 );
    swf_popmatrix ();
    >

    Способы «защиты» flash-приложений

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

    — введение

    В мире flash (речь, конечно, о клиенте) не существует гарантированной защиты от злоумышленников, можно лишь отсеять совсем незадачливых и усложнить работу тем, кто решит идти до конца. Стремиться стоит к тому, чтобы стоимость и время работы недоброжелателя были как можно выше, а Ваши затраты — как можно меньше. В идеале старайтесь добиться того, чтобы злоумышленнику было проще, быстрее и дешевле купить или написать с нуля, чем обходить Ваши препятствия.

    Борьба между системами защиты и системами обхода\снятия защит ведётся постоянно. Это связано с тем, что любому желающему доступна спецификация формата SWF и байткода (тут, здесь и ещё тут), в который компилируется ActionScript3 (далее AS3) код. Это позволяет свободно писать собственные библиотеки и приложения для разбора SWF файлов на составляющие (графику, звуки, байткод и т.д.), и делать что угодно с байткодом, например:

    • писать анализаторы байткода для декомпиляции ABC (ActionScript ByteСode) файлов, которые можно найти в тэгах «DoABC» в скомпилированном AS3 SWF файле (а в AS2 код обычно находится в тэгах «DoAction» и «DoInitAction»);
    • писать приложения, модифицирующие байткод, например, для его обфускации с помощью различных приёмов, которые могут использовать специфику декомпиляции в своих целях;
    • писать приложения, позволяющие изменять (патчить) байткод в уже скомпилированных SWF файлах;
    • модифицировать FP для вывода (трейса) исполняющегося байткода;

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

    — содержание

    — 1. URL-Lock, защита от локального запуска

    Цель – заставить SWF файл работать в определенных условиях, например, только под одним или несколькими доменами, либо запретить локальный запуск.
    После определения того факта, что SWF запущен не там, где должен бы, можно запрограммировать его поведение как угодно. Вы можете отправлять на сервер неугодные домены\URL (если это не localhost) и заносить в какой-нибудь лог.
    Подлинные домены (под которыми должен работать SWF файл) лучше держать в зашифрованном виде или не держать в клиенте вообще (принимать от сервера также в зашифрованном виде).
    Рассмотрим несколько способов привязки к доменам и определения локального запуска.

    Привязка к доменам с помощью получения текущего URL\домена

    Это самый распространённый способ привязки к домену. Для получения текущего URL или домена обычно используют:

    а) loaderInfo:

    • root.loaderInfo.url ( _root._url – для AS2) – содержит путь до самого SWF файла, если SWF загружен с помощью другого SWF, то root.loaderInfo.url у загруженного SWF останется прежним
    • root.loaderInfo.loaderURL – содержит путь до самого SWF файла, либо до его загрузчика, если он был загружен с помощью другого SWF файла
    • root.loaderInfo.loader — содержит ссылку на экземпляр класса Loader, либо null, если SWF не был загружен внешним загрузчиком (заметьте, что root.loaderInfo.loader == root.parent , а root.parent == stage , если SWF не имеет загрузчика). Причём, если загрузчик не находится в доверенной зоне (находится в другом SecurityDomain), то при обращении к root.loaderInfo.loader или к root.parent из загружаемого SWF, будет возникать исключение SecurityError, в сообщении которого также будет содержаться ссылка до загрузчика

    Пути не изменятся, если SWF встроить в HTML страницу на «неродном» домене без перемещения самого SWF файла.

    б) LocalConnection: позволяет получить имя домена, под которым в данный момент запущен SWF файл с помощью LocalConnection.domain .
    Если чужой SWF находится в домене, отличном от домена Вашего SWF, и Вы загрузили тот SWF в текущий домен безопасности так:
    или с помощью Loader.loadBytes , то LocalConnection.domain загруженного SWF будет содержать домен Вашего SWF.
    Пути не изменятся, если SWF встроить в HTML страницу на «неродном» домене без перемещения самого SWF файла.

    в) ExternalInterface: позволяет использовать JavaScript (далее JS). Например, путь до текущей страницы, в которую встроен SWF, можно получить с помощью window.location.href . Для вызова JS используйте ExternalInterface.call . Т.к. call в качестве первого параметра принимает название метода, а window.location.href – свойство, то следует использовать toString():
    Кстати, домен тоже можно получить через ExternalInterface.call :

    ExternalInterface можно использовать и для вызова своих JS функций на той странице, где находится SWF – как изначально существующих, так и созданных Вами с помощью eval:
    И не стоит забывать, что этот способ требует выполнения JS, что не всегда возможно.
    При попытке обойти с помощью встраивания в HTML страницу на «неродном» домене без перемещения самого SWF файла, выполнение ExternalInterface.call будет генерировать SecurityError.

    г) FlashVars: иногда, при размещении SWF в HTML страничке или при загрузке из другого SWF, передают путь до домена и\или иные данные через FlashVars (что на самом деле – плохо, т.к. это явная «дыра» для отвязки от доменов):

    FlashVars можно передать в качестве параметра:
    или через имя файла:

    Дотянуться до FlashVars можно так:
    — в AS3 – root.loaderInfo.parameters.var1
    — в AS2 – _root.var1

    Привязка к доменам без получения текущего URL или домена

    Этот способ основан на кроссдоменной политике безопасности. Привязываемый SWF при запуске пытается загрузить по прямому пути «специальный» файл-пустышку с определённого хоста, на котором находится файл crossdomain.xml с разрешением загрузки ресурсов только с доверенных доменов, на одном из которых и должен находиться SWF. Соответственно, если «ворованный» SWF файл будет обращаться к «специальному» файлу с домена, не прописанного в crossdomain.xml, произойдет нарушение изолированной среды (sandbox security violation) и «специальный» файл не загрузится. Также при этом сгенерируется исключение и сработает событие SecurityErrorEvent.SECURITY_ERROR у экземпляра класса LoaderInfo ( Loader.contentLoaderInfo ). Это позволит определить то, что SWF находится не там, где должен бы.
    К «специальному» файлу следует обращаться по прямому пути, чтобы предотвратить его подмену.

    Определение локального запуска

    Локальный запуск SWF можно определить с помощью получения ссылки на SWF или HTML и проверки её на наличие подстроки «file://».
    Если SWF запущен вне HTML, то метод ExternalInterface.call вернёт null.
    Также можно проверить тип FP, в котором работает SWF, с помощью Capabilities.playerType :

    • «ActiveX» – при проигрывании через ActiveX FP, который, например, используется в IE
    • «Desktop» – для среды выполнения Adobe AIR (кроме SWF-содержимого, загруженного HTML страницей, со свойством Capabilities.playerType имеющим значение «PlugIn»)
    • «External» – при проигрывании через внешний FP или при запуске из-под Flash Professional IDE
    • «PlugIn» – при проигрывании через браузерный плагин (и для SWF-содержимого, загруженного HTML страницей в AIR приложении)
    • «StandAlone» – при проигрывании через автономный FP (при запуске локального SWF файла в браузерах, значение Capabilities.playerType != «StandAlone» )

    Ещё один способ – с помощью сравнения Security.sandboxType с Security.REMOTE .

    Все эти приёмы имеют свои преимущества и недостатки — некоторые не требуют сервера, но требуют перекомпиляции SWF файла при изменении доменов, к которым должна осуществляться привязка, а некоторые — наоборот.
    В кодах к статье (ссылка на архив есть в конце статьи), в папке «1-URL Lock», вы найдёте пример с реализацией некоторых из описанных методов и пару примеров патчей одного из методов.
    Внимание! Большинство приёмов URL-Lock можно обойти, работая из-под локального сервера, такого, как Denwer или XAMPP.

    — 2. Переменные, ресурсы и классы

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

    Защита переменных

    Переменные надо прятать и защищать от изменений. Наиболее простой способ скрытия – написание своих «обёрток» вокруг базовых классов.
    Например, CryptInt, CryptString и т.д. В самих классах можно написать методы для получения и отдачи значения, шифруя или расшифровывая его, что спрячет переменную в памяти. Взгляните на реализацию классов CryptInt и CryptString в кодах к статье, в папке «2-Memory&Domain\MemoryExample».
    Также, для сокрытия значений переменных, можно разбивать их на составляющие, перемешивать, сдвигать и т.д. Можно даже попробовать написать некий конвейер, который будет перемещать скрываемое значение из одних переменных в другие, освобождая использованные переменные для GC (Garbage Collector). В качестве «временных хранилищ» для таких вот перерабатываемых переменных, можно использовать ByteArray, возможно, с привлечением «Алхимии» (fastmem из Azoth, Memory из Apparat).
    А чтобы переменные не смогли поменять, даже если их найдут, то можно использовать, например, сравнение значения переменной с эталоном. Причём сравнение можно производить как при изменении переменной или обращении к ней, так и через заданные промежутки времени.

    Подмена ресурсов

    Подменить SWF целиком, либо подгружаемые внешние файлы можно в кэше браузера. В фальшивом SWF файле, или в подменённом ресурсе могут быть произведены любые изменения графики (размеры, прозрачность, сдвиг, частота кадров и т.д.) и кода (который делает то, чего бы вам меньше всего хотелось).
    Чтобы усложнить задачу недоброжелателю (гарантированно защититься от подмены нельзя), следует проверять подлинность загружаемых данных и самого себя – можно, например, хранить MD5 и сравнивать при загрузке, причем MD5 хранить где-нибудь подальше и в зашифрованном виде.
    Если SWF общается с сервером – производить скрытые проверки – отсылать на сервер MD5 загружаемых ресурсов, например.

    Если есть возможность, то, для предотвращения подмены, внешние SWF и иные ресурсы можно хранить в теле основного SWF в зашифрованном виде и загружать их с помощью Loader.loadBytes , предварительно достав их из себя. Loader.loadBytes не сохраняет загружаемые данные в кэш браузера, но, в то же время, Ваш главный SWF будет закэширован. Подробнее об использовании Loader.loadBytes в таких случаях написано в одном из следующих разделов статьи.
    Также можно запрашивать ресурсы и другие SWF файлы с сервера, лежащие в зашифрованном виде, далее расшифровывать их и загружать через Loader.loadBytes .

    Переопределение классов

    Скажу сразу, что гарантированно от этого защититься также не получится.
    Подменять классы можно с помощью загрузки целевого SWF в ApplicationDomain загрузчика. Чтобы это сделать, можно написать загрузчик, содержащий класс с таким же именем, что и у подменяемого, и загрузить SWF в свой домен:
    Таким образом, загружаемый SWF вынужден будет «общаться» с классом из своего загрузчика. Примеры реализации Вы сможете посмотреть в кодах к статье, в папке «2-Memory&Domain\applicationDomain». Вы встретите там примеры подмены классов с помощью загрузки в дочерний и в свой домен. В «жертве» Вы сможете найти несколько вариантов проверки на загруженность (которые обходятся заменой класса, в котором они содержатся).
    Можно попытаться воспрепятствовать этому, загружая основной SWF через собственный загрузчик в новый ApplicationDomain:
    и установив прочную связь между загрузчиком и основным SWF так, чтобы их было очень трудно «разлучить». Однако, если подменят загрузчик и сумеют эту связь сохранить, то эти усилия будут напрасны.

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

    — 3. Водяные знаки (watermarks)

    Могут использоваться для защиты от копирования, нелегального использования, а также в рекламных целях.

    Вот некоторые их типы:

    1. Хорошо заметные элементы: текст, логотип, изображение и т.д.
      Если метка «впаяна» (относится как просто к изображениям, так и к графике в SWF), то её удаление придётся осуществлять вручную, редактируя данные, которые подверглись применению метки, что может оказаться очень сложной или вовсе невыполнимой задачей.
      Если же метка лежит отдельно (либо добавляется программно), например, на самом верхнем «слое» в SWF, то шансы аккуратно её удалить гораздо выше.
    2. Скрытые элементы. Они могут быть где угодно. От таких водяных знаков зачастую невозможно избавиться, т.к. никто кроме их создателей не будет знать, где искать. Такие метки должны быть уникальными, дабы была возможность доказать в суде, что это действительно метки, и что их невозможно повторить.

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

    — 4. «Упаковывание» SWF

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

    Вы можете добавить SWF в свой flex или flash проект с помощью тэга Embed, например, так:
    Добавленный таким образом файл (это может быть любой двоичный файл или несколько файлов, если тэгов Embed будет несколько) помещается в тэг DefineBinaryData.
    Далее можно загрузить «упакованный» таким образом файл с помощью Loader.loadBytes примерно так:
    Существует масса инструментов для разбора SWF файлов и манипуляции с тэгами, благодаря которым существует возможность заменять или добавлять тэг DefineBinaryData.
    Зная всё это, можно набросать свой простой «упаковщик» для автоматизации процесса. Перед оборачиванием, SWF можно как-нибудь преобразовать, например, обработав простым и быстрым симметричным xor’ом, а в загрузчике (который будет содержать «упакованный» SWF) написать код, который будет расшифровывать хранящийся в нём SWF, и уже затем его загружать. Простое «шифрование» с помощью xor нужно лишь для защиты от автоматической обработки декомпиляторами, чтобы SWF файл не находился внутри загрузчика в «чистом виде», более сложное шифрование бессмысленно.
    Бывает, файлы «внедряют» и другими способами, например, в виде BitmapData, а также, создают несколько уровней вложенности.

    Пример реализации простейшего упаковщика Вы сможете найти в кодах к статье, в папке «3-SWFPacker». Также там лежат два файла: orig.swf и packed.swf – можете попробовать их декомпилировать и сравнить.
    Этот способ обходится, как минимум, двумя путями:
    — исследование алгоритма расшифровщика в загрузчике и написание собственного расшифровщика (трудоёмко, особенно при большой вложенности загрузчиков)
    — сохранение участка памяти, в котором находится уже распакованный и загруженный в FP SWF файл (просто и быстро, особенно, если не использованы средства защиты от сохранения из памяти, о которых написано ниже)

    — 5. Динамическая генерация кода и редактирование SWF

    Меня уже неоднократно спрашивали – возможно ли во flash в реальном времени генерировать код или создавать и редактировать другие SWF файлы? Ответ – да, это возможно!
    Что касается кода, попробуйте AS3Commons ByteCode. Этот проект позволит Вам собирать и выполнять в реальном времени байткод.
    Вы можете создавать классы с различными методами и свойствами с нуля, или наследуясь от других классов. Тела методов, например, могут описываются с помощью байткода линейно — methodBuilder.addOpcode(Opcode.getlocal_0) , или сразу блоками:
    Вы можете загрузить сгенерированный код в AVM с помощью abcBuilder.buildAndLoad() .
    Также для манипуляций с байткодом Вы можете попробовать as3abc, который, по словам автора, является частичным портом замечательного framework’а Apparat от небезызвестного Joa Ebert’а.
    Если же Вы мечтаете о динамическом исполнении скрипта, а не байткода, то посмотрите на as3scriptinglib. Используя этот проект, Вы сможете в реальном времени компилировать и выполнять ActionScript 3/ECMAScript скрипты, включая JavaScript. Посмотреть на то, как это работает можно во flex демо-приложении. К сожалению, проект давно не обновляется.

    Для экспериментов с самим SWF файлом и его структурой, попробуйте as3swf или swfassist.

    Возможность генерации кода на лету, а также возможности редактирования и создания SWF в реальном времени, позволяют создавать различные сложные сценарии и приёмы для запутывания злоумышленника и скрытия Вашего кода. Вот, например первые 3 приёма, что пришли мне на ум:

    1. Генерировать и исполнять код\байткод на клиентской стороне по частям, приходящим от сервера, оставляя недоброжелателям в оригинальном SWF из всего кода, лишь то, что Вам не жалко им оставить (код свободных библиотек, кнопок и т.д.) + код расшифровщика и «строителя» уже финального кода.
    2. Собирать SWF по частям на клиентской стороне, аналогично трюку с кодом – можно собирать по тэгам, получая их от сервера, или, распаковывая поодиночке из зашифрованных данных, упакованных в загрузчике.
    3. Создавать самомодифицирующийся в процессе исполнения код, который, например, будет по определённым правилам или шаблонам генерировать одни и те же методы разными способами. Например, i++ можно реализовать как i+=1 (и это будет разный байткод, по крайней мере, он сейчас разный, в FP 10.1), также циклы могут быть реализованы по-разному, и т.д.
      Возможно, удастся так исхитриться, чтобы сгенерированный код изменял те методы, которые его сгенерировали. Например, чтобы в следующей итерации их выполнения сгенерировались уже другие классы и методы, тем самым значительно усложняя и запутывая код, чтобы, в случае его получения злоумышленником, последнему пришлось потратить как можно больше времени на разбор всей этой «каши».
      Предполагаю, что это довольно сложный (или даже невозможный во flash) трюк. Реально работающей реализации этой идеи на flash я пока не встречал. Если Вы встречали – то подскажите где посмотреть, буду рад изучить.

    — 6. Запутывание кода (obfuscation) и скрытие данных

    Сначала об обфускации. Ей могут подвергаться как исходный так и скомпилированный в байткод код. Обфускация исходного кода не так удобна и эффективна, запутывание байткода выглядит куда как привлекательней, т.к. исходный код должен удовлетворять требованиям компилятора, чего не скажешь о байткоде, в котором, к тому же, есть куда больший простор для проявления фантазии и смекалки.
    Байткод обфускация может включать в себя переименование элементов в бессмысленные и недопустимые для компилятора имена, использование некоторых анти-декомпиляторских трюков, скрытие и «замусоривание» кода и др.

    Переименование — это, пожалуй, единственный необратимый и 100% работающий способ хоть что-то спрятать во flash. Суть метода заключается в изменении у методов, свойств, пакетов и других элементов имён, которые сохраняются после компиляции, но не используются при выполнении кода. Автоматически восстановить оригинальные имена невозможно, придётся это делать вручную, догадываясь о них по смыслу во время исследования кода. После обфускации новые имена могут содержать недопустимые символы или зарезервированные слова, что не позволит с лёгкостью перекомпилировать и использовать код, полученный после декомпиляции.

    Иногда при обфускации байткода расставляют «ловушки» для декомпиляторов, основанные на том, что декомпиляторы анализируют код комплексно, блоками, в отличие от FP, который исполняет его линейно, например:

    • Некорректный «мёртвый код» — создаётся искусственный условный переход, который всегда отрабатывает только одну ветку. Таким образом, во второй ветке мы имеем код, который никогда не выполнится, но будет обрабатываться декомпиляторами. И если там что-то непредсказуемое (а мы можем сделать там что угодно, т.к. FP до туда никогда не доберётся), то некоторые декомпиляторы могут повести себя необычно – например, аварийно завершиться.
    • Непредсказуемые байты в тех областях, которые игнорирует FP, но которые не всегда игнорируют и корректно обрабатывают декомпиляторы.

    Кроме того, код можно просто «замусорить», увеличив его в объёмах и снизив его читабельность. Это может негативно сказаться на производительности.

    Скрытие данных можно осуществлять разными способами, например:

    • Скрытие в SWF тэгах. Как я уже говорил, можно использовать flex-тэг Embed для встраивания любых файлов в SWF тэг DefineBinaryData, однако, можно создать и SWF тэг своего типа (FP такие тэги просто пропускает) с любыми данными, и затем извлекать их во время выполнения с помощью самораспарсивания.
      Пример есть в файлах к статье, в папке «4-CustomTag» — там находится проект на основе уже упомянутой библиотеки as3swf (изменён класс com.codeazur.as3swf.factories.SWFTagFactory и добавлен com.codeazur.as3swf.tags.TagCustom ). При запуске, SWF проверит — нет ли уже в нём нового тэга, и если есть — то выведет текст из него в текстовое поле, а если тэг не найдётся, то создаст сам в своей копии новый тэг со строкой, загрузит получившийся SWF в себя же с помощью Loader.loadBytes() и ещё предложит сохранить его в новый SWF файл.
    • Пользовательские мета данные. Для внедрения своих метаданных, сначала их необходимо объявить в коде (можно перед объявлением класса, метода, переменной):
      А затем добавить их названия в «Additional compiler arguments» таким образом: -keep-as3-metadata+=FocusMeta,Cool. После этого, Вы сможете обращаться к своим мета данным через XML, который можно получить с помощью describeType() :

    Некоторые декомпиляторы и дизассемблеры позволяют с лёгкостью находить и исследовать пользовательские тэги и метаданные.

    Для того, чтобы самостоятельно научиться создавать качественные помехи декомпиляторам, Вам придётся изучить то, как декомпиляторы исследуют байткод и SWF в целом. Но помните — разработчики декомпиляторов постоянно развивают свои продукты и если Ваш SWF с хитрыми приёмами попадёт к ним, то вскоре эти приёмы могут перестать работать.
    Существуют утилиты для защиты SWF, применяющие только уловки против декомпиляторов или методики «упаковки», без обфускации имён, что позволяет получить чуть ли ни оригинальный исходный код, с помощью качественных публичных или собственных декомпиляторов, который компилируется без ошибок и хорошо читается. Ниже я расскажу о «правильных» инструментах, на которые следует обратить внимание.

    — 7. Защита от сохранения SWF файла из памяти

    Гарантированно защититься от дампа из памяти нельзя. Однако, есть несложный приём, который может усложнить процесс – можно создать множество фальшивых SWF-заголовков (именно по ним обычно ищут SWF файлы в памяти), которые помогут оригинальному SWF затеряться среди них. Чтобы Ваш SWF файл не выделялся на фоне других, можно создать массу фальшивых заголовков с размерами = размерам Вашего SWF файла.
    Чтобы заголовки были видны в памяти, достаточно записать их в ByteArray. Вот пример реализации этого способа, вытянутый из загрузчика одного из протекторов:
    Как Вы могли догадаться, swfBytes – это массив байт с началом «шаблонного» заголовка и «настройками» для создания «фальшивых» заголовков, а в цикле длина у «шаблонных» заголовков заполняется случайным значением в заданном диапазоне.

    — 8. Инструментарий исследователя flash

    Основываясь на собственном опыте, я бы порекомендовал эти инструменты (цены указаны на конец 2010 года):

    Декомпиляторы:

    • Action Script Viewer (ASV) – умно анализирует код, строит timeline, видит все тэги, очень многое умеет. Стоимость лицензии на одного пользователя – $80.
    • AS3 Sorcerer (от разработчика ASV) – декомпилирует только код, для анализа кода используется движок ASV, работает быстро и очень качественно. Если Вы приобретали ASV в 2010 году, то лицензию на AS3 Sorcerer Вам предоставят бесплатно. Стоимость лицензии с бесплатными обновлениями на 3 месяца — $22.
    • Sothink SWF Decompiler – можно пользоваться на незащищённых проектах, если под рукой не оказалось ASV. Стоимость лицензии — $79.99.

    Дизассемблеры (для работы с байткодом):

    • ASV и Sothink умеют показывать байткод, но этого не всегда достаточно.
    • Nemo440 – «Advanced ActionScript 3/ABC2/Flex 2/Flex 3/Flex 4/AIR disassembler». Бесплатен.
    • Yogda – «AVM2 bytecode workbench» – позволяет ассемблировать, патчить байткод, есть встроенная документация по байткоду, иногда падает при анализе защищённых SWF, однако периодически обновляется и обрастает функционалом. Бесплатен.
    • RABCDAsm – «Robust ABC (ActionScript Bytecode) [Dis-]Assembler» – замечательный консольный ассемблер\дизассемблер байткода. Бесплатен (+доступен исходный код).

    Протекторы\обфускаторы:

    • secureSWF — из всей массы продуктов этой категории, что мне удалось попробовать, он единственный сумел качественно позаботиться о целостности и работоспособности всех подопытных приложений и при этом качественно выполнить свою основную задачу. Конечно же, не бывает идеальных продуктов в этой области, но secureSWF даёт очень хороший контроль над всем процессом защиты и позволяет тонко настроить различные параметры. Например, Вы можете настроить переопределяющие правила для переименования, установить уровень «замусоривания» кода и т.д. В самой дорогой редакции, Вы получаете также возможность «упаковывать» SWF или привязать её к домену. К сожалению, цена на этот продукт весьма высока: стоимость Standard редакции составляет $199.
    • irrFuscator — может Вам приглянуться за его возможности по обфускации исходного кода перед компиляцией, однако, я считаю, что такой подход значительно хуже по своему качеству, чем байткод обфускация, т.к. не позволяет использовать запрещённые компилятором символы и различные трюки с байткодом. Этот продукт также умеет работать на уровне байткода, но проекты, которые я пробовал им «накрывать» довольно часто оставались неработоспособными. Стоимость Standard редакции составляет 79 евро.
    • OBFU – пожалуй, это самый дорогой обфускатор для flash, который мне доводилось видеть ( стоимость – 1500 евро ). Автор обфускатора — Николя Канасье, создатель haXe. Не ясно – поддерживает ли он AS3, т.к. примеры, выложенные на сайте проекта, написаны на as2 и датированы 2005 годом. К сожалению, попробовать его в действии мне пока не довелось, поэтому если вдруг Вы его когда-то пробовали, то не поленитесь, напишите отзыв о нём в комментариях.

    Также прошу обратить внимание, что Amayeta SWF Encrypt, DComSoft SWF Protector, Mochi Encryption – это не то, чем Вам стоило бы «защищать» свои проекты (на данный момент), вы потратите Ваши деньги на бесполезную защиту.
    Более того, Вы можете и самостоятельно реализовать простейшую обфускацию, как, например, это сделано в примере от makc3d.

    Депротекторы\декрипторы и т.д.:

    • SWF Reader – проект одного польского умельца — многофункциональный редактор, позволяет работать со структурами, тэгами и т.д. Также имеет встроенные декрипторы\депротекторы для некоторых известных продуктов (в частности, распаковщики для doSWF, secureSWF). Cтоимость лицензии – 10 евро.
    • SWF Decrypt – поможет Вам избавиться от Amayeta SWF Encrypt и DComSoft SWF Protector (Mochi Encryption также в планах разработчика). Бесплатен.

    Разное:

    • SWiX – отличная утилита для редактирования тэгов SWF файла в удобном XML представлении. Бесплатна.

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

    — эпилог

    Резюмируя, можно сказать, что, умело пользуясь подручными средствами для защиты своих проектов, Вы сможете отсеять некоторую аудиторию злоумышленников. Однако, если за исследование вашего SWF файла возьмётся профессионал, то, вероятно, он не остановится перед препятствиями и доведёт дело до конца, особенно, если он мотивирован интересной задачей или достаточным денежным вознаграждением. Поэтому всегда здраво оценивайте свой вклад в защиту своих проектов – не тратьте на это слишком много времени и средств, если это того не стоит.
    И ещё — не компилируйте SWF с отладочной информацией, т.к. она содержит множество полезных потенциальному взломщику данных, не говоря уже о снижении производительности.

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

    Материалы для изучения и источники информации для этой статьи (беспорядочно):

    1. Презентация Claus Wahlers «Hacking SWF» с FITC Amsterdam 2010.
    2. Доклад Симонова Валентина (valyard) «Кто и как взламывает наши игры» с FlashGAMM 2010
    3. Статья Никиты Лещенко на английском о том, как по-простому защитить ресурсы и код, используя шифрование.
    4. Статья от romamik «Защита своими руками».
    5. Статья от Nautilus «Как защитить вашу игру от ребрендинга».
    6. Статья от puzzlesea «Robolander, 25 days later. Защита, борьба с китайцами».
    7. Статья от flashco «Обфускаторы: от бесплатного до €1500».
    8. Alexis’ SWF Reference — описание тэгов всех версий формата, описание заголовка SWF файла и многое другое.
    9. OWASP – в некотором роде вики по вопросам безопасности, относящихся к flash (ссылки на статьи, инструменты и т.д.).
    10. Очень впечатляющая статья о модели безопасности во flash от senocular под названием «Security Domains, Application Domains, and More in ActionScript 3.0».
    11. Статьи от Adobe о безопасности во flash.
    12. Официальная статья от Adobe о безопасности во FP 10 (White Paper).

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

    Что такое swift код

    Содержание статьи

    • Что такое swift код
    • Как по БИК узнать банк
    • Как перевести деньги на счет в иностранном банке

    Функция и работа SWIFT

    SWIFT работает как международное сообщество, в котором каждый из участников имеет собственный уникальный идентификатор. На сегодняшний день кодами SWIFT пользуются около 9000 банков, зарегистрированных в разных странах. Чтобы совершить денежный перевод, участнику сообщества на сегодняшний день достаточно знать данный код и персональный идентификатор получателя IBAN. С использованием SWIFT ежедневно осуществляется около 2 млн транзакций, которые выполняются в деньгах или ценных бумагах. Иногда код SWIFT называется BIC (БИК), SWIFT Code или SWIFT ID.

    Формирование кода

    SWIFT код формируется в соответствии с общепринятым стандартом ISO 9362. Сам код представляет собой буквенно-численную комбинацию, которая имеет вид BBBB CC LL bb. Каждая из секций представляет собой определенный идентификатор, который говорит о местоположении отдельно взятого банка.

    На первом месте кода идут четыре цифры, чередующиеся с буквами для обозначения конкретного банка или другой финансовой организации. Этот параметр является ключевым при отправке платежа и должен быть точно указан во время произведения перевода. Код CC определяет страну, в которой расположен банк получателя. Буквенно-цифровой код страны применяется в соответствии с определенным стандартом ISO 3166 и может быть получен у сотрудников банковских организаций. Параметр LL кода определяет конкретное местоположение получателя платежа. Последние 3 цифры SWIFT задают код филиала банка. Если подразделения у финансовой организации отсутствуют, код может быть задан как XXX.

    Где получить SWIFT

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

    Также параметр SWIFT можно узнать на официальном сайте банка, который обслуживает счет получателя. Если узнать нужную комбинацию цифр не представляется возможным, в интернете существуют специальные сервисы поиска SWIFT-идентификаторов. Чтобы узнать код на таких ресурсах, как Routingnumbers или The swift codes, вам достаточно будет указать адрес банка-реципиента.

    Илон Маск рекомендует:  SVG Map. Интерактивная карта
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL