>source

그래서 학교는 우리에게 프로젝트를 제공했습니다(dir의 파일을 암호화한 다음 해독) 선생님은 우리에게 code의 일부를 주었습니다. 여기있어 https://pastebin.com/g4BfVA8a

그래서 내 스크립트는 작은 크기로 잘 작동하므로 매력처럼 암호화하고 해독할 수 있습니다. 그러나 내가 /home을 해독하는 이유를 시도하면 암호를 해독할 때 다음 오류가 발생합니다.

rm: cannot remove '/home/kali/.mozilla/firefox/Crash': No such file or directory
rm: cannot remove 'Reports/InstallTime20200914174320.Pwnd': No such file or directory
140470750399488:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:610:
zsh: abort      sudo ./main -p /home/kali -d  28924fd9021642cee4002de561b52640

내 키/iv는 내가 작성한 서버에서 복사하여 붙여넣었기 때문에 잘못될 수 없습니다. 어떤 아이디어라도? 내 스크립트의 작은 부분:

if(is_encrypted(abs_path))
                    {
                        if(decrypt(key, iv, abs_path))
                        {
                            char str[4099];
                            sprintf(str, "rm %s", abs_path);
                            system(str);
                        }
                        else
                        {
                            handleErrors();
                            printf("%s caused the error", abs_path);
                        }

내 키/iv는 틀릴 수 없습니다 ... 어떤 생각이 있습니까? 당신은 그것을 듣고 싶지 않을 것이지만 내 생각은 당신의 키/iv가 잘못되었다는 것입니다. 명령줄 매개변수를 처리하고/하거나 키/iv를 생성하는 방법을 알 수 없지만 스크립트에 대한 유일한 인수는 32개의 16진수 문자 또는 128비트처럼 보이고 AES를 사용하고 있다는 것입니다. 키 크기가 256비트입니다. 그것은 적어도 불일치이므로 거기에서 찾기 시작합니다.

President James K. Polk2021-12-09 02:21:10

SO는 숙제를 하는 웹사이트가 아닙니다. 당신의 실수를 고치기 위해 무엇을 했는가? 디버깅을 단계별로 시도하셨습니까? 게다가, 우리는 어떻게 그렇게 작은 세부사항을 도와야 합니까?

Guillaume Petitjean2021-12-09 02:21:10

수정사항을 참고하세요.

Empty_boy2021-12-09 02:21:10

편집된 code가 잘못된 것 같습니다. AES_256_KEY_SIZE는 32여야 하고 AES_BLOCK_SIZE는 16이어야 합니다. 따라서 두 길이가 다르기 때문에 generate_key에서 단일 길이 변수 sizeKey를 사용하여 둘의 길이를 포함할 수 없습니다. code가 정말 정확하다면 RAND_bytes(iv, sizeKey)에 힙 또는 버퍼 오버플로가 있는 것입니다.

President James K. Polk2021-12-09 02:21:10

@PresidentJamesK.Polk, 오, rand_bytes()에서 이 실수를 본 적이 없습니다... 수정했습니다. 하지만 같은 오류

Empty_boy2021-12-09 02:21:10
  • 이전 동적 배열의 크기를 채우기 위해 Excel 테이블을 자동으로 확장하는 방법
  • 다음 javascript : 복사 이벤트 중 복사된 HTML을 수집할 수 없음