Jump to content
Nokioteca Forum

[App] Cookme V.2 - Cucina Firmware In Automatico By Andrea993


Recommended Posts

COOKME v2

Ho finalmente finito di laovorare al progetto Cookme v2.

Cookme per chi non lo sapesse è un programma che automatizza il cooking dei firmware dando la possibilità all'utente di scegliere ciò che più gli interessa tra una lista di patch (mod).

Utilizzando Cookme l'utente non deve per forza conoscere la struttura di un symbian, gli basta leggere la guida del programma.

Con Cookme v2 ognuno può creare nuove patch e condividerle con tutto il mondo grazie a una condivisione accessibile dal programma appositamente creata.

Inoltre la condivisione mi permetterà di mantenere gli utenti sempre alll'erta su eventuali aggiornamenti.

Le patch di Cookme v2 si creano in modo leggermente differente alle patch di Cookme v1, ho integrato anche alcuni strumenti per facilitarne la creazione.

Siccome le patch non le ho create tutte io, non ho avuto la possibilità di testarle tutte, sopratutto sui firmware più aggiornati è possibile che riscontriate qualche problema che, se segnalatomi correggerò.

Cookme v2, insieme a moltri altri fix separa anche le patch a seconda del modello di cellulare.

NON MI ASSUMO ALCUNA RESPONSABILITA' A PROPOSITO DEI DANNI CHE IL PROGRAMMA PUO ARRECARVI, USATELO A VOSTRO RISCHIO E PERICOLO

La guida completa che DOVETE leggere la torvate all'interno dell' archivio.

All' interno dell' archivi otroverete anche spiegato come creare i 3 tipi di patch: "A cartella", "programmate" e "programmate speciali".

Cookme v2 è multilingua per cui con il tempo lo distribuirò su alcuni forum, da dove la gente potrà scaricarlo e condividere patch o altro per Cookme.

Dovuti ringraziamenti ad XCape e ad autoradio78 per l'aiuto e la collaborazione

1f8cd39984e9d6d4f43f9310cd316e57a1a512bd13ac9592a629ab7c16fa48245g.jpg

82491cf0aa00ab92796dfc5884c411e677f92085b74903f9d4b0ce32e5c7ba2d5g.jpg

0cfecc4f11944e9d07eb914d7acf68fb9f14c0d16f8bd2f6042ee977a1391c7a5g.jpg

DOWNLOAD COOKME V2.0.2

AGGIORNAMENTO A COOKME v2.1.0

Questa nuova versione oltre a qualche fix funziona come plugin per NokiaCooker (by il.Socio)

Benchè NokiaCooker non sia direttamente supportato è possibile comunque utilizzare Cookme con esso, anzi usare insieme questi due programmi diventa la cosa più saggia.

Estraete l'archivio in una cartella, poi da NokiaCooker andate su plugin e inseriteci Cookme, a tutto il resto ci penserà lui.

Ho inserito la patch "installserver s60v3" grazie alla quale sarà possibile anche fare l'hack alle UDA degli S60v3 che non hanno le rofs protette (tipo n95).

Se avete uno di questi modelli estraete con NokiaCooker l'UDA e poi con Cookme applicate SOLO la patch "installserver s60v3"

Usando Cookme come plugin per NokiaCooker sarete parecchio agevolati, visto che farà tutto da solo, dovete solo spuntare le patch che vi interessano :)

DOWNLOAD COOKME V2.1.0

Modificato da Andrea993
  • Mi Piace 2
Link to comment
Condividi su altri siti

Ho provato a lanciarlo e selezionare la cartella in cui e' stato estratto il fw, ma ottengo sempre il messaggio "Hai selezionato una cartella sbagliata o inesistente"

Questa e' la cartella in cui e' stato estatto il fw:

C:\Users\Root\Desktop\NokiaCooker_1.1\Files\

EDIT:

Inoltre, ti segnalo che e' con una semplice modifica a CookMe2, puoi evitare che l'utente debba selezionare manualmente questa cartella quando il programma viene lanciato come plugin di NokiaCooker.

E' sufficiente che dal programma leggi i parametri della command line che gli vengono passati... tra cui e' presente il path in cui e' stato estratto il fw.

Che linguaggio hai utilizzato per realizzarlo?

P.S.

Usare NokiaEditor (come suggerito nel tool) per estrarre/ricompattare il fw e' altamente sconsigliato, perche' non e' in grado di reimpacchettare per bene la ROFS... molto meglio NokiaFirmwareEditor oppure NokiaCooker che sono in grado di farlo per bene.

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Nella guida ho scritto che nokia cooker non è attualmente supportato, questo perchè è l'unico programma che quando estrae un firmware lo mette nella cartella files e non nella cartella rofs2 :)

Potrei rinominare la cartella files in rofs2 per il tempo di esecuzione del programma.

Comunque non sapevo che nokia cooker passasse argoenti ai plugin...magari posso fare modificare cookme in modo che si possa lanciare come plug-in.

L'ho scritto in C#.

Link to comment
Condividi su altri siti

Nella guida ho scritto che nokia cooker non è attualmente supportato questo perchè è l'unico programma che quando estrae un firmware lo mette nella cartella files e non nella cartella rofs2

Magari sarebbe opportuno menzionarlo anche nel primo post allora, perche' al momento manca :)

, questo perchè è l'unico programma che quando estrae un firmware lo mette nella cartella files e non nella cartella rofs2 :)

E' anche l'unico programma in grado di gestire anche i file UDA, ed avrebbe poco senso estrarre la UDA in una cartella nominata rofs2. :)

Ma in ultima battuta, il path finale in cui finiscono i vari file che sono presenti all'interno del fw dovrebbe essere deltutto trasparente per il tuo tool... sopratutto considerato il fatto che CookMe lo richiede come input...

Se e' stato estratto con NokiaCooker, prendera' in input un path tipo: c:\Prova\Files\

Se invece e' stato estratto con NokiaFirmwareEditor prendera' in input un path tipo: c:\Prova\Rofs2\

In entrambi i casi, il tuo programma non dovrebbe aggiungere nessun path di sua iniziativa.

Invece, da quel che ho capito, attualmente CookMe prende c:\Prova\ e appende poi \Rofs2\ di sua iniziativa.

Il fatto e' che c:\Prova\ non contiene i files che sono stati estratti dal fw... perche' Rofs2 non e' una cartella presente nel fw.

Potrei rinominare la cartella files in rofs2 per il tempo di esecuzione del programma.

Puo' essere un comodo workaround, per evitare di stravolgere il codice del tuo progetto...

A tendere, la cosa migliore e' quella di limitarsi a prendere in input il path in cui si trovano i vari files che sono stati estatti dal firmware... ovvero il tuo programma dovrebbe prendere in input un certo path \XXX\ e sapra' che al suo interno trovera' i vari \sys\ ecc...

\XXX\sys\

\XXX\private\

\XXX\resource\

Comunque non sapevo che nokia cooker passasse argoenti ai plugin...magari posso fare modificare cookme in modo che si possa lanciare come plug-in.

L'ho scritto in C#.

Dentro la cartella di "\NokiaCooker\TestPlugins\" troverai i sorgenti di un progettino gia' pronto in C# che puoi utilizzare direttamente per gestire in maniera opportuna i parametri che ti vengono passati da NokiaCooker...

Ti riporto qui il Program.cs modificato (preso dai sorgenti di TestPlugin):

       [sTAThread]
       static void Main(string[] args)
       {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);
           Application.Run(new Form1(args));
       }

Ed il codice di costruzione del Form (preso dai sorgenti di TestPlugin):

       public Form1(string[] args)
       {
           InitializeComponent();

           if (args.Length < 4)
           {
               // Launched directly by user
               return;
           }
           // Launched through Nokia Cooker
           lblFile.Text = args[0];
           lblPath.Text = args[1];
           lblFilename.Text = args[2];
           lblType.Text = args[3];
       }

quando args.Length < 4 significa che CookMe e' stato lanciato direttamente dall'utente e quindi dovra' richiedere l'inserimento del path di estrazione... del modello ecc... ecc...

In caso contrario, significa che CookMe e' stato inserito come plugin di NokiaCooker, l'utente ha aperto un firmware (UDA / ROFS2 / ROFS3) ed ha poi lanciato CookMe tramite la toolbar di NokiaCooker.

CookMe, puo' prendere in input i 4 parametri che vedi nel codice... che sono:

1) nome del file attualmente selezionato (es: c:/nokiacooker/files/resource/versions/customersw.txt)

2) path in cui e' stato estratto il fw (es: c:/nokiacooker/files/)

3) nome del file del firmware aperto (es: RM-596_011.012_U01.01_79.92_prd.uda.fpsx)

4) tipologia del file del firmware aperto (es: UDA, ROFS, CORE, UNKNOWN)

Di cui, fondamentalmente, ti interessa il parametro 2) che ti indica in quale path e' stato estratto il fw (cosi' non dovrai richiederlo nuovamente all'utente)

Eventualmente, dai parametri 3) e 4) puoi determinare rispettivamente

3) il modello del cellulare (es: RM596 e' il Nokia N8) (vedi spoiler al fondo se ti interessa approfondire questo aspetto)

4) se e' stata aperta una UDA oppure una ROFS

Perche' magari alcune mod sono applicabili solo ad N8, oppure alcune sono applicabili solo alla ROFS e non alla UDA e viceversa, cosi' potrai nascondere o disattivare, quelle che sai gia' che non possono essere applicabili.

Questa e' la funzione usata da NaviFirm+ per estrarre il codice 596 dal nome del file del fw aperto...

es. Input: RM-596_014.002_263_IT_CV.01_79.92_prd

es. Output: 596

private string CleanRM(string rmString)
{
   rmString = rmString.ToLower();
   rmString = rmString.Replace("rm-", "");
   rmString = rmString.Replace("rm", "");

   string code = "";
   int i = 0;
   while (i < rmString.Length && rmString[i] >= '0' && rmString[i] <= '9')
   {
       code += rmString[i];
       i++;
   }
   return code;
}

E qui c'e' il codice che fa uso di questa funzione...

string code = CleanRM(args[2]);
// args[2] = RM-596_014.002_263_IT_CV.01_79.92_prd
// code = 596
if (code.Length > 0)
{
 // TODO: 596 --> N8
}

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Invece, da quel che ho capito, attualmente CookMe prende c:\Prova\ e appende poi \Rofs2\ di sua iniziativa.

Il fatto e' che c:\Prova\ non contiene i files che sono stati estratti dal fw... perche' Rofs2 non e' una cartella presente nel fw.

Inizialmente CookMe(la prima versione) l'avevo scritto quando esisteva solo nokia editor beta, vedendo la cartella "rofs2" avevo immaginato che a breva, appena il core sarebbe stato supportato, ci sarebbe stata una nuova cartella "core" o qualcosa di simile, per questo il programma di sua iniziativa va nella cartella "rofs2", così facendo quando il core sarebbe stato supportato non avrei neanche dovuto modificare il programma per renderlo compatibile.

Purtroppo così non è successo, e per risistemare la cosa bisognerebbe modificare tutte le patch, molte delle quali non fatte da me, per cui ormai preferisco lasciare tutto così com'è.

A mio avviso l'accoppiata NokiaCooker-CookMe è un ottima idea, anche gli utenti si sentirebbero più a loro agio, semplificherebbe moltissimo il cooking.

Appena avrò tempo vedrò di rendere concreta la cosa.

Input: RM-596_014.002_263_IT_CV.01_79.92_prd

    rmString = rmString.Replace("rm-", "");
   rmString = rmString.Replace("rm", "");

Perchè farlo due volte? "rm" appare una sola volta :)

Link to comment
Condividi su altri siti

Perchè farlo due volte? "rm" appare una sola volta :)

Perche' il nome del file potrebbe iniziare con "RM-596" oppure con "RM596"

Qui due esempi reali:

1) RM-596_011.012_U01.01_79.92_prd.uda.fpsx

2) RM588_50.6.001_000_000_U001.uda.fpsx

Per poter gestire entrambi i casi in maniera corretta, e' necessario prima provare a rimuovere "rm-" e poi provare a rimuovere "rm"

Altrimenti, non si riuscirebbe a ripulire per bene il nome del file... ma se hai qualche idea alternativa, postala pure che ne discutiamo insieme! ;)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Sto provando a trasformare CookMe v2 in un plug-in per NokiaCooker ma un paio di problemi mi bloccano:

-NokiaCooker mi inibisce il debug e quindi non riesco a debuggare CookMe una volta aperto da NokiaCooker;

-Non riesco a rinominare la cartella "files" in "rofs2", perchè gia in uso da NokiaCooker.

Idee?

Per quanto riguarda il debug...

Puoi lanciarlo tu a mano da visualstudio e "simulare" un ipotetico lancio da parte di NokiaCooker modificando il program.cs in questa maniera:

       [sTAThread]
       static void Main(string[] args)
       {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);
#if DEBUG
           args = new string[4];
           args[0] = "c:/nokiacooker/files/resource/versions/customersw.txt";
           args[1] = "c:/nokiacooker/files/";
           args[2] = "RM-596_014.002_01.01_Euro_1_79.92_prd.rofs2.fpsx";
           args[3] = "ROFS";
#endif
           Application.Run(new Form1(args));
       }

imputando un valore adeguato per il c:/nokiacooker/files/

che dovra' puntare al path in cui sono presenti i file del fw...

Una volta che ti sei accertato che cosi' funziona, non dovresti avere nessun problema a farlo funzionare lanciandolo da NokiaCooker.

Per il rename della cartella "files" in "rofs2", da quanto ho capito di come funziona CookMe, non credo che tu debba rinominarla per far funzionare il tuo codice... ma piuttosto, dovresti creare la cartella rofs2 dentro alla cartella files e spostarci dentro tutto il contenuto della cartella files...

Ovvero, dovresti passare da questa situazione:

nokiacooker/files/sys/

nokiacooker/files/private/

a questa:

nokiacooker/files/rofs2/sys/

nokiacooker/files/rofs2/private/

e quando viene chiuso CookMe, dovrai fare l'operazione inversa... spostare nuovamente tutto e infine cancellare files/rofs2/

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Sì, ho risolto, grazie comunque...

Rinomino la cartella files in rofs2 e quando il programma viene spento oppure finisice di cucinare rimette le cartelle a posto.

Mi dava un errore quando rinominavo perchè mi ero dimenticato di eliminare la vecchia cartella rofs2.

Purtroppo l'unico file che sono riuscito a trovare che permette di risalire dall'rm al modello di cellulare è quello di jaf ma ci sono più cellulari con lo stesso rm e poi jaf, vicino al nome del modello a volte scrive altri simboli o parole, percui la scelta dell'opzione "modello" ritengo sia comunque meglio lasciarla fare all'utente.

Allego l'eseguibile da sostituire a quello contenuto nell'archivio scaricabile al primo post.

Cookme v2.0.3.rar

Modificato da Andrea993
Link to comment
Condividi su altri siti

ci sono più cellulari con lo stesso rm e poi jaf

L'rm, dovrebbe identificare in maniera univoca ciascun modello... forse c'e' qualche incongruenza nella lista di JAF.

Qui c'e' la lista aggiornata, completa e pulita (ci sono anche cell non Symbian) di tutti gli RM e modelli, che ho estratto da NaviFirm+ ;)

prod.txt

RM e modello sono separati dal punto e virgola... eventualmente, puoi rinominarlo in .csv ed aprirlo con Excel se vuoi modificare l'ordinamento o il separatore...

Allego l'eseguibile da sostituire a quello contenuto nell'archivio scaricabile al primo post.

Puoi modificare tu stesso il primo post per sostituire l'allegato con quello nuovo ;)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Ho notato, ma fondamentalmente, non sussite alcun problema... :)

Se RM-625 identifica 3 modelli, significa che quei 3 modelli monteranno necessariamente lo stesso identico firmware (la lista che ti ho postato e' stata estratta proprio da NaviFirm+)

Quindi, siccome quei 3 modelli montano lo stesso identico firmware, significa che tutte le varie patch che sono compatibili con uno di quei modelli, risultano compatibili anche con tutti gli altri che hanno lo stesso firmware.

Se prendi un Nokia 5233, un Nokia 5232 ed un Nokia 5228, dentro ci troverai lo stesso firmware (quello del RM-625)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Siccome le patch non le ho create tutte io, non ho avuto la possibilità di testarle tutte, sopratutto sui firmware più aggiornati è possibile che riscontriate qualche problema che, se segnalatomi correggerò.

Guardando i credits delle varie patch, ho notato che gli autori che vengono riportati non sono quelli di chi ha realizzato le patch in primo luogo, ma a quanto pare, di chi si e' occupato di inserirla dentro CookMe.

IMHO, sarebbe corretto evitare quel "by xxx" di riferimento a ciascuna patch, perche' chi legge, potrebbe pensare che il lavoro di creazione della patch e' completamente frutto di tal xxx, mentre cosi' non e'...

E siccome creare la patch puo' rappresentare una gran parte del lavoro, mentre integrarla in CookMe e' una attivita' relativamente poco dispendiosa, mi sembra quantomeno ingiusto nei confronti degli autori originali delle patch.

:)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Prima devi estrarre il firmware con Nokia editor o con nfe.

Estratto il firmware usi cookme

Poi una volta cucinato con il nokia editor o nfe puoifare il repack

@il.socio

Con autore si intende chi ha inserito la patch in cookme, visto che si parla di patch.

L'autore non riguarda l'autore della mod ma solamente della patch.

Non credo possa essere ingiusto, perchè comunque quelle mod le trovi in tutti i forum senza riferimenti all'autore.

Link to comment
Condividi su altri siti

L'autore non riguarda l'autore della mod ma solamente della patch.

Si, questo lo avevo capito, ma dal programma non e' chiara questa distinzione...

E chi lo usa, e' portato a pensare che quella mod sia completamente opera del tizio che viene citato.

Non credo possa essere ingiusto, perchè comunque quelle mod le trovi in tutti i forum senza riferimenti all'autore.

Per alcune di quelle mod non compaiono i riferimenti all'autore perche' si tratta semplicemente di modifiche ad impostazioni di default (CenRep) che sono facilmente riproducibili da chiunque.

Qui c'e' una parte della documentazione del caso: http://sites.google.com/site/i8910wizard/calendar/the-vmp-of-the-game basta selezionare il file che si desidera (es: http://sites.google.com/site/i8910wizard/calendar/the-vmp-of-the-game/10200c8c-txt ) per avere una descrizione dei relativi parametri e dei valori di default.

Chiunque puo' attingere a quel sito, prendere il file .txt modificare i valori di default e creare cosi' una determinata mod del CenRep.

Non mi stupisce che spesso chi compie queste modifiche non si qualifichi come autore, perche' in fin dei conti, l'aspetto piu' rilevante e' conoscere con esattezza il significato delle varie chiavi... non e' il saper usare blocco note per modificarle.

Per altre mod piu' sostanziose, invece, il riferimento all'autore viene giustamente riportato.

Almeno, questo e' quello che accade in tutti i forum di un certo livello...

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Gia' andrebbe molto meglio dell'attuale :)

Occhio pero' che se hai intenzione di distribuirlo sui forum stranieri, potrebbero sollevare qualche lamentela in entrambi i casi... ma per evitarlo, credo ti bastera' scrivere una piccola nota nel post di presentazione del programma in cui spiegare che per "patch author" si intende colui che ha integrato la mod all'interno di CookMe e via... :)

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Hai ragione... ho trascurato di specificare questo aspetto... e' uno spazio, ovvero " "

Nella prossima versione, modifichero' il plugin di esempio per tenere conto di questa eccezione...

Puoi risolverla con un Trim(), cosi sei anche sicuro che i vari parametri non contengono spazi inutili all'inizio o alla fine.

           lblFile.Text = args[0].Trim();
           lblPath.Text = args[1].Trim();
           lblFilename.Text = args[2].Trim();
           lblType.Text = args[3].Trim();

           if (lblFilename.Text == string.Empty)
           {
               MessageBox.Show("non e' ancora stato aperto nessun file del fw");
           }

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Ti allego qui una piccola funzione che puoi usare per trasformare "RM-596" in "Nokia N8", leggendo la lista Prod.txt

       private string RmCodeToModel(string rm)
       {
           rm = "rm-" + rm.Trim();  // 596 --> rm-596
           string[] lines = File.ReadAllLines("prod.txt");
           foreach (string line in lines)
           {
               string[] fields = line.Split(';');
               System.Diagnostics.Debug.Assert(fields.Length >= 2, "Prod.txt: invalid format!");
               if (fields[0].Trim().ToLower() == rm)
               {
                   // "rm-596" found, returns the model "Nokia N8"
                   return fields[1];
               }
           }
           // "rm-596" not found
           return string.Empty;
       }

E la richiamerai cosi'...

           string code = CleanRM(args[2]);
           // args[2] = RM-596_014.002_263_IT_CV.01_79.92_prd
           // code = 596
           if (code.Length > 0)
           {
               // 596 --> Nokia N8
               string model = RmCodeToModel(code);
           }

Quindi, fondamentalmente, partendo dal parametro di input:

"RM-596_014.002_263_IT_CV.01_79.92_prd"

arrivi a determinare il modello:

"Nokia N8"

(o i modelli "Nokia 5233 / Nokia 5232 / Nokia 5228")

Modificato da Il.Socio
Link to comment
Condividi su altri siti

Grazie mille per la funzione ma l'ho già scritta...scusa se non ti ho avvisato prima e ti ho fatto perdere tempo.

  rmString = VariabiliGlobali.Globals.argomenti[2];

               rmString = rmString.ToLower();
               rmString = rmString.Replace("rm-", "");
               rmString = rmString.Replace("rm", "");

               string code = "";
               i = 0;
               while (i < rmString.Length && rmString[i] >= '0' && rmString[i] <= '9')
               {
                   code += rmString[i];
                   i++;
               }

               code = "RM-" + code;

               StreamReader reader = new StreamReader(Directory.GetCurrentDirectory() + @"\other\models\prod.txt");

               ncmodel = "";
               while (!reader.EndOfStream && ncmodel == "")
               {
                   linealetta = reader.ReadLine();
                   linealetta = linealetta.ToUpper();

                   if (linealetta.Substring(0, code.Length) == code)
                       rmgiusto = true;
                   else
                       rmgiusto = false;

                   if (rmgiusto)
                   {
                       linealetta = linealetta.Remove(0, code.Length + 7);

                       i = 0;
                       while (i < linealetta.Length)
                       {
                           if (linealetta[i] != ' ' && linealetta[i] != '/')
                           {
                               ncmodel += linealetta[i];
                               i++;
                           }
                           else
                               break;
                       }

                   }

               }

Come puoi vedere ho usato la tua funzione per leggere l'rm.

Adesso CookMe nella versione 2.1.0 si integra alla perfezione con NokiaCooker, presto rilasceò la versione con anche la correzione "Patch author" :)

Modificato da Andrea993
Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy