Brigole forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Brigole forum

Forum consacré au bricolage en général et à la détente !
 
AccueilDernières imagesRechercherS'enregistrerConnexion
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Derniers sujets
» InfluxDB-Kapacitor-tickscript
[ANDROID] lire une Adresse mémoire. Icon_minitimepar amosjerome Lun 6 Avr - 15:16

» Table pyrotechnique
[ANDROID] lire une Adresse mémoire. Icon_minitimepar bricoleur_1 Mer 9 Oct - 20:06

» caméra déportée sur chien
[ANDROID] lire une Adresse mémoire. Icon_minitimepar amosjerome Jeu 30 Nov - 21:19

» arduino self balancing project
[ANDROID] lire une Adresse mémoire. Icon_minitimepar amosjerome Dim 3 Sep - 22:52

» Table de tir 20 lignes
[ANDROID] lire une Adresse mémoire. Icon_minitimepar bricoleur_1 Mar 22 Aoû - 19:37

» roue à aubes
[ANDROID] lire une Adresse mémoire. Icon_minitimepar Invité Sam 20 Mai - 23:45

» Simulation acoustique
[ANDROID] lire une Adresse mémoire. Icon_minitimepar Biduleohm Mar 24 Jan - 15:14

» DAC en réseau R-2R pour appli à faible résolution
[ANDROID] lire une Adresse mémoire. Icon_minitimepar Biduleohm Mar 10 Jan - 23:38

» Corps de chauffe
[ANDROID] lire une Adresse mémoire. Icon_minitimepar Antot Sam 31 Déc - 0:41

Partenaires
Mots-clés
volant NE555 lance labo Chenillard loin bricoleur leds parallele voiture vélo hilarant flamme vision DELs nocturne arbre cerf cabane port horloge elastique sarbacane indoor trouve insoleuse
Le Deal du moment : -15%
(Adhérents Fnac) LEGO® Star Wars™ ...
Voir le deal
552.49 €

 

 [ANDROID] lire une Adresse mémoire.

Aller en bas 
3 participants
AuteurMessage
antoineh2
Jeune bricoleur
Jeune bricoleur
antoineh2


Masculin Nombre de messages : 200
Age : 31
Localisation : belgium
Emploi/loisirs : patator, démontage
Humeur : normal( parfois diabolique)
Date d'inscription : 19/12/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 16 Juin - 11:09

Salut salut la compagnie,
Alors voila, ça fait quelques mois maintenant que je fais de l'achat de téléphones endommagés et que je les répare.
Jusque la rien d'anormal, je commande les pièces, je démonte et remonte, on a un gsm tout neuf prêt à l'emploi et à la revente.
Mais voila, ma seule ressource de gsm endommagé étant ebay, je me retrouve parfois à acheter des téléphones dans d'autre pays.
Donc la j'ai acheté un Xperia Neo à un trés bon prix, digitizer brisé. Je l'ai trés vite réparé, mais ensuite est venu un autre problème, le smartphone est bloqué sur un réseau autrichien (3AT). Donc bon, je me dis, j'envoie un mail au service client (je fais des gros efforts sur mon anglais (et je leur propose même de réécrire en Allemand via un ami). Ils me répondent que si je veux le faire débloquer, non seulement c'est payant, mais en plus je dois me rendre dans un de leur points de vente... en Autriche  lol! .
Bref, j'abandonne l'idée d'avoir le code pars eux, et me tourne vers les autres options de déblocages, pour vite me rendre compte que payer 15 euros pour une connerie pareil c'est inacceptable.
Dernière solution, décompilller la bonne application dans le téléphone afin de trouver la ligne de code contenant le petit code (qui porte d'ailleurs plusieurs noms, ndp, depersonalization, dck, nck ...).
Bref, j'ai facilement trouvé la bonne application -> SemcPhone.apk dans mon cas, contenant le code pour la depersonalization du téléphone (qui apparait que lorsque l'on active une nouvelle carte sim).
Je décompille l'application sur mon ordi avec APKTOOL, pour avoir tous les répertoires de l'appli (le but n'étant pas de la recompiler aprés, j'ai des erreurs dans l'appli, mais pas grave).
Je fini par trouver le .xml qui contient les valeurs appelé "public.xml" dedans on y trouve toutes les valeurs utilisée par l'appli, et la c'est le drame pour le pauvre informaticien noob que je suis (vive python :D)
Parce que au lieu d'avoir la correspondante noté en clair genre simlock-ndp="nombre quelconque"
On à un truc comme ça:    
Donc toute les valeurs font référence à une adresse mémoire particulière...

C'est la que j'ai besoin de vous, parce que j'ai aucune connaissance en Java, et donc pour moi, arriver à lire une adresse mémoire, c'est comme tirer sur un lapin à 200m sans lunette.
Donc j'en appelle au dévloppeur Java ou android (si il y en a) pour m'aider.
J'aurais juste besoin d'un bout de code pour lire cette fichue adresse mémoire.
Ha oui, je précise que je suis root sur mon android, que j'ai acces au terminal , que busybox est installé, donc si y a moyen par la, je suis preneur.

Voila, merci d'avoir tout lu :D, et à bientot.
Revenir en haut Aller en bas
zangdar-64
Jeune bricoleur
Jeune bricoleur



Masculin Nombre de messages : 151
Age : 35
Localisation : Tarbes
Emploi/loisirs : Ingénieur/ Tout ce qui est +/- technique
Humeur : Non?
Date d'inscription : 29/11/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 16 Juin - 13:20

Si tu as rooté la bestiole tu doit avoir possibilité de flasher la ROM "radio" il me semble que c'est elle qui subi le blocage à un opérateur.
Revenir en haut Aller en bas
Biduleohm
Modérateur
Modérateur
Biduleohm


Masculin Nombre de messages : 8851
Age : 32
Localisation : 77 Seine-et-Marne
Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie
Humeur :  
Date d'inscription : 25/03/2009

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 16 Juin - 15:08

Perso je posterais sur stackoverflow pour ce genre de pb critique insoluble Wink (attention à bien lire les règles sinon tu vas te faire jeter).

Désolé, je ne peux pas t'aider plus que ça vu que je hais le java :p
Revenir en haut Aller en bas
http://biduleohm.free.fr/
antoineh2
Jeune bricoleur
Jeune bricoleur
antoineh2


Masculin Nombre de messages : 200
Age : 31
Localisation : belgium
Emploi/loisirs : patator, démontage
Humeur : normal( parfois diabolique)
Date d'inscription : 19/12/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 16 Juin - 16:04

@Zangdar-64:
Non non, tu peux changer tout ce que tu veux dans la ROM, ça n'enlevera jamais le simlock, je crois que c'est pour cette raison que SemcPhone va lire directement la valeur à une adresse bien précise, sinon ce serait trop facile à trouver.

@Bidule:
Ok, je vais poster ça la dessus en masquant un peu l'affaire :p (bien que je sents les questions qui vont fuser "Pourquoi tu veux faire ça?"). Meme si au final, rooter le téléphone fait déja perdre la garantie, et donc le desimlocker ensuite ça ne change rien, puisque tu es déja hors garantie, ça ne releve pas du hack dés lors.

Bon si quelqu'un qui voit ce post veux m'aider il est toujours le bien venu, je prend toute les infos :D
Revenir en haut Aller en bas
Biduleohm
Modérateur
Modérateur
Biduleohm


Masculin Nombre de messages : 8851
Age : 32
Localisation : 77 Seine-et-Marne
Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie
Humeur :  
Date d'inscription : 25/03/2009

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 16 Juin - 16:10

T'inquiète pas, donne tous les détails, pose la question clairement (i.e. ne la noie pas au milieu d'un paragraphe) et balance le code en question (regarde dans l'help pour la syntaxe, c'est pas du bbcode sur SO) et ça devrait aller Wink
Revenir en haut Aller en bas
http://biduleohm.free.fr/
antoineh2
Jeune bricoleur
Jeune bricoleur
antoineh2


Masculin Nombre de messages : 200
Age : 31
Localisation : belgium
Emploi/loisirs : patator, démontage
Humeur : normal( parfois diabolique)
Date d'inscription : 19/12/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 23 Juin - 10:41

Alors, je me suis trompè en faite  Embarassed .
Comme j'y connais rien en programmation android et java, j'ai considéré que un truc comme 0x80000 c'était une adresse mémoire, sans penser aux hexadécimaux.
Bref, il se trouve que le code n'est pas stocké en clair dans le téléphone, donc qu'il faut décrypter tout le code relatif au simlock. Du coup je me retrouve à essayer de décoder du java sans même connaitre les classes et les méthodes de bases. Ca me prend donc beaucoup de temps, mais on avance.
Voila pour l'avancée.
PS: j'ai pas posté sur stackoverflow, j'ai préféré d'abord réfléchir sur tout ça :D.


Dernière édition par antoineh2 le Mar 24 Juin - 23:04, édité 1 fois
Revenir en haut Aller en bas
Biduleohm
Modérateur
Modérateur
Biduleohm


Masculin Nombre de messages : 8851
Age : 32
Localisation : 77 Seine-et-Marne
Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie
Humeur :  
Date d'inscription : 25/03/2009

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeLun 23 Juin - 15:25

Oui, tu peux écrire en hexa, en binaire, ... sans que ce soit une adresse mémoire et inversement, tu peux écrire une adresse mémoire en décimal, ça change rien.

T'as quoi actuellement ? du code machine ? de l'assembleur ? du java désassemblé à partir de l'exe ?
Revenir en haut Aller en bas
http://biduleohm.free.fr/
antoineh2
Jeune bricoleur
Jeune bricoleur
antoineh2


Masculin Nombre de messages : 200
Age : 31
Localisation : belgium
Emploi/loisirs : patator, démontage
Humeur : normal( parfois diabolique)
Date d'inscription : 19/12/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeMar 24 Juin - 23:10

Du java, décompilé à partir de l'apk qui gère la fenêtre d'entrée du code de desimlock.
En gros tu décompiles une première fois l'apk vers du smali, un language pour la machine virtuelle android. Ensuite du smali tu vas au java.
Le code en java c'est ça:
Code:
/**
  * Generated by smali2java 1.0.0.558
  * Copyright (C) 2013 Hensence.com
  */

package com.android.phone;

import android.widget.Button;
import android.view.View;
import android.widget.LinearLayout;
import android.os.Handler;
import android.widget.TextView;
import com.android.internal.telephony.Phone;
import android.widget.EditText;
import android.text.TextWatcher;
import android.content.Context;
import android.os.Bundle;
import android.text.method.DialerKeyListener;
import android.text.method.KeyListener;
import android.text.Editable;
import android.text.Spannable;
import android.content.res.Resources;
import com.android.internal.telephony.PhoneFactory;
import android.view.KeyEvent;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import android.util.Log;
import android.os.Message;

public class IccNetworkDepersonalizationPanel extends IccPanel {
    private Button mDismissButton;
    private LinearLayout mEntryPanel;
    private int mPersoSubtype;
    private TextView mPersoSubtypeText;
    private Phone mPhone;
    private EditText mPinEntry;
    private LinearLayout mStatusPanel;
    private TextView mStatusText;
    private Button mUnlockButton;
    private final String mOemIdentifier = "QUALCOMM";
    private final int mHeaderSize = ("QUALCOMM".length() + 0x8);
    int OEMHOOK_BASE = 0x80000;
    int OEMHOOK_ME_DEPERSONALIZATION = (OEMHOOK_BASE + 0x4);
    private TextWatcher mPinEntryWatcher = new TextWatcher(this) { **mPinEntryWatcher obtient la valeur du texte entré dans le cadre, le code pin**
        
        public void beforeTextChanged(CharSequence buffer, int start, int olen, int nlen) {
        }
        
        public void onTextChanged(CharSequence buffer, int start, int olen, int nlen) {
        }
        
        public void afterTextChanged(Editable buffer) {
            if(SpecialCharSequenceMgr.handleChars(getContext(), buffer.toString())) {
                mPinEntry.getText().clear();
            }
        }
    };
    private Handler mHandler = new Handler(this) {
        
        public void handleMessage(Message msg) {
            if((msg.what == 0x64) || (msg.what == 0x65)) {
                AsyncResult res = msg.obj;
                if(res.exception != null) {
                    postDelayed(new Runnable(this) {
                        
                        public void run() {
                            mPinEntry.getText().clear();
                            mPinEntry.requestFocus();
                        }
                    }, 0xbb8);
                    return;
                }
                postDelayed(new Runnable(this) {
                    
                    public void run() {
                        dismiss();
                    }
                }, 0xbb8);
            }
        }
    };
    
    public IccNetworkDepersonalizationPanel(Context context) {
        String localString1 = "QUALCOMM";
        super(context);
        mPersoSubtype = 0x1;
    }
    
    public IccNetworkDepersonalizationPanel(Context context, int subtype) {
        String localString1 = "QUALCOMM";
        super(context);
        mPersoSubtype = subtype;
    }
    
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(0x7f030026); **(sim-ndp)
        mPinEntry = (EditText)findViewById(0x7f0700e9); **récupère la valeur entrée (pin_entry)
        mPinEntry.setKeyListener(DialerKeyListener.getInstance());
        mPinEntry.setOnClickListener(mUnlockListener); ** on a fait des modifications sur pin_entry en lui ajoutant ce que l'on écrit dans le champ.
        CharSequence text = mPinEntry.getText(); ** text contient pin_entry (dont on ne connait pas encore la classe)
        CharSequence span = (Spannable)text; **span est un texte modifiable
        span.setSpan(mPinEntryWatcher, 0x0, text.length(), 0x12); **on modifie, span en lui ajoutant pin_entry (qui prend toute la place)
        mEntryPanel = (LinearLayout)findViewById(0x7f0700e7); ** = entry_panel soit le paneau d'entrée
        mPersoSubtypeText = (TextView)findViewById(0x7f0700e8); **= perso_subtype_text ?
        setPersoPanelTitle();
        mUnlockButton = (Button)findViewById(0x7f0700ea); **= ndp_unlock
        mUnlockButton.setOnClickListener(mUnlockListener); ** mUnlockButton soit ndp_unlock qui devient ce que on a écrit
        mDismissButton = (Button)findViewById(0x7f0700eb); ** ajoute le bouton d'annulation
        if(getContext().getResources().getBoolean(0x7f080001)) { ** tout ce qui ce passe si on clique sur le bouton dissmiss
            mDismissButton.setVisibility(0x0); ** éfface l'activité (bien qu'elle existe toujours)
            mDismissButton.setOnClickListener(mDismissListener);
        } else {
            mDismissButton.setVisibility(0x8); **garde la fenêtre ouverte
        }
        mStatusPanel = (LinearLayout)findViewById(0x7f0700ec); **= statu_panel
        mStatusText = (TextView)findViewById(0x7f0700ed);**=statu_text
        mPhone = PhoneFactory.getDefaultPhone(); ** =0x0
    }
    
    protected void onStart() {
        super.onStart();
    }
    
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == 0x4) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    View.OnClickListener mUnlockListener = new View.OnClickListener(this) {
        
        public void onClick(View v) {
            String localString1 = "PhoneApp"; **localString1="QUALCOMM" maintenant ="PhoneApp"
            String pin = mPinEntry.getText().toString(); **pin est = à mPinEntry soit ce que l'on a écrit dans le champ en string
            if(TextUtils.isEmpty(pin)) { **Si on écrit rien dans le champ, la fonction ne retourne rien.
                return;
            }
            if(mPersoSubtype == 0x1) {
                Log.d("PhoneApp", "requesting network depersonalization with pin:" + pin); ** dans le cas où persoSubtype=1 on log "PhoneApp requesting network depersonalization with pin: le pin entré".
                mPhone.getIccCard().supplyNetworkDepersonalization(pin, Message.obtain(mHandler, 0x64)); ** ici ont fait la vérificatiion.
            } else { ** ne joue jamais, j'ai pas vu dans les logs
                Log.d("PhoneApp", "requesting depersonalization with subtype " + mPersoSubtype + " with pin:" + pin);
                sendDepersoOemRilRequestRaw(pin);
            }
        }
    };
    
    private void indicateBusy() {
        //  Parsing error. Please contact me.
    }
    
    private void indicateError() {
        //  Parsing error. Please contact me.
    }
    
    private void indicateSuccess() {
        //  Parsing error. Please contact me.
    }
    
    private void hideAlert() { **efface la visibilité du paneau d'entrée, et montre le résultat
        mEntryPanel.setVisibility(0x0);
        mStatusPanel.setVisibility(0x8);
    }
    View.OnClickListener mDismissListener = new View.OnClickListener(this) {
        
        public void onClick(View v) {
            dismiss();
        }
    };
    
    private void setPersoPanelTitle() { ** ??
        //  Parsing error. Please contact me.
    }
    
    void sendDepersoOemRilRequestRaw(String pin) { **ici on fait vérif du code via dernière ligne en initialisant tout le reste avant. Request
        int requestSize = pin.length() + 0x4;
        byte[] request = new byte[((mHeaderSize + requestSize) + 0x1)];
        byte termChar = 0x0;
        ByteBuffer reqBuffer = ByteBuffer.wrap(request);
        reqBuffer.order(ByteOrder.nativeOrder());
        try {
            reqBuffer.put("QUALCOMM".getBytes());
            reqBuffer.putInt(OEMHOOK_ME_DEPERSONALIZATION);
            reqBuffer.putInt(requestSize);
            reqBuffer.putInt(mPersoSubtype);
            reqBuffer.put(pin.getBytes());
            reqBuffer.put(termChar);
            Exception e = ;
            Log.e("PhoneApp", "Skipping Depersonalization because of exception " + e);
            dismiss();
        }
        mPhone.invokeOemRilRequestRaw(request, Message.obtain(mHandler, 0x65));
    }
}
Revenir en haut Aller en bas
Biduleohm
Modérateur
Modérateur
Biduleohm


Masculin Nombre de messages : 8851
Age : 32
Localisation : 77 Seine-et-Marne
Emploi/loisirs : bricolage, informatique, électronique, THT, laser, aquariophilie
Humeur :  
Date d'inscription : 25/03/2009

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeMar 24 Juin - 23:38

Ok, bon bah ça va, t'as de la chance, bien souvent on ne peut pas aller plus loin que désassembler le bin en assembleur...
Revenir en haut Aller en bas
http://biduleohm.free.fr/
antoineh2
Jeune bricoleur
Jeune bricoleur
antoineh2


Masculin Nombre de messages : 200
Age : 31
Localisation : belgium
Emploi/loisirs : patator, démontage
Humeur : normal( parfois diabolique)
Date d'inscription : 19/12/2010

[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitimeJeu 26 Juin - 12:49

Bin c'est de l'android, pas un os propriétaire.
Sur mes vieux Sony ericsson, il y avait des bin dans tous les sens, c'était une horreur pour voir un peu le code.
Revenir en haut Aller en bas
Contenu sponsorisé





[ANDROID] lire une Adresse mémoire. Empty
MessageSujet: Re: [ANDROID] lire une Adresse mémoire.   [ANDROID] lire une Adresse mémoire. Icon_minitime

Revenir en haut Aller en bas
 
[ANDROID] lire une Adresse mémoire.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Barre d'adresse
» Adresse ip / Mega vidéo
» comment suprimer une adresse msn
» Lire des jeux de PS2/PS3 sur son PC ?
» [A LIRE OBLIGATOIREMENT] aide au nouveaux membres

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Brigole forum :: Divers :: L'Informatique-
Sauter vers: