From: anisota Date: Thu, 24 Jan 2008 21:43:08 +0000 (+0100) Subject: nagra 0101: update BEV Algo X-Git-Tag: 0.9.0~25 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=f1716075984107501a39239f6e2c8118125f4758;p=sasc-ng.git nagra 0101: update BEV Algo --- diff --git a/systems/nagra/nagra2-0101.c b/systems/nagra/nagra2-0101.c index 0a999d2..dc247c1 100644 --- a/systems/nagra/nagra2-0101.c +++ b/systems/nagra/nagra2-0101.c @@ -619,6 +619,7 @@ bool cN2Prov0101::Algo(int algo, const unsigned char *hd, unsigned char *hw) SetSp(0x0FFF,0x0EF8); ClearBreakpoints(); SetMem(0x0100,mecmCode+8,0x100-8); + SetMem(0xa00,hd,seedSize); SetMem(0x0ba2,hw,0x80); AddBreakpoint(0x0000); AddRomCallbacks(); @@ -765,6 +766,19 @@ bool cN2Prov0101::ProcessMap(int f) DoMap(f,tmp,Get(0x48)); AddCycles(MapCycles()); break; + case 0x43: + DoMap(f); + break; + case 0x44: + GetMem(0x400,tmp,64,0); + DoMap(f,tmp); + SetMem(0x440,tmp,20,0); + break; + case 0x45: + GetMem(0x400,tmp,64,0); + DoMap(f,tmp,Get(0x48)); + SetMem(0x440,tmp,20,0); + break; case 0x4d: DoMap(f,tmp,-((Get(0x48)<<16)|(Get(0x49)<<8)|Get(0x4a))); SetMem(0x400,tmp,53,0); diff --git a/systems/nagra/nagra2.c b/systems/nagra/nagra2.c index 5a47488..4b9a81f 100644 --- a/systems/nagra/nagra2.c +++ b/systems/nagra/nagra2.c @@ -532,12 +532,12 @@ bool cMapCore::DoMap(int f, unsigned char *data, int l) BYTE4_LE(data+16,sctx.h0); break; case 0x45: // add wordsize bytes to SHA1 buffer and finalize SHA result - if(wordsize) { - if(wordsize>1) RotateBytes(data,wordsize); - SHA1_Update(&sctx,data,wordsize); + if(dl) { + if(dl>1) RotateBytes(data,dl); + SHA1_Update(&sctx,data,dl); } - memset(data,0,64); - SHA1_Final(data+64,&sctx); + SHA1_Final(data,&sctx); + RotateBytes(data,20); break; default: return false;