• 締切済み

Perlで、アップロードしたファイルの改ざんを発見する

こんばんは、初心者なので困っています。 Perlで以下のような物を作成しろと言われました。 「サーバにアップロードされたバイナリファイルを、アップ後に、改ざんされたかどうか判るように、そのファイルについてのデータベースを作りなさい。 そのデータというのは、ファイルを数分割して、それぞれの頭の数字の合計の事で、それを保管しておけば改ざんされた時にはその数字が変わっているので発見できる」 という事でした。 この様な事は可能なのでしょうか? 可能でしたら、見当が付かないので参考になるHPなどはありませんでしょうか? よろしくお願いします。

noname#10457
noname#10457
  • Perl
  • 回答数3
  • ありがとう数2

みんなの回答

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.3

>データが改ざんされる時はどれくらいのバイト単位で変わるものなのでしょうかね。 こればかりは改竄する人に聞いてみないことにはわからないですね(笑)。 チェック対象とするそのバイナリファイルがどういう質のものか、改竄の目的に因ると思います。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

MD5を使用されてはいかがですか。perlによるMD5の実装もあるようです。下記を参照ください。perl MD5で検索すれば、そこそこヒットしますよ。

参考URL:
http://perldoc.jp/docs/modules/Digest-Perl-MD5-1.5/MD5.pod
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

チェックサムですね。 ファイルをバイナリモードでオープンして、適当な間隔(例えば256バイト)でseekしてその数値を足し込んでいけばよいでしょう。 改竄されたかどうかは確率的なもので、発見できない場合もあると思いますが、良くある手段ではないでしょうか。

noname#10457
質問者

補足

早いお返事ありがとうございます。 チェックサムというのですね。 その呼称が判っただけでも、これについて早く調べる事ができました。 今日、それなりのものが形になりました。 yatokesaさんの例のように256バイト間隔で作ってみましたが、 データが改ざんされる時はどれくらいのバイト単位で変わるものなのでしょうかね。

関連するQ&A

  • perlで、可変の個数のファイルをアップロードしたい

    perlで、可変の個数のファイルをアップロードしたい perlで、可変の個数のファイルをサーバに アップロードさせたいのですが、 どのようにやって良いのかまったく検討がつきません。 参考になるサイト、でもかまいませんが、 こちらにロジックを書いて頂けると幸いです。 どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • Perl
  • ファイルのアップロードについて

    はじめまして。CGIにperlを使用して、ブラウザからファイルのアップロードを実現させようとしています。 binmode ( STDIN ); read ( STDIN, $tBUF, $BUFSZ) のようにして読み込み、バイナリーモードで書き出しています。 画像系はうまくいくのですが、テキスト系をアップロードするして、アップロードしたものをFTPソフトでASCKIIモードでダウンロードすると、どの文字コードの場合でも、一行ごとに余計な改行がひとつはいってしまいます。 バイナリーモードだとうまくいきます。 FTPソフト NextFTP2.02 使用OS:windows2000 workstation サーバーのOS:SunOS 5.8 ちなみみにサーバーがRedhat5.0のときはうまくいきました。 こういった原因はが、さっぱりわかりません。誰か教えてください。

    • ベストアンサー
    • CGI
  • Perlでファイルをアップロードしたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

  • Perlでファイルをアップロードさせたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

    • 締切済み
    • CGI
  • ファイルのアップロード方法(Perl)

    <INPUT TYPE="file">で指定されたファイルをサーバーにアップロードする方法をさがしています。 CGIの記述言語はPerl、転送を行うファイルは画像ファイルです。 送られてきたデータを確認したところユーザー側のファイルへのフルパスなのは確認できましたが、そこからアップロードする方法が分かりません。 パールライブラリ(.plか.pm)でファイル転送を行う良いライブラリがあれば教えてください。 また、転送の方法を教えてください。

    • ベストアンサー
    • Perl
  • CGIを使用してブラウザからファイルをアップロード

    CGI(perl)を使用して、ユーザー側からサーバーへファイルのアップロードをしたいと思います。 いろいろサンプルをみてみたのですがよくわからず…。 なのでごくシンプルなソースを教えていただきたいのです。 サイズが大きいのはアップさせないようにするとか、そういうものも一切なくして、ただ単純に サーバーへアップロードさせるだけのものが知りたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • 大きいサイズのファイルのアップロード

    よろしくお願いします。 Webサーバー側にファイルをアップロードして、特定の人にファイルをダウンロードさせるようなコードを書き始めています。 ファイルサイズは一つのファイルで最大で50MB超あります。 ですが、Webサーバー側で一度のPOST要求で10MBという制限があり、困っています。 アップロードする側でファイルを分割してアップロードし、サーバー側でファイルを結合すればいいのですが、アップロードする人間がそのあたりを分かってくれればいいのですが、その都度ツールなどでファイルを分割して・・・というやり方を強制することが少し困難です。 SWFUpload というもの使うと、複数のファイルを一度にアップロードできるようですが・・・ 大きいファイルを分割して複数のファイルにしてアップロード・・・というようなことを Flashなどを用いてブラウザ上でワンアクションでできないものでしょうか? サーバー側での結合はすぐかけるのですが、クライアント側でどういう処理をすればいいのか、 皆目検討が付きません。 そもそも、こういった大きいファイルを分割してアップロードする、ということはできるのでしょうか?

    • 締切済み
    • PHP
  • ファイルのアップロードについて、

    ファイルをアップロードしたら、そのファイルはサーバ名の後に、スラッシュを 打ってからファイル名ですよね・・・・?ファイル名をコピーアンドペーストして サーバ名のあとに貼り付けてブラウザで見てみたら404ってでてくるんです、 でもアップロードソフトでアップ完了ってでてるし・・・・ OSはWINDOWSMEで、アップロードソフトはairIを使いました どの辺が間違っているのでしょうか?教えて下さい

  • jspでファイルをサーバーへアップロードするには

    jspでiPadから、サーバーへ画像ファイルをアップロードしたいのですが、 どうやればよいでしょうか? jspの引数に、バイナリで乗せるということだけは、 インターネットで調べてわかりました。

  • サーバに誤ったファイルをアップロードしてしまった

    と言った場合、サーバにあるファイルを、アップロードする前の状態に戻すことは可能でしょうか? たとえば掲示板のログファイル。サーバ側のログファイルには書き込まれた内容が保存されていますが、ローカルにあるログファイルには中身がありません。 この中身の無いファイルをアップロードしてしまい、サーバ側の内容が消失してしまうことがあるんです、、、。 まあ、データベースなどを使えばいいのかもしれませんが。

専門家に質問してみよう