Valóban kell a helymeghatározás a BT eszközök felderítésére?

Fórumok

https://play.google.com/store/apps/details?id=de.medisana.vitadockplus&… ezt az appot használom és ma azt tapasztaltam, hogy kéri a helymeghatározó bekapcsolását arra hivatkozva, hogy csak akkor tudja a BT felderítést elvégezni, ha ismeri a tartózkodási helyet. Lehet eddig be volt kapcsolva a helymeghatározés és emiatt nem vettem észre, de tegnap kikapcsoltam, így ma lehetséges oknak ezt tekintem. Ezzel kapcsolatban az MI ezt írja:

Miért kell android rendszeren a helymeghatározás akkor, ha bluetooth kapcsolatot akarok felderíteni?

 

A ChatGPT ezt mondta:

ChatGPT

Az Android rendszeren azért van szükség a helymeghatározás engedélyezésére, amikor Bluetooth-eszközöket keresel, mert bizonyos Bluetooth-eszközök használata során a helymeghatározás lehetővé teszi az eszközök pontos azonosítását és felderítését.

Ennek a fő oka a következő:

  1. Bluetooth Low Energy (BLE) alapú eszközök: Sok modern Bluetooth-eszköz, például okosórák, fitnesz-trackerek és más IoT-eszközök a BLE (Bluetooth Low Energy) technológiát használják. A BLE jelek elemzésével bizonyos helyadatokat is ki lehet nyerni, ami miatt az Android biztonsági szempontból kéri a helyhozzáférést. A BLE-eszközök gyakran olyan eszközök, amelyek kis energiával működnek, és rövidebb hatótávolságon belül érhetők el. Ezekhez a beolvasáshoz szükséges a helyadat, mivel ezek a jelek használhatók a felhasználó tartózkodási helyének becslésére.

  2. Adatvédelmi előírások: Az Android rendszer figyelembe veszi az adatvédelmi szabályokat, és úgy kezeli a Bluetooth-eszközöket, mint potenciálisan helyadatokat továbbító eszközöket. Mivel egyes Bluetooth-eszközök helyadatokat sugározhatnak vagy befolyásolhatják a felhasználó helyzetének meghatározását (például olyan nyilvános helyeken, mint boltok, ahol a Bluetooth beacon-ök működhetnek), a rendszer megköveteli, hogy a helymeghatározás be legyen kapcsolva, amikor ilyen eszközöket keresel.

Az Android tehát biztonsági és adatvédelmi okokból követeli meg a helymeghatározás bekapcsolását, amikor Bluetooth-eszközöket akarsz felderíteni, különösen a BLE eszközöknél.

Nem értem, hogy ha csak egy sima egészségügyi appot akarok elérni a BT eszközömmel, ami jelen esetben egy okos mérleg, miért kell neki meghatározni a helyemet?

Hozzászólások

Sose értettem, marhaság volt mindig is a magyarázat. Az, hogy esetleg BT eszközből kinyerhet helyadatra vonatkozó információt, az legyen már az én dolgom. (ha annyira okos akar lenni, akkor figyelmeztessen a veszélyre)

De az hogy noname kinai vackok (pl. hőmérő) app-ja gps hozzáférést kér és mindezt jogosan teszi, mert nem lehet máshogy megirni, az egy rossz vicc.

Régi szép - rootolt - időkben legalább be lehet hazudni a konkrét alkalmazásnak hamis koordinátákat, legalább ezt be kellene OS szintre emelni, kérjen GPS hozzáférést, de ne kapjon értelmes, de még közeli adatot se. (néha van opció, hogy ne a pontos koordinátákat kapja az alkalmazás, csak közelit, azt se szokták elfogadni, mert egy újabb hülyeség lévén erről értesül az alkalmazás, hogy nem a legpontosabb verziót kapja)

A mar parositott eszkozok eleresehez, vagy ismert MAC cimhez torteno csatlakozashoz nem szukseges scannelni, tehat nem szukseges a loactiom permission sem. Ha ez az eszkoz egy sima BT eszkoz, akkor parositsd ossze a rendszer bluetooth beallitasainal, ha ez egy BLE eszkoz, akkor add meg ideiglenesen az engedelyt, hogy meg tudja keresni az eszkozt, majd miutan ez megvan, el is veheted tole, mert legkozelebb fog tudni csatlakozni az eszkozhoz. Ennek persze, az a feltetele, hogy jol legyen megirva a szoftver. 

Az, hogy location permissiont ker az app, az nem jelenti azt, hogy a developer hasznalja is a location servicet, de azt sem, hogy megprobalja a BT/WiFi scanneles adataibol eloallitani az eszkoz koordinatajat (tehat, ha ezt nem irta bele a fejleszto, akkor nem fog ilyet csinalni az app), de mivel a kapott adatokbol ez az informacio rendelkezesre allhat, ezert van ehhez a permissionhoz kotve a dolog.

Valamiert sokszor egyutt jar a helymeghatarozashoz a GPS es a BT egyuttes engedelyezese. Lehet, hogy az egyik nepszeru (ertsd, kodmegoszto platformokrol surun kimasolt) API hivashoz mindketto kell? Valami Android gugu biztosan tudja, hogy miert.

Relative egyszerű oka van: vannak szolgáltatók (google pl) akik adatbázist építettek a földrajzi koordináta - milyen MAC című eszközök látszanak ezen a helyen összerendelésből.

Így egy app, ha van jogosultsága scannelni a környéken látható eszközöket, akkor szerver oldalról le tudja kérdezni, hogy sacc/kb hol lehet. Az assisted GPS fukció az Androidban erre épít (GPS first fix megtalálási idejét felgyorsítja, ha van egy viszonylag jó "tipp" a pozícióra). És persze ezen a módon naprakészen is tartja a Google az adatbázisát.

Mindenesetre a lényeg, hogy mac cím scanneléssel _effektíve_ lehet helyet meghatározni. Vagyis ha nem lenne a "helymeghatározás" jogosultsághoz kötve a környező eszközök scannelésére, akkor az appoknak lenne egy kerülőutas módszerük a helymeghatározásra, letiltott jogosultság mellett is (évekig így volt...).

Régóta vágyok én, az androidok mezonkincsére már!

Ezért kellett volna szétválasztani a két jogosultságot. GPS alapú helymeghatározás és BT eszközök scannelése a közelben. (utóbbi veszélyeiről lehet figyelmeztetni a usert)

A legtöbb esetben nyugodtan scannelheti a BT eszközöket, mert semmit nem fog megtudni belőle.

De az nonsense, hogy egy ilyen elméleti lehetőség miatt - azért nehogy elhigyjük már, hogy bárhol, bármilyen BT mac address-t bárki GPS koordinátára tud váltani - a konkrét méterpontos GPS koordinátákat is közölni kelljen egy nyamvadék kinai hőmérő appjával, mert máshogy nem találja meg BT-n az eszközt.

A permission meglete nem jelenti azt, hogy hasznal az app barmilyen on device location szolgaltast, ahogy azt sem jelenti hogy begyujti a latott WiFi/BT MAC cimeket es ezeket egy online szolgaltatas API hivasaval koordinatara csereli. Nem kap tole automatikusan koordinatat. Pusztan arra van, hogy jelezze a felhasznalonak, hogy ha engedelyezi, akkor akar a hely adatait is tudhatja a fejleszto.

Egyebkent, le kell 1 csillagozni az appot, es leirni, hogy a fejleszto nem ert hozza.

Mert ha a fejleszto szamara megfelelo az, hogy nem tud barmihez vakon csatlakozni (es nem latja az eszkozeid listajat, azaz pl. nem tud kemkedni), akkor a rendszernek van olyan szolgaltatasa eleg regota (talan Android 8 vagy 9?), hogy companion device kezeles. Ebben az esetben viszont, a fejleszto nem is latja az eszkozeidet. De ahhoz, hogy ez mukodjon, ennek a tamogatasaval kell megirni az appot, nem lesz megfelelo a 10 eve stack overflown ott levo kod.

"A permission meglete nem jelenti azt, hogy hasznal az app barmilyen on device location szolgaltast"

Ugye nem gondolod, hogy ez megnyugtat, amikor pont olyan megbizhatatlan app-ról van szó, amelyiknek NEM SZERETNÉM, hogy megtudja a helyzetemet?

Ilyen esetben nyugodtan feltételezzük a legrosszabbat, location jogot kért, anélkül nem működik, akkor ha megadom neki a location jogot, akkor meg fogja tudni a helyzetem.

Nevezzük nevén a dolgot, ez el b@szva, koncepcionálisan. Ennek két külön jognak kellene legyen és legyen már rám bizva, hogy van-e a környezetemben olyan folyamatosan szóró BT azonositó, amelyet esetleg - töredék eséllyel - be tud valahol cserélni koordinátára. Szemben a GPS koordinátával, amihez szintén hozzáfér és nem kell lecserélni, meg reménykedni, hogy megvan-e valemilyen shady netes adatbázisban.

Ha engeded scannelni, de nem adnal neki location jogot, akkor mibol gondolnad, hogy nem el vissza a kinyert adatokkal es nem szerez belole koordinatat? Pont azert lett hozzacsapva a scanneles feltetelehez a location jog, mert sokan visszaeltek vele. Meg lehet(ne) ugy irni az alkalmazast, hogy ne legyen szukseg scannelesre, igy elkerulheto lenne az, hogy location jogosultsagot kerjen.

Mert a legtöbb esetben nem tud. Nincs olyan BT eszköz a közelében, ami egyáltalán felderithető, vagy akár csak ott van vagy ne randomizálná a mac-jét.

És ha véletlen van is, akkor is minimális az esélye, hogy hozzáférne olyan adatbázishoz amiben benne van. Ezt a töredék kockázatot nyugodtan fel lehet vállalni, maximum egy figyelmeztetés kell a user felé, hogy BT scan esetén van ilyen kockázat.

De összevonni ezt a jogosultságot/kockázatot a GPS koordináták átadásával egy rossz vicc.

Miert ne tudna? Ha nem bizol az alkalmazasban annyira, hogy nem hiszed el neki, hogy location permission birtokaban o nem fogja hasznalni a location servicest (es sehogyan sem fog akarni koordinatat szerezni), akkor miert hiszel abban, hogy location permission birtokaban, csak BT scant fog vegrehajtani es nem scanneli a WiFi halozatoakt es nem szerez ugy koordinatat?

Ha a fejlesztot zavarja, hogy location permissionre van szuksege, akkor meg tudja ugy irni az appot, hogy ne neki kelljen scannelnie hanem csak szoljon az OS-nek, hogy "dobjma' fel egy BT eszkozlistat az usernek es valassza ki belole az eszkozet, ja kerlek ebbe a listaba csak azokat az eszkozoket mutasd meg neki, amire illenek ezek a filterek. koszipuszi". Pont ugyonolyan ez, mint a photo/video hozzaferes. Android 14-et targetalva, megirhatja a fejelszto ugy az appot, hogy ne kerjen hozzaferest az egesz photo/videotarhoz, hanem jelezze az OS-nek, hogy szoljon az usernek, hogy valasszon fotot. Ennek ugye az lenne a lenyege, hogy nem tud onerobol fotot kivenni a kepek kozul, mert nincs joga olvasni egeszeben. Tudom, az Android 14 meg elegge uj, de ezt sem fogjak adoptalni a fejlesztok, hiszen a regi kodok is mukodnek es az van fenn stackoverflown. Peldaul orulok annak, hogy a Google bevezette azt, hogy elrejti a 2-3 verzional regebbi verziot targetalo appokat, a friss rendszerverziok elol, igy kenyszeritve a fejlesztoket, hogy kezdjek el hasznalni az uj technologiakat. A problema itt megint az, hogy az a fejleszto dontesen mulik, hogy adaptaljak-e ezeket az uj dolgokat, vagy setalnak tovabb az ezer eves uton. A rendszer beepitett BT valasztoja azt hiszem, hogy Android 8 ota elerheto. Azaz, ha ma van meg olyan app, ami sajat maganak akar scannelni (es erre nincs tenylegesen alapos oka), es ehhez mindenfele extra permissiont ker (location ugye), nos, azt az appot le kellene huzni 1 darab csillagra a Playben es torolni minden telepitett peldanyat, es minden mediumon hirdetni, hogy az egy scam app, ami ellopja az adataidat.

Szerk: Ha hasznalod ezt az uj foto/video featuret, akkor NEM KELL engedelyt kerned az egesz fototarhoz, igy nem feltetelezhetik azt, hogy megprobalsz ellopni barmit, vagy megprobalsz beletenni valamilyen tartalmat. 

"akkor miert hiszel abban, hogy location permission birtokaban, csak BT scant fog vegrehajtani"

Épp azt mondom, hogy nem hiszem. Azt akarom, hogy ne legyen a két féle permission (GPS és BT scan) összemosva. Adhassak neki csak BT scan permission-t GPS nélkül és akkor majd én eldöntöm, hogy az én esetemben/környezetemben reális-e, hogy BT scan-nel GPS koordinátához jusson. (90%-ban nem reális)

Most ezt nem tudom megtenni, mindkettőt meg kell engedjem neki.

Tovabbra sem erted. Hiaba veszed el tole a location permissiont, ha megengeded neki, hogy begyujtse a kornyezetedben elerheto BT eszkozok cimeit, akkor ebbol meg fogja tudja fejteni a koordinatdat is. En, jelenleg Budapesten, 18 darab BT eszkot latok a felderitett es parosithato eszkozok listajaban amely eszkozok egyike sem az enyem (tehat nem a sajat eszkozeim arulnak el, hanem mas eszkozei). Ez alapjan, meg is lesz/lenne a koordinatam.

Miert nem azon a vonalon tortenik a lovaglas, hogy az appok 99.9999%-nak nincs szuksege tenyleges scannelesre. Nem, ennek az appnak sincs. Ez az app hibas koncepciok menten letezik, fel sem kellene telepiteni. Ha ez egy eszkozhoz jaro kozvetlen alkalmazas, akkor ezt az eszkozt meg sem kellene venni. Ha pedig, meg lett vasarolva, akkor vissza kell kuldeni az eladonak, hogy elallsz a vasarlastol a nem megfelelo minosegu alkalmazas miatt.

Te nem érted. Múltkor kis cég géptermébe tettem hőmérőt. Semmilyen BT eszköz nincs, még a közelében sem, hiába scan-nel nem talál semmit, igy koordinátát sem.

De még ha talál is, esélyes, hogy randomizáltat talál.

De még ha nem randomizáltat is talál, ezek nem nyilvános adatok. Az, hogy a google, apple-nek megvan, attól még nem tudja lekérdezni senki más.

Ha máshogy gondolod, linkelj légyszi ilyen - akár fizetős - szolgáltatást, ahol BT azonositókat GPS koordinátára fordithatok.

A te egyedi helyzetben, ez, csak a te akkori, ottani specialis esetedre igaz. Az emberek tobbsege, korul van veve szinte vegtelen sok BT eszokzzel, sokszor olyannal, amely nem is a sajatja, igy nincs rahatasa arra, hogy be van kapcsolva az adott eszkozon a discovery. 

Szerintem, csak a BLE eszkozok randomizaljak a MAC cimeiket. Ha ez nem igy lenne, nem lehetett volna rajta a termekek dobozan vonalkodosan a BT address a WiFi es az Ethernet address mellett. 

Lovesem sincs, hogy nyujt-e valaki erre jelenleg barmilyen modon elerheto szolgaltatast. 10-12 eve, siman letezett olyan requestenkenti fizetos szolgaltas, amelybe beontotted a GSM cellainfot, Wifi eseteben a latott ESSID/MAC/RSSI triot, BT eseteben pedig a MAC/RSSI -t, es visszaadott egy koordinatat es egy lehetseges radiust. Nincs okom feltetelezni, hogy ma nem letezik ilyen (nem kerestem).

Egyebkent, miert kellett scannelni a homerohoz? Az fel sem merult, hogy ezt megirhatta volna ugy is a fejleszto, hogy nem kell scannelnie, hanem kivalasztod az eszkozt egy listabol? Ha nem kimondottan BT vagy WiFi Scanner appot inditassz el, nem kellene scannelessel talalkoznod.

Szerintem ezzel vissza is tértünk az eredeti állitásomhoz: ég és föld a GPS alapú és a BT scan alapú helymeghatározás veszélye és lehetősége -> nem szabadna ugyanahhoz a joghoz kötni.

Amúgy nem tudom milyen szolgáltatás lehet az, ami milliárdnyi user telefonján fut, scannel háttérben és feltölti az üzemeltetőnek. Mert máshogy nem tud ilyen szolgáltatás létezni, legalábbis értelmezhető lefedettséggel. Ilyen csak a két nagy telefon oprendszer gyártónak lehet.

Azért én továbbra is várom egy ilyen szolgáltatás linkjét.

En tovabbra is azt mondom, hogy nem baj, ha ilyen esetben ez igy van megcsinalva (eleve gyanusnak kellene lennie, hogy egy random homerhoz valo app, miert akar ilyet). A fejelszto sajat egyeni dontese, hogy "mindent az egyben" modon elkeri a fine location permissiont, ahelyett, hogy ugy keszitette volna el az alkalmazasat, hogy tovabbra is lehessen BT eszkozt valsaztani, majd ahhoz csatlakozni, mindezt ugy, hogy ne legyen hozza szukseg all-in jogokra (es igy scannelesre sem).

A multban, mindenfele direkt permission nelkul lehetett WiFi es BT scant vegezni (szo szerint, semmi sem kellett hozza), majd amikor rajottek, hogy ezzel vissza lehet elni, talan a 5-os vagy 6-os Androidban az volt a hirtelen dontes, hogy mindehez kelljen fine location permission. Ez ugye, csak par sor a manifestben, mert meg javaban az elott jarunk idoben, hogy runtime kellett permissionoket kerni, azaz telepites elott kellett leokezni a permissiont es vagy mindent engedtel, vagy nem raktad fel az appot. Kesobbi releasekben megjelentek az olyan uj API-k es permissionok, amivel lehetove valt BT eszkozoket listazni, csatlakozni hozzajuk, illeve WiFi halozatokat listazni es ezekhez csatlakozni ugy, hogy ne legyen szukseg location permissionre. Aki adaptalta az uj rendszert, nala megszunt ez a gyanus dolog, aki nem, ott megmaradt. Idealis esetben nem nagyon van olyan app az userek keszulekein, aminek ilyen kamikaze fine location permission kell.

Ha pl felraksz egy WiFi scannert, ott ertelemszeruen hozzaferest kell adni tenylegesen a locationhoz, azaz a scanneleshez, mert anelkul nincsenek meg azok a szukseges adatok, ami lehetove tenni az app alapveto funkciojat (listazni a wifiket, mac cimeket, rssi ertekeket, csatornakat). Itt viszont, meg kell biznod a fejlesztoben, hogy nem el vissza ezekkel az adatokkal.

Tehat, megegyszer leirva, nem mult evezredbeli kodot hasznalva, van lehetoseg ugy elkesziteni az alkalmazast, hogy ne legyen szukseg location permissionre, megis kapj listat a BT eszkozokrol, es tudj is csatlakozni hozzajuk. 

Az nem megoldas a problemara, ha nem kell permission, de megis mukodik?

Abban egyetértek veled, hogy szerintem is egy utólagos "hack" jellegű megoldás volt a problémára, hogy a "location" jogosultság alá pakolták be, és jobb lett volna ha elkülöníthető.

Abba az irányba van opció, hogy ha Location services enabled, akkor külön még bekapcsolható "improve accuracy with wifi scanning even if wifi is off" valamint ugyanez bluetooth-változatban is. Fordított irányba nincs.

Ami kérdéses, hogy mi van ha device location is off, de az alkalmazásnak van location jogosultság adva? Akkor csak GPS-koordinátát nem kapja meg, vagy a scannelés is tiltva van-e?

Régóta vágyok én, az androidok mezonkincsére már!

A kettonek semmi koze egymashoz. Az "improve accuracy with wifi scanning even if wifi is off" opcio a rendszer location API-ra vonatkozik. Tehat, kikapcsolt WiFi eseten ha egy alkalmazas requestel egy koordinatat, abbol is olyan pontossagut, amihez nem feltetlen van szukseg nagyobb pontossagu GPS-re (vagy pl, a GPS meg csak "indul" de nem tud meg pontos koordinatat adni) akkor ennek az opcionak a fuggvenyeben fogja hasznalni a keszulek a WiFi scanneles eredmenyet arra, hogy az alkalmazasnak koordinatat adjon. Ha pedig ez a koordinata "kielegiti" az alkalmazas igenyeit, akkor itt veget is er a folyamat, vissza lesznek kapcsolva az erintett hardwarek alvo modba.

Ha az alkalmazas viszont nem hasznalja a location API-t, de be van kapcsolva a WiFi es/vagy a Bluetooth hardware es rendelkezik location permissionnel, akkor tud a radios hardwarekkel scannelni. Ennek az eredmennye nem koordinata lesz, hanem AP/device lista, amiket akar egy kulso, internetes szerviz segitsegevel kepes lehet koordinatara "becserelni". De ennek a koordinatanak semmi koze nincs a keszuleken futo location serviceshez es annak a beallitasaihoz. Ha valamelyik radios hardware nincs bekapcsolva, akkor az nincs bekapcsolva es nem fog scannelni sem. De, ha pl. olyan a keszulek, akkor az nyujthat olyan szolgaltatast, amivel az adott app be tudja kapcsolni a hardwaret. Pl. ipari eszkozokhoz szokott jonni olyan SDK, amivel az adott ipari eszkozre dolgozo fejleszto mindenfele rootolas es egyeb hack nelkul tudhatja kapcsolgatni a hardwaret, az adott eszkozre jellemzo modon, de a sima, mezei samsung/stb keszuleken ilyen nem lesz.

Ezért is írtam, hogy ez sajnos egy "fordított irányú" beallítás, nem az ami ide kéne, de ez az összes, amit (legalábbis Samsung-on) találok. Pont a fordítottja kellene, wifi és bt scan, gps location nélkül. Adb-vel nem nézegettem bele, lehet, hogy van még néhány UI-ra ki nem vezetett opció.

Ezért is vetettem fel, hogy talán műdödhet úgy,  eszköz szinten lekapcsolod a location service-t, de az app a location jogot megkapja.

Régóta vágyok én, az androidok mezonkincsére már!

Ha kikapcsolod a location servicet, es adsz az appnak location jogot, akkor tudni fog scannelni. A scanneles eredmenyekent kapott MAC halmazt meg a jelszinteket "el tudja cserelni" koordinatara. tada.wav. Szerzett az app koordinatat a location service hasznalata nelkul.

Tehat BT es WiFi scan segitsegevel, GPS nelkul szerzett lokaciot. Na, pont ezert kell ehhez location permission. 

Vagyis képzeljünk el egy repülőtéri csarnokot. Ha "A" ember egyszer felderített egy BT eszközt ott, akkor "B" ember megkapja az információt, hogy milyen BT eszközökre számíthat az adott helyen, így nem kell scannelnie? Egyből ugorhat a kapcsolódásra?

Az nem járható út, hogy az app bekapcsolja a BT hardvert, ami elkezd "csipogni", hogy itt vagyok, van-e még valaki? Ahol másik eszközön is be van kapcsolva egy BT eszköz, az szintén kiabál hogy ott van, miközben mindegyik eszköz a kiabálás után várja a választ. Amikor válaszolnak egymásnak, akkor megkérdezik, hogy akarnak-e párzani? Ha igen, akkor párosítás, ha nem, akkor figyelmen kívül hagyják egymást. Ehhez úgy gondolom semmilyen helymeghatározásra nincs szükség. Olyan mindegy egy 10m-es sugárban kommunikálni képes eszköznél, hogy tőle jobbra, vagy balra van a másik eszköz.

Tippre ez az amerikai piacról jön. Az USA-ban egy csomó áruház saját applikációja BT jel morzsákat küld ki folyamatosan és amikor az áruházban vagy, tudják elemezni az utadat a bolton belül. Ilyen (és jogi) szempontból a Google ezt is helymeghatározásnak jelöli, mert nem tudja/tudhatja, hogy az aktuális app használja e erre a BT kapcsolatot.

Valóban kell a helymeghatározás a BT eszközök felderítésére?

Nem kell, hanem ha tud az app BT szkent indítani, meg tudja mondani a telefon helyzetét külső adatbázis alapján. Ehhez csak az kell, hogy más telefonok feltöltsék, hogy ezt a BT MAC -et ezen a GPS koordinátán láttam.

Tehát, ha te mint user azt akarod, hogy az app ne tudhassa hol van a teló, el kell venni tőle a BT szken lehetőségét. Ergo az android nem engedi a BT szkent ha kikapcsolod az app -nak a pozíció elérést.