Kvtool V0.1


maxgwen
 Share

Messages recommandés

encore une nouveauté , bon j'ai essayé le soft , mais je suis pas sur de ta manip"

j'ai extrait le soft , validé le menu "open KV" je selectionne le dump , affichage fenetre "dialog" annotation "kv encrypted" validation "ok" = rien retour a la page du soft

a quoi sert le menu "decrypt/encrypt kv" de memoire avant de modifier un kv il faut le decrypter

Lien vers le commentaire
Partager sur d'autres sites

encore une nouveauté , bon j'ai essayé le soft , mais je suis pas sur de ta manip"

j'ai extrait le soft , validé le menu "open KV" je selectionne le dump , affichage fenetre "dialog" annotation "kv encrypted" validation "ok" = rien retour a la page du soft

a quoi sert le menu "decrypt/encrypt kv" de memoire avant de modifier un kv il faut le decrypter

Bonjour bugess le mieux serai un petit dialogue en live genre msn et au sujet du "de memoire avant de modifier un kv il faut le decrypter" je ne c' est pas quelle donné reste identique a tout les kv décrypté donc je comptrol

les - - de la date sur le kv , pas génial mais bon ... et pour "decrypt/encrypt kv" en faite ces du rc4 donc si tu prend un fichier pas crypté tu le crypte et s il est crypté du le décrypte , la fonction est

identique après le résultat final repend de celui entré

KVTool v0.2 n arrête pas la lecture des info du kv même si le kv est crypté

Modifié par maxgwen
Lien vers le commentaire
Partager sur d'autres sites

repetit essai de la V0.2

donc j'ai utilisé la fonction

open KV , j'ouvre mon rawKV extrait d'une CM ,

kvtool.png

serial ??

manufa ??

Region c'est une pal

DVD pas la bonne

j'ai testé en rajoutant la clé dvd

kvtool1.png

meme resultat , ou je mis prend mal

Lien vers le commentaire
Partager sur d'autres sites

Re la fonction open kv ouvre un KV_dec.bin le tien est un KV_enc.bin surement comme tu dit rawKV donc avant il faut entré ta key cpu et Decrypt/Encrypt KeyVault

J ai apporté quelque modification supplémentaire

KVTool_v0.3

Modifié par maxgwen
Lien vers le commentaire
Partager sur d'autres sites

Ok, donc avant toutes choses il faut insérer la clé CPU,

ensuite je clique sur décrypte KV, je sélectionne mon KV, j'obtiens un KV_dec.bin j'ouvre le KV_dec.bin avec le bouton "OPEN" et les infos apparaissent.

j'ai rien oublié ?

edit : ca fonctionne mais j'ai ça dans la date de fabrication : “IEP†DÀ

mais le reste est visiblement bon.

Modifié par AnGe7
Lien vers le commentaire
Partager sur d'autres sites

me revoila :mellow: effectivement c'est bien se que je pensais donc comme annoté la manip est commune a un "360flashtool" faut commencer par mettre la clé cpu , normal c'est elle qui permet de decrypter , puis on utilise le menu "decrypt/encryp" qui nous donne un kv decrypté qui lui est alors accessible avec lemenu "open" :rolleyes: je vais etre casse couille , mais autant le faire en auto a se moment la , et faire annoté un menu info pour la demande de la clé cpu -_- et encore une derniere , l'interger dans ton Gxnand ;) le meme soft pour tout manip sur une nand , c'est bien plus pratique

pour le soft actuel , ca marche a par la date qui est corrompu , toute sorte de signe au lieu de la date , comme avec 360flashtool et une date ms superieure ou inferieure a 2005 crying je sais plus j'ai un trou sur la date

Lien vers le commentaire
Partager sur d'autres sites

me revoila :mellow: effectivement c'est bien se que je pensais donc comme annoté la manip est commune a un "360flashtool" faut commencer par mettre la clé cpu , normal c'est elle qui permet de decrypter , puis on utilise le menu "decrypt/encryp" qui nous donne un kv decrypté qui lui est alors accessible avec lemenu "open" :rolleyes: je vais etre casse couille , mais autant le faire en auto a se moment la , et faire annoté un menu info pour la demande de la clé cpu -_- et encore une derniere , l'interger dans ton Gxnand ;) le meme soft pour tout manip sur une nand , c'est bien plus pratique

pour le soft actuel , ca marche a par la date qui est corrompu , toute sorte de signe au lieu de la date , comme avec 360flashtool et une date ms superieure ou inferieure a 2005 crying je sais plus j'ai un trou sur la date

j'ai reporté la même chose plus haut ;) tu as le bug aussi ? je lui ai fais remonté ;)

mais c'est vrai que bugess à raison, il faudrait automatisé l'action, une fenêtre d'action qui demande la clé CPU, on la rentre, on va chercher notre KV et le fichier décrypté s'enregistre au même endroit et s'ouvre automatiquement avec les infos qui s'affiche.

Lien vers le commentaire
Partager sur d'autres sites

re , encore :ok: pour tes softs , mais desolé de te le dire , pas d'annotation de date :rolleyes:

et pour tes essais utilise cela

Voir le Fichier : essai2.rar

Voir le Fichier : essai.rar

Merci pour ces fichiers bon chose qui est sure ce sont des kv type 2 après j ai fait une comparaison avec fdt et en faite je ne voie pas ce qui change d un KV_dec.bin type 1 ou 2 mais chose qui est sure fdt lui le detecte bien pour ré encrypté le kv car la chose qui change en premier dans le version crypté se sont les block qui sont dans la kv2 et qui ne sont pas dans le kv1

block 512 + 16 ( 16 = 01 00 00 00 00 FF 00 00 00 00 00 00 xx xx xx xx ) le 01 est un compteur , FF indicateur bad-block si different de FF cette zone est concideré en babdblock et apres le reste les XX XX XX XX sa doit etre un crc ou autre je ne connai pas la methode de calcul

Donc en gros pour l instant KVTool = KV type 1 il me faut plus d info pour comptinué pour le KV type 2

Lien vers le commentaire
Partager sur d'autres sites

il te faut quoi comme info , si on peut t'aider ;)

Merci J ai presque tout regroupé enfin presque lol

/*----------------------------------------------------------------------------

Function name: BSswap32

Syntax: static inline unsigned long BSswap32(unsigned long t)

Parameter: Description:

- -

Return Value: Description:

Description:

----------------------------------------------------------------------------*/

static inline unsigned long BSswap32(unsigned long t)

{

return ((t & 0xFF) << 24) | ((t & 0xFF00) << 8) | ((t & 0xFF0000) >> 8) | ((t & 0xFF000000) >> 24);

}

/*----------------------------------------------------------------------------

Procedure name: CalcECC

Syntax: void CalcECC(UINT *Data)

Parameter: Description:

- -

Return Value: Description:

Description:

----------------------------------------------------------------------------*/

void CalcECC(BYTE *Data, UINT PageSize)

{

UINT Pos = 0, Value = 0;

BYTE *Edc = ((BYTE*) Data) + PageSize;

UINT v = 0;

for (Pos = 0; Pos < 0x1066; Pos++)

{

if(!(Pos & 31))

v = ~BSswap32(*Data++);

Value ^= v & 1;

v >>= 1;

if(Value & 1)

Value ^= 0x6954559;

Value >>= 1;

}

Value = ~Value;

// 26 bit ecc Data

Edc[0xC] |= (char) ((Value << 6) & 0xC0);

Edc[0xD] = (char) ((Value >> 2) & 0xFF);

Edc[0xE] = (char) ((Value >> 10) & 0xFF);

Edc[0xF] = (char) ((Value >> 18) & 0xFF);

}

sa a transcrire en pascal :whistling:

Lien vers le commentaire
Partager sur d'autres sites

Je pense que BSwap32 doit s'écrire comme ça en Pascal.

function BSswap32(t: LongInt) : LongInt;begin	 result := ((t and $FF) << 24) or ((t and $FF00) << 8) or ((t and $FF0000) >> 8) or ((t and $FF000000) >> 24);end;

L'autre fonction y'a des pointeurs de partout, et je ne maitrise pas les pointeurs en C, et encore moins en pascal xD.

Modifié par BestPig
Lien vers le commentaire
Partager sur d'autres sites

Je pense que BSwap32 doit s'écrire comme ça en Pascal.

function BSswap32(t: LongInt) : LongInt;begin	 result := ((t and $FF) << 24) or ((t and $FF00) << 8) or ((t and $FF0000) >> 8) or ((t and $FF000000) >> 24);end;

L'autre fonction y'a des pointeurs de partout, et je ne maitrise pas les pointeurs en C, et encore moins en pascal xD.

Slt ces pluto quelque chose comme sa

function BSswap32(Const Buffer: array of Byte): Longword;

begin

Result:=(Buffer[3] shl 24) or (Buffer[2] shl 16) or (Buffer[1] shl 8) or Buffer[0];

end;

unsigned long = Longword

Lien vers le commentaire
Partager sur d'autres sites

J'ai regarder ici pour la conversion des types :

http://delphi.about.com/od/windowsshellapi/l/aa101303a.htm

unsigned long n'est pas un tableau, pourquoi toi en delphi tu fait un tableau de byte ?

fonction original de flash tool

void CalcECC(unsigned long *pData, unsigned char *pEDC)

{

int i=0, val=0;

unsigned long v = 0;

for (i = 0; i < 0x1066; i++)

{

if (!(i & 31))

{

if (i == 0x1000)

pData = (unsigned long*)pEDC;

v = ~*pData++; /* byte order: LE */

}

val ^= v & 1;

v>>=1;

if (val & 1)

val ^= 0x6954559;

val >>= 1;

}

val = ~val;

pEDC[0xC]|= (val << 6) & 0xFF;

pEDC[0xD] = (val >> 2) & 0xFF;

pEDC[0xE] = (val >> 10) & 0xFF;

pEDC[0xF] = (val >> 18) & 0xFF;

}

unsigned char m_pData[512] = {

0x72, 0xEE, 0x24, 0x3C ....etc........ byte encrypter

unsigned char m_pSpare[16] = {

0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

qui est apellé CalcECC((unsigned long *)&m_pData[0], &m_pSpare[0]);

en delphi

function BSswap32(Const Buffer: array of Byte): Longword;

begin

Result:=(Buffer[3] shl 24) or (Buffer[2] shl 16) or (Buffer[1] shl 8) or Buffer[0];

end;

m_pData: array[0..511] of byte = (

$72, $EE, $24, $3C ....etc........ byte encrypter

m_pSpare: array[0..15] of byte = (

$01, $00, $00, $00, $00, $FF, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00

);

procedure CalcECC(var pData: array of byte; var pEDC: array of byte);

c++

v = ~*pData++; /* byte order: LE */

resulta v = 3435973836

delphi

idx:=0;

v := not BSswap32(pData[idx]); // byte order: LE */

Inc(idx,4);

resulta v = 3435973836

etc.........

voila fonction réécrite reste plus qu'a trouvé comment différencier un kv1 & kv2 fichier decrypter

Modifié par maxgwen
Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share