シェアウェアなどのCGIでxx日間をすぎると機能が制限され使えなくなるというように書かれてるものがありますが、どうすればそのような制限ができるのでしょうか?具体的に書かれてるページをお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/01/29 14:59:12
  • 終了:--

回答(5件)

id:mcq No.1

mcq回答回数62ベストアンサー獲得回数32004/01/29 15:27:15

ポイント9pt

CGIプログラムは大半がperlで書かれたフリーの物で、より複雑な物はオーダーメイドの事が多いと思います。

しかし、期限付きのシェアウェアが存在するのであれば、それは改変の容易なperlではなくC言語等で書かれており、CGI以外の一般シェアウェアと同様に、初回起動時に何らかの情報を保存して制限を掛けているのだと思います。

具体的にシェアウェアのCGIを挙げて頂ければ、回答も具体的にしやすいです。

id:korokuro

ありがとうございます。あまり知識がないのですが確かにperlみたいです。ここの物なんですが…ttp://www.linkstaff.com/

2004/01/29 15:48:34
id:mi-si No.2

mi-si回答回数207ベストアンサー獲得回数02004/01/29 15:55:36

ポイント20pt

見た限りでは、初回登録時にレジストレーションファイルを掃き出すか登録して、その登録情報をチェックしているような感じです。

これを簡単に実現するには、初回起動時に暗号化された起動時間をファイルに掃き出し、cgiを動かすときにその情報をデコードして読み出して、現在時間との差分を取るというやり方になるかと思います。

制限を解除するにはcgi登録時にシリアルIDを入力させるようにし、そのシリアルIDを元に作成した暗号化されたに解除コードを送ると言う感じでしょうか?

Perlで書くと知識がある人には読まれてしまうのが欠点ですけど。Perlのコードをわかりにくくする事も可能ですが、あまり複雑なことをやるとcgi本体が重くなってしまうので。

id:korokuro

勉強になります。

2004/01/29 19:38:59
id:sasada No.3

sasada回答回数1482ベストアンサー獲得回数1332004/01/29 16:42:30

ポイント20pt

 お尋ねのcgiですが、確かにPerlですね。

 最初の起動時に、とあるファイルを作るようになっていて、そのファイルのタイムスタンプをチェックして日数制限しているようです。

 具体的なコード解説は差しさわりがあると思いますので、勘弁してください。m(_ _)m

id:korokuro

そうですね具体的には…やっぱり駄目ですね。

2004/01/29 19:39:54
id:Iwa No.4

Iwa回答回数120ベストアンサー獲得回数62004/01/29 16:43:01

ポイント40pt

私もPerlで期限付きのCGI書いてますが、どんなものであれ基本的には以下の順序でチェックしてます。

1.初回動作時に現在時刻を記録

2.次に動作したとき、現在時刻と初回起動時の時間を比較

3.比較した結果、期間を過ぎていれば終了

時間の保存先は

・DBM

・普通のテキストファイル

・SQLサーバー

保存形式は

・そのまま(UNIXタイムのまま)

・暗号化してから

等が考えられます。

ただ、ソースコードが丸見えな以上、破られる可能性が極めて高いので気休めにしかならない場合がありますが私の場合は二重三重の防御策を採って気休めに磨きをかけてます。(ぉぃ

id:korokuro

なるほど簡単なのではすぐ破られてしまいますよね。

2004/01/29 19:42:41
id:n4d No.5

n4d回答回数52ベストアンサー獲得回数22004/01/29 17:35:26

ポイント1pt

ソースコードを見ましたが、Perlですのでどうとでもなります。

但し、試用期限を越えて試用することは利用規約に抵触する可能性が高いため、方法はお答えできません。

また、このシステムでは、代金を払わずに利用するのは不可能な気がするのですが・・・

id:korokuro

代金を払わずに利用するつもりはありません…

2004/01/29 19:44:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません