firmware-utils/buffalo-enc: add support for decrypting data with an offset
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 47185
This commit is contained in:
parent
d57bba8560
commit
772e2c0a77
@ -34,6 +34,7 @@ static unsigned char seed = 'O';
|
||||
static char *product;
|
||||
static char *version;
|
||||
static int do_decrypt;
|
||||
static int offset;
|
||||
|
||||
void usage(int status)
|
||||
{
|
||||
@ -52,6 +53,7 @@ void usage(int status)
|
||||
" -p <product> set product name to <product>\n"
|
||||
" -v <version> set version to <version>\n"
|
||||
" -h show this screen\n"
|
||||
" -O Offset of encrypted data in file (decryption)\n"
|
||||
);
|
||||
|
||||
exit(status);
|
||||
@ -87,7 +89,7 @@ static int decrypt_file(void)
|
||||
ep.key = (unsigned char *) crypt_key;
|
||||
ep.longstate = longstate;
|
||||
|
||||
err = decrypt_buf(&ep, buf, src_len);
|
||||
err = decrypt_buf(&ep, buf + offset, src_len - offset);
|
||||
if (err) {
|
||||
ERR("unable to decrypt '%s'", ifname);
|
||||
goto out;
|
||||
@ -100,7 +102,7 @@ static int decrypt_file(void)
|
||||
printf("Data len\t: %u\n", ep.datalen);
|
||||
printf("Checksum\t: 0x%08x\n", ep.csum);
|
||||
|
||||
err = write_buf_to_file(ofname, buf, ep.datalen);
|
||||
err = write_buf_to_file(ofname, buf + offset, ep.datalen);
|
||||
if (err) {
|
||||
ERR("unable to write to file '%s'", ofname);
|
||||
goto out;
|
||||
@ -239,7 +241,7 @@ int main(int argc, char *argv[])
|
||||
while ( 1 ) {
|
||||
int c;
|
||||
|
||||
c = getopt(argc, argv, "adi:m:o:hlp:v:k:r:s:");
|
||||
c = getopt(argc, argv, "adi:m:o:hlp:v:k:O:r:s:");
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
@ -271,6 +273,9 @@ int main(int argc, char *argv[])
|
||||
case 's':
|
||||
seed = strtoul(optarg, NULL, 16);
|
||||
break;
|
||||
case 'O':
|
||||
offset = strtoul(optarg, NULL, 0);
|
||||
break;
|
||||
case 'h':
|
||||
usage(EXIT_SUCCESS);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user