注:この質問を判断しないでください。私がこれを「ごまかす」ためにやっていると思っている人へ。とにかく私はもう学校に通っていないので、あなたは間違っています。さらに、私自身が実際に不正行為をしようとしている場合、プログラムを再作成するのではなく、そのために既に作成されているサービスを使用するだけです。私がこのプロジェクトを引き受けたのは、それが楽しいかもしれないと思ったからです。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;
}
問題は、ファイルがまだ開くことができることです。ファイルを開くと、すべての単語が変更されます (意味をなさないかもしれませんし、文字でさえないかもしれませんが、それでも開くことができます)。
ここに私の実際の質問があります:
ファイルを破損させて、コンピューターがファイルを開く方法をまったく認識できないようにする方法はありますか (つまり、ファイルを開くと、コンピューターは「このファイルは認識されていないため、ファイルを認識できません。開いた」)?