Author: nbd
Date: 2015-10-12 15:11:03 +0200 (Mon, 12 Oct 2015)
New Revision: 47185

Modified:
   trunk/tools/firmware-utils/src/buffalo-enc.c
Log:
firmware-utils/buffalo-enc: add support for decrypting data with an offset

Signed-off-by: Felix Fietkau <[email protected]>

Modified: trunk/tools/firmware-utils/src/buffalo-enc.c
===================================================================
--- trunk/tools/firmware-utils/src/buffalo-enc.c        2015-10-11 22:41:30 UTC 
(rev 47184)
+++ trunk/tools/firmware-utils/src/buffalo-enc.c        2015-10-12 13:11:03 UTC 
(rev 47185)
@@ -34,6 +34,7 @@
 static char *product;
 static char *version;
 static int do_decrypt;
+static int offset;
 
 void usage(int status)
 {
@@ -52,6 +53,7 @@
 "  -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 @@
        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 @@
        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 @@
        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 @@
                case 's':
                        seed = strtoul(optarg, NULL, 16);
                        break;
+               case 'O':
+                       offset = strtoul(optarg, NULL, 0);
+                       break;
                case 'h':
                        usage(EXIT_SUCCESS);
                        break;
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to