Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Максимально доступная идентификация устройства средствами AS3 (http://www.flasher.ru/forum/showthread.php?t=211111)

Zebestov 27.06.2015 19:41

Максимально доступная идентификация устройства средствами AS3
 
Подскажите способ максимально идентифицировать устройство средствами только лишь AS3. Пока я вижу лишь MD5 от Capabilities.serverString, но может я что-то упускаю, может еще чивота есть? ANE не предлагать.

P.S.
Речь идет не об уникальном id девайса, а о том, чтобы максимально усложнить хитрым перцам попытки применить слепки данных (или как там оно называется) приложения, доступные на всяких 4pda и иже с ними, на своем девайсе.

caseyryan 27.06.2015 20:32

Цитата:

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

Zebestov 27.06.2015 20:39

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

Так вот хотелось бы данные в базе подписать ключом, зависимым от устройства, чтобы не проканал перенос кэша с какого-то Lenovo на какой-то HTC, например, или с SGT 2 на SGT 3.

AlexCooper 28.06.2015 01:33

Я юзаю нетворк-интерфейс
Код AS3:

private function get networkUID():String {
 
        var mac:String = 'ffffffff-ffff-ffff-ffff-ffffffffffff';
 
        if( NetworkInfo.isSupported ) {
 
                var netfaces:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces();
 
                for each( var netface:NetworkInterface in netfaces) {
 
                        //        trace(netface.displayName+' . '+netface.name+" > "+ netface.active );
                        if (netface.hardwareAddress.length && netface.active) {
                                mac = netface.name;
                                break;
                        }
                }
        } 
 
        return mac.replace( /[\{\}]/g, '' );
}

В нагрузку можно, добавить в хеш, время создания какого-нить статического asset'а

Добавлено через 2 минуты
Но конечно-же, от кулц-хакера и Microsoft незнает как защититься

Zebestov 28.06.2015 01:36

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

Добавлено через 1 минуту
А так да, кулхацкеры меня не беспокоят. Раз такие завзятые — хай почувствуют победу, не проблема! Мне бы от зевак-халявщиков отмахаться.

AlexCooper 28.06.2015 01:50

Цитата:

Сообщение от Zebestov (Сообщение 1184182)
Про сетевуху спасибо, беру.

Стоит заметить, что к примеру с ОС Windows, MAC-адресс спокойно можно поменять, потому я бы, добавил метку времени создания ассетов, а еще круче было бы, первичный хеш записать в файл, и подписывать вторичным хешем на основе контрольной суммы с меткой времени создания/изменения. Как-то так

Zebestov 28.06.2015 01:55

Про первичный-вторичный как для нуба можно? Не забываем, что все, что записано в файл (любой) и имеет неизменный ключ для дешифровки (зашитый внутри приложения) — это не вариант.

AlexCooper 28.06.2015 02:10

Я не претендую на лучший лайф-хак, но представляю это так:
1. При первом запуске собираем первичный ключ - MD5.hash(Capabilities.serverString+networkUID)
2. Сохраняем в файл
3. Создаем вторичный хэш. Контрольная сумма файла + время создания/изменения этого ж файла ( можно так же добавить еще и время создания статического ассета, т.е. какой нить статический файл, который инсталируется вместе с Апп, что даст время установки приложения )

Соотвественно подписываем вторичным хэшем.

Защита получается в несколько уровней, информация из Capabilities.serverString + МАС-адресс.
Если это каким-нить способом подменили, то вторичный ключ не подойдет, так как он имеет в себе первичный ключ + время создания самого апп + время создания первичного ключа.

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

Добавлено через 10 минут
т.е. система обнаружит если:
Не корректные параметры среды
Не корректный мак-адресс
Был изменён первичный ключ
Приложение было установленно не втоже время что и приложение которое подписывало эти данные

caseyryan 28.06.2015 08:22

Цитата:

Приложение было установленно не втоже время что и приложение которое подписывало эти данные
Вот это, по-моему, совершенно бессмысленно. Можно просто дернуть базу данных SQLite и заменить только ее. И пофиг что там и в какое время создавалось. Привязка к маку надежнее.
Вот в данном случае, я бы просто хэш от мак адреса использовал как ключ для шифрования базы данных, и плюс "соль", которая была бы зашита в другую swf, которая встраивалась бы в основную как байт массив. Но и в ней соль не хранил бы в виде строки, а придумал алгоритм генерации в рантайме. Для того, чтобы нельзя было в хексе посмотреть что же там за ключик.

А все это время создания и прочие вторичные проверки - ненадежно и бессмысленно, имхо.

Zebestov 28.06.2015 19:30

Да, MAC-адрес подойдет в догонку к строке из топика.
Ну и раскидать ключи по всяким ELS и папкам user/documents.
Полагаю, этого будет достаточно.


Часовой пояс GMT +4, время: 13:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.