FrenchiPhone Blog Forum Tuto FAQ
28 Août 2008 à 14:13:11 *
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?

Connexion avec identifiant, mot de passe et durée de la session
 
   Accueil   BLOG Aide Calendrier Identifiez-vous Inscrivez-vous  
Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: [TUTO - Explications] Un payload : C'est quoi ?  (Lu 1964 fois)
0 Membres et 1 Invité sur ce fil de discussion.
hvdcgkl
Membre Donateur
*******
Messages: 206
« le: 27 Mars 2008 à 11:48:48 »

Bonjour,

Beaucoup de gens posent la question "c'est quoi les payloads ?"

Voilà un explicatif  je pense assez clair ...  Sourire


Un payload est un package qui effectue un travail spécifique. Un payload peut faire beaucoup de choses sur votre iPhone, c'est-à-dire :
Jailbreak, activation, déverrouillage, tuning système, fixer un problème, etc

Dans iLiberty +, un payload  se compose de deux parties:

- Un payload de script
- Un payload  archive

Le payload  de script est vital.
L'archive est facultative.

Dans iliberty +, Le package "script" et "archive" (s'il y en a) doivent être mis dans le dossier "payload"  se trouvant dans le dossier où se trouve iLiberty +.

Pour la plupart des travaux, une archive est requise.
Par exemple, pour installer le sous-système BSD, vous devez avoir l'archive "BSD_Subsystem.zip" téléchargée à partir de son site original.

Cependant, dans certains cas, il n'y aura pas d'archive.
Par exemple, pour corriger (fixer) certains problèmes d'application sur la 1.1.3, tout ce que vous avez à faire, c'est uniquement de créer un lien symbolique, pas besoin de créer un fichier quelconque.

************************************************************************************************************************************************************************************

************************************************************
Comment les payloads sont mis sur vos iphones/ipod
************************************************************
Lorsque vous avez choisi d'exécuter certains payload, iLiberty + les "package" en une unique archive ZIP et les transfére sur l'iPhone avant le ramdisk boot.
Ensuite dans la phase 2, un script extrairera l'archive dans le dossier Media de l'utilisateur, après l'extraction, le dossier Media a la structure suivante

Media
    |
    +- bin
    +- do_payload.sh
    +- iLiberty_Signature
    +- payload/payload1.sh
    +- payload/archive1.zip
    +- payload/payload2.sh
    +- payload/archive2.zip
 .....

Le répertoire bin contient un ensemble minimum d'utilitaires que iLiberty + exige.
Le "do_payload.sh" est le principal script qui appelle chaque script de payload dans l'ordre alphabétique.
"iLiberty_Signature" est un script pour aider à déterminer où se trouve le  payload.
S’il vous plaît souvenez vous de la structure, le fait de connaître la localisation et la structure des payload,  vous aidera à rédiger votre propre payload.


************************
Nommer les payload
************************
Il n'y a pas de règles nécessaire pour le nom du script.
Mais les scripts sont appelés un par un dans leur ordre Alphabétique, donc normalement les scripts de payload sont préfixés par un numéro à 2 chiffres (fourchette de 00 à 99). Parce que certains payload doivent être lancés avant d'autres, nous avons utilisé les règles suivantes pour les payloads :

00 à 09 pour les payloads "importants" qui exigent normalement des privilèges :  l'activation, l'unlock, etc  sont des payloads importants et  tombent tous dans cette gamme.
Par exemple, l'activation est normalement la première chose à faire, donc il est appelé "00Activate".

D'autre part, un 3ème partie des payloads ne sont que des add-ons pour le logiciel système de l'iphone, de sorte qu'ils ont une importance moindre , nous utiliserons un ordre de 90 à 99 pour eux.

Afin de créer des payloads bien organisés, nous les avons placés dans cet ordre :
00 - activation
00 - baseband erase/reflash
01 - bootloader upgrade/downgrade
02 - unlock
10 - patches


Cet ordre permet, lorsque plusieurs payloads sont contrôlés, d'être exécutés de manière raisonnable.

Par exemple, supposons que nous voulons rétrograder notre bootlaoder en 3,9, puis le déverrouiller avec AnySIM.
Dans l'ordre ci-dessus, nous savons que le bootloader sera d'abord downgradé et  lorsque c'est fait, le déverrouillage suivra, et c'est tout à fait le bon ordre.
Si on ne suit pas l'ordre ci-dessus, à savoir le bootloader avant de déverrouiller,  et qu'on déverouille puis on downgrade le bootloader, cela va échouer !!!!

Bien entendu, vous n'avez pas à suivre les règles ci-dessus, mais sachez  que cette règle est bien la bonne, cela vous permet de donner un bon nom de script à votre payload.
Par exemple si nous voulons lancer un payload "VeryKewlPayload.sh" en priorité, on pourra l'appeler:   000VeryKewlPayload.sh
Et il sera le premier exécuté.

De même, si nous souhaitons lancer un script en dernier, nommez-le :      99ZLastPayload.sh
Et il sera le dernier payload exécuté....

********************************
En-tête de script des payload
********************************
Les scripts des payloads avec ILiberty + doivent être conformes à certaines conventions en vue d'être détecté par iLiberty +.
Le script doit contenir une entête qui décrit des choses, comme le nom du payload, de l'archive, etc ...
Le script est dans le format suivant:

#!/bin/sh
#
# Name: nom du payload
# Pack: nom de l'archive (peut être vide si pas besoin de fichier archive)
# URL: Lien où télécharger l'archive (peut être vide si pas besoin de fichier archive)
# Desc: payload description ligne  #1
#       la description continue à la ligne 2 #2
#       la dernière ligne  #3
#

La première ligne indique le shell que le script utilise, normalement c'est "/bin/sh", mais il n'y a pas de problème à en utiliser d'autres (par exemple "/usr/bin/python" (il faut qu'il soit installé).
D'autres lignes sont assez claires. S'il n'ya pas de contenu pour un champ, il suffit de laisser le nom, comme ceci:

# Pack:

Une chose doit être soulignée, le champ "Desc" doit être le dernier champ dans l'en-tête, il peut contenir de multiples lignes, il se termine par une ligne vierge ou une ligne de commentaire vide, tous les formats suivants sont corrects:

Example 1:
# Desc: This is a single line description
#

Example 2:
# Desc: This description contains 2 lines
#         and it ends with an empty comment
#

Example 3:
# Desc: This description ends with a blank line

Voilà un véritable exemple, le script suivant est extrait d'un en-tête d'un script fournit en bundle avec iLiberty+:

#!/bin/sh
#
# Name: OpenSSH 4.6p1-2
# Pack: openssh-4.6p1-2.zip
# URL:  http://ste-repo.natetrue.com:15842/iphone-apps/zips/openssh-4.6p1-2.zip
# Desc: OpenSSH Package

Avec l'en-tête, nous le savons, le payload est nommé "OpenSSH 4.6p1-2",
il nécessite une archive nommée pack "openssh-4.6p1-2.zip", l'archive pack peut être téléchargé à partir http://ste-repo.natetrue.com:15842/iphone-apps/zips/openssh-4.6p1-2.zip.


*************************************
Le corps des scripts des payload
*************************************
Suite à l'en-tête de script, le corps du script commence.
C'est le  véritable script que vous souhaitez exécuter sur votre iPhone, vous pouvez l'écrire de n'importe quelle manière, mais il reste des points à prendre en compte:

Au minimum il faut l'outil BSD
----------------------------------------

Un nouvel iphone  jailbreaké / activé ne dispose pas du sous-système BSD installé,
iLiberty + a copié un très petit outil mis sur le téléphone.
Les utilitaires sont packagés dans "BasePack.zip", et lorsqu'ils sont extraits, ils sont mis dans le dossier "bin" de l'utilisateur ("root" ou "mobile") sous le dossier "Media".

Voici la liste

chmod
chown
cp
dd
dirname
grep
igsm
ls
mkdir
plutil
reboot
rm
sleep
tar
unzip

Vous devriez éviter de modifier "BasePack.zip" parce que toute nouvelle mise à jour peut modifier ce fichier et effacer vos modifications.
Si vous avez besoin des utilitaires spéciaux qui ne sont pas inclus dans le "BasePack.zip", merci de les inclure dans votre propre archive de payload, dans un sous-répertoire /bin.


Les fonctions internes
------------------------------
Une fonction interne  nommé "functions.inc" est copié dans /bin2.
Votre script doit l'utiliser comme source pour obtenir un bon réglage de base de l'environnement (par exemple, PATH, DEBUG, etc.)

Donc, la ligne suivante doit être mis au tout début du script (après l'en-tête):
. /bin2/functions.inc

Après l'avoir déclaré dans votre propre script les variables suivantes seront mises au valeurs qui suivent :

SIGNATURE   - a signature file
PL          - payload folder name
PL_DIR      - full path to payload folder
AFC_DIR     - full path to user's media folder
USER_DIR    - full path to user's home directory
OPTIONS     - contains user selected options, mainly for master.sh
DEBUG       - 1 = on which logs all output, sent from GUI
DEBUG_DELAY - time (in seconds) to delay for debug, sent from GUI
DEBUG_LOG   - debug log file name


Il y a certaines fonctions internes qui sont définies dans le "functions.inc" :
---------------------------------------------------------------------------------------------------
GetFirmwareVersion
Syntax: GetFirmwareVersion var_name

GetBasebandVersion
Syntax: GetBasebandVersion var_name default_version

GetBootloaderVersion
Syntax: GetBootloaderVersion var_name


Les fonctions retournent le résultat dans une variable que vous avez défini tout en appelant la fonction. Voici un exemple:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
. /bin2/functions.inc

GetFirmwareVersion var_fw_version
if [ ${var_fw_version} != "1.1.3" ]; then
    echo "Error: not version 1.1.3"
    exit 1
fi

GetBasebandVersion var_bb_version
if [ ${var_bb_version} != "04.03.13_G" ]; then
    echo "Error: not baseband 04.03.13"
    exit 1
fi

GetBasebandVersion var_bb_version DEFAULT_VALUE
if [ ${var_bb_version} = "DEFAULT_VALUE" ]; then
    echo "Error: unable to determine baseband version"
    exit 1
fi

GetBootloaderVersion var_bl_version
if [ ${var_bl_version} != "3.9_M3S2" ]; then
    echo "Error: not bootloader 3.9"
    exit 1

------------------------------------------------------------------------------------------------------------------------   fin de l'exemple

Votre script peut appeler ces fonctions internes dans le cas où votre payload nécessite :  un firmware 1.1.3 / une base 04.03.13_G /  et un bootloader 3.9_M3S2  ....



*******************
Voilà un exemple
*******************
Activation d'un 1.1.4


L' Activativation nécéssite de patcher "/usr/lib/lockdownd", donc le script pour activer la 1.1.4 doit remplacer l'ancien "lockdownd"  avec un lockdownd patché.

************************************************************************************************************************
Tout d'abord, l'en-tête, nous l'avons décrite précédemment, donc nous allons simplement la sauter:

#!/bin/sh
#
# Name: Activate 1.1.4
# Pack: Activate114.zip
# URL: http://iLiberty.zjlotto.com/Payloads/Activate114.zip
# Desc: Activate iPhone firmware 1.1.4 with a patched lockdownd.
#
************************************************************************************************************************

Maintenant, le corps du script,  il faut d'abord appeler  les fonctions internes pour vérifier  la version du microprogramme, si le firmware n'est pas un 1.1.4 , nous nous arrêtons pour quelques secondes, de sorte que l'utilisateur peut savoir ce qui se passe (c'est le sleep 5, on attends 5 secondes) :

. /bin2/functions.inc
 echo "Activating 1.1.4..."
 GetFirmwareVersion fw_version
 if [ ${fw_version} != "1.1.4" ]; then
   echo "Wrong firmware version: ${fw_version}"
   sleep 5
   exit 1
fi
***********************************************************************************************************************

Quand la vérification de version a réussi( on est donc bien en 1.1.4, nous pouvons maintenant extraire notre lockdownd patchée pour remplacer l'ancien, nous avons également ajouté quelques erreurs de détection et vérifié les permissions afin de le rendre sûr en cas de panne:

unzip -q -o ${PL_DIR}/Activate114.zip -d /usr/libexec/
if [ $? -ne 0 ]; then
   sleep 10
fi
chmod 555 /usr/libexec/lockdownd
***********************************************************************************************************************

Pour terminer on supprime notre archive... et on affiche "done"

rm -f ${PL_DIR}/Activate114.zip
 
echo "Done"
***********************************************************************************************************************

REMARQUE:
Bien que le  script va nettoyer l'ensemble des payloads  à la fin de l'exécution, c'est une bonne idée que de nettoyer notre propre payload avant de terminer, parce que si il y a de nombreux payloads à l'installation, le dossier payload peut occuper un certain Espace sur le disque....




Voila enjoy Sourire
Source : George ZJlotto
« Dernière édition: 28 Juillet 2008 à 17:42:08 par hvdcgkl » Journalisée

iPhone OOTB 1.1.2 USA - BL 4.6
Retour en 1.1.1 puis OCTOPREP - passage en 1.1.2  et 1.1.3 Jailbreaké
J'avais xxxSim pour Tél SFR - Mais maintenant désimlocké avec le tuto de geolock - VENDU !!!
DEPUIS LE 20/03/08 -> OOTB USA 1.1.4 -> IPLUS 20B downgrade en 3.9 FB
NICKEL - Merci GEOHOT & DEVTEAM
Obscur909
FiDev
*****
Messages: 4064
« Répondre #1 le: 27 Mars 2008 à 11:56:52 »

Bien Sourire +1
Journalisée

hvdcgkl
Membre Donateur
*******
Messages: 206
« Répondre #2 le: 27 Mars 2008 à 12:02:08 »

Bien Sourire +1

Merci  +1 également....
Journalisée

iPhone OOTB 1.1.2 USA - BL 4.6
Retour en 1.1.1 puis OCTOPREP - passage en 1.1.2  et 1.1.3 Jailbreaké
J'avais xxxSim pour Tél SFR - Mais maintenant désimlocké avec le tuto de geolock - VENDU !!!
DEPUIS LE 20/03/08 -> OOTB USA 1.1.4 -> IPLUS 20B downgrade en 3.9 FB
NICKEL - Merci GEOHOT & DEVTEAM
Ultimate
Modérateur Global
*****
Messages: 1391
« Répondre #3 le: 27 Mars 2008 à 12:51:53 »

Excellent travail hvdcgkl,
T'ai sité sur le TUTO iLiberty+  Clin d'oeil +1
« Dernière édition: 27 Mars 2008 à 12:56:36 par Ultimate » Journalisée



iPhone US, firmware 2.0.2 Jailbreak/desimlock WinPwn 2.0.0.4 PC / Pwnage Tool 2.0.3.1 MAC, QuickPwn 1.5.1 RC3, iTunes 7.7.1
hvdcgkl
Membre Donateur
*******
Messages: 206
« Répondre #4 le: 27 Mars 2008 à 13:06:17 »

Excellent travail hvdcgkl,
T'ai sité sur le TUTO iLiberty+  Clin d'oeil +1

J'ai vuuuuuu   Sourire
 +1 pour Toi aussi et ton super tuto !!!!
Journalisée

iPhone OOTB 1.1.2 USA - BL 4.6
Retour en 1.1.1 puis OCTOPREP - passage en 1.1.2  et 1.1.3 Jailbreaké
J'avais xxxSim pour Tél SFR - Mais maintenant désimlocké avec le tuto de geolock - VENDU !!!
DEPUIS LE 20/03/08 -> OOTB USA 1.1.4 -> IPLUS 20B downgrade en 3.9 FB
NICKEL - Merci GEOHOT & DEVTEAM
KicheTof
Membre Donateur
*******
Messages: 1328
DrEadY

« Répondre #5 le: 27 Mars 2008 à 13:16:25 »

Magnifique ! Merci beaucoup !

Je trouve juste dommage de la part des Dev d'avoir utilisé un des If a la place d'un case pour vérifier le firmware, ça aurait été plus propre Sourire
Journalisée



Core2Duo E6750 OC@3.2Ghz-2Go DDR2 800-GeForce7900GTO

Ubuntu Hardy Heron - Vista - Leopard 10.5.2

KicheTof's Flickr
frenchiPhone le forum
« Répondre #5 le: 27 Mars 2008 à 13:16:25 »

 Journalisée
hvdcgkl
Membre Donateur
*******
Messages: 206
« Répondre #6 le: 27 Mars 2008 à 13:24:40 »

Magnifique ! Merci beaucoup !

Je trouve juste dommage de la part des Dev d'avoir utilisé un des If a la place d'un case pour vérifier le firmware, ça aurait été plus propre Sourire

Merci pour ton commentaire
+1
Journalisée

iPhone OOTB 1.1.2 USA - BL 4.6
Retour en 1.1.1 puis OCTOPREP - passage en 1.1.2  et 1.1.3 Jailbreaké
J'avais xxxSim pour Tél SFR - Mais maintenant désimlocké avec le tuto de geolock - VENDU !!!
DEPUIS LE 20/03/08 -> OOTB USA 1.1.4 -> IPLUS 20B downgrade en 3.9 FB
NICKEL - Merci GEOHOT & DEVTEAM
manmelmau
Membre Junior
**
Messages: 93
Merci Geohot et la DevTeam

« Répondre #7 le: 28 Mars 2008 à 00:59:35 »

+1  super !!!!
Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.4 | SMF © 2006, Simple Machines LLC XHTML 1.0 Transitionnel valide ! CSS valide !
Page générée en 0.092 secondes avec 24 requêtes.