2

注:この質問を判断しないでください。私がこれを「ごまかす」ためにやっていると思っている人へ。とにかく私はもう学校に通っていないので、あなたは間違っています。さらに、私自身が実際に不正行為をしようとしている場合、プログラムを再作成するのではなく、そのために既に作成されているサービスを使用するだけです。私がこのプロジェクトを引き受けたのは、それが楽しいかもしれないと思ったからです。SO の目的は判断することではなく、単に公開情報を提供することであるため、反対票を投じる前に、質問 it's self の価値を考慮してください。


私は意図的にファイル (具体的には .doc、txt、または pdf ですが、他のものも同様に良いでしょう) を故意に破損させると想定される Java でプログラムを開発しています。

私は最初にこれを試しました:

public void corruptFile (String pathInName, String pathOutName) {
    curroptMethod method  = new curroptMethod();
    ArrayList<Integer> corruptHash = corrupt(getBytes(pathInName));
    writeBytes(corruptHash, pathOutName);
    new MimetypesFileTypeMap().getContentType(new File(pathInName));
    //  "/home/ephraim/Desktop/testfile"
}

public ArrayList<Integer> getBytes(String filePath) {
    ArrayList<Integer> fileBytes = new ArrayList<Integer>();
    try {
        FileInputStream myInputStream = new FileInputStream(new File(filePath));
        do {
            int currentByte = myInputStream.read();
            if(currentByte == -1) {
                System.out.println("broke loop");
                break;
            }
            fileBytes.add(currentByte);
        } while (true);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(fileBytes);
    return fileBytes;
}

public void writeBytes(ArrayList<Integer> hash, String pathName) {
    try {
        OutputStream myOutputStream = new FileOutputStream(new File(pathName));
        for (int currentHash : hash) {
            myOutputStream.write(currentHash);
        }
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //System.out.println(hash);
}

public ArrayList<Integer> corrupt(ArrayList<Integer> hash) {
    ArrayList<Integer> corruptHash = new ArrayList<Integer>();
    ArrayList<Integer> keywordCodeArray = new ArrayList<Integer>();
    Integer keywordIndex = 0;
            String keyword = "corruptthisfile";

    for (int i = 0; i < keyword.length(); i++) {
        keywordCodeArray.add(keyword.codePointAt(i));
    }

    for (Integer currentByte : hash) {


        //Integer currentByteProduct = (keywordCodeArray.get(keywordIndex) + currentByte) / 2;
        Integer currentByteProduct =  currentByte - keywordCodeArray.get(keywordIndex);
        if (currentByteProduct < 0) currentByteProduct += 255;
        corruptHash.add(currentByteProduct);

        if (keywordIndex == (keyword.length() - 1)) {
            keywordIndex = 0;
        } else keywordIndex++;
    }

    //System.out.println(corruptHash);
    return corruptHash;
}

問題は、ファイルがまだ開くことができることです。ファイルを開くと、すべての単語が変更されます (意味をなさないかもしれませんし、文字でさえないかもしれませんが、それでも開くことができます)。

ここに私の実際の質問があります:

ファイルを破損させて、コンピューターがファイルを開く方法をまったく認識できないようにする方法はありますか (つまり、ファイルを開くと、コンピューターは「このファイルは認識されていないため、ファイルを認識できません。開いた」)?

4

3 に答える 3

3

RandomAccessFileを調べたいと思います。また、ほとんどの場合、プログラムは最初からそのファイルを認識します。ファイルを開き、最初の 5 バイトをスクランブルします。

于 2012-04-15T21:00:35.363 に答える
1

任意のファイルを完全に破損させる唯一の方法は、そのすべての内容をランダムなガベージに置き換えることです。それでも、ランダムなガベージが実際に意味のあるものになる可能性は無限に小さいです。

ファイルの種類によっては、限られた破損 (またはそれほど限定的ではない破損) から回復できる場合があります。例えば:

  • ストリーミング メディア コーデックは、ネットワーク パケット損失を考慮して設計されています。限定的な破損が画像アーティファクトとして表示されたり、いくつかのフレームが失われたりすることがありますが、通常、コンテンツはまだ表示可能です。

  • などのブロックベースの圧縮アルゴリズムをbzip2使用すると、損傷していないブロックを復元できます。

  • rarやなどのファイルベースの圧縮システムzipは、アーカイブの残りの部分が損傷していても、圧縮データが損傷していないファイルを復元できる場合があります。

  • テキスト ファイルやソース コード ファイルなどの人間が判読できるテキストは、その一部が破損していてもテキスト エディターで表示できます。サイズが変わらないことは言うまでもありません。全体を破損していない限り、何気ない読者でも、割り当てが完了したかどうか、再送信されたファイルが破損したファイルと同じかどうかを判断できます。

倫理的な問題は別として、これは 1 回限りのことだと考えましたか? データの破損は発生しますが、それほど頻繁ではなく、それほど便利ではありません...

もっと時間が欲しいなら、足を骨折して入院したほうがいいでしょう。

于 2012-04-15T21:22:29.557 に答える
0

より良い方法があります:

  1. あなたの教授はWord文書を受け入れます。マクロウイルスに感染させてから送信してください。
  2. ファイルをメールに添付することを「忘れる」。
  3. メールの送信日を偽造します。あなたの教授がWord文書を受け入れる種類のものである場合、これはうまくいくかもしれません.
于 2012-04-15T21:53:45.380 に答える