쉘 스크립트에서
$crypsetup isLuks /dev/sda1
위 명령은 반환됩니다.
- 0 -> luks 파티션(암호화된 파티션)
- 1 -> Luks가 아닌 파티션(암호화되지 않은 파티션).
라이브러리 API를 사용하여 CPP 프로그램에서 디스크 암호화를 구현했습니다. cryptosetup API를 사용하여 파티션이 luks 파티션인지 확인하는 방법은 무엇입니까?
답변1
당신은 그것을 사용할 수 있습니다crypt_load
이 작업을 수행하는 기능입니다. 빠른 "재구현" cryptsetup isLuks
은 다음과 같습니다.
#include <libcryptsetup.h>
#include <stdio.h>
#include <stdlib.h>
#define DEVICE "/dev/sda1"
int main (void) {
struct crypt_device *cd = NULL;
int ret;
ret = crypt_init (&cd, DEVICE);
if (ret != 0) {
printf ("Failed to initialize device\n");
return 1;
}
ret = crypt_load (cd, CRYPT_LUKS, NULL);
crypt_free (cd);
if (ret != 0)
return 1;
else
return ret;
}
전체 LUKS 메타데이터를 읽으 므로 crypt_load
장치에 LUKS 헤더가 있는지 확인하기 위해 슈퍼블록을 확인하려는 경우 libblkid를 사용하는 것이 더 나을 수 있습니다(그리고 더 빠를 수도 있습니다). 이를 위해 확인할 수 있습니다이 구현"루크스야"libblockdev 라이브러리.