まず第一に、aes暗号化関数のコード:
void
xorcrypto(u_int8_t *key, u_int32_t keylen,
u_int8_t *data, u_int32_t datalen)
{
/*u_int8_t ....etc are alias for uint8_t...etc so don't bother about them*/
FILE *fp,*fq,*fr;
int i;
fp=fopen("key","wb");
fwrite((char *)key,keylen,1,fp);
fq=fopen("file.txt","wb");
fwrite((char *)data,datalen,1,fq);
fclose(fq);
fclose(fp);
system("sudo openssl enc -aes-256-cbc -salt -in file.txt
-out file.enc -pass file:key");
/* Here is the code section i need*/
}
上記で指定したコードセクションで必要なのは
、ファイルfile.encの内容でデータ(u_int8_t * dataが指す)を入力/変更 できる必要があることです。
実際に取得する入力がan/w ipパケットからのものであるため、データ長について心配する必要はありません。その
ため、1024バイトまでのデータがプロビジョニングされ、ファイルの内容がこの制限を超えることはありません。
これが私の試みです(デバッグの目的でも、file.encの内容とstdoutのデータセクションに言及する必要があります)
fr=fopen("file.enc","rb");
memset(data,0,sizeof(data));
i=0;
while( (ch=fgetc(fr))==EOF) {
data[i]=ch;
i++;
}
data[i]='\0';
i=0;
puts((char *)data);
printf("\n");
fclose(fr);
これが役立つかもしれないいくつかの出力スナップショットです.....
udit@udit-Dabba ~/Downloads/sendip-2.5-mec-2/mec $ cat key
thisisaeskey
udit@udit-Dabba ~/Downloads/sendip-2.5-mec-2/mec $ cat file.txt
w�uP����abcd
udit@udit-Dabba ~/Downloads/sendip-2.5-mec-2/mec $ cat file.enc
Salted__����a�dR�P��l�C-<��y�O^Z��/a��3����Q
udit@udit-Dabba ~/Downloads/sendip-2.5-mec-2/mec $ hexdump -C file.enc
00000000 53 61 6c 74 65 64 5f 5f b6 f2 b2 d0 61 d9 64 1c |Salted__....a.d.|
00000010 52 e0 50 96 e8 6c 0e c0 43 2d 3c c4 f6 79 1b d2 |R.P..l..C-<..y..|
00000020 4f 5e 5a b1 d6 2f 61 f8 15 f6 33 e1 88 f0 db 51 |O^Z../a...3....Q|
00000030
udit@udit-Dabba ~/Downloads/sendip-2.5-mec-2/mec $
ファンクトンは、指定された場所(u_int8_t * data)の内容を変更できないため、stdoutにデータを書き込むことができませんでしたputs(data)
。
これについて私を助けてください...これについてさらに必要な情報があれば、私はそれを追加します。