シェルスクリプトから
$crypsetup isLuks /dev/sda1
上記のコマンドは返されます。
- 0 -> luksパーティション(暗号化されたパーティション)
- 1 - >ルクス以外のパーティション(暗号化されていないパーティション)。
ライブラリ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ライブラリ。