Suntuubi-palvelussa käytetään evästeitä. Palvelua käyttämällä hyväksyt evästeiden käytön. Lue lisää. OK
293012345
6789101112
13141516171819
20212223242526
272829303112

RSS

 Operaatio WarDriving 13-03-2019
14.03.2019 14:20 | IL / ILSEC

Lomalla on joutilasta aikaa mietiskellä, joten mieleen tuli sitten tutkia
kuinka montaa suojaamatonta verkkoa lenkkipolun varrella oikein on.

Tämä on nykyään helppoa. Android tabletti käteen. WiGLE Wifi app auki
ja tabletti reppuun, sitten eikun tossua toisen eteen.

WiGLE Wifi

Kotiutuessa alkaa sitten tietojen purkaminen. Appsista on toki mahdollista kirjoittaa
CSV ulos suoraan, mutta itse navigoin tabletin hakemistoon wiglewifi ja kopioin siellä olevan
tietokannan wiglewifi.sqlite tietokannan läpppärin työhakemistoon.

Näppärä ohjelma datan käsittelyyn on spatialite_gui, yhden exen tiedoston sovellus ja tähän
tietokanta avataan. Tiedot sijaitsevat taulussa network ja siitäkin haluan vain pari keskeistä
saraketta. Suoritetaan siis SQL lause jotta saadaan haluttu.

SELECT bssid,ssid,capabilities,
strftime('%d-%m-%Y', datetime(lasttime/1000, 'unixepoch')) pvm,
strftime('%H:%M:%S', datetime(lasttime/1000, 'unixepoch')) klo,
lastlon,lastlat
FROM network
WHERE pvm = '13-03-2019';

Tämän jälkeen sitten rotan oikealla tulostaulukon päällä napauttamalla Export ResultSet: as CSV
Exporttasin kaman C:\TEMP hakemistoon oletusnimellä result_set.csv.

Sitten se viimeistely. QGIS auki, siellä luetaan sisään "Eroteltu teksti".
Parasta tässä on se, että QGIS lukee datan automaattisesti ja 
täyttää X ja Y kentät oikein. Ainoaksi tehtäväksi jää enään painaa "Lisää" nappia jolla data luetaan putkelle.

Ja siinähän se sitten olikin. Data on WGS84 koordinaatistossa (EPSG:4326).
Käyttömukavuuden lisäämiseksi vaihdan näkymän "omaan" koordinaatistoon EPSG:3878
ja lisätään vähän taustakarttaa.

Loppusaldona todettakoon että verkkoja löytyi lenkkipolun varrelta kaikkiaan
784 kpl ja jokaisessa oli jonkinlainen suojaus. Hyvä niin, mutta suojausten
tasossa lienee vielä parantamisen varaa.

#QGIS #wardriving #spatialite_gui #SQL #WiGLE_Wifi


 - IL / ILSEC | Kommentoi



 Empty Root PassWord
23.02.2019 18:30 | ILSEC

Elikkä tyhjennä Linux koneen pääkäyttäjän salasana hetkeksi.

 

Sain lahjoituksena vanhan koneen johon oli asennettu Linux käyttöjärjestelmä.

Idea oli kai se, että asentelen sen sitten mieleisekseni joten käyttäjätunnuksista

ei pahemmin ollut puhetta.

 

Kun otin rakkineen pajalle tuli mieleen ensimmäisenä säästää työtä ja hyödyntää

jo olemassa olevaa, elikkä muokata jo asennettua mieleisekseni. Jonkinnäköisiä

ohjeita tähän on netti täynnä, mutta lopulta mentiin ihan sormituntumalla ja

erittäin hataralla muistilla.

 

Koneeseen siis virtaa ja koetin bootata ensimmäisellä käteeni saamallani rescue

diskillä. Mutta dvd-asema tuntui aika krantulta huolimaan edes toista vastaavaa.

Kolmannella (Kali Linux) levylllä se sitten lopulta suostui käynnistymään.

Ja hyvä niin. Kali mounttaa koneen kiintolevn automaattisesti ja vieläpä saa editoida

graafisessa käyttöliittymässä. Joten prosessi oli enemmän iloa kuin tuskaa.

 

Koneen käynnistyttyä 

1. avaa tiedoston hallinta ja navigoi hakemistoon /etc

2. avaa editoriin tiedosto passwd ja muuta ensimmäinen rivi

root:x:0:0:root:/root:/bin/bash    muotoon

root::0:0:root:/root:/bin/bash     elikkä ensimmäinen x pois kaksoispisteden välistä.

3. avaa editoriin tiedosto shadow ja muuta ensimmäinen rivi

root:$6$RBxTY.u5$Fe5BN0x75lLZs9NIi-clip-:16770:0:99999:7:::   muotoon

root::::::::                                elikkä tyhjennä kaikki arvot kaksoispisteiden välistä.

Tarkista kaksoispisteiden lukumäärä ennen tallennusta

4. käynnistä kone uudelleen ja poista boottilevy jossain välissä.

5. kun tulet loginiin, yleensä graafiseen paina esim. ctrl+alt+F2 tms. päästäksesi

konsoliin joka voi näyttää vaikkapa tälläiseltä

 

Kali GNU Linux 2.0 desantti tty2

desantti login: root

 

 

Kirjoita ylläolevan mukaisesti käyttäjätunnukseksi root ja paina enter.

Jos kaikki meni hyvin salasanaa ei pitäisi kysyä ja seuraavaksi pitäisi ilmestyä

suunnilleen seuraavaa.

 

root@desantti:~#

 

Ja vot, kone on hallussa. Seuraavaksi on tärkeää antaa root käyttäjälle salasana.

Koneen pääkäyttäjän salasana ei saa koskaan olla tyhjä.

 


 - ILSEC | Kommentoi



 ArcPy ja HyperLinkit
14.02.2019 09:44 | IGLIES 615 / IL

Aika harvoin jos koskaan ihmiset ajattelevat samalla logiikalla kuin itse.

Siksi etenkin näiden HyperLinkkien kanssa on tullut ongelmia. Milloin ne on eripaikassa

kuin itse ajattelee, milloin ne muuttaa paikkaansa tai milloin ne sitten katoavat bittiavaruuden syviin mustiin syövereihin kokonaan.

Tässä nopea ja todella yksinkertainen scripti jolla tutkitaan likin takana olevan dokumentin

olemassaolo. Ihan jo senkin takia että Hyperlinkit ovat aina antaneet todella suurta lisäarvoa teemalle.

 

Tässä tutkiskelen mahtaako kaavamääräys PDF löytyä ulkoisen toimijan palvelimelta.

Lisäksi listaan kappalemäärät alkuunsa antamaan suuntaa tulevalle.

 

# -*- coding: cp1252 -*-
# ************************************************************************
# Tarkista_HyperLinkkien_Status.py
# Tämä scripti tarkistaa simppelisti onko palvelimella dukumentti
# johon maarays kentässä viitataan.


# 14.02.2019 IGLIES615 / IL
# Hyvää Pyhän Valentinuksen päivän verilöylyn muistopäivää 14.2.1929
# ************************************************************************

import urllib2,arcpy

fc = r"Database Connections\abcfacwap02_SDE_Kangasala.sde\kangasala.sde.Ajantasakaava\kangasala.sde.kaava"

i=0
fi=0
ti=0

with arcpy.da.SearchCursor(fc,'maarays') as cursor:
 for row in cursor:
  i=i+1
  linkki=row[0]

  try:
   f = urllib2.urlopen(linkki)
   deadLinkFound = False
  except:
   deadLinkFound = True

  if (deadLinkFound == True):
   print str(row[0]) + "   Ei löydy"
   fi=fi+1
  else:
   print str(row[0]) + "   Löytyy"
   ti=ti+1

print "Ei Löytynyt: " +str(fi)
print "Löytyi: " + str(ti)
print "Rivejä kaikkiaan: " + str(i)


 - IGLIES 615 / IL | Kommentoi



 Päällekkäiset alueet (OverLapping Polygons)
14.09.2018 08:04 | IGLIES 615 / IL

OverLapping Polygons

 

Joskus tulee tilanteita, että AutoCAD kuva täytyy saada tähän perinteisempään paikkatieto maailmaan.
Tässä yhteydessä usein huomaa, että topologiassa on runsaasti toivomisen varaa ja tämän lisäksi
alueiden muodostus hyvin harvoin menee niinkuin pitäisi.

Tässä käsitellään Kangasalan kaupungin Ruutanan kaupunginosan aineistoa.
Ensin luetaan Ruutana_KAAVALUE.dxf tiedosto sisään ArcMapiin ja valitaan siitä suoraan
Polygon muotoinen aineisto putkelle.

Add Data

Käyttömukavuuden kannalta kannattaa aineisto puskea suoraan tietokantamuotoon
Rotan oikealla  Data: Export Data...

Ja luetaan kama putkelle.

 

Seuraavaksi analysoidaan päällekkäiset alueet. Erinomainen työkalu tähän löytyy
Menu: Geoprocessing: Intersect

Ja lykätään aineisto samaan tietokantaan edellisen kanssa. Tässä tapauksessa
tulokseksi tuli taso nimeltä KAAVALUE_Intersect

 

toc

Täydellisessä maailmassa tämä olisi tässä, mutta ei. Myös alla (tai päällä) oleva 
Alue on mukana kuviotiedostossa, joten nyt tarvitsee vähän askarella, että saadaan se
mitä lähdettiin hakemaan.

 

kartta

 

Ihan ensimmäiseksi täytyy valita KAAVALUE nuo päällekäiset (tai alekkaiset) featuret
ja poistaa ne sotkemasta.
Menu: Selection: Select By Location...
Tärkein on kohta
Spatial selection method for target layer feature(s): are identical to the source layer feature
(Toimii toki parillaa muullakin tavalla, mutta tämä riittää tähän).

sbl

 

 

Sitten editointi päälle ja poistetaan nuo valitut kohteet tasolta KAAVALUE.

 

Nyt meillä on mielenkiintoinen ongelma. On taso KAAVALUE_Intersect jossa on kaksi
päällekkäistä aluetta. Ongelma siis vain lisääntyi, joten haetaan siihen helpotusta
ja yhdistetään kaksi tasoa attribuutti tauluilla toisiinsa. Tällä meidän pitäisi
päästä tilanteeseen jossa meillä on tasolla KAAVALUE_Intersect ne tasot, jotka
halutaan säilyttää ja ne, jotka kuuluu tasoon KAAVALUE ja nämä halutaan taas
poistaa.

Napautetaan rotan oikealla tasoa KAAVALUE_Intersect ja valitaan
Joins and Relates: Join...

join

Ja jos katsotaan KAAVALUE_Intersect attribuuttitaulua huomataan, että
vain noilla alueilla, jotka löytyy tasosta KAAVALUE, on tietoa.
(OBJECTID kenttä on osassa tyhjä <null>)

taulu

Joten tehdään tauluun kysely (Select By Attributes)
ja kirjoitetaan ehdoksi KAAVALUE.OBJECTID IS NOT NULL

 

kysely

 

Tuloksena on halutut rivit.
Laitetaan editointi päälle ja poistetaan valitut rivit pois kuleksimasta.
Sitten poistetaan taulun liitokset.
Joins and Relates:Remove All Joins.

Sitten vielä vähän kosmetiikaa. Tehdään reikiä alueeseen KAAVALUE
ArcToolbox: Analysis Tools: Overlay: Erase

erase

Saadaan pois nuo päällekkäisyydet. Ja viimeisenä silauksena lykätään nuo
puuttuvat alueet takaisin alkuperäiseen.
ArcToolbox: Data Management Tools: General: Append

Ja VOT, siinä meillä on alueet ilman päällekäisyyksiä.

lopputulos

#GIS #ArcMap #OverLapping_Polygons

 

 


 - IGLIES 615 / IL | Kommentoi



 Henkilötunnuksen (Sotu) käsittely SQL lauseessa
22.11.2017 14:32 | -GisFather

Joskus herää siihen karmeaa tosiasiaan, että kaikki ei tietokannan puolella
ole mennytkään kuin Suomifilmissä. Päivitysrutiini on saattanut rikkoa tietueita.
Hyvässä lykyssä riviltä ei löydy muuta kuin SoTu, eli sosiaaliturvatunnus.
Ja silloin kun tämä huomataan, pitäisi samaan aikaan raapia kasaan tilastotietoa
perustuen ikään, sukupuoleen ja syntymävuoteen (eli ikäluokkiin). Kiirellä kuten
aina.

Onneksi SoTu pitää sisällään kaiken tarvittavan ja ennen isoa urakkaa tietokannan
puolella voi hoitaa alta pois nuo tilastot.

Sukupuoli selviää Sotun viimeisestä merkistä, tämä on miessukupuolella pariton numero
ja naissukupuolella vastaavasti parillinen. Näistä uusista kotkotuksista sitten tiedä
mitä ne tulee olemaan, joten se jää nähtäksi, eikö se SoTu muutenkin ole menossa uusiksi
SoTen lailla. Tietokantaan yleensä lykätään uroksille merkki tai numero 1 ja sille toiselle
sitten loogisesti 2, joten tarvittava SQL-lause näyttää jotenkin tältä.

UPDATE TAULU SET Sukupuoli=
 CASE 
  WHEN (SUBSTR(HETU,10,1) % 2)= 1 THEN 1
  ELSE 2
 END;

Nyt pitäisi kaikilla taulun tietueilla olla sukupuoli, lukuun ottamatta trans etc...


Seuraavaksi askarrellaan tauluun syntymävuosi, että ikäluokkien käsittely tulisi
astetta oikeammaksi. tarvittava SQL-aluse tämän toteuttamiseen voisi olla seuraava.

UPDATE TAULU SET syntymavuosi=
 CASE SUBSTR(HETU,7,1)
  WHEN 'A' THEN CAST('20'|| SUBSTR(HETU,5,2) AS Integer)
  WHEN '-' THEN CAST('19'|| SUBSTR(HETU,5,2)  AS Integer)
  ELSE CAST('18'|| SUBSTR(HETU,5,2)  AS Integer)
 END

Tässä huomioidaan vuosisata jolla ko. henkilö on syntynyt. 1800-luvulla
syntyneillä erotusmerkki on +, 1900 luvulla taas - ja nämä nykyisen kuluvan
vuosisadan tuotteiden erotusmerkki on A.


Ikä on sitten mutkikkaampi. Sen laskeminen on paljon kiinni tietokannasta.
Itse olen ihastunut SQLite (SpatiaLite) tietokantaan sen näppäryyden takia.
Ja siinä lasku menee tällä lailla.

SELECT HETU,ika,syntymavuosi,
 (strftime('%Y','now') -
  strftime('%Y',
                CASE SUBSTR(HETU,7,1)
                 WHEN 'A' THEN CAST('20'|| SUBSTR(HETU,5,2) AS Integer)
                 WHEN '-' THEN CAST('19'|| SUBSTR(HETU,5,2)  AS Integer)
                 ELSE CAST('18'|| SUBSTR(HETU,5,2)  AS Integer)
                END
           || '-' || SUBSTR(HETU,3,2) || '-' || SUBSTR(HETU,1,2))) - 
  (strftime('%m-%d', 'now') < 
   strftime('%m-%d',
                CASE SUBSTR(HETU,7,1)
                 WHEN 'A' THEN CAST('20'|| SUBSTR(HETU,5,2) AS Integer)
                 WHEN '-' THEN CAST('19'|| SUBSTR(HETU,5,2)  AS Integer)
                 ELSE CAST('18'|| SUBSTR(HETU,5,2)  AS Integer)
                END
           || '-' || SUBSTR(HETU,3,2) || '-' || SUBSTR(HETU,1,2))) AS Erotus
FROM TAULU;
-- Nyt vasta katsellaan ja vertaillaan !!

Aikamoinen hirviö, joten suosittelen vakavasti laskemaan erilliseen kenttään
syntymäajan päivämäärät muodossa YYYY-MM-DD esim. näin.

Ensin kenttä:
ALTER TABLE "TAULU"
ADD COLUMN 'syntyma_aikaD';

ja sitten lykätään kama sisään SoTuun perustuen.

UPDATE "TAULU" 
SET 'syntyma_aikaD' =
 CASE SUBSTR(HETU,7,1)
  WHEN 'A' THEN CAST('20'|| SUBSTR(HETU,5,2) AS Integer)
  WHEN '-' THEN CAST('19'|| SUBSTR(HETU,5,2)  AS Integer)
  ELSE CAST('18'|| SUBSTR(HETU,5,2)  AS Integer)
 END
  || '-' || SUBSTR(HETU,3,2) || '-' || SUBSTR(HETU,1,2);


Nyt sitten on mukavampi laskea ikä sarakkeeseen syntyma_aikaD.
UPDATE TAULU SET ika=
  (strftime('%Y','now') - strftime('%Y',syntyma_aikaD)) -
  (strftime('%m-%d', 'now') <  strftime('%m-%d',syntyma_aikaD));

Iän laskemiseen löytyy netistä paljon esimerkkejä ja vain jokunen toimii oikein,
joten kannattaa olla todella tarkkana. Itse käytin Oraclessa pitkään lausetta

trunc(to_number(SYSDATE - to_date(kp.c_syntaika,'yyyymmdd')) / 365.25) AS "Ika",

vain nyt huomatakseni, että se laskee suunnilleen oikein.

 


 - -GisFather | Kommentoi


©2019 Iglies - suntuubi.com