아래에 포함 된 코드를 사용하여 일부 그래픽 파일의 암호를 해독했습니다. 나는 그것을 다시 암호화 할 수 있도록 그것을 수정하고 싶다. 불행히도 저는 그래픽 디자이너이고 프로그래밍에 관한 기본적인 지식 만 가지고 있습니다. 그래서이 코드를 제가 직접 수정할 수있는 수준에서 이해하지 못합니다.파일 암호를 해독하는 대신 암호화 할 코드를 변경하는 방법은 무엇입니까?
#include <stdio.h>
int main (int argc, char **argv)
{
FILE *inp, *outp;
int i;
char sig[] = "CF10", *ptr;
if (argc != 3)
{
printf ("usage: decode [input] [output]\n");
return -1;
}
inp = fopen (argv[1], "rb");
if (inp == NULL)
{
printf ("bad input file '%s'\n", argv[1]);
return -2;
}
ptr = sig;
while (*ptr)
{
i = fgetc (inp);
if (*ptr != i)
{
printf ("input file sig is not 'CF10'\n");
return -2;
}
ptr++;
}
outp = fopen (argv[2], "wb");
if (outp == NULL)
{
printf ("bad output file '%s'\n", argv[1]);
return -2;
}
do
{
i = fgetc(inp);
if (i != EOF)
fputc (i^0x8d, outp);
} while (i != EOF);
fclose (inp);
fclose (outp);
printf ("all done. bye bye\n");
return 0;
}
이것은 단순한 XOR 일 뿐이므로 아무 것도 변경할 필요가 없습니다 (암호 해독과 암호화가 정확히 동일 함). – Dmitri
"프로그램 입력 출력"매개 변수와 함께 명령 프롬프트에서이 프로그램을 사용하려고하면 아래의 주석에 "입력 파일이 CF10이 아닙니다"라는 메시지가 나타납니다. 뭐가 잘못 됐는지 말해 줄래? – Forc3ofWill
파일의 첫 번째 바이트가 "CF10"인 코드 검사와 비슷하지만 "CF10"을 ""로 변경하여 검사를 건너 뛸 수 있습니다. 여기서 "sig []"는 파일의 상단 근처에서 초기화됩니다 . – Dmitri