Среда, 18 Декабря 2024, 13:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Шифровка файлов
NeZnayuДата: Понедельник, 28 Июня 2010, 21:53 | Сообщение # 1
__танцуй!__
Сейчас нет на сайте
Как и обещал, выкладываю свой пример шифровки встроенными функциями ГМ.
Скрипт может зашифровать любой файл (изображения, музыку, текст и т.д.)
Все файлы шифруются бинарно, методом XOR при помощи ключа.

Оригинальный скрипт написан пользователем GMC под ником Drara, модифицирован мной (я оптимизировал его чтобы не возникало сильных лагов при работе с с большими файлами)

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

Скачать пример
(в примере сначала открываем файл, затем нажимаем "Encrypt" - результат откроется в блокноте, чтобы расшифровать еще раз нажимаем "Encrypt" - для пущей наглядности зашифруйте какой-нибудь текстовый документ)

Непосредственно скрипт:

Code

var file,read,keypos,gmid,i,key

if !file_exists(argument0) then return (-1)

i=0
keypos=0
gmid=string(argument1)   
key=""
read=0
file=0

repeat (3)
{
      gmid=gmid + gmid
}
repeat(floor(string_length(string(gmid))*3 ))
{
      key=key + chr( ord(string_copy(gmid,i,2)) ^ (ord(string_char_at(argument1,keypos))-floor(i/3)))
      i+=1
      keypos+=1
      if keypos>string_length(argument1) then keypos=1
}
keypos=0

file=file_bin_open(argument0,2)
file_bin_seek(file,0)

repeat(file_bin_size(file))
{
      read=file_bin_read_b yte(file)
        
      file_bin_seek(file,file_bin_position(file)-1)
      
      file_bin_write_byte(file,read ^ ord(string_char_at(key,keypos)))
      keypos+=1
      if keypos>string_length(key) then keypos=1
}
file_bin_close(file)
return (1)

В примере код прокомментирован*


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Понедельник, 28 Июня 2010, 21:58
nightmareДата: Понедельник, 28 Июня 2010, 23:26 | Сообщение # 2
2D Game Maker
Сейчас нет на сайте
NeZnayu, Ну,а может кто либо другой расшифровать файл?(Допустим,если шифровка была выполнена для перекрытия доступа к файлу)

Hi-Tech News Russia - новости, анонсы, обзоры из мира высоких технологий
NeZnayuДата: Понедельник, 28 Июня 2010, 23:48 | Сообщение # 3
__танцуй!__
Сейчас нет на сайте
nightmare, нет, не зная ключа расшифровать практически невозможно.
"Практически" - чисто для галочки, рядовой пользователь точно не расшифрует.


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу


Сообщение отредактировал NeZnayu - Понедельник, 28 Июня 2010, 23:48
nightmareДата: Вторник, 29 Июня 2010, 00:04 | Сообщение # 4
2D Game Maker
Сейчас нет на сайте
Quote (NeZnayu)
nightmare, нет, не зная ключа расшифровать практически невозможно. "Практически" - чисто для галочки, рядовой пользователь точно не расшифрует.

Ясно.Для этого,как я понял,и стоит это:
Code
key=""

В ковычках код?Думаю да...
Извените.что я выгляжу,как дурак,просто не скачал еще файл(пример). smile


Hi-Tech News Russia - новости, анонсы, обзоры из мира высоких технологий
NeZnayuДата: Вторник, 29 Июня 2010, 00:08 | Сообщение # 5
__танцуй!__
Сейчас нет на сайте
Нет, на самом деле начальный ключ это вот эта строчка:
Code
gmid=string(argument1)

a key - это финальный ключ, просто мы его сначала определяем как пустую строчку (чтобы не возникало ошибок)
а затем создаем из gmid новый ключ.
Сложно объяснить tongue Думаю стоит скачать пример и попробовать зашифровать\расшифровать какой-нибудь блокнотовский файл.


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
nightmareДата: Вторник, 29 Июня 2010, 00:15 | Сообщение # 6
2D Game Maker
Сейчас нет на сайте
NeZnayu, Так получается,что твой пример-это практически программа? smile Слушай,а не хочешь попробовать сделать все это,что бы получился некий конструктор.(Шифровка выполнялась при помощи кнопок,нажал кноаку,а тут выскакивает окно кула нужно вводить ключь,или же какие либо другие данные)Я думаю,что создателю Nobster'а это будет не трудно сделать. smile

Hi-Tech News Russia - новости, анонсы, обзоры из мира высоких технологий
NeZnayuДата: Вторник, 29 Июня 2010, 00:23 | Сообщение # 7
__танцуй!__
Сейчас нет на сайте
Сделать-то нетрудно, просто времени свободного не очень много.
Возможно кто-нибудь сделает подобную программу из моего исходника? wink


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
nightmareДата: Вторник, 29 Июня 2010, 00:32 | Сообщение # 8
2D Game Maker
Сейчас нет на сайте
Quote (NeZnayu)
Сделать-то нетрудно, просто времени свободного не очень много. Возможно кто-нибудь сделает подобную программу из моего исходника?

Дык,я бы с радостью,да вот с созданием программ(Любых причем) не знаком.Хоть на GM,хоть на С++...Могу еще на Small Basic'e написать прогу,или же на Devel Studio.Так что я не смогу.Завтра народ подтянется,так что может кто и попробует взяться за это. smile


Hi-Tech News Russia - новости, анонсы, обзоры из мира высоких технологий
FedenkoVadikДата: Вторник, 29 Июня 2010, 15:27 | Сообщение # 9
Level 5 Gentleman
Сейчас нет на сайте
вот я и подтянулсцо. Скрипт кульный, дык вот как то применять его пока некудо... Хм... все идеи к играм придумываю... а потом когда начинаешь делать и приходит классная идея, ты забрасываешь проект а тот оказывается трудным и тоже бросаешь, а в результате остаешься с ничем... sad
NeZnayuДата: Четверг, 15 Июля 2010, 20:59 | Сообщение # 10
__танцуй!__
Сейчас нет на сайте
Кто-то спрашивал про защиту ресурсов, решил апнуть тему wink

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
lumennesДата: Четверг, 15 Июля 2010, 22:19 | Сообщение # 11
Убийца Diablo
Сейчас нет на сайте
NeZnayu, большое спасибо. скрипт супер. я так понимаю к примеру можно сохранить на гм спрайт в формате gmspr, зашифровать его таким способом и он все равно будет читаться в игре?

Добавлено (15.07.2010, 22:19)
---------------------------------------------
Так и не понял как это работает. Да файл шифруется бинарным способом и для верности в него еще 3 раза добавляется ключ. к примеру файл png, чтобы использовать его из внешнего файла, когда зашифровал картинка в игре не отображается. может кто-нибудь подскажет почему?


Как мало вы знаете, как громко вы судите...
SholarДата: Четверг, 15 Июля 2010, 22:50 | Сообщение # 12
Draw With Me
Сейчас нет на сайте
Спасибо, интересно, будем разбираться...

https://vk.com/g_sholar
NeZnayuДата: Пятница, 16 Июля 2010, 11:39 | Сообщение # 13
__танцуй!__
Сейчас нет на сайте
Quote (lumennes)
когда зашифровал картинка в игре не отображается. может кто-нибудь подскажет почему?

перед чтением данные надо расшифровать
затем прочитать и снова зашифровать - все без палива wink


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
АзазельДата: Понедельник, 07 Февраля 2011, 18:49 | Сообщение # 14
частый гость
Сейчас нет на сайте
Не совсем ясно как работает шифрование... sad
А можно ли зашифровать файл через эту программу, а в своей игре просто перед добавлением ресурсов (которые зашифровали) их расшифровать? Если да, то какой должен быть на это код??
И после шифровки файла можно указывать любой его формат? Т.е. не обязательно для зашифрованного файла aaa.jpg оставлять формат .jpg??
McHadyДата: Четверг, 28 Июня 2012, 08:31 | Сообщение # 15
уже был
Сейчас нет на сайте
Как скачать? По ссылке выдает следующее:
Information
Account disabled by server administrator.

angry angry angry angry


[url=http://nick-name.ru/sertificates/586368/][img]http://nick-name.ru/forum/McHady.gif[/img][/url]
TimKruzДата: Суббота, 07 Июля 2012, 01:37 | Сообщение # 16
старожил
Сейчас нет на сайте
Quote (McHady)
Как скачать? По ссылке выдает следующее:

Дело в том, что файл был размещён уже как два года назад на файловом хостинге yemsalat.org, поддерживаемом NeZnayu, а потом NeZnayu куда-то пропал и сайт отключили (некому было его поддерживать, оплачивать). Ты, конечно, можешь искать этот файл, спрашивать - вдруг у кого завалялся... Но NeZnayu же написал в первом сообщении:
Quote (NeZnayu)
Непосредственно скрипт:

Вот этого скрипта тебе будет достаточно. Просто создай в своём проекте новый скрипт и скопируй туда код из первого сообщения. Первый аргумент (argument0), передаваемый скрипту - имя (или полный путь) файла, а второй аргумент (argument1) - строка-ключ для шифровки. Но чтобы со всем разобраться, нужно выучить GML, без знания GML ты мало поймёшь в этом скрипте, даже если всё-таки удастся найти пример...
Quote (Азазель)
И после шифровки файла можно указывать любой его формат? Т.е. не обязательно для зашифрованного файла aaa.jpg оставлять формат .jpg??

Буквы типа .jpg после точки в названии файла - это не формат, а обозначение формата, расширение файла. Расширение файла - всего лишь формальность, ты можешь указать какое угодно имя файла и расширение, от этого ничего в самом файле не изменится. Тем более, после шифрования файла обычные программы всё равно не смогут понять этот файл, например, программа просмотра картинок выдаст что-то типа "неопознанный формат файла".
Quote (Азазель)
А можно ли зашифровать файл через эту программу, а в своей игре просто перед добавлением ресурсов (которые зашифровали) их расшифровать?

Да, именно так и нужно - сначала зашифровать ресурсы, а потом, после запуска игры - расшифровать и загрузить.
Quote (Азазель)
Если да, то какой должен быть на это код??

Да точно такой же. Просто нужно применить этот же скрипт к тому же файлу с тем же ключом ещё раз:
Quote (NeZnayu)
Чтобы расшифровать файл, его надо просто заново прогнать через скрипт.


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг