ゲームを制作してるのですが、暗号化がうまく出来ません。
名無し 2013/7/2(Tue) 15:07:17|NO.55429
現在ゲームを制作しています。
ファイルを暗号化しようと思い、#epack "filename"を使ったのですが、
picload・Artlet2D・mciでファイルを読むこむことができません。
なにかいい方法はないでしょうか?
名無し 2013/7/2(Tue) 15:09:20|NO.55430
【追記】
picloadとArtlet2Dで使用する画像形式はpngです。mciで使用する動画形式、音声形式はmp3とwmvとwavです。
あんこ 2013/7/2(Tue) 16:46:14|NO.55433
最近のスレを見て掲示板の使い方を見てこい
名無し 2013/7/2(Tue) 17:42:11|NO.55436
>>あんこさん
すみません、見たのですが何が行けないのかわかりません。
ちなみに今回のスレの質問内容は、「暗号化したファイルを復号化し、picload・Artlet2D・mciでファイルを読む方法はありますか?」ということです。
もしかしてこの部分が行けなかったのでしょうか?
KA 2013/7/2(Tue) 18:34:27|NO.55439
具体的にどう使っているのか不明。
「文字を表示しようとして mes を使いましたが表示されません」
と聞かれたら、あなたはどう答えますか。
ttn 2013/7/2(Tue) 18:59:55|NO.55440
これで上手くいかないから、他に良い方法があれば教えてほしいってことでしょ?
匿名希望 2013/7/2(Tue) 19:00:34|NO.55441
picload はHSPの内蔵命令なので、 #pack や #epack でパックしたファイルでも読み込めますが
A2Dと mci はWindowsの機能を呼び出しているので、Windowsから見える形でファイルが存在している必要があります。
解決策としては
・パック(暗号化)を諦める
・bload, bsave で一旦ファイルとして書き出す
があります。
後者だと bload で読み込み→ bsave で書き込み→A2D/mci で読み込み、とディスクアクセスに時間を取られるうえに
暗号化の意味もほとんどなくなってしまうため、暗号化そのものを諦めるのがベターかと思われます。
名無し 2013/7/2(Tue) 19:25:06|NO.55443
>>ttnさん
まさにその通りです;文才なくてすみません。
>>匿名希望さん
やはり暗号化は諦めるしか無いのでしょうか・・・
picloadでパックしたファイルを読み込めないのはこちらの勘違いでした。
もしかしたら他に方法を知ってる方がいるかもしれないので、引き続き回答を受け付けます
egachan 2013/7/3(Wed) 06:53:45|NO.55458
Artlet2Dはソースを一部変更すればパックファイルに対応することはできると思いますが、パックファイルの動画を再生する方法はわからないですね。
再生するときだけファイルを書き出して不要になったらすぐ消すくらいしか思いつきません。
そのときファイルの拡張子をいじっておけば多少は隠蔽の効果もあるかも。
名無し 2013/7/3(Wed) 20:00:02|NO.55468
>>egachanさん
その情報を元に検索してみました。
http://hsptv.sakura.ne.jp/play/pforum.php?mode=pastwch&num=51625
こちらのスレの最後にURLがあり、開いてみたのですがもう閲覧できない状態でした。
他にもいろいろ探してみたのですが、無理そうでした・・・
check 2013/7/4(Thu) 02:21:26|NO.55476
単純な手法だが、xor演算を利用するとか。
data = 76 // データを作成
key = 51 // 1〜255までの好きな数字(ここでは仮に51とした)
mes data
data ^= key // dataをkeyでxor演算
mes data
data ^= key // 再びxor演算
mes data
この方法を利用して、ファイルから1バイト読み込んでxor演算をする、
ということをファイルのサイズだけ繰り返せば暗号化ができる。
復号化の時も同じソースで行える。
問題は処理速度だろうな。
何MBもある動画ファイルにHSPでこの処理をさせると、いったいどれくらいの時間がかかるのであろうか。
egachan 2013/7/4(Thu) 07:46:02|NO.55479
>こちらのスレの最後にURLがあり、開いてみたのですがもう閲覧できない状態でした
sprocketさんの掲示板にそれを書いたのはたぶん自分だと思う。
改造したスクリプトも残ってるけど長いので貼り付けらんないし、そもそも勝手に張っていいのか
わからんのでどうしたもんか。
ところで最近のHSPではpicloadでパックファイルのpng画像も読める様になってるからそこから
Artlet2Dにのイメージにコピーする方法もあると思うけど。
名無し 2013/7/4(Thu) 09:46:03|NO.55480
>>checkさん
暗号化の方法を教えていただきありがとうございます。では、どのような手順を踏めばその暗号化したファイルをArtlet2Dで読み込めるのでしょうか?
やはり、
暗号化したファイルを読み込み→復号化→一旦保存→Artlet2Dで読み込み
とやらなければいけませんか?
匿名希望さんが言っているように、一旦保存するとファイルの書き込みと読み込みに時間がかかり、
暗号化の意味もほとんどなくなってしまうのでできるだけ避けたいです;
>>egachanさん
http://sprocket.babyblue.jp/html/hsp_artlet2d.htm
こちらのページの最後に、「著作権フリー」と書いています。
ですので、多分ここで公開しても大丈夫だと思います。
http://firestorage.jp/
ファイルのアップロードは、こちらのサイトを使ってください。
念の為に使い方を説明しておきます。
画面上にあるオレンジ色の枠の中にある、「違法なファイルではない 」にチェックを入れてください。
すると、アップロードというボタンが出てくるのでそこをクリックしてファイルを選択してください。
あとは自動でアップしてくれます。アップが完了すると、オレンジ色の枠の下の方にダウンロードに必要なURLが表示されます。
透過情報を維持したいので、picloadで読み込む方法は使えません;
どうしても無理そうならgmode 7を使う予定です。
check 2013/7/4(Thu) 14:05:14|NO.55482
>では、どのような手順を踏めばその暗号化したファイルをArtlet2Dで読み込めるのでしょうか?
暗号化を解除(復号化)すればなんでも使えるのだが……。
と思ったが、パックしたファイルからバイナリデータを読み込むことは可能なのであろうか?
それが無理でも、上記の暗号化を施したあと、拡張子も独自のものに変えておけば、
まず暗号化の知識を持たない者には読み取られることはないであろう。
ゲーム内のデータを何とかして読み取ろう、
と考えているハッカーにプレイしてもらえるほどのゲームでなければ大丈夫だ。
後はスレ主がそれほどのゲームを作れるようになれば、自然と知識は身についているはず。
egachan 2013/7/5(Fri) 09:20:58|NO.55500
2カ所にアップしましたのでお好きな方からどうぞ。
http://firestorage.jp/download/d070de261c3ec1466da8a9ade99973c81723f646
http://www1.axfc.net/uploader/Sc/so/470163
既存のa2d.hspに上書きすればそのまま使えます。
Artlet2D改造内容
1.packfileの画像ファイルやmemfileのメモリデータからの読み込みに対応。
2.jpeg画像を保存するときに画質設定を可能にした。
alSaveFileで7番目のパラメータに0〜100の値を設定することで
jpeg形式で画像保存するときに画質設定を可能にした。
0に近いほどファイルサイズ優先、100に近いほど画質優先。
デフォルトは75。
検索して見つけたけどすでにアップローダから消えてた人用
Artlet2Dをpackfile対応にする方法。
GdipLoadImageFromFile p1, varptr(tmpImage)を検索してtmpImage=LoadImageFromHspfile(p1)に置換(2カ所ある)
その後以下のモジュールをa2d.hspの最後に追加。
#module
#defcfunc LoadImageFromHspfile str p1 ; filename
#uselib "gdiplus.dll"
#func GdipLoadImageFromStream "GdipLoadImageFromStream" int,int
#uselib "kernel32.dll"
#cfunc GlobalAlloc "GlobalAlloc" int,int
#cfunc GlobalLock "GlobalLock" int
#func GlobalUnlock "GlobalUnlock" int
#func GlobalFree "GlobalFree" int
#uselib "ole32.dll"
#func CreateStreamOnHGlobal "CreateStreamOnHGlobal" int,int,int
#define GMEM_MOVEABLE 2
exist p1
if strsize==-1:return 0
hMemory=GlobalAlloc(GMEM_MOVEABLE,strsize)
if hMemory==0:return 0
dupptr tmpmem,GlobalLock(hMemory),strsize,2
bload p1,tmpmem,strsize
dim tmpmem,1
GlobalUnlock hMemory
CreateStreamOnHGlobal hMemory,1,varptr(pIStream)
if stat:GlobalFree hMemory:return 0
GdipLoadImageFromStream pIStream, varptr(gpimage)
newcom Istream,,-1,pIStream
delcom Istream
return gpimage
#global
名無し 2013/7/5(Fri) 11:51:51|NO.55502
>>egachanさん
ありがとうございます。無事にパックしたファイルを読み込むことができました。
mciでパックしたファイルを読み込むのは無理そうなので、諦めます。皆さん、本当にありがとうございましたm(__)m