Accueil > > > RÉCUPÉRER LES CODES IMEI, IMSI, OEM [MANAGED TAPI]
RÉCUPÉRER LES CODES IMEI, IMSI, OEM [MANAGED TAPI]
Information sur la source
Description
J'ai créé un exemple sur l'utilisation de la bibliothèque TAPI pour récupérer des informations sur la machine Dans cette source: les informations à récupérer sont: La résolution horizontale (sans api). La résolution verticale (sans api). ------------------------------------- Utilis ation de la biblio TAPI pour récupérer: Le code IMEI (International Mobile Equipment Identity). Le code IMSI (International Mobile Subscriber Identity). L'OEM (Original Equipment Manufacturer). Le model de la machine. Le numéros de révision. --------------------------------------- J'ai inclus aussi le projet Tapi wrapper for managed code (Code source de la biblio Managed Tapi) Mais il y a quelques problèmes, L'application marche très bien avec les version Windows Mobile 2003 et (-) mais elle nécessite un certificat pour qu'elle marchera avec les versions 5 et 6 de Windows Mobile Donc il est necessaire d'obtenir un certificat et signer les deux projet (tapi et l'application qui l'utilise) pour l'executer. L'utilité du code, L'IMEI est généralement utiliser pour générer les cles des produits pour les sécuriser.
Source
- using System;
- using System.Runtime.InteropServices;
- using System.Windows.Forms;
- using OpenNETCF.Tapi;
- // Référence a ajouter : Biblio TapiLib.dll
- namespace Tapi_IMEI_EMSI_OEM
- {
- public partial class frmMain : Form
- {
- // fonctions des dll PINVOKE.
- [DllImport("cellcore.dll")]
- internal static extern int lineGetGeneralInfo(IntPtr hLine, byte[] bCache);
- //OEM:pour Original Equipment Manufacturer
- //IMSI:pour International Mobile Subscriber Identity
- //IMEI:pour International Mobile Equipment Identity
- internal struct GeneralInfos
- {
- internal string OEM;
- internal string Model;
- internal string Revision;
- internal string IMEI;
- internal string IMSI;
- }
- public frmMain()
- {
- InitializeComponent();
- }
-
- static public String GetDisplayHorzRes()
- {
- return Screen.PrimaryScreen.Bounds.Width.ToString();
- }
- static public String GetDisplayVertRes()
- {
- return Screen.PrimaryScreen.Bounds.Height.ToString();
- }
-
-
- internal static GeneralInfos GetGeneralInfos()
- {
- //Creation d'un objet Tapi
- Tapi t = new Tapi();
- t.Initialize();
- //Objet line
- Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, LINECALLPRIVILEGE.MONITOR);
- //Reservation d'un espace mémoire pour la lecture des infos.
- byte[] buffer = new byte[512];
- BitConverter.GetBytes(512).CopyTo(buffer, 0);
- // Lecture des infos, vérification du resultat de l'opération.
- if (lineGetGeneralInfo(l.hLine, buffer) != 0)
- {
- throw new System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error(), "TAPI Error: " + System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString("X"));
- }
- // preparations pour l'extraction des informations.
- GeneralInfos gi = new GeneralInfos();
-
- // OEM.
- int manuSize = BitConverter.ToInt32(buffer, 12);
- int manuOffset = BitConverter.ToInt32(buffer, 16);
- gi.OEM = System.Text.Encoding.Unicode.GetString(buffer, manuOffset, manuSize);
- gi.OEM = gi.OEM.Substring(0, gi.OEM.IndexOf(Convert.ToChar(0)));
-
- // Model
- int modelSize = BitConverter.ToInt32(buffer, 20);
- int modelOffset = BitConverter.ToInt32(buffer, 24);
- gi.Model = System.Text.Encoding.Unicode.GetString(buffer, modelOffset, modelSize);
- gi.Model = gi.Model.Substring(0, gi.Model.IndexOf(Convert.ToChar(0)));
-
- //Révision
- int revSize = BitConverter.ToInt32(buffer, 28);
- int revOffset = BitConverter.ToInt32(buffer, 32);
- gi.Revision = System.Text.Encoding.Unicode.GetString(buffer, revOffset, revSize);
- gi.Revision = gi.Revision.Substring(0, gi.Revision.IndexOf(Convert.ToChar(0)));
-
- //IMEI
- int IMEI = BitConverter.ToInt32(buffer, 36);
- int IMEIoffset = BitConverter.ToInt32(buffer, 40);
- gi.IMEI = System.Text.Encoding.Unicode.GetString(buffer, IMEIoffset, IMEI);
- gi.IMEI = gi.IMEI.Substring(0, gi.IMEI.IndexOf(Convert.ToChar(0)));
-
- //IMSI
- int IMSIsize = BitConverter.ToInt32(buffer, 44);
- int IMSIoffset = BitConverter.ToInt32(buffer, 48);
- gi.IMSI = System.Text.Encoding.Unicode.GetString(buffer, IMSIoffset, IMSIsize);
- gi.IMSI = gi.IMSI.Substring(0, gi.IMSI.IndexOf(Convert.ToChar(0)));
-
- l.Dispose();
- t.Shutdown();
- return gi;
- }
- private void frmMain_Load(object sender, EventArgs e)
- {
- GeneralInfos gi = GetGeneralInfos();
-
- lblHorizRes.Text += GetDisplayHorzRes();
- lblVertRes.Text += GetDisplayVertRes();
- lblIMEICode.Text += gi.IMEI;
- lblIMSICode.Text += gi.IMSI;
- lblOEM.Text += gi.OEM;
- lblModel.Text += gi.Model;
- lblRevision.Text += gi.Revision;
- }
-
- private void mnuQuit_Click(object sender, EventArgs e)
- {
- Application.Exit();
- }
- }
- }
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using OpenNETCF.Tapi;
// Référence a ajouter : Biblio TapiLib.dll
namespace Tapi_IMEI_EMSI_OEM
{
public partial class frmMain : Form
{
// fonctions des dll PINVOKE.
[DllImport("cellcore.dll")]
internal static extern int lineGetGeneralInfo(IntPtr hLine, byte[] bCache);
//OEM:pour Original Equipment Manufacturer
//IMSI:pour International Mobile Subscriber Identity
//IMEI:pour International Mobile Equipment Identity
internal struct GeneralInfos
{
internal string OEM;
internal string Model;
internal string Revision;
internal string IMEI;
internal string IMSI;
}
public frmMain()
{
InitializeComponent();
}
static public String GetDisplayHorzRes()
{
return Screen.PrimaryScreen.Bounds.Width.ToString();
}
static public String GetDisplayVertRes()
{
return Screen.PrimaryScreen.Bounds.Height.ToString();
}
internal static GeneralInfos GetGeneralInfos()
{
//Creation d'un objet Tapi
Tapi t = new Tapi();
t.Initialize();
//Objet line
Line l = t.CreateLine(0, LINEMEDIAMODE.INTERACTIVEVOICE, LINECALLPRIVILEGE.MONITOR);
//Reservation d'un espace mémoire pour la lecture des infos.
byte[] buffer = new byte[512];
BitConverter.GetBytes(512).CopyTo(buffer, 0);
// Lecture des infos, vérification du resultat de l'opération.
if (lineGetGeneralInfo(l.hLine, buffer) != 0)
{
throw new System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error(), "TAPI Error: " + System.Runtime.InteropServices.Marshal.GetLastWin32Error().ToString("X"));
}
// preparations pour l'extraction des informations.
GeneralInfos gi = new GeneralInfos();
// OEM.
int manuSize = BitConverter.ToInt32(buffer, 12);
int manuOffset = BitConverter.ToInt32(buffer, 16);
gi.OEM = System.Text.Encoding.Unicode.GetString(buffer, manuOffset, manuSize);
gi.OEM = gi.OEM.Substring(0, gi.OEM.IndexOf(Convert.ToChar(0)));
// Model
int modelSize = BitConverter.ToInt32(buffer, 20);
int modelOffset = BitConverter.ToInt32(buffer, 24);
gi.Model = System.Text.Encoding.Unicode.GetString(buffer, modelOffset, modelSize);
gi.Model = gi.Model.Substring(0, gi.Model.IndexOf(Convert.ToChar(0)));
//Révision
int revSize = BitConverter.ToInt32(buffer, 28);
int revOffset = BitConverter.ToInt32(buffer, 32);
gi.Revision = System.Text.Encoding.Unicode.GetString(buffer, revOffset, revSize);
gi.Revision = gi.Revision.Substring(0, gi.Revision.IndexOf(Convert.ToChar(0)));
//IMEI
int IMEI = BitConverter.ToInt32(buffer, 36);
int IMEIoffset = BitConverter.ToInt32(buffer, 40);
gi.IMEI = System.Text.Encoding.Unicode.GetString(buffer, IMEIoffset, IMEI);
gi.IMEI = gi.IMEI.Substring(0, gi.IMEI.IndexOf(Convert.ToChar(0)));
//IMSI
int IMSIsize = BitConverter.ToInt32(buffer, 44);
int IMSIoffset = BitConverter.ToInt32(buffer, 48);
gi.IMSI = System.Text.Encoding.Unicode.GetString(buffer, IMSIoffset, IMSIsize);
gi.IMSI = gi.IMSI.Substring(0, gi.IMSI.IndexOf(Convert.ToChar(0)));
l.Dispose();
t.Shutdown();
return gi;
}
private void frmMain_Load(object sender, EventArgs e)
{
GeneralInfos gi = GetGeneralInfos();
lblHorizRes.Text += GetDisplayHorzRes();
lblVertRes.Text += GetDisplayVertRes();
lblIMEICode.Text += gi.IMEI;
lblIMSICode.Text += gi.IMSI;
lblOEM.Text += gi.OEM;
lblModel.Text += gi.Model;
lblRevision.Text += gi.Revision;
}
private void mnuQuit_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Conclusion
Voici un article pour signer l'application http://msdn.microsoft.com/fr-fr/libr ary/ms839681(en-us).aspx
La biblio TapiLib est un wrapper pour c# et vb.net permettant l'utilisation de l'api native de téléphonie (Telephony API) mais son utilisation nécessite l'obtention d'un certificat. visiter le site http://www.mobile2market.net
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
imei sur hp ipaq 214 [ par lologuille ]
Bonjour, un logiciel me demande le code imei de mon hp ipaq 214. Y a-t-il un code imei sur cet appareil alors que ce n'est pas un téléphone!!!Merci d
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
MIDLET ET XMLMIDLET ET XML par hadassah
Cliquez pour lire la suite par hadassah
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|