interpol Geplaatst: 15 oktober 2007 Auteur Geplaatst: 15 oktober 2007 sorry niet helemaal <img src="/forums/images/graemlins/shocked.gif" alt="" /> als jij dit weet te verwerken in de firmware dan ben je er. <img src="/forums/images/graemlins/grin.gif" alt="" /> Het algoritme van de seca2card! ____________________________________________________________ unit ALG_SECA; { Procedure Encode; Entrées var Wordkey,Worddata : String; sortie dc :Integer Procedure Decode; Entrées var Wordkey,Worddata : String; sortie dc :Integer Procedure Signature ; Entrées var Wordkey,Worddata : String; sortie ll:Integer Procedure Supespace(var word1:string); plus espace + Uppercase } { ********* déclarations des tableaux et variables *************} interface uses SysUtils ,Dialogs; Var Wordkey,Worddata ,Worddata1 : String; // Dc: array [1..8] of byte; { Data signature } Di: array [1..8] of byte; { data calcule } ws: array [1..16] of byte; {sortie xor} Stmp: array [1..16] of byte; {stockage tmp} Bufxor : array [1..1000] of string; { stockage pour signature} Buf: array [1..1000] of byte; { stockage} { tableau des 64 KEY creés par le decodage } Ku : array [0..136] of byte; { KEY et DATA (ou AUTREE) en cours d'utilisation } K : array [1..17] of byte; { key d'encodage 16 caracteres } D : array [1..8] of byte; { Data a traiter 8 caracteres } ll : Integer; //i, j, l , //i,j, LL0,lc: integer; { index de boucle } //c, dt: byte; { compteur intermediaire } Wdt,word1 : String ; { Construction des deux tables de cryptages } Function Swp(id:byte):byte; procedure Prepare(var Wordkey,worddata : string); procedure Encode(var Wordkey,Worddata : String); procedure Decode(var Wordkey,Worddata : String); // procedure Encode; // procedure Decode; procedure Madexor(var Worddata1,Worddata : String); procedure decale(var Worddata : String); procedure Signature(var Wordkey,Worddata : String); procedure Supespace(var word1:string); CONST T1 : array [0..255] of byte = ( $2A,$E1,$0B,$13,$3E,$6E,$32,$48, $D3,$31,$08,$8C,$8F,$95,$BD,$D0, $E4,$6D,$50,$81,$20,$30,$BB,$75, $F5,$D4,$7C,$87,$2C,$4E,$E8,$F4, $BE,$24,$9E,$4D,$80,$37,$D2,$5F, $DB,$04,$7A,$3F,$14,$72,$67,$2D, $CD,$15,$A6,$4C,$2E,$3B,$0C,$41, $62,$FA,$EE,$83,$1E,$A2,$01,$0E, $7F,$59,$C9,$B9,$C4,$9D,$9B,$1B, $9C,$CA,$AF,$3C,$73,$1A,$65,$B1, $76,$84,$39,$98,$E9,$53,$94,$BA, $1D,$29,$CF,$B4,$0D,$05,$7D,$D1, $D7,$0A,$A0,$5C,$91,$71,$92,$88, $AB,$93,$11,$8A,$D6,$5A,$77,$B5, $C3,$19,$C1,$C7,$8E,$F9,$EC,$35, $4B,$CC,$D9,$4A,$18,$23,$9F,$52, $DD,$E3,$AD,$7B,$47,$97,$60,$10, $43,$EF,$07,$A5,$49,$C6,$B3,$55, $28,$51,$5D,$64,$66,$FC,$44,$42, $BC,$26,$09,$74,$6F,$F7,$6B,$4F, $2F,$F0,$EA,$B8,$AE,$F3,$63,$6A, $56,$B2,$02,$D8,$34,$A4,$00,$E6, $58,$EB,$A3,$82,$85,$45,$E0,$89, $7E,$FD,$F2,$3A,$36,$57,$FF,$06, $69,$54,$79,$9A,$B6,$6C,$DC,$8B, $A7,$1F,$90,$03,$17,$1C,$ED,$D5, $AA,$5E,$FE,$DA,$78,$B0,$BF,$12, $A8,$22,$21,$3D,$C2,$C0,$B7,$A9, $E7,$33,$FB,$F1,$70,$E5,$17,$96, $F8,$8D,$46,$A1,$86,$E2,$40,$38, $F6,$68,$25,$16,$AC,$61,$27,$CB, $5B,$C8,$2B,$0F,$99,$DE,$CE,$C5 ); T2 : array [0..255] of byte = ( $BF,$11,$6D,$FA,$26,$7F,$F3,$C8, $9E,$DD,$3F,$16,$97,$BD,$08,$80, $51,$42,$93,$49,$5B,$64,$9B,$25, $F5,$0F,$24,$34,$44,$B8,$EE,$2E, $DA,$8F,$31,$CC,$C0,$5E,$8A,$61, $A1,$63,$C7,$B2,$58,$09,$4D,$46, $81,$82,$68,$4B,$F6,$BC,$9D,$03, $AC,$91,$E8,$3D,$94,$37,$A0,$BB, $CE,$EB,$98,$D8,$38,$56,$E9,$6B, $28,$FD,$84,$C6,$CD,$5F,$6E,$B6, $32,$F7,$0E,$F1,$F8,$54,$C1,$53, $F0,$A7,$95,$7B,$19,$21,$23,$7D, $E1,$A9,$75,$3E,$D6,$ED,$8E,$6F, $DB,$B7,$07,$41,$05,$77,$B4,$2D, $45,$DF,$29,$22,$43,$89,$83,$FC, $D5,$A4,$88,$D1,$F4,$55,$4F,$78, $62,$1E,$1D,$B9,$E0,$2F,$01,$13, $15,$E6,$17,$6A,$8D,$0C,$96,$7E, $86,$27,$A6,$0D,$B5,$73,$71,$AA, $36,$D0,$06,$66,$DC,$B1,$2A,$5A, $72,$BE,$3A,$C5,$40,$65,$1B,$02, $10,$9F,$3B,$F9,$2B,$18,$5C,$D7, $12,$47,$EF,$1A,$87,$D2,$C2,$8B, $99,$9C,$D3,$57,$E4,$76,$67,$CA, $3C,$FB,$90,$20,$14,$48,$C9,$60, $B0,$70,$4E,$A2,$AD,$35,$EA,$C4, $74,$CB,$39,$DE,$E7,$D4,$A3,$A5, $04,$92,$8C,$D9,$7C,$1C,$7A,$A8, $52,$79,$F2,$33,$BA,$1F,$30,$9A, $00,$50,$4C,$FF,$E5,$CF,$59,$C3, $E3,$0A,$85,$B3,$AE,$EC,$0B,$FE, $E2,$AB,$4A,$AF,$69,$6C,$2C,$5D ); implementation uses ULiveInet; {*** creation de la chaine de 16 caracteres = KEY } procedure Prepare(var Wordkey,Worddata : string); var ie,je : integer ; Sc :string ; tp,rst : byte ; c: byte; begin word1 := Wordkey ; supespace(word1) ; wordkey := word1 ; lc := length(Wordkey) ; ie := 1 ;je:=1 ; //************* Key ******************* repeat Sc := copy(Wordkey,je,2); Sc := '$'+Sc ; tp := strtoint(sc); k[ie] := (tp) ; //k := strtoint(Sc); ie := ie+1 ; je := je+2 ; until ie = 9 ; K[9] := K[1] ; K[10] := K[2] ; K[11] := K[3] ; K[12] := K[4] ; K[13] := K[5] ;K[14] := K[6] ; K[15] := K[7] ; K[16] := K[8] ; //************* Data ******************* word1 := Worddata ; supespace(word1) ; worddata := word1 ; lc := length(Worddata) ; rst := 16-lc; // calcul le nb de 0 a rajouter sur dernier mot for ie := 1 to rst do worddata := worddata+'0' ; ie := 1 ;je:=1 ; repeat Sc := copy(Worddata,je,2); Sc := '$'+Sc ; tp := strtoint(sc); d[ie] := (tp) ; // d := strtoint(Sc) ; ie := ie+1 ; je := je+2 ; until ie = 9 ; // Prepare Key et data For ie := 0 to 63 do Begin K[17] := T1[K[16] XOR K[2] XOR (ie SHR 2)] XOR K[1]; Ku[ie] := K[17]; For je := 1 to 16 do K[Je] := K[je+1]; end; //end; for c := 1 to 8 do Di[c] := D[c]; End; //** produit un swap des 4 poids forts avec les 4 poids faibles * Function Swp( id : byte) : byte; Begin Swp := ((D[id] AND $F) SHL 4) OR (D[id] SHR 4); End; //****************** Procedure Pour L'Encodage **************** procedure Encode(var Wordkey,Worddata : String); //procedure Encode; var ie, je,l: integer; c: byte; Begin prepare(wordkey,worddata); {ENCODAGE STANDARD } for l := 0 to 15 do Begin //D data a traiter //Di data calcule for c := 1 to 8 do D[c] := Di[c]; { copie second data cryptes } for c := 5 to 8 do D[c] := T1[D[c] XOR Ku[(l*4)+C-5]]; D[5] := D[5] XOR D[8]; for ie := 8 downto 6 do begin D[ie-1] := T2[(Swp(ie) + D[ie-1]) AND $FF]; D[ie] := D[ie] XOR D[ie-1]; End; for ie := 8 downto 6 do begin je := ie + 1; if je = 9 then je := 5; D[ie] := T1[(Swp(je) + D[ie]) AND $FF]; D[je] := D[je] XOR D[ie]; End; D[6] := D[6] XOR D[5]; For ie := 1 to 4 do D[ie] := Di[ie+4]; Di[5] := Di[1] XOR T2[D[6]]; Di[6] := Di[2] XOR T2[D[8]]; Di[7] := Di[3] XOR T2[D[5]]; Di[8] := Di[4] XOR T2[D[7]]; for ie := 1 to 4 do Di[ie] := D[ie]; End; {rotation data finale } For ie := 1 to 4 do D[ie] := Di[ie]; For ie := 1 to 4 do Di[ie] := Di[ie+4]; For ie := 1 to 4 do Di[ie+4] := D[ie]; for c := 1 to 8 do D[c] := Di[c]; { copie data decrypte } WordData:=''; for c := 1 to 8 do begin Dc[c] := Di[c]; if Di[c]>$F then WordData:=WordData+format('%2x',[Di[c]]) else WordData:=WordData+format('0%1x',[Di[c]]); end; End; //***************** Procedure pour Decodage ********************* procedure Decode(var Wordkey,Worddata : String); // procedure Decode; var ie, je, l: integer; c: byte; begin prepare(wordkey,worddata); for l := 15 downto 0 do Begin //D data a traiter //Di data calcule for c := 1 to 8 do D[c] := Di[c];// copie second data cryptes for c := 5 to 8 do D[c] := T1[D[c] XOR Ku[(l*4)+C-5]]; D[5] := D[5] XOR D[8]; for ie := 8 downto 6 do begin D[ie-1] := T2[(Swp(ie) + D[ie-1]) AND $FF]; D[ie] := D[ie] XOR D[ie-1]; End; for ie := 8 downto 6 do begin je := ie + 1; if je = 9 then je := 5; D[ie] := T1[(Swp(je) + D[ie]) AND $FF]; D[je] := D[je] XOR D[ie]; End; D[6] := D[6] XOR D[5]; For ie := 1 to 4 do D[ie] := Di[ie+4]; Di[5] := Di[1] XOR T2[D[6]]; Di[6] := Di[2] XOR T2[D[8]]; Di[7] := Di[3] XOR T2[D[5]]; Di[8] := Di[4] XOR T2[D[7]]; for ie := 1 to 4 do Di[ie] := D[ie]; End; {rotation data finale } For ie := 1 to 4 do D[ie] := Di[ie]; For ie := 1 to 4 do Di[ie] := Di[ie+4]; For ie := 1 to 4 do Di[ie+4] := D[ie]; for c := 1 to 8 do D[c] := Di[c]; { copie data decrypte } WordData:=''; for c := 1 to 8 do begin Dc[c] := Di[c]; if Di[c]>$F then WordData:=WordData+format('%2x',[Di[c]]) else WordData:=WordData+format('0%1x',[Di[c]]); end; end; // - - - - - - - Separe par Tranche de 16 data //et ajoute des 0 pour faire un multiple de 16 - - - - - - procedure decale(var Worddata : String); var Ltmp,ie,je,ictp,rest,lli: Integer; Stmp: String ; begin Ltmp := length(Worddata) ; LL0 := ltmp ; dt := Ltmp div 16 ; // div par 16 ictp:= Ltmp mod 16 ; if ictp > 0 then begin dt := dt+1 ; // +1 a division rest := 16-ictp ; // calcul le nb de 0 a rajouter sur dernier mot case rest of 1, 3, 5, 7, 9, 11, 13, 15: begin MessageDlg('La longueur Data est impaire'#13'je rajoute un 0 en fin'#13'Sinon ressaisir', mtInformation, [mbOK], 0); LiveInetClass.DEBUGTEST1.text:='erreur:'+worddata+'0' ; LL0 :=LL0+1; // ajoute un 0 pour obtenir nb pair end ; end; LL := (LL0 div 2)+8; for ie := 1 to rest do worddata := worddata+'0' ; end; lli := length(Worddata) ; ie := 1 ;je:=1 ; //************memo decale****************** repeat Stmp := copy(Worddata,je,1); //Stmp := '$'+Stmp ; // //tp := strtoint(stmp); // Bufxor[ie] := (Stmp) ; ie := ie+1 ; je := je+1 ; until ie = Lli+1; end; // - - - - - Xor - - - - - - - - - - - - procedure Madexor(var Worddata1,Worddata : String); var L1,ic, i2: Integer; Ss : String ; begin L1 :=length(Worddata) ; Begin for ic := 1 to l1 do begin i2 := (strtoint('$'+(Worddata[ic]))) Xor (strtoint('$'+(Worddata1 [ic]))); Ss := Ss+IntToHex(i2,1) ; Ws[ic]:=i2 ; end; end; end; //************ Procedure Signature ************* procedure Signature; var ix,ie,je: Integer; Ss,St,Ww : String ; begin word1 := worddata ; supespace(word1) ; worddata := word1 ; if Worddata = '' then begin ll := 0 ; Encode(WordKey,WordData); end ; //i := 0; je := -1 ; decale(Worddata); //LL := (LL0 div 2)+8; // Idt := dt ; // ???????????????? Worddata1 := '0000000000000000' ; repeat je := je+1 ; St := '' ; Ss := '' ; Ww := ''; for ie := 1 to 16 do Ss:= Ss+(Bufxor[ie+(je*16)]) ; Worddata := Ss ; Madexor(Worddata1,Worddata) ; for ie := 1 to 16 do Ww := Ww+IntTohex(Ws[ie],1) ; worddata := Ww ; Encode(WordKey,WordData) ; //* ix := 1; repeat St := St+IntTohex(dc[ix],2) ; Worddata1 := St ; ix := ix+1 ; until ix = 9; until je=dt-1 ; end; //*************** Sup espace ********************** procedure Supespace(var word1:string); var lwc: Integer; ts1 : String ; begin Word1 := uppercase(Word1) ; ts1 := Word1 ; lwc := length(Word1) ; While lwc > 0 do begin If copy(Word1,lwc,1) = ' ' then delete(ts1,lwc,1) ; lwc := lwc-1 ; end ; Word1 := ts1 ; end ; End. Openbox sg9 HD PVR
VREESWIJK Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 Dit is de algoritme van seca2 in de werkekijke vorm. wanneer je dit deel uit een fw haald in bin is het makkelijker te verwerken tot een patsh. dus zoekken naar een juiste fw lijkt mij een betere keus. Eerste Strong 8000 en 8100 van NL & BE met : Motor sm3uni 28-12-03, : Spdif (AC3) 30-10-04, : 3x8 mb Flash 07-02-05
interpol Geplaatst: 15 oktober 2007 Auteur Geplaatst: 15 oktober 2007 Gaat niet lukken in de revolutionfirmware. Je kan niet een stukje bin uit een andere fw plakken en in de revolution stoppen. Het is geen seca gerichte firmware, of blob, multicam of sattracker. Het based NDS firmware. Moet juist via plugin. Ik eet mijn hoed op als het je lukt...., wacht effe doe ook nog mijn schoenen daarbij. Aan het TIS-team heb ik gevraagd of ze willen kijken of ze het seca algo kunnen integrerenin de fw. Zelfs zij hebben er een hard hoofd in omdat ze niet beschikken over de open hdl. groetjes van John. <img src="/forums/images/graemlins/wink.gif" alt="" /> Openbox sg9 HD PVR
VREESWIJK Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 Als we van deze fw gebruik willen maken moet er toch een oplossing komen. Zonder seca2 nl heeft deze fw geen waarde. Als het hun niet lukt zal het ons waarschijnlijk ook niet lukken. Dus blijft er maar een oplossing over! Proberen delen van de nieuwe fw in de sattracker te stoppen en zo een betere fw te creeren. Dat betekend dus stap voor stap vergelijken. Eerste Strong 8000 en 8100 van NL & BE met : Motor sm3uni 28-12-03, : Spdif (AC3) 30-10-04, : 3x8 mb Flash 07-02-05
Smurf Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 uhm "het algo van de seca2 kaart" bedoel je waarschijnlijk mee de communicatie met de kaart? Bolt HD, strong srt8000 sattracker 4, srt4125 concord 1.05, hotbird, astra 1,2,3
interpol Geplaatst: 15 oktober 2007 Auteur Geplaatst: 15 oktober 2007 oeps ja, anders konden we nu met z'n allen kijken. <img src="/forums/images/graemlins/grin.gif" alt="" /> groetjes van John <img src="/forums/images/graemlins/wink.gif" alt="" /> Openbox sg9 HD PVR
VREESWIJK Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 Ja en als je dat niet onder controle krijgt kan je niets met de fw. Ik denk dat het niet verkeerd zou zijn meer mensen in de fw te betrekken. Interpol en ik zelf hebben veel data van de fw en bijde hebben we wijnig tijd. Als hij hier ook mee instemd kunnen we samen een topic openen en de fw uitpluizen tot op zekere hoogte. Nu heb ik tig bestanden over 4 pc met info over de fw. Het zou mooi zijn als we een topic hebben met daarin alle bekende data. Ik ben een van de weinige die weet met welke discrembler de delen van de fw beveiligt zijn. we zouden kunnen beginnen met een fw en een pogje voor het uitlezen zodat iedereen mee kan doen, zonder in dit topic te posten anders word het onleesbaar. Je kan bijvoorbeeld beginnen met het uitzoekken in welk blok wat zit van de fw. wand wie van jullie weet dat de void Flash_function in blok 800928CC zit? Laat staan wat het betekend of wat het doet. Eerste Strong 8000 en 8100 van NL & BE met : Motor sm3uni 28-12-03, : Spdif (AC3) 30-10-04, : 3x8 mb Flash 07-02-05
Smurf Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 Als ik het goed begrijp stuurt de revo firmware de emm's of whatever de ontvanger van de kaart wil weten naar de seriele poort kun je niet een phoenix kaartlezer programmer met seriele kabel of nulmodem aan de seriele poort van de strong hangen en daar de kaart in? Bolt HD, strong srt8000 sattracker 4, srt4125 concord 1.05, hotbird, astra 1,2,3
Smurf Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 denk dat we misschien wel bij het bekende moeten beginnen, de mhw Hebben "we" een lijst met alle variablen die in sattracker (en later revo) worden gebruikt en wat ze betekenen / waar ze voor staan? Bolt HD, strong srt8000 sattracker 4, srt4125 concord 1.05, hotbird, astra 1,2,3
VREESWIJK Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 je moet gewoon bij de basis beginnen dus de da3ned met lijst, dus patshen scannen en alle fw uitlezen inclusief boot. Blokken uitlezen en indelen als je klaar ben doe je dit bij de sattracker en de nieuwe fw. Eerste Strong 8000 en 8100 van NL & BE met : Motor sm3uni 28-12-03, : Spdif (AC3) 30-10-04, : 3x8 mb Flash 07-02-05
Gast Geplaatst: 15 oktober 2007 Geplaatst: 15 oktober 2007 Ondertussen is er ook een patch om de snelheid van de seriële poort te verhogen. Is alleen voor de 8100! (zie bijlage) Ik heb de snelheid kunnen verhogen tot 57600. Ik wil me ook best wel verdiepen in de firmware maar ik begin dan wel echt vanaf nul..
interpol Geplaatst: 16 oktober 2007 Auteur Geplaatst: 16 oktober 2007 @Vreeswijk, eerst overleg via msn, vooral over de te plaatsen punten. Een databanktopic is altijd positief, maar moet wel structuur inzitten. Dit zal ook in overleg moeten met Johan45. Het kan zelfs een aantrekkingskracht hebben op andere geintreseerden, maar het gevaar is dat het een topic wordt met losse opmerkingen. @Smurf, http://www.sat4all.com/forums/showflat.p...;page=0#1442469 Daar had ik ook al gedacht, wat dat moet kunnen. @FJP, Vanaf 0 beginnen is geen probleem. Misschien nog wel beter. Welkom zou ik zeggen. groetjes van John <img src="/forums/images/graemlins/wink.gif" alt="" /> Openbox sg9 HD PVR
Gast Geplaatst: 16 oktober 2007 Geplaatst: 16 oktober 2007 Citaat: @FJP, Vanaf 0 beginnen is geen probleem. Misschien nog wel beter. Welkom zou ik zeggen. Ik heb dan wel wat hulp nodig bij het starten.. (evt handleidingen en welke software te gebruiken)
Hellum Geplaatst: 16 oktober 2007 Geplaatst: 16 oktober 2007 stuur mij dat dan ook ff aub, dat kan ook handig zijn bij die andere dingen die ik doe, omdat ik alleen nog maar wat van de MHW weet. MVG. Gerard If history repeats itself, and the unexpected always happens, how incapable must Man be of learning from experience. -George Bernard Shaw
NailZ Geplaatst: 20 oktober 2007 Geplaatst: 20 oktober 2007 is het al iemand gelukt deze firmware op engels in te stellen ??? kanalen scannen gaat hier idd ook niet goed de receiver blijft hangen op ongeveer 260 kanalen via de A knop kan ik dan wel terug is dus niet een volledige hangup dream dm7000 dm500, kathrein ufs910 en strong 8000 en 8100
Aanbevolen berichten
Maak een account aan of log in om te reageren
Je moet een lid zijn om een reactie te kunnen achterlaten
Account aanmaken
Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!
Registreer een nieuwe accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen