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

Какие на ней, как и на будущей PS-4 есть способы запуска лицензионных игр?
Всего 2:
1) Вставил лицензионный диск (определение лицензионности диска уже есть и работает).
2) Купил или получил в подарок игру в PSN, т.е. в сети.

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

Диски:
Тут суть просто хранить на каком-то отдельном чипе список дисков (соответственно и игр), которые вставлялись в эту консоль. И когда юзер выходит онлайн, этот список синхронизируется с PSN, а после успешного входа в PSN обнуляется, чтобы уменьшить кол-во будущих транзакций.
Желательно конечно же каждую запись (запись = 1 диск) хранить в виде какого-то закодированного хеша, который кодирует в том числе и ID приставки и некую единую секретную "фразу", известную только разрабам PSN, чтобы при подмене последнего диски, которые использовались с консолью уже как бы с нею и не использовались.
С дисками история интересна еще и тем, что пиратка запускается как? Запускается эмулирование вставленного диска, вот почему нужен отдельный чип, а не где-то в ОС это хранить, причем чип этот должен быть не в приводе (приводы же бывает меняют в сервисе), а на пути между приводом и ЦП, и при связи с ЦП должен уметь только отдавать записи и стирать, и не должен уметь делать новые записи с подачи ЦП. Тогда эмуляция не повлияет на эти записи. Единственное, что выходит в этом же чипе должна работать некая микропрограмма, которая делает хеш и в том числе имеет доступ к оригинальному ID консоли. Встраивать микропрограмму в сам чип нужно, чтобы нельзя было на некоем еще одном промежуточном чипе устраивать тесты на вход/выход, чтобы вычислить алгоритм.
Также была волна как-то на тему перепродажи дисков. Купил ты его или взял у друга поиграть (или перекупил) тут тоже можно заморочиться и проверить по серийнику/коду диска, если таковые существуют (по-моему существуют же или нет?).

Тут всё еще проще, список доступных тебе из сети игр уже в руках "продавца".

Итого, порядок логики:
1) Вы играете в игру, выйдя в сеть под своим PSN ID.
2) PSN знает в какую игру вы играете.
3) PSN проверяет нет ли этой игры среди доступных вам из сети.
4) Если есть, то ОК, завершает проверку, если нет, то начинает проверку по диску.
5) Проверять просто какой сейчас диск вставлен не правильно, потому что это может эмулироваться. Но зато список хешей дисков, которые действительно вставлялись в консоль у PSN уже есть, ID консоли тоже есть. Поэтому берется код диска, который сейчас вставлен (даже если он эмулирован), берется ID консоли, та же единая секретная "фраза" и по тому же алгоритму, что и в чипе, PSN составляет хеш "игры", так сказать.
6) Если этот хеш совпадает с одним из тех, что были получены с чипа, то ОК, пусть даже он на пиратке играет в купленную им игру — тут все равно.
7) Если же нет, то значит он играет в игру, в которую он в принципе играть не мог бы на лицензии, соответственно акк в бан. С ID консоли немножко сложнее. Нужно проверить нет ли уже в базе такого же ID, только без пометок о пиратстве, на случай, если мошенник случайно рандомизом выставил себе ID настоящей консоли другого честного пользователя. А может и вообще тогда не имеет смысла бан по ID консоли, даже если эти проверки не форсировать, а делать медленно и размерянно, то ради пяти минут нахождения в PSN до следующего бана регать новый PSN ID врядли кто захочет.

Кто что скажет? Ищем дыры!

@темы: мысли, PSN, пиратство, Я