#ifndef NANDSPARE_H #define NANDSPARE_H //some class to handle the ecc & hmac data in the nandBin #include "includes.h" #include "sha1.h" class NandSpare { public: NandSpare(); void SetHMacKey( const QByteArray key ); QByteArray Get_hmac_data( const QByteArray cluster, quint32 uid, const unsigned char *name, quint32 entry_n, quint32 x3, quint16 blk ); QByteArray Get_hmac_meta( const QByteArray cluster, quint16 super_blk ); static QByteArray CalcEcc( QByteArray in ); static quint8 Parity( quint8 x ); private: QByteArray hmacKey; }; #endif // NANDSPARE_H /* spare data... 0x40 bytes 0x30 = hmac 0x10 = ecc block 0 ( boot1 ) all hmac is 0xffs all ecc is calc'd. after the first 9 pages, it works out to all 0s block 1 ( boot2v2 ) all hmac is 0xff and then 0s block 2 same as above until page 2 starting at page 2, no ecc or hmac is written. its all 0xff spare data is only written for pages used, not on a cluster basis block 3 ( bootmii ) same as block 1 block 4 same as above( hmac starts with 0xff then all 0s. after page2 cluster 2 all ecc works at to 0s as well ) spare data is written for clusters used, not on a page basis block 5 ( never been used ) all spare data is 0xffs, nothing is calculated block 6 ( boot2 copy ) same as block 2 block 7 same as block 1 super blocks hmac data is only on block ff1 cluster 7 page: 6 ( 3fc7e ) block ff1 cluster 7 page: 7 ( 3fc7f ) block ff3 cluster 7 page: 6 ( 3fcfe ) block ff3 cluster 7 page: 7 ( 3fcff ) block ff5 cluster 7 page: 6 ( 3fd7e ) block ff5 cluster 7 page: 7 ( 3fd7f ) block ff7 cluster 7 page: 6 ( 3fdfe ) block ff7 cluster 7 page: 7 ( 3fdff ) block ff9 cluster 7 page: 6 ( 3fe7e ) block ff9 cluster 7 page: 7 ( 3fe7f ) block ffb cluster 7 page: 6 ( 3fefe ) block ffb cluster 7 page: 7 ( 3feff ) block ffd cluster 7 page: 6 ( 3ff7e ) block ffd cluster 7 page: 7 ( 3ff7f ) block fff cluster 7 page: 6 ( 3fffe ) block fff cluster 7 page: 7 ( 3ffff ) */ /* block ff1 cluster 7 page: 6 ( 3fc7e ) NandBin::GetPage( 3fc7e , true ) 00000000 ff1646bd cef67127 e662a4dc 5154ec52 ..F...q'.b..QT.R 00000010 c844ebb9 fb1646bd cef67127 e662a4dc .D....F...q'.b.. 00000020 51000000 00000000 00000000 00000000 Q............... 00000030 00000000 00000000 00000000 00000000 ................ block ff1 cluster 7 page: 7 ( 3fc7f ) NandBin::GetPage( 3fc7f , true ) 00000000 ff54ec52 c844ebb9 fb000000 0020049e .T.R.D....... .. 00000010 00000000 40000000 002004f1 a8000000 ....@.... ...... 00000020 00000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff3 cluster 7 page: 6 ( 3fcfe ) NandBin::GetPage( 3fcfe , true ) 00000000 ff199405 907b607c 4cd691d2 825f2de9 .....{`|L...._-. 00000010 18185217 38199405 907b607c 4cd691d2 ..R.8....{`|L... 00000020 82000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff3 cluster 7 page: 7 ( 3fcff ) NandBin::GetPage( 3fcff , true ) 00000000 ff5f2de9 18185217 38600000 000043dd ._-...R.8`....C. 00000010 05cf0bd7 38c882b2 24b67f57 6087c41f ....8...$..W`... 00000020 4d000000 00000000 00000000 00000000 M............... 00000030 00000000 00000000 00000000 00000000 ................ block ff5 cluster 7 page: 6 ( 3fd7e ) NandBin::GetPage( 3fd7e , true ) 00000000 ff1c1964 3e97b995 b864f566 b9fa025d ...d>....d.f...] 00000010 4f708e95 cc1c1964 3e97b995 b864f566 Op.....d>....d.f 00000020 b9000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff5 cluster 7 page: 7 ( 3fd7f ) NandBin::GetPage( 3fd7f , true ) 00000000 fffa025d 4f708e95 cc2004f8 80b8f3d4 ...]Op... ...... 00000010 b94820bc f631c4c2 40c8e1da 12a29ba9 .H ..1..@....... 00000020 df000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ *//* block ff7 cluster 7 page: 6 ( 3fdfe ) NandBin::GetPage( 3fdfe , true ) 00000000 ffff8ca6 8f936ad2 d4fb8424 16cd48ef ......j....$..H. 00000010 1ee1003f edff8ca6 8f936ad2 d4fb8424 ...?......j....$ 00000020 16000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff7 cluster 7 page: 7 ( 3fdff ) NandBin::GetPage( 3fdff , true ) 00000000 ffcd48ef 1ee1003f ed000000 1020000d ..H....?..... .. 00000010 eb000000 01000000 03000000 022004f7 ............. .. 00000020 f4000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff9 cluster 7 page: 6 ( 3fe7e ) NandBin::GetPage( 3fe7e , true ) 00000000 ffada309 ba23b5e5 fa37a52d 10d13f10 .....#...7.-..?. 00000010 72265162 43ada309 ba23b5e5 fa37a52d r&QbC....#...7.- 00000020 10000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ff9 cluster 7 page: 7 ( 3fe7f ) NandBin::GetPage( 3fe7f , true ) 00000000 ffd13f10 72265162 432000ae 00000000 ..?.r&QbC ...... 00000010 002004ae 00000000 102004f1 e02000ad . ....... ... .. 00000020 c4000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ffb cluster 7 page: 6 ( 3fefe ) NandBin::GetPage( 3fefe , true ) 00000000 ff40a82f f3e32161 5f9e91e7 841daf5e .@./..!a_......^ 00000010 c74678b2 b540a82f f3e32161 5f9e91e7 .Fx..@./..!a_... 00000020 84000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ffb cluster 7 page: 7 ( 3feff ) NandBin::GetPage( 3feff , true ) 00000000 ff1daf5e c74678b2 b52000ae 0000ed15 ...^.Fx.. ...... 00000010 e892928e 766d0000 00000000 00022001 ....vm........ . 00000020 da000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ffd cluster 7 page: 6 ( 3ff7e ) NandBin::GetPage( 3ff7e , true ) 00000000 ff80ded9 67d7c195 ffd65a8b 907ea776 ....g.....Z..~.v 00000010 8c56dc33 8280ded9 67d7c195 ffd65a8b .V.3....g.....Z. 00000020 90000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block ffd cluster 7 page: 7 ( 3ff7f ) NandBin::GetPage( 3ff7f , true ) 00000000 ff7ea776 8c56dc33 82000000 00200091 .~.v.V.3..... .. 00000010 c0000000 40000000 002004f1 80000000 ....@.... ...... 00000020 00000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block fff cluster 7 page: 6 ( 3fffe ) NandBin::GetPage( 3fffe , true ) 00000000 ff9570f7 915460fe 3f32d363 9a1ebfa9 ..p..T`.?2.c.... 00000010 74d3e0a4 969570f7 915460fe 3f32d363 t.....p..T`.?2.c 00000020 9a000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ block fff cluster 7 page: 7 ( 3ffff ) NandBin::GetPage( 3ffff , true ) 00000000 ff1ebfa9 74d3e0a4 962004f8 80b8f3d4 ....t.... ...... 00000010 b94820bc f631c4c2 40c8e1da 12a29ba9 .H ..1..@....... 00000020 df000000 00000000 00000000 00000000 ................ 00000030 00000000 00000000 00000000 00000000 ................ */