Discuss Scratch

RITORUDX3
Scratcher
27 posts

セーブコードについてみんなで話し合う場所1

自分は新鉱石採掘クリッカーにて一回セーブコードを作っています。これってちゃんと暗号化されてますかね…?(リンクは少々お待ちください) リンク→ https://scratch-mit-edu.ezproxyberklee.flo.org/projects/211977662/

Last edited by RITORUDX3 (Oct. 12, 2019 04:38:39)

RITORUDX3
Scratcher
27 posts

セーブコードについてみんなで話し合う場所1

間違えて返信したので削除

Last edited by RITORUDX3 (Oct. 12, 2019 04:38:31)

choriss55
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

削除。1000超えてからにしよう

Last edited by choriss55 (Oct. 12, 2019 11:54:40)

sypu
Scratcher
500+ posts

セーブコードについてみんなで話し合う場所1

もうすこし発展してからのほうがいいと思います。
スティッキートピックは、「みんなが活用できる」トピックが前提です。
分かってると思いますが、申請したところで「必ず」スティッキートピックにしてもらえるわけではありません。

Last edited by sypu (Oct. 12, 2019 11:32:03)

matunyan0930
Scratcher
500+ posts

セーブコードについてみんなで話し合う場所1

例えばですが、「Scratch3.0への提案」というトピックは、
公共性は高いはずですがstickyにはなっていません。

トピックメンバーが誰も申請しなかっただけというのもあり得ますが、
まぁどうにせよそんな簡単にstickyにはなりませんしできませんかと。

Stickyは「大量にあるトピックの中で重要なトピックを埋もれさせないように」という意味を持っています。
そんなstickyが多く出てきて、stickyの中だけで考えても埋もれてくるトピックが出てくるのは、果たして良いことでしょうか?

Last edited by matunyan0930 (Oct. 12, 2019 11:52:29)

NT_ZZzz
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

RITORUDX3 wrote:

自分は新鉱石採掘クリッカーにて一回セーブコードを作っています。これってちゃんと暗号化されてますかね
暗号ではあるけど次のような理由から読むのは簡単ですね 購入のNo.5と変数“新惑星”とかはセーブしなくていいの?
どちらかというと復元のしやすさを優先しているように見えます
  1. 数字を文字と一対一対応させて変換する
  2. OとXが変数“購入状況”に一対一で対応している
  3. 区切りが_(アンダーバー)で一定である
まあ読むような人は少ないでしょうけど…!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_$_!_@_OOOOOO_!@$(%'&_!@$(%'&_
ちなみに文字と数字を一対一対応するなら
変換用の文字をリストに入れて
(( [list v] )の () 番目 :: list)

(([list v] )中の[]の場所 :: list)
を使うとif~else入れ子を使わずにより簡単にプログラムを組めますよ
kunisan19go
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

なんでセーブコードって暗号化するの?
yukku
Scratcher
1000+ posts

セーブコードについてみんなで話し合う場所1

kunisan19go wrote:

なんでセーブコードって暗号化するの?
セーブコードを改造するチートの一種ができやすくなってしまうからです。
matunyan0930
Scratcher
500+ posts

セーブコードについてみんなで話し合う場所1

kunisan19go wrote:

なんでセーブコードって暗号化するの?
例えば、HP100 MP50 お金600 の状態でセーブをしたとき、
100/50/600
のようにセーブコードにするとします。
ロードするときに、これをそのまま入力すれば、同じ状態から再開できるわけです。
しかし、数値を見て、どの場所にある数値が何のステータスか大体予想できませんか?
そこで、ロードするときに、
500/500/10000
と入力してみましょう。
プログラムは、これが改ざんされた数値かを検出できないので、そのままロードします。
ずるができるわけです。
それを阻止するために、セーブコードを出力するときに暗号化して、どこがどのステータスに対応しているかわからなくするのが暗号化です。
choriss55
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

NEUTRALBCDFGHIJKMOPQSVWXYZ
1234567890,
で振り分けして
2019,10,13,を暗号化して
EDNCFNDFNUF
という風に暗号化すれば中を見られない限りハックされにくい
RITORUDX3
Scratcher
27 posts

セーブコードについてみんなで話し合う場所1

NT_ZZzz wrote:

RITORUDX3 wrote:

自分は新鉱石採掘クリッカーにて一回セーブコードを作っています。これってちゃんと暗号化されてますかね
暗号ではあるけど次のような理由から読むのは簡単ですね 購入のNo.5と変数“新惑星”とかはセーブしなくていいの?
どちらかというと復元のしやすさを優先しているように見えます
  1. 数字を文字と一対一対応させて変換する
  2. OとXが変数“購入状況”に一対一で対応している
  3. 区切りが_(アンダーバー)で一定である
まあ読むような人は少ないでしょうけど…!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_!@$(%'&_$_!_@_OOOOOO_!@$(%'&_!@$(%'&_
ちなみに文字と数字を一対一対応するなら
変換用の文字をリストに入れて
(( [list v] )の () 番目 :: list)

(([list v] )中の[]の場所 :: list)
を使うとif~else入れ子を使わずにより簡単にプログラムを組めますよ
ありがとうございます!次から使ってみます…
指摘してもらった点も直しましたありがとうございます

Last edited by RITORUDX3 (Oct. 13, 2019 04:21:27)

choriss55
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

choriss55 wrote:

NEUTRALBCDFGHIJKMOPQSVWXYZ
1234567890,
で振り分けして
2019,10,13,を暗号化して
EDNCFNDFNUF
という風に暗号化すれば中を見られない限りハックされにくい
HZIDEVSKMBOCGTQWAPYFRXULJN(ランダム)
1234567890,

2019,10,14,19,33,12
ZBHMOHBOHDOHMOIIOHZ
に変換すれば読むのは難しい
takkun0530
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

choriss55 wrote:

#72
でもそれだと中を見られたとたん終わります。
NT_ZZzz
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

自動で復号するプログラムが公開されている以上「中を見る」でも解けないような暗号は作成できないと思います
そもそも
  1. 中を見る
  2. 変数をいじる
  3. セーブコードを作成
これだけで不正にセーブコードを作れるため、「中を見る」への対抗は無意味です下のinokingさんの投稿参照
強いて言うなら工程を増やして分かりづらくするぐらいはできるかもしれません

ところでこのトピックの目標として「用途別最強のセーブコード作成プログラム」とか作ってみませんか?
そこまで極める必要もなさそうだけども

Last edited by NT_ZZzz (Oct. 14, 2019 14:32:34)

inoking
Scratcher
1000+ posts

セーブコードについてみんなで話し合う場所1

クラウド変数を使えば変数をいじるようなチートは不可能にできますね。
エディター画面で操作してもクラウド変数は更新されませんので。

クラウド変数を更新できない状態(中を見た状態)では
セーブコードを出力しないようにするとか。
NT_ZZzz
Scratcher
100+ posts

セーブコードについてみんなで話し合う場所1

inoking wrote:

クラウド変数を使えば変数をいじるようなチートは不可能にできますね。
そんな方法もできるんですか!それなら「中を見る」にも対抗できそうですね。
ただ具体的な方法が全く思いつきません。
「作品を開いている間に別のアカウントがクラウド変数を操作すること」をセーブコード出力の条件に入れると
Scratcherが一人しか作品を見ていない状態ではセーブできないようになってしまいますし、
その条件をつけないと中を見てもセーブが出来てしまいます。
クラウドデータにセーブ情報をユーザー名と紐付けして記録すればいい(もはや別案)
jun50
Scratcher
1000+ posts

セーブコードについてみんなで話し合う場所1

「中を見る」を使えばセーブ時のチートを防ぐことはできるでしょうが、
ロード時のセーブコードをプログラムを見ながらいじられると対策は無理だと思います。
オンライン対戦などで完全にチートを取り締まり、かつデータを保存したいなら、クラウドに保存するなどの方法(だいこんさんのみたいなやつ)をとればこの方法を使ったチートをすることは100%不可能になります。(セーブコードじゃなくなってる)

Last edited by jun50 (Oct. 14, 2019 14:31:22)

matunyan0930
Scratcher
500+ posts

セーブコードについてみんなで話し合う場所1

様々な問題が発生するのはよくわかっているけれど、
セーブコードとかのことを考えると、やはり「複数のプロジェクト間で共有できるクラウド変数」が欲しいと思ってしまう。
jun50
Scratcher
1000+ posts

セーブコードについてみんなで話し合う場所1

それをしてしまったらクラウドの制限(所謂クラウドショック)の意味がなくなってしまいますからね…
inoking
Scratcher
1000+ posts

セーブコードについてみんなで話し合う場所1

ごめんなさい、私が勘違いしていた気がします。
エディタ画面でクラウド変数を操作すると
クラウド上に反映されないだけでプロジェクト内では更新されますね。確か。
ですから、
「クラウド変数を更新できない状態」はそのプロジェクト中では判断できないです。

セーブコードの何を防ぎたいかによりますが
もちろんローカルにプログラムをいじれば何でも(いきなり最強レベルで開始とかも)できます。
ロード処理をすっ飛ばして最後に結果だけをセットすればよいわけですから。

私が想定しているのは
それを公の記録とするのを防ぐことです。
であれば、クラウド変数を使えば何とかなると思います。
※容量制限は出ますが

Last edited by inoking (Oct. 14, 2019 15:29:13)

Powered by DjangoBB