I. 288.: Utcai WiFi térkép



Hasonló dokumentumok
Alap számológép alkalmazás

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

ANDROID ALKALMAZÁSFEJLESZTÉS

Broadcast Service Widget

Programozási nyelvek Java

Access adatbázis elérése OLE DB-n keresztül

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Java Programozás 11. Ea: MVC modell

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Algoritmusok és adatszerkezetek II.

ANDROID ALKALMAZÁSFEJLESZTÉS

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

libgdx alapok, első alkalmazás

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

ANDROID ALKALMAZÁSFEJLESZTÉS

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

3. Egyszerű komponensek

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

A WEB programozása - JSP1 dr.gál Tibor őszi félév

ANDROID ALKALMAZÁSFEJLESZTÉS

Adatbázisok webalkalmazásokban

Szálkezelés Rajzolás képernyőre Bevitel kezelése - Érintő képernyő - Billentyűzet

OOP: Java 8.Gy: Abstract osztályok, interfészek

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Objektumorientált programozás C# nyelven III.

Mobil Informatikai Rendszerek

Helymeghatározás. Hol vagyok a világban?

Az új be- és kimenet könyvtár

JAVA PROGRAMOZÁS 3.ELŐADÁS

Java Programozás 1. Gy: Java alapok. Ismétlés ++

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Windows alkalmazások készítése. A Windows rendszerben a felhasználó hozzászokott a menü, az eszköztár és a többalakos programok használatához.

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

A fájlkezelés alapjai (titkosítás Caesar kóddal)

Programozás II. ATM példa Dr. Iványi Péter

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 13.

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Vizuális, eseményvezérelt programozás I.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Java Programozás 3. Gy: Java GUI. Swing, AWT

Objektumorientált programozás C# nyelven

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click Dim tipp As Integer

Gyorskalauz. AC1200 WiFi tartománybővítő. EX6150 típus

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

A C# programozási nyelv alapjai

Vizuális programozás gyakorlat

OOP: Java 8.Gy: Gyakorlás

Kommunikáció Androidon GSM hívás SMS küldés, fogadás Bluetooth NFC USB

Informatika terméktervezőknek

Segédanyag: Java alkalmazások gyakorlat

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

ZH mintapélda. Feladat. Felület

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

7. K: JAVA alapok Konzultáció

Magas szintű programozási nyelvek 2 Előadás jegyzet

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Programozási nyelvek Java

Java programozási nyelv

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

VISUAL BASIC ALAPISMERETEK

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

3. Gyakorlat Ismerkedés a Java nyelvvel

Programozási nyelvek Java

Események C#-ban Krizsán Zoltán iit

Szoftvertechnológia alapjai Java előadások

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

ANDROID ALKALMAZÁSFEJLESZTÉS

Szoftvertechnológia alapjai Java előadások

Programozás I. Második ZH segédlet

BME MOGI Gépészeti informatika 7.

Google Maps V2. OpenStreetMap, Mapsforge

Algoritmusok és adatszerkezetek II.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Delegátumok C#-ban Krizsán Zoltán iit

C# osztályok. Krizsán Zoltán

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Programozás I. Első ZH segédlet

Concurrency in Swing

Tipp A Word makrók kimerítõ tárgyalását megtalálhatjuk az O Reilly gondozásában megjelent Writing Word Macros címû könyvben.

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Programozás I. Második ZH segédlet

C# gyorstalpaló. Készítette: Major Péter

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Újdonságok a Google műhelyéből. Péter Ekler

Programozási nyelvek és módszerek Java Thread-ek

Algoritmusok és adatszerkezetek II.

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

Java és web programozás

Átírás:

I. 288.: Utcai WiFi térkép Azért ezt választottam, mert az iskolánkban viszonylag kevés WiFi hálózat található. Az adatok gyűjtéséhez saját programot készítettem androidos mobilomra a http://marakana.com/forums/android/examples/40.html weboldalon található példát alapul véve (lásd a dokumentum végén). Az adatok gyűjtését gyalog végeztem egy kb. 1 km-es szakaszon a lakhelyemen, Nagytarcsán. Az adatok grafikus szemléltetéséhez a http://www.alyrica.net/wifi_mapping weboldalon található perl szkriptet használtam. Az adók nevének, csatornájának, biztonságának elemzését egy Visual Basic programmal oldottam meg (lásd a dokumentum végén). A térképen ábrázoláshoz a Google Earth szoftvert használtam. Egy-egy WiFi AP (Access Point) ilyesmi jelerősség-képet adott: A jelerősségtérképen a zöld a legjobb jelerősséget jelenti, a sárga a jót, a lila a gyengét.... Az adók helyét megpróbáltam a legjobb jelerősségű pontokba rakni.

A végső térkép: Az AP-k szétválogatása aszerint, hogy milyen nevük (SSID-jük) van: Összen 76 100% gyári (pl. TP-LINK) 33 43% személynév (pl. geri) 21 28% egyéb (pl. RamboNet) 22 29%

A használt biztonság típusa: Összesen 76 100% Nincs/Nyílt 12 16% WEP 7 9% WPS 1 1% WPA 9 12% WPA2 47 62% A használt csatorna (ez az AP frekvenciájából számítható ki (5 MHz-enként vannak a csatornák, kivéve a 14.-et, amit Japánban használnak), http://www.moonblinkwifi.com/2point4freq.cfm): Összesen 76 100% 1 24 32% 2 0 0% 3 2 3% 4 5 7% 5 1 1% 6 18 24% 7 2 3% 8 1 1% 9 3 4% 10 3 4% 11 16 21% 12 1 1% 13 0 0% 14 0 0% Az AP-k számlálásához használt program kódja: Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim s$() = My.Computer.FileSystem.ReadAllText("C:\wifi2.txt").Split(New String() {vblf, StringSplitOptions.RemoveEmptyEntries) Dim a As List(Of String) = New List(Of String) For i% = s.length - 1 To 0 Step -1 If Not a.contains(s.elementat(i)) Then a.add(s.elementat(i)) End If Next For i% = a.count - 1 To 0 Step -1 CheckedListBox1.Items.Add(a.ElementAt(i)) Next End Sub Private Sub CheckedListBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.Click Text = CheckedListBox1.CheckedItems.Count End Sub End Class

Az adatok gyűjtéséhez használt program kódja: package hu.fbalazs.wifi;import java.io.filewriter;import java.io.ioexception;import java.util.list;import android.app.activity;import android.content.broadcastreceiver;import android.content.context;import android.content.intent;import android.content.intentfilter;import android.location.location;import android.location.locationlistener;import android.location.locationmanager;import android.net.wifi.scanresult;import android.net.wifi.wifimanager;import android.os.bundle;import android.os.handler;import android.os.vibrator;import android.view.view;import android.view.view.onclicklistener;import android.widget.button;import android.widget.textview;import android.widget.toast; public class WiFiDemo extends Activity implements OnClickListener { WifiManager wifi; BroadcastReceiver receiver; TextView textstatus; Button buttonscan; Vibrator v; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); v = (Vibrator) this.getsystemservice(context.vibrator_service); textstatus = (TextView) findviewbyid(r.id.textstatus); buttonscan = (Button) findviewbyid(r.id.buttonscan); buttonscan.setonclicklistener(this); wifi = (WifiManager) getsystemservice(context.wifi_service); if (receiver == null) receiver = new WiFiScanReceiver(this); registerreceiver(receiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); public void onstop() {unregisterreceiver(receiver); Handler handler = new Handler(); Runnable runnable = new Runnable() {public void run() {wifi.startscan();; public void onclick(view arg0) { if (buttonscan.gettext().equals("scan")) { handler.post(runnable); buttonscan.settext("stop"); else { buttonscan.settext("scan"); class WiFiScanReceiver extends BroadcastReceiver { WiFiDemo wifidemo; StringBuilder str, str2; FileWriter f; LocationManager gps; GPSListener gpsl; public boolean willstop = false; public WiFiScanReceiver(WiFiDemo wifidemo) { super(); this.wifidemo = wifidemo; str = new StringBuilder(); str2 = new StringBuilder(); gps = (LocationManager) wifidemo.getsystemservice(context.location_service); gpsl = new GPSListener(); gps.requestlocationupdates(locationmanager.gps_provider, 0, 0, gpsl); public void onreceive(context c, Intent intent) { ((Vibrator)WifiDemo.getSystemService(Context.VIBRATOR_SERVICE)).vibrate(100); List<ScanResult> results = wifidemo.wifi.getscanresults(); if (results == null)return; for (ScanResult res : results) { str.append(string.format("n %f\t E %f\t( %s ) BSS\t( %s ) 00:00:00 (GMT)\t[ 10 %d 149 ] # ( )\t0\t0\t0\t0\t0\n", gpsl.latitude, gpsl.longitude, res.ssid, res.bssid, res.level + 249).replace(',', '.')); str2.append(res.bssid + "\t" + res.ssid + "\t" + res.frequency

+ "\t" + res.capabilities + "\n"); wifidemo.textstatus.settext(str.tostring()); try { f = new FileWriter("/sdcard/wifi.txt", true); f.append(str.tostring()); f.flush(); f = new FileWriter("/sdcard/wifi2.txt", true); f.append(str2.tostring()); f.flush(); Toast.makeText(wifiDemo, "log on sdcard", Toast.LENGTH_SHORT); catch (IOException e) { str = new StringBuilder(); str2 = new StringBuilder(); if (wifidemo.buttonscan.gettext().equals("stop")) wifidemo.handler.postdelayed(wifidemo.runnable, 250); class GPSListener implements LocationListener { public double longitude = 0, latitude = 0; public float accuary = 0; public void onlocationchanged(location arg0) { longitude = arg0.getlongitude(); latitude = arg0.getlatitude(); accuary = arg0.getaccuracy(); public void onproviderdisabled(string arg0) {accuary = 0; public void onproviderenabled(string arg0) { public void onstatuschanged(string arg0, int arg1, Bundle arg2) { Fényes Balázs 9. o. t. Budapest, Szerb A. Gimn. fenyes.balazs@freemail.hu