Forums GAMERGEN
[TUTO] Décrypter un thème PlayStation 3 (manuellement)
Règles du forum
Pour les tutoriels liés au jailbreak de votre console. Merci de consulter l'univers undeground PS3.
Cette section reste soumise aux règles du forum, aucun contenu warez, illégal et dangereux n'est toléré.
Pour les tutoriels liés au jailbreak de votre console. Merci de consulter l'univers undeground PS3.
Cette section reste soumise aux règles du forum, aucun contenu warez, illégal et dangereux n'est toléré.
Voir le premier message non lu • 3 messages
• Page 1 sur 1
[TUTO] Décrypter un thème PlayStation 3 (manuellement)
Ce tutoriel est une exclusivité PS3GEN créer par moi qui regroupe un 1 mois de recherche (et de mal de crane) il y à un peu près un ans. Aucun tutoriel similaire n'est trouvable sur le net car aucune personne n'a décrypter autant de couche que moi sans utiliser de logiciel.
Maintenant place au remerciement : Je remercie Zembor() et Glowball pour m'avoir donner en une semaine toute leur avancé sur le décryptage du raf (même si se n'était que des offset) et Dragoon pour m'avoir aidé moralement à continué dans la scène underground même si il la fait sans se rendre compte.
Je dis cela car c'est peut être mon dernier "tuto" sur les thème et coldboot même si il reste une ou deux chose à modifier. Mais le principale est la et Sony c'est fait décrypter presque entièrement ces bijoux à 2 euros sur le PsStore. Place à vos éditeur hexadécimal et bonne lecture.
Bonjours,
aujourd'hui il me prend l'envie de commencer un tutoriel expliquant comment décrypter un thème dynamique ps3. Le tutoriel sera édité le plus souvent possible.
Tout d'abord je préviens que je n'est pas réussi à décrypter à 100% tout les fichiers.
Pour pouvoir comprendre se que j'explique il faut avoir un minimum de compétence dans la cryptographie donc l'utilisation de certain algorithme sera à prévoir. Et bien sur avoir déjà utilisé un éditeur hexadécimal.
Je ne reviendrais pas sur tout le vocabulaire. Se tuto est la pour simple connaissance. Je n'expliquerais pas comment je suis arrivé à se résultat.
Le but de se tuto sera d'avoir pour fichier de départ un thème dynamique ps3 (p3t) pour arrivé au finale avec toutes les sources et ressources utilisé pour sa compilation. Tout cela sans utilisé un logiciel du sdk de sony.
SOMMAIRE:
P3T
--XML
----Assemblage (-> XML)
--VAG
----Conversion (-> Wav)
--GIM
----Decompression et conversion (-> PNG)
--RAF
----Decompression
RAF
--JSX
----Decompression et conversion (->JS)
--SXML
----Assembage et conversion (->XML)
--SKEL / ANIM / EDGE
----Conversion (->DAE)
--GTF / JPG
----Conversion (->DDS et JPG)
Pour information un P3T se constitue en plusieurs partie :
-Le header
-Les informations du thème
-Les fichiers ressources
Il faut savoir aussi que les informations du thème avant de créer le P3T est dans un XML et les ressources dans plusieurs sorte de fichier.
Pour décrypter un fichier P3T rien de plus simple, il faut lire le header mais surtout le comprendre.
OFFSET :
00 -> 03 = Format P3T "P3TF"
04 -> 07 = Version P3T
08 -> 0b = Offset arbre (forme du XML)
0c -> 0f = Taille arbre
10 -> 13 = Offset des ID XML
14 -> 17 = Taille du bloc d'ID
18 -> 1b = Offset des balises XML
1c -> 1f = Taille du bloc de balises
20 -> 23 = Offset tableau d'int
24 -> 27 = Taille bloc tableau d'int
28 -> 2b = Offset tableau de float
2c -> 2f = Taille bloc tableau de float
30 -> 33 = Offset des ressources
34 -> 37 = Taille du bloc des ressources
Le xml se compose donc de l'offset 08 jusqu'à 1f
Les ressources eux peuvent êtres trois chose, les sons en vag, les icônes en gimp compréser avec l'algorithme zlib et le fichier RAF en zlib contenant l'animation.
Pour les différencier les vag commence par 56 41 47
les icones par 78 da
et le raf par 5f 52 41 46.
Le Vag à une compression 4 bit, il est utilisé par toute les consoles de sony. Il utilise un encodage ADPCM (Adaptive Differential Pulse Code Modulation).
Pour convertir le VAG je vous conseille de compiler cette source ou d'utiliser un logiciel de conversions VAG to WAV. Pour les source voici un programme fait par bITmASTER : http://psxsdk.googlecode.com/svn-history/r13/trunk/tools/vag2wav.c
Pour récupérer les icônes du thème il faudra utiliser plusieurs procédé. Tout d'abors dans le p3t ils sont reconnaissable car ils commence par 78da. Pour information tout les fichier commencent par 78da est un fichier compressé en Zlib. Le Zlib utilise un algorithme appelé DEFLATE qui est une variation du LZ77. Cet algorithme fournit une bonne compression avec une utilisation minimale des ressources système. C'est aussi l'algorithme utilisé dans le format d'archive ZIP.
Pour décompresser le Zlib je vous propose ces sources : http://zlib.net/
Après avoir décompressé le fichier vous vous retrouvé avec un fichier GIM. Le gim est un fichier sous licence Sony donc il existe qu'un seul moyen c'est de le convertir manuellement mais d'autre personne avant moi l'ont déjà fait pour la psp (http://pspdum.my.land.to/psp/gim.html). Voici un logiciel gratuit qui convertit facilement les gim : http://www.geocities.jp/junk2ool/lib/GIM2PNG01.7z
Vous vous retrouverez maintenant avec un png.
Pour décompresser un raf du P3t rien de plus simple, chercher l'endroit ou commence 5f 52 41 46 et récupérer de la jusqu'à la fin du p3t. Pour le décrypter je vous l'expliquerais plus loin dans le tutoriel.
Avant de commencer tout assemblage du xml il faut connaitre les balises :
Theme container:
Information:
Définitions:
name = Nom du thème
icon = Icone du thème (64x64 jpg)
url = Votre url
author = Votre nom
authoricon = Votre icone (54x54 jpg)
genre = Genre
version = Version du thème
comment = Commentaire
preview = Image de prévisualisation (480x270 png)
locale = localisation (fr, en, jp, kr, etc)
Pour utiliser plusieurs langue pour votre nom, commentaire, ect faite comme ceci :
Langue disponible :
en, nl, de, fr, no , sv, zh_s, ko, pt, it, es, jp, da, fi, zh_t, ru
Background:
Définitions:
hd : HD background image (jpeg format) 1920x1080
sd : SD background image (jpeg format) 640x480
Pour utiliser plusieurs fond :
Pour utiliser un fond dynamique (raf) :
Curseur (internet):
Définitions:
pointer_arrow : Curseur de base
pointer_finger : Curseur affiché sur les boutons ou liens
pointer_click : Curseur affiché quand vous cliqué
pointer_pen : Curseur affiché sur les bar d'adresse
pointer_hand : Curseur affiché pour le déplacement de la page
pointer_grab : Curseur affiché quand vous déplacé une image
base_x="" Axe X utilisé pour le point d'origine
base_y="" Axe Y utilisé pour le point d'origine
Son :
Définitions:
se_decide : Le bip quand un message s'ouvre pour poser une question
se_cursor : Le déplacement dans le xmb
se_optionmenu : Le son quand vous allez dans les option ou que vous pressez triangle
se_cancel : Le son quand vous quitter
se_system_ok : Le son quand vous accepter
left : Son venant de gauche
right : Son venant de droite
Icônes :
Définitions :
Tout les vrais nom de icônes. Les icônes sont en Png de taille 128x128 sauf pour ceux en rouge.
Icônes horizontal:
icon_user
icon_setting
icon_photo
icon_music
icon_video
icon_game
icon_network
icon_friend
icon_tv
Icônes utilisateur :
icon_newuser
Icônes paramètre :
icon_update
icon_game_setting
icon_bdvd_setting
icon_music_setting
icon_chat_setting
icon_system_setting
icon_theme_setting
icon_datetime_setting
icon_accessory
icon_printer_setting
icon_display_setting
icon_sound_setting
icon_security_setting
icon_remoteplay_setting
icon_network_setting
Icônes de sous menu des paramètres :
icon_setting_item
Icônes des photos, musiques, vidéos :
icon_photo_default - 170x128
icon_photo_album_default - 170x128
icon_music_default
icon_music_album_default
icon_video_default - 228x128
icon_video_album_default - 228x128
icon_mediaserver_search
icon_ms
icon_sd
icon_cf
icon_usb
icon_pspms
icon_usbcamera
icon_usbaad
Icônes jeu :
icon_gamedata
icon_savedata
icon_vmc
icon_newvmc
Network :
icon_onlinemanual
icon_remoteplay
icon_browser
icon_download
Icône PSN :
icon_accountmanage
Icônes amis :
icon_blocklist
icon_addfriend
icon_playermet
icon_chat
icon_chatroom
icon_mbox
icon_mbox_received
icon_mbox_sent
icon_mbox_create
icon_default_h
icon_default_v
Autre :
Cette image est petite, 64x64, mais elle sera redimensionné automatiquement elle est utilisé pour afficher les messages en haut à droite de l'écran.
Éléments utilisé par défaut de la ps3.
Police de caractère :
0 = Original
1 = Rounded
2 = Pop
Couleur des menus :
0 = Original (Change selon la date et l'heure)
1 = Blanc
2 = Jaune
3 = Vert clair
4 = Rose
5 = Vert foncé
6 = Violet pâle
7 = Cyan
8 = Bleu foncé
9 = Violet
10 = Orange
11 = Marron
12 = Rouge
Il me manque à comprendre le bloc d'arbre au début du p3t qui est les positons des balises et des id et pourquoi pas le nom des fichiers. mais pour confirmer il faut que j'arrive à le comprendre (si quelqu'un veut m'aider). Donc sans se paramètre il faut connaitre par coeur toute les balises et utiliser cette méthode :
Pour recréer le xml il faut regarder à plusieurs endroit et bien connaitre les balises xml, à l'offset des ID XML et à l'offset des balises XML. Les Id est le vrais nom des icônes, dans le p3t ils sont mis dans l'ordre de lecture. Les balises sont les balises utilisé dans le xml, elle sont mis dans l'ordre et la connaissance de toute les balises sert à savoir laquelle est emboité dans laquelle.
Il faut lire tout d'abord les balises et quand vous arrivé à un "id" vous savez que le nom se trouve dans l'offset ID. Pour scr je ne sait pas encore comment connaitre, peut être dans "l'arbre". Donc mettez le nom que vous voulez. Sa sera le nom de vos icônes.
Il est difficile d'expliquer donc je vais vous montrer un exemple :
En rouge ID XML et en vert les balises XML
00 00 00 38 69 63 6f 6e 5f 67 61 6d 65 5f 73 65 | ...8icon_game_se
Assemblé :
<?xml version="1.0" ?>
<theme>
<icontable>
<icon id="icon_game_setting" src="icon_game_setting_1.png"/>
</icontable>
<bgimagetable>
<bgimage anim="anim_1.raf"/>
</bgimagetable>
<infotable>
<info author="Corwin75" authoricon="authoricon_1.png" authoriconsize="16512" genre="TEAM" icon="icon_1.png" iconsize="16512" mtime="20110804013104" name="BHD Dynamique theme 2" preview="preview_1.png" previewsize="518528" url="" version="2.0"/>
</infotable>
</theme>
Le chiffre en bleu est la taille des images GIM en octects
Résumé décompilation p3t :
Si vous avez tout suivez et tout appliquer vous avez réussis à extraire manuellement tout les fichier du p3t, icônes, son, raf, xml. Tout sa sans utiliser un seul logiciel officiel de sony donc tout en légalité. Avec sa vous pouvez créer votre propre application pour extraire les p3t voir les raf car le principe est le même pour remplacer le logiciel "P3tExtractor" voir "p3tCompiler" de Sony si vous travailler dans l'autre sens.
Il nous manque plus cas décompiler le RAF. c'est le plus important car c'est se qui fait l'animation en fond.
Un fichier raf est un fichier contenant tout se qu'il faut pour animé votre thème. Il contient tout les objets 3D, les textures, un xml pour charger les ressources et du javascript pour les animer.
Si vous venez de l'extraire du p3t il faudra le décrypter avant de le décompresser. Pour cela rien de plus simple. Ouvrer le raf avec votre éditeur hexa et supprimer les 8 premiers octets pour obtenir un fichier commençant par 78 da.
Et oui vous avez pu le remarquer mais on retrouve bien un fichier compresser en Zlib. Donc utiliser la même méthode que précédemment pour décompresser le fichier (http://zlib.net/)
Le raf ressemble très fortement à un P3T tout simplement car leurs compression est la même. Et oui si vous lisez le header du fichier vous retrouvé presque les mêmes indication :
00 -> 03 = Format RAF "RAF0"
04 -> 07 = Version RAF
08 -> 0b = Offset arbre (forme du XML)
0c -> 0f = Taille arbre
10 -> 13 = Offset des ID XML
14 -> 17 = Taille du bloc d'ID
18 -> 1b = Offset des balises XML
1c -> 1f = Taille du bloc de balises
20 -> 23 = Offset tableau d'int
24 -> 27 = Taille bloc tableau d'int
28 -> 2b = Offset tableau de float
2c -> 2f = Taille bloc tableau de float
30 -> 33 = Offset des ressources
34 -> 37 = Taille du bloc des ressources
Les dae (objets 3D) à la compilation sont découpé en plusieurs fichier, .edge, .edge.invbind, .skel et .anim (si il contient une animation par skeleton).
Pour les reconnaitre dans le raf ils ont un header (comme tout fichier )
edge = 00 00 00 01
edge.invbind = aucun header
skel = 45 53 30 31
anim = 45 41 30 33
Les images utilisé pour texturer les objets peuvent avoir deux formats, jpg et dds.
Les jpg sont mis dans le raf sans compression
jpg = ff d8 ff e0 00 10 4a 46 49 46 00 01
Les dds sont compressé en gtf
dds = 02 01 01 ff
Le javascript est compressé en VSMX on peut le reconnaitre ainsi
jsx = 56 53 4d 58
Le XML lui doit être réassemblé.
Le GTF est un format de fichier pour stocker les données de texture utilisés dans libgcm, PSGL, et d'autres bibliothèques graphiques. Il stocke les textures en utilisant la structure de la mémoire utilisée directement par RSX (processeur graphique de la ps3). Le format accepte la multi-texture et les textures 3D.
Voici les offset du GTF
00 -> 03 = Version
04 -> 07 = Taille des textures
08 -> 0b = Nombre de texture dans le GTF
0c -> 0f = ID de la texture
10 -> 13 = Offset de la texture
14 -> 17 = Taille de la texture
18 -> 2f = Structure de la texture dans libgcm ?
La texture dans le gtf est exactement comme celle dans le DDS il n'y a que le header qui change. Alors pour recréer le DDS voici sa structure : http://msdn.microsoft.com/en-us/library/windows/desktop/bb943982%28v=vs.85%29.aspx
N'oublier pas que dans le header du dds les octets se lisent à l'envers par exemple 7c 00 00 00 doit être traduit par 00 00 00 7c.
Le VSMX est une compression utilisé par Sony. On ne c'est toujours pas le comprendre entièrement mais se qui est sur c'est qu'il est compressé de la même manière que le XML. Si on découvre la compression du xml ou du js on aura décrypter à 100% toute les couche des fichiers p3t et raf (thème et coldboot), Disons que si ont y arrive on pourra dire que Sony ne fait pas le poid contre les hackeur
Donc commençons. Voici les offset du vsmx :
00 -> 03 = Format VSMX (VSMX)
04 -> 07 = Version du VSMX
08 -> 0b = Offset arbre (plan du js)
0c -> 0f = Taille de l'arbre
10 -> 13 = Offset Actor
14 -> 17 = Taille du bloc Actor
18 -> 1b = Nombre d'actor
1c -> 1f = Offset Commande
20 -> 23 = Nombre de Commande
24 -> 27 = Taille du bloc Commande
28 -> 2b = Offset Variable
2c -> 2f = Nombre de Variable
30 -> 33 = Taille du bloc Variable
Pour recréer le XML il faut utilisé la même méthode que pour le xml du p3t.
Maintenant je vais essaye de décrypter en direct les infos manquante pour le vsmx on verra plus tard pour les xml donc si quelqu'un veux m'aider il n'y à aucun soucis. Je vous est mâché tout le travaille jusqu'à présent vous trouvez pas
Ce qui a été pour l'instant trouver pour le js:
C'est un peut près bon pour le js. Donc pour le xml c'est un peu différent je me rend compte. Dans les id juste avant chaque nom il y a une valeur hexadécimal, cette valeur on la retrouve dans le plan du xml donc c'est l'id de l'id (héhé).
Je les retrouves 8 bytes avant quelque chose de spéciale (ff ff ff ff ff ff ff ff).
avec tout sa j'en déduit que sa correspond à la ligne des icônes dans la balise icontable dans le xml du p3t.
Trouver pour le xml p3t :
Maintenant place au remerciement : Je remercie Zembor() et Glowball pour m'avoir donner en une semaine toute leur avancé sur le décryptage du raf (même si se n'était que des offset) et Dragoon pour m'avoir aidé moralement à continué dans la scène underground même si il la fait sans se rendre compte.
Je dis cela car c'est peut être mon dernier "tuto" sur les thème et coldboot même si il reste une ou deux chose à modifier. Mais le principale est la et Sony c'est fait décrypter presque entièrement ces bijoux à 2 euros sur le PsStore. Place à vos éditeur hexadécimal et bonne lecture.
Bonjours,
aujourd'hui il me prend l'envie de commencer un tutoriel expliquant comment décrypter un thème dynamique ps3. Le tutoriel sera édité le plus souvent possible.
Tout d'abord je préviens que je n'est pas réussi à décrypter à 100% tout les fichiers.
Pour pouvoir comprendre se que j'explique il faut avoir un minimum de compétence dans la cryptographie donc l'utilisation de certain algorithme sera à prévoir. Et bien sur avoir déjà utilisé un éditeur hexadécimal.
Je ne reviendrais pas sur tout le vocabulaire. Se tuto est la pour simple connaissance. Je n'expliquerais pas comment je suis arrivé à se résultat.
Le but de se tuto sera d'avoir pour fichier de départ un thème dynamique ps3 (p3t) pour arrivé au finale avec toutes les sources et ressources utilisé pour sa compilation. Tout cela sans utilisé un logiciel du sdk de sony.
SOMMAIRE:
P3T
--XML
----Assemblage (-> XML)
--VAG
----Conversion (-> Wav)
--GIM
----Decompression et conversion (-> PNG)
--RAF
----Decompression
RAF
--JSX
----Decompression et conversion (->JS)
--SXML
----Assembage et conversion (->XML)
--SKEL / ANIM / EDGE
----Conversion (->DAE)
--GTF / JPG
----Conversion (->DDS et JPG)
Décompilation du p3t manuellement :
P3T Infos
Pour information un P3T se constitue en plusieurs partie :
-Le header
-Les informations du thème
-Les fichiers ressources
Il faut savoir aussi que les informations du thème avant de créer le P3T est dans un XML et les ressources dans plusieurs sorte de fichier.
Pour décrypter un fichier P3T rien de plus simple, il faut lire le header mais surtout le comprendre.
OFFSET :
00 -> 03 = Format P3T "P3TF"
04 -> 07 = Version P3T
08 -> 0b = Offset arbre (forme du XML)
0c -> 0f = Taille arbre
10 -> 13 = Offset des ID XML
14 -> 17 = Taille du bloc d'ID
18 -> 1b = Offset des balises XML
1c -> 1f = Taille du bloc de balises
20 -> 23 = Offset tableau d'int
24 -> 27 = Taille bloc tableau d'int
28 -> 2b = Offset tableau de float
2c -> 2f = Taille bloc tableau de float
30 -> 33 = Offset des ressources
34 -> 37 = Taille du bloc des ressources
Le xml se compose donc de l'offset 08 jusqu'à 1f
Les ressources eux peuvent êtres trois chose, les sons en vag, les icônes en gimp compréser avec l'algorithme zlib et le fichier RAF en zlib contenant l'animation.
Pour les différencier les vag commence par 56 41 47
les icones par 78 da
et le raf par 5f 52 41 46.
VAG infos
Le Vag à une compression 4 bit, il est utilisé par toute les consoles de sony. Il utilise un encodage ADPCM (Adaptive Differential Pulse Code Modulation).
Pour convertir le VAG je vous conseille de compiler cette source ou d'utiliser un logiciel de conversions VAG to WAV. Pour les source voici un programme fait par bITmASTER : http://psxsdk.googlecode.com/svn-history/r13/trunk/tools/vag2wav.c
Icônes
Pour récupérer les icônes du thème il faudra utiliser plusieurs procédé. Tout d'abors dans le p3t ils sont reconnaissable car ils commence par 78da. Pour information tout les fichier commencent par 78da est un fichier compressé en Zlib. Le Zlib utilise un algorithme appelé DEFLATE qui est une variation du LZ77. Cet algorithme fournit une bonne compression avec une utilisation minimale des ressources système. C'est aussi l'algorithme utilisé dans le format d'archive ZIP.
Pour décompresser le Zlib je vous propose ces sources : http://zlib.net/
Après avoir décompressé le fichier vous vous retrouvé avec un fichier GIM. Le gim est un fichier sous licence Sony donc il existe qu'un seul moyen c'est de le convertir manuellement mais d'autre personne avant moi l'ont déjà fait pour la psp (http://pspdum.my.land.to/psp/gim.html). Voici un logiciel gratuit qui convertit facilement les gim : http://www.geocities.jp/junk2ool/lib/GIM2PNG01.7z
Vous vous retrouverez maintenant avec un png.
RAF
Pour décompresser un raf du P3t rien de plus simple, chercher l'endroit ou commence 5f 52 41 46 et récupérer de la jusqu'à la fin du p3t. Pour le décrypter je vous l'expliquerais plus loin dans le tutoriel.
Info XML
Avant de commencer tout assemblage du xml il faut connaitre les balises :
Theme container:
- Code: Select All Code
<?xml version="1.0" encoding="UTF-8"?>
<theme>
</theme>
Information:
- Code: Select All Code
<infotable>
<info
name=""
icon=""
url=""
author=""
authoricon=""
genre=""
version=""
comment=""
preview=""
/>
<localizedinfo
locale="fr
name=""
/>
</infotable>
Définitions:
name = Nom du thème
icon = Icone du thème (64x64 jpg)
url = Votre url
author = Votre nom
authoricon = Votre icone (54x54 jpg)
genre = Genre
version = Version du thème
comment = Commentaire
preview = Image de prévisualisation (480x270 png)
locale = localisation (fr, en, jp, kr, etc)
Pour utiliser plusieurs langue pour votre nom, commentaire, ect faite comme ceci :
- Code: Select All Code
<localizedinfo
locale="en"
name="nom anglais"
/>
<localizedinfo
locale="jp"
name="nom japonais"
/>
<localizedinfo
locale="fr"
name="nom français"
/>
Langue disponible :
en, nl, de, fr, no , sv, zh_s, ko, pt, it, es, jp, da, fi, zh_t, ru
Background:
- Code: Select All Code
<bgimagetable>
<bgimage hd="hd_1.jpg" sd="sd_1.jpg"/>
</bgimagetable>
Définitions:
hd : HD background image (jpeg format) 1920x1080
sd : SD background image (jpeg format) 640x480
Pour utiliser plusieurs fond :
- Code: Select All Code
<bgimagetable>
<bgimage hd="hd_1.jpg" sd="sd_1.jpg"/>
<bgimage hd="hd_2.jpg" sd="sd_2.jpg"/>
<bgimage hd="hd_3.jpg" sd="sd_3.jpg"/>
</bgimagetable>
Pour utiliser un fond dynamique (raf) :
- Code: Select All Code
<bgimagetable>
<bgimage anim="anim.raf"/>
</bgimagetable>
Curseur (internet):
- Code: Select All Code
<pointertable>
<pointer id="pointer_arrow" src="" base_x="20" base_y="2" />
<pointer id="pointer_finger" src="" base_x="16" base_y="10" />
<pointer id="pointer_click" src="" base_x="16" base_y="10" />
<pointer id="pointer_pen" src="" base_x="6" base_y="38" />
<pointer id="pointer_hand" src="" base_x="23" base_y="17" />
<pointer id="pointer_grab" src="" base_x="23" base_y="17" />
</pointertable>
Définitions:
pointer_arrow : Curseur de base
pointer_finger : Curseur affiché sur les boutons ou liens
pointer_click : Curseur affiché quand vous cliqué
pointer_pen : Curseur affiché sur les bar d'adresse
pointer_hand : Curseur affiché pour le déplacement de la page
pointer_grab : Curseur affiché quand vous déplacé une image
base_x="" Axe X utilisé pour le point d'origine
base_y="" Axe Y utilisé pour le point d'origine
Son :
- Code: Select All Code
<setable>
<se id="se_decide" left="decide_2.vag" right="decide_1.vag"/>
<se id="se_cursor" left="cursor_2.vag" right="cursor_1.vag"/>
<se id="se_optionmenu" left="optmenu_2.vag" right="optmenu_1.vag"/>
<se id="se_cancel" left="cancel_2.vag" right="cancel_1.vag"/>
<se id="se_system_ok" left="ok_2.vag" right="ok_1.vag"/>
</setable>
Définitions:
se_decide : Le bip quand un message s'ouvre pour poser une question
se_cursor : Le déplacement dans le xmb
se_optionmenu : Le son quand vous allez dans les option ou que vous pressez triangle
se_cancel : Le son quand vous quitter
se_system_ok : Le son quand vous accepter
left : Son venant de gauche
right : Son venant de droite
Icônes :
- Code: Select All Code
<icontable>
<icon id="icon_user" src="" />
<icon id="icon_setting" src="" />
<icon id="icon_photo" src="" />
<icon id="icon_music" src="" />
<icon id="icon_video" src="" />
<icon id="icon_game" src="" />
<icon id="icon_network" src="" />
<icon id="icon_friend" src="" />
<icon id="icon_tv" src="" />
<icon id="icon_newuser" src="" />
<icon id="icon_update" src="" />
<icon id="icon_game_setting" src="" />
<icon id="icon_bdvd_setting" src="" />
<icon id="icon_music_setting" src="" />
<icon id="icon_chat_setting" src="" />
<icon id="icon_system_setting" src="" />
<icon id="icon_theme_setting" src="" />
<icon id="icon_datetime_setting" src="" />
<icon id="icon_accessory" src="" />
<icon id="icon_printer_setting" src="" />
<icon id="icon_display_setting" src="" />
<icon id="icon_sound_setting" src="" />
<icon id="icon_security_setting" src="" />
<icon id="icon_remoteplay_setting" src="" />
<icon id="icon_network_setting" src="" />
<icon id="icon_setting_item" src="" />
<icon id="icon_photo_default" src="" />
<icon id="icon_photo_album_default" src="" />
<icon id="icon_music_default" src="" />
<icon id="icon_music_album_default" src="" />
<icon id="icon_video_default" src="" />
<icon id="icon_video_album_default" src="" />
<icon id="icon_mediaserver_search" src="" />
<icon id="icon_ms" src="" />
<icon id="icon_sd" src="" />
<icon id="icon_cf" src="" />
<icon id="icon_usb" src="" />
<icon id="icon_pspms" src="" />
<icon id="icon_usbcamera" src="" />
<icon id="icon_usbaad" src="" />
<icon id="icon_gamedata" src="" />
<icon id="icon_savedata" src="" />
<icon id="icon_vmc" src="" />
<icon id="icon_newvmc" src="" />
<icon id="icon_onlinemanual" src="" />
<icon id="icon_remoteplay" src="" />
<icon id="icon_browser" src="" />
<icon id="icon_download" src="" />
<icon id="icon_accountmanage" src="" />
<icon id="icon_blocklist" src="" />
<icon id="icon_addfriend" src="" />
<icon id="icon_playermet" src="" />
<icon id="icon_chat" src="" />
<icon id="icon_chatroom" src="" />
<icon id="icon_mbox" src="" />
<icon id="icon_mbox_received" src="" />
<icon id="icon_mbox_sent" src="" />
<icon id="icon_mbox_create" src="" />
<icon id="icon_default_h" src="" />
<icon id="icon_default_v" src="" />
</icontable>
Définitions :
Tout les vrais nom de icônes. Les icônes sont en Png de taille 128x128 sauf pour ceux en rouge.
Icônes horizontal:
icon_user
icon_setting
icon_photo
icon_music
icon_video
icon_game
icon_network
icon_friend
icon_tv
Icônes utilisateur :
icon_newuser
Icônes paramètre :
icon_update
icon_game_setting
icon_bdvd_setting
icon_music_setting
icon_chat_setting
icon_system_setting
icon_theme_setting
icon_datetime_setting
icon_accessory
icon_printer_setting
icon_display_setting
icon_sound_setting
icon_security_setting
icon_remoteplay_setting
icon_network_setting
Icônes de sous menu des paramètres :
icon_setting_item
Icônes des photos, musiques, vidéos :
icon_photo_default - 170x128
icon_photo_album_default - 170x128
icon_music_default
icon_music_album_default
icon_video_default - 228x128
icon_video_album_default - 228x128
icon_mediaserver_search
icon_ms
icon_sd
icon_cf
icon_usb
icon_pspms
icon_usbcamera
icon_usbaad
Icônes jeu :
icon_gamedata
icon_savedata
icon_vmc
icon_newvmc
Network :
icon_onlinemanual
icon_remoteplay
icon_browser
icon_download
Icône PSN :
icon_accountmanage
Icônes amis :
icon_blocklist
icon_addfriend
icon_playermet
icon_chat
icon_chatroom
icon_mbox
icon_mbox_received
icon_mbox_sent
icon_mbox_create
icon_default_h
icon_default_v
Autre :
- Code: Select All Code
<notification src="notification.png" />
Cette image est petite, 64x64, mais elle sera redimensionné automatiquement elle est utilisé pour afficher les messages en haut à droite de l'écran.
- Code: Select All Code
<font selection="" />
<color selection="" />
Éléments utilisé par défaut de la ps3.
Police de caractère :
0 = Original
1 = Rounded
2 = Pop
Couleur des menus :
0 = Original (Change selon la date et l'heure)
1 = Blanc
2 = Jaune
3 = Vert clair
4 = Rose
5 = Vert foncé
6 = Violet pâle
7 = Cyan
8 = Bleu foncé
9 = Violet
10 = Orange
11 = Marron
12 = Rouge
Assemblage XML
Il me manque à comprendre le bloc d'arbre au début du p3t qui est les positons des balises et des id et pourquoi pas le nom des fichiers. mais pour confirmer il faut que j'arrive à le comprendre (si quelqu'un veut m'aider). Donc sans se paramètre il faut connaitre par coeur toute les balises et utiliser cette méthode :
Pour recréer le xml il faut regarder à plusieurs endroit et bien connaitre les balises xml, à l'offset des ID XML et à l'offset des balises XML. Les Id est le vrais nom des icônes, dans le p3t ils sont mis dans l'ordre de lecture. Les balises sont les balises utilisé dans le xml, elle sont mis dans l'ordre et la connaissance de toute les balises sert à savoir laquelle est emboité dans laquelle.
Il faut lire tout d'abord les balises et quand vous arrivé à un "id" vous savez que le nom se trouve dans l'offset ID. Pour scr je ne sait pas encore comment connaitre, peut être dans "l'arbre". Donc mettez le nom que vous voulez. Sa sera le nom de vos icônes.
Il est difficile d'expliquer donc je vais vous montrer un exemple :
En rouge ID XML et en vert les balises XML
Assemblé :
<?xml version="1.0" ?>
<theme>
<icontable>
<icon id="icon_game_setting" src="icon_game_setting_1.png"/>
</icontable>
<bgimagetable>
<bgimage anim="anim_1.raf"/>
</bgimagetable>
<infotable>
<info author="Corwin75" authoricon="authoricon_1.png" authoriconsize="16512" genre="TEAM" icon="icon_1.png" iconsize="16512" mtime="20110804013104" name="BHD Dynamique theme 2" preview="preview_1.png" previewsize="518528" url="" version="2.0"/>
</infotable>
</theme>
Le chiffre en bleu est la taille des images GIM en octects
Résumé décompilation p3t :
Si vous avez tout suivez et tout appliquer vous avez réussis à extraire manuellement tout les fichier du p3t, icônes, son, raf, xml. Tout sa sans utiliser un seul logiciel officiel de sony donc tout en légalité. Avec sa vous pouvez créer votre propre application pour extraire les p3t voir les raf car le principe est le même pour remplacer le logiciel "P3tExtractor" voir "p3tCompiler" de Sony si vous travailler dans l'autre sens.
Il nous manque plus cas décompiler le RAF. c'est le plus important car c'est se qui fait l'animation en fond.
Décompilation du raf manuellement :
Un fichier raf est un fichier contenant tout se qu'il faut pour animé votre thème. Il contient tout les objets 3D, les textures, un xml pour charger les ressources et du javascript pour les animer.
Si vous venez de l'extraire du p3t il faudra le décrypter avant de le décompresser. Pour cela rien de plus simple. Ouvrer le raf avec votre éditeur hexa et supprimer les 8 premiers octets pour obtenir un fichier commençant par 78 da.
Et oui vous avez pu le remarquer mais on retrouve bien un fichier compresser en Zlib. Donc utiliser la même méthode que précédemment pour décompresser le fichier (http://zlib.net/)
Infos raf :
Le raf ressemble très fortement à un P3T tout simplement car leurs compression est la même. Et oui si vous lisez le header du fichier vous retrouvé presque les mêmes indication :
00 -> 03 = Format RAF "RAF0"
04 -> 07 = Version RAF
08 -> 0b = Offset arbre (forme du XML)
0c -> 0f = Taille arbre
10 -> 13 = Offset des ID XML
14 -> 17 = Taille du bloc d'ID
18 -> 1b = Offset des balises XML
1c -> 1f = Taille du bloc de balises
20 -> 23 = Offset tableau d'int
24 -> 27 = Taille bloc tableau d'int
28 -> 2b = Offset tableau de float
2c -> 2f = Taille bloc tableau de float
30 -> 33 = Offset des ressources
34 -> 37 = Taille du bloc des ressources
Les dae (objets 3D) à la compilation sont découpé en plusieurs fichier, .edge, .edge.invbind, .skel et .anim (si il contient une animation par skeleton).
Pour les reconnaitre dans le raf ils ont un header (comme tout fichier )
edge = 00 00 00 01
edge.invbind = aucun header
skel = 45 53 30 31
anim = 45 41 30 33
Les images utilisé pour texturer les objets peuvent avoir deux formats, jpg et dds.
Les jpg sont mis dans le raf sans compression
jpg = ff d8 ff e0 00 10 4a 46 49 46 00 01
Les dds sont compressé en gtf
dds = 02 01 01 ff
Le javascript est compressé en VSMX on peut le reconnaitre ainsi
jsx = 56 53 4d 58
Le XML lui doit être réassemblé.
infos GTF
Le GTF est un format de fichier pour stocker les données de texture utilisés dans libgcm, PSGL, et d'autres bibliothèques graphiques. Il stocke les textures en utilisant la structure de la mémoire utilisée directement par RSX (processeur graphique de la ps3). Le format accepte la multi-texture et les textures 3D.
Voici les offset du GTF
00 -> 03 = Version
04 -> 07 = Taille des textures
08 -> 0b = Nombre de texture dans le GTF
0c -> 0f = ID de la texture
10 -> 13 = Offset de la texture
14 -> 17 = Taille de la texture
18 -> 2f = Structure de la texture dans libgcm ?
La texture dans le gtf est exactement comme celle dans le DDS il n'y a que le header qui change. Alors pour recréer le DDS voici sa structure : http://msdn.microsoft.com/en-us/library/windows/desktop/bb943982%28v=vs.85%29.aspx
N'oublier pas que dans le header du dds les octets se lisent à l'envers par exemple 7c 00 00 00 doit être traduit par 00 00 00 7c.
Infos VSMX
Le VSMX est une compression utilisé par Sony. On ne c'est toujours pas le comprendre entièrement mais se qui est sur c'est qu'il est compressé de la même manière que le XML. Si on découvre la compression du xml ou du js on aura décrypter à 100% toute les couche des fichiers p3t et raf (thème et coldboot), Disons que si ont y arrive on pourra dire que Sony ne fait pas le poid contre les hackeur
Donc commençons. Voici les offset du vsmx :
00 -> 03 = Format VSMX (VSMX)
04 -> 07 = Version du VSMX
08 -> 0b = Offset arbre (plan du js)
0c -> 0f = Taille de l'arbre
10 -> 13 = Offset Actor
14 -> 17 = Taille du bloc Actor
18 -> 1b = Nombre d'actor
1c -> 1f = Offset Commande
20 -> 23 = Nombre de Commande
24 -> 27 = Taille du bloc Commande
28 -> 2b = Offset Variable
2c -> 2f = Nombre de Variable
30 -> 33 = Taille du bloc Variable
Pour recréer le XML il faut utilisé la même méthode que pour le xml du p3t.
Maintenant je vais essaye de décrypter en direct les infos manquante pour le vsmx on verra plus tard pour les xml donc si quelqu'un veux m'aider il n'y à aucun soucis. Je vous est mâché tout le travaille jusqu'à présent vous trouvez pas
Ce qui a été pour l'instant trouver pour le js:
- Code: Select All Code
01 = ASSIGN = =
02 = ADD = +
03 = SUBTRACT = -
04 = MULTIPLY = *
05 = DIVIDE = /
08 = NEGATE = (-)
09 = NOT = !
0c = INCREMENT = ++
0d = DECREMENT = --
0e = TEST_EQUAL = ==
0f = TEST_NOT_EQUAL = !=
10 = TEST_CASE_EQUAL =
12 = TEST_LESS_THAN = <
13 = TEST_LESS_EQUAL_THAN = <=
14 = TEST_MORE_THAN = >
15 = TEST_MORE_EQUAL_THAN = >=
20 = STACK_PUSH = changement de case (pour switch)
22 = END_STATEMENT = ;
23 = CONST_NULL = null
24 = CONST_EMPTY_ARRAY = tableaux vide
25 = CONST_BOOL = valeur bool (true/false)
26 = CONST_INT = valeur int (1)
27 = CONST_FLOAT = valeur float (1.0)
28 = CONST_STRING = string ("bonjour")
2a = FUNCTION = function
2b = CONST_ARRAY = array
2c = THIS_OBJECT =
2d = UNNAMED_VARIABLE = __varx
2e = NAME = variable
2f = PROPERTY =
30 = METHOD =
31 = SET =
34 = ARRAY_INDEX =
36 = ARRAY_INDEX_ASSIGN =
38 = ARRAY_PUSH =
39 = JUMP = allez à la ligne
3a = JUMP_IF_TRUE = allez à la ligne si faux
3b = JUMP_IF_FALSE = allez à la ligne si vrais
3c = CALL_FUNCTION = appelle d'une fonction
3d = CALL_METHOD =
3e = CALL_INBUILT =
3f = RETURN = return
45 = END_SCRIPT = fin du js
49 = MAKE_VECTOR =
C'est un peut près bon pour le js. Donc pour le xml c'est un peu différent je me rend compte. Dans les id juste avant chaque nom il y a une valeur hexadécimal, cette valeur on la retrouve dans le plan du xml donc c'est l'id de l'id (héhé).
Je les retrouves 8 bytes avant quelque chose de spéciale (ff ff ff ff ff ff ff ff).
avec tout sa j'en déduit que sa correspond à la ligne des icônes dans la balise icontable dans le xml du p3t.
Trouver pour le xml p3t :
- Code: Select All Code
Pour anonymous.p3t :
40 -> 43 = nb debut de balise (dans les id) (theme)
5c -> 5f = nb debut de balise (dans les id) (bgimagetable)
78 -> 7b = nb debut de balise (dans les id) (bgimage)
94 -> 97 = nb debut de balise (dans les id) (anim)
a4 -> a7 = nb debut de balise (dans les id) (infotable)
c0 -> c3 = nb debut de balise (dans les id) (info)
dc -> df = nb debut de balise (dans les id) (comment)
e0 -> e3 = genre (03 = info 01 = size 06 = icon)
e4 -> e7 = les infos, taille ou nom d'icone
e8 -> eb = pour 03 = nombre de caractère
pour 01 = rien
pour 06 = ?
<infotable>
Dans le cas ou ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff commence à 0c
x0 -> x3 = le genre : 03 = info 01 = size 06 = icon
x4 -> x7 = les infos, taille ou nom d'icone
(e4 = comment
f4 = previewsize
104 = name
114 = author
124 = url
134 = authoriconsize
144 = authoricon
154 = iconsizer
164 = version
174 = valeur mtime
184 = genre
194 = preview
204 = icon)
x8 -> xb = pour 03 = nombre de caractère
pour 01 = rien
pour 06 = ?
xc -> xf = nombre debut balise (dans les id)
</infotable>
<bgimagetable>
Pour ff ff ff ff ff ff ff ff ff ff ff ff commence à 08
1c -> 1f = debut du nom de la balise (bgimagetable) fini a la fin du mot.
38 -> 3f = debut du nom de la balise (bgimage) fini a la fin du mot.
</bgimagetable>
En finition
Dernière édition par JBTest le 22 Fév 2012, 22:43, édité 12 fois.
- Corwin_1_1
Re: [TUTO] Décrypter un thème PlayStation 3 (manuellement)
Je cherche quelqu'un Pour m'aider à décrypter certain endroit des certain fichier. Si quelqu'un est volontaire qu'il me fasse savoir.
ps : Je me rend compte que j'ai pas chaumé
ps : Je me rend compte que j'ai pas chaumé
- Corwin_1_1
Re: [TUTO] Décrypter un thème PlayStation 3 (manuellement)
J'ai lu 2 lignes que j'etais déjà perdu
Super tuto je penses pour ceux qui s'y connaisse
Et super boulot
Super tuto je penses pour ceux qui s'y connaisse
Et super boulot
AFK
-
[HG] TJ619
Ancien
- Messages: 7649
- Inscription: 02 Sep 2011, 22:59
- Pays: France
- Sexe: Homme
3 messages
• Page 1 sur 1