Jump to content
Nokioteca Forum

Posizione Geografica Celle


Ninj4
 Share

Recommended Posts

Salve ragazzi .. ho controllato un pò in giro in questa sezione ma non ho trovato nulla a riguardo..

sto progettando un programmino per la rilevazione della posizione del cellulare senza modulo gps ( è da decidere ancora il linguaggio di programmazione da usare .. penso che opterò per qualcosa ad alto livello come python o mshell .. ).

Molti di voi conosceranno l'applicazione google maps per dispositivi mobili. Tra le sue funzioni troviamo "la mia posizione" che si basa sulla rilevazione della posizione geografica della cella alla quale è collegato il cellulare in quel momento.

A me servirebbe sapere quale è il meccanismo che usa questo programma per rilevare la posizione ( approssimativa ).

Non penso che il programma abbia al suo interno un database che contiene le posizioni geografiche delle celle quindi suppongo che vengano inviate informazioni ( tipo l'id della cella ) a qualche server di google che rimanda le posizioni geografiche della cella che il programma processerà per far comparire il pallino sulla mappa.

Per il momento a me interessa sapere se qualcuno di voi sa che tipo di informazioni vengono inviate e ricevute ( o magari mi indica il meccanismo per "sniffare" il traffico generato e ricevuto su dispositivi mobili ) così da poter continuare :lmaosmiley:

Ringrazio anticipamente!

Link to comment
Condividi su altri siti

io ho fatto 2 programmini in mshell. Il primo ti avvisa ogni volta che cambi una cella (ti stampa a vide ID della cella - Livello Segnale - e info net cioè: mcc Mobile Country Code (MCC)

mnc Mobile Network Code (MNC)

short Short Network Name

long Long Network Name

lac Location Area Code (LAC)

Il secondo crea 2 file txt su cui logga Data e ora, ID cella, livello segnale e info net... sull'altro solo l'id cella (più ordinato).

Cmq penso che per fare quello che vuoi bisogna avere un database con tutte le celle d'Italia. C'era una comunity che lo stava facendo (con celltrack). Se vuoi la cerco e ti faccio sapere :mumble:

Link to comment
Condividi su altri siti

si la tenevo anche io sott'occhio ma era qualcosa a livello di amatoriale.. mi chiedevo come accedere alle informazioni che usa il sistema di google maps ( innanzitutto bisognerebbe vedere se tali informazioni sono in chiaro o arrivano crittate .. ) .. mi basterebbe anche avere il nome di qualche programma per monitorare il traffico generato e ricevuto ;)

cmq se qualcuno ha qualche info in più la postasse !

cmq grazie della risposta Nyarlathotep ;) ;) ;)

Modificato da Ninj4
Link to comment
Condividi su altri siti

Allora... dopo circa un giorno di ricerche sono arrivato a queste conclusioni :lol:

Ho trovato un codice scritto in python che fa esattamente quello che cercavo! ( o almeno dovrebbe perchè a me non funziona ! )

Posto il codice di seguito

from httplib import HTTP
import location

latitude = 0
longitude = 0

def doLookup(cellId, lac, host = "www.google.com", port = 80):
 from string import replace
 from struct import unpack
 page = "/glm/mmap"
 http = HTTP(host, port)
 result = None
 errorCode = 0

 content_type, body = encode_request(cellId, lac)
 http.putrequest('POST', page)
 http.putheader('Content-Type', content_type)
 http.putheader('Content-Length', str(len(body)))
 http.endheaders()
 http.send(body)
 errcode, errmsg, headers = http.getreply()
 result = http.file.read()
 # could need some modification to get the answer: here I just need
 # to get the 5 first characters
 if (errcode == 200):
(a, b,errorCode, latitude, longitude, c, d, e) = unpack(">hBiiiiih",result)
latitude = latitude / 1000000.0
longitude = longitude / 1000000.0
 return latitude, longitude

def encode_request(cellId, lac):
 from struct import pack
 content_type = 'application/binary'
 body = pack('>hqh2sh13sh5sh3sBiiihiiiiii', 21, 0, 2, 'in', 13, "Nokia N95 8Gb", 5,"1.3.1", 3, "Web", 27, 0, 0, 3, 0, cellId, lac, 0, 0, 0, 0)
 return content_type, body

(mcc, mnc, lac, cellId) = location.gsm_location()
(latitude, longitude) = doLookup(cellId, lac, "www.google.com", 80)
print latitude
print longitude

Purtroppo quando lo avvio mi da il seguente errore:

error: unpack str size does not match format

sulla linea 26 --> (a, b,errorCode, latitude, longitude, c, d, e) = unpack(">hBiiiiih",result)

tuttavia ho letto che ad alcune persone funziona senza problemi..

(la shell python che ho è certificata quindi non penso che l'errore sia riconducibile a questo)

qualche suggerimento ? :lol:

Modificato da Ninj4
Link to comment
Condividi su altri siti

Nell'attesa, qui puoi trovare un codice funzionante... :wacko:

http://forum.openhandsetdevelopers.com/goo...cation-t19.html

Il problema e' la gestione delle celle 3G che ancora non si sa come devono essere trattate.

Inoltre, non sono certo che servano i campi MCC ed MNC...

A suo tempo mi ero messo a decompilare l'applet java di google maps, ma dopo un po' avevo lasciato perdere per mancanza di tempo...

Se ti va potremmo smontarla insieme un po' alla volta per arrivare a determinare con esattezza i vari campi necessari ed il loro scopo.

Link to comment
Condividi su altri siti

Nell'attesa, qui puoi trovare un codice funzionante... :crying_anim02:

http://forum.openhandsetdevelopers.com/goo...cation-t19.html

Il problema e' la gestione delle celle 3G che ancora non si sa come devono essere trattate.

Inoltre, non sono certo che servano i campi MCC ed MNC...

A suo tempo mi ero messo a decompilare l'applet java di google maps, ma dopo un po' avevo lasciato perdere per mancanza di tempo...

Se ti va potremmo smontarla insieme un po' alla volta per arrivare a determinare con esattezza i vari campi necessari ed il loro scopo.

no grazie, non ho nè tempo nè voglia. Tanto di sicuro l'ha gia' fatto piu d'una persona in rete, cosi' come piu' d'una persona ha postato il codice per scaricare le "tile" di GoogleEarth!

Bisogna solo trovarle, queste persone...

Link to comment
Condividi su altri siti

Cercando "http://www.google.com/glm/mmap" o "http://www.google.com/glmm/mmap" (una M in piu') si trovano un sacco di sorgenti... ma nemmeno uno che abbia nei commenti un esempio di URL???

Questo invece è l'URL di query per opencellid.org:

http://www.opencellid.org/cell/get?mcc=250...29513&lac=0

Modificato da JumpJack_
Link to comment
Condividi su altri siti

  • 2 mesi dopo...
  • 1 mese dopo...
Tempo fa avevo fatto un programma in c# per interrogarlo, ma al momento non lo trovo :)

Ultimamente ho recuperato il programmino, ed ho pensato bene di integrare anche il supporto per OpenCellId.org e per CellDB.org

Alla fine ho preso il tutto e l'ho messo accessibile in via sperimentale sul web:

http://www.guardian-mobile.com/map.aspx

Devo ancora ottimizzare la pagina per una resa adeguata su mobile, ma per ora fa il suo sporco lavoro :)

P.S.

Se siete a conoscenza di altri DB delle celle oltre a googlemaps, opencellid e celldb, segnalateli, che li aggiungo!

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

Veramente, intendo una cosa differente... Non intendo integrare il sito all'interno di un programma, ma adattare la pagina web affinche' si possa consultare agevolmente dal browser standard del cellulare.

Non dovrei metterci molto, e' giusto una questione di presentare la pagina come si deve...

Cosi' facendo, non c'e' bisogno di installare nessun programmino e si puo' consultare da qualsiasi cell. anche non Symbian. :thumbs:

P.S.

Se si disponesse di un database di celle aggiornato da utilizzare offline, varrebbe la pena realizzare una applicazione dedicata che funzioni completamente offline... Ma poi ci sarebbero da gestire i problemi di aggiornamento del database e sicuramente non sarebbe applicabile a livello globale.

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

è ciò che intendevo dire anche io.

ora rileggendo mi sono accorto di aver scritto di volerlo integrare, ma in realtà vorrei "associarlo", ovvero, far girare l'applicazione sui dispositivi symbian e, dare la possibilità anche a chi non ha un symbian, di poter conoscere le posizioni delle celle.

l'idea del programma offline non sarebbe affatto male, però andrebbe scaricato l'intero database online, e ciò può causare diversi inconvenienti, quali i copyright.

in questi giorni sono stato poco a lavoro del progetto quindi non sono andato molto oltre, ma una pagina gestibile tramite cellulare (quindi wap) non è molto difficile da costruire.

Link to comment
Condividi su altri siti

posto nel thread perchè necessito di un aiutino;

in pratica sto cercando di far eseguire uno script php che consenta lo stesso funzionamento del programma per symbian (cellID)

siccome lo script del programma è in python capirete che ci sono delle divergenze col php

ecco la parte di script che mi servirebbe in php:

pack('>BBBBBBBBBBBBBBBBBLLLHLLLLLL', 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,var1, var2, var3, 0, var4, var5, var6, var7, 0, 0)

io l'ho tradotto così:

pack('CCCCCCCCCCCCCCCCCLLLSLLLLLL', 0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,$var1, $var2, $var3, 0, $var4, $var5, $var6, $var7, 0, 0);

ma mi sa che c'è divergenza.

già noterete che manca il simbolo '>'; non ho trovato alcuna corrispondenza dal python al php per quel simbolo. ringrazio tutti anticipatamente per l'aiuto

PS: Scusate il doppio post

Modificato da madhacker
Link to comment
Condividi su altri siti

dall'esempio in php postato sopra mi ritrovo una risposta del server di soli 7 byte, mentre dal programma in python o un altro in C# ricevo una risposta dal server di 25 bytes.

il.socio mi confermi che anche a te la risposta del server di google è di 25bytes??

spero di riuscire ad avere la risposta positiva dal server ...

farò altre prove e vi terrò aggiornati.

grazie della disponibilità

Modificato da madhacker
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