Author: akv
Date: 2010-01-23 21:13:28 +0100 (Sat, 23 Jan 2010)
New Revision: 3063
Modified:
branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c
Log:
Reading of LensIDNumber from Nikon (Encrypted).
Modified: branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c
===================================================================
--- branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c 2010-01-23
17:49:34 UTC (rev 3062)
+++ branches/rawstudio-ng-color/plugins/meta-tiff/tiff-meta.c 2010-01-23
20:13:28 UTC (rev 3063)
@@ -489,8 +489,10 @@
guint base;
guint save;
gint serial = 0;
+ gint key = 0;
guint ver97 = 0;
guchar buf97[324], ci, cj, ck;
+ guchar buf98[31] = "";
gboolean magic; /* Nikon's makernote type */
if (raw_strcmp(rawfile, offset, "Nikon", 5))
@@ -642,7 +644,8 @@
}
break;
case 0x0098: /* LensData - LensData0100 | LensData0101
| LensData0201 | LensData0204 | LensDataUnknown */
- /* FIXME: meta->lens_id = LensIDNumber
(encrypted) */
+ /* Will be used in 0x00a7 */
+ raw_strcpy(rawfile, offset, &buf98, 31);
break;
case 0x001d: /* serial */
raw_get_uchar(rawfile, offset++, &char_tmp);
@@ -663,8 +666,22 @@
raw_get_uchar(rawfile, offset++,
ctmp+1);
raw_get_uchar(rawfile, offset++,
ctmp+2);
raw_get_uchar(rawfile, offset, ctmp+3);
+ key = ctmp[0]^ctmp[1]^ctmp[2]^ctmp[3];
+
+ /* data from 0x0098 */
+ if (strlen((const gchar *) buf98))
+ {
+ ci = xlat[0][serial & 0xff];
+ cj = xlat[1][key];
+ ck = 0x60;
+
+ for (i=4; i < sizeof(buf98);
i++)
+ buf98[i] = buf98[i] ^
(cj += ci * ck++);
+ meta->lens_id = buf98[0x0b];
+ }
+
ci = xlat[0][serial & 0xff];
- cj =
xlat[1][ctmp[0]^ctmp[1]^ctmp[2]^ctmp[3]];
+ cj = xlat[1][key];
ck = 0x60;
for (i=0; i < 324; i++)
buf97[i] ^= (cj += ci * ck++);
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit