Linux projekti – Loppuraportti

Tässä raportissa kerromme, miten projektimme eteni, mitä haasteita meillä oli, ja millaiseen lopputilanteeseen pääsimme.

Vaihe 1: Androidin roottaaminen

Ensimmäinen tavoitteemme projektissa oli onnistuneesti rootata Android-puhelin ja dokumentoida tämä. Tämä onnistuikin helposti löydettyämme xda-developersin foorumeilta selkeät, oikealle puhelinmallille räätälöidyt ohjeet.

Vaihe 2: Etäyhteys SSH:lla

Seuraavaksi ryhdyimme käsittelemään varsinaisia aiheitamme, eli puhelimen etäkäyttöä. Pyrimme luomaan SSH-yhteyden puhelimelta puhelimelle ja tietokoneelta puhelimelle.

Aluksi tämä vaikutti erittäin haastavalta, sillä lukuisia eri ohjeita seurattuamme tyssäsi yrityksemme aina erilaisiin virheilmoituksiin. Lopulta saimme kuitenkin operaattorin tarjoaman vaihtuvan IP:n avulla yhteyden toimimaan ilman sen suurempia ongelmia tai asetusten muutoksia.

SSH-yhteyteen käyttämämme ohjelmat:

DropBear SSH Server /palvelin, jolle etäyhteys luodaan

ConnectBot /yhteyden muodostamiseen käytettävä ohjelma Androidilla

Terminal /tietokoneelta luotavaan yhteydenottoon

Vaihe 3: Androidin keskitetty hallinta

Viimeinen ja selkeästi haastavin tavoitteemme oli Androidin keskitetty hallinta. Alunperin olimme suunnitelleet tutustuvamme Puppetiin ja toteuttavamme hallinnan sillä. Tiesimme kuitenkin alusta saakka, että tämä tulisi olemaan erittäin haastavaa tai jopa mahdotonta. Etsimmekin Internetistä tietoa aiheesta ja yritimme mm. selvittää, onko kukaan muu aiemmin onnistunut tässä. Selvisi, että ilmeisesti tällä hetkellä ei ole ainoatakaan avoimen lähdekoodin ratkaisua, jonka avulla hallinta onnistuisi. Ainakaan emme onnistuneet tällaista mistään löytämään.

Meille ehdotettiinkin, että yrittäisimme tämän sijaan saada jonkinlaista hallintaa aikaan esimerkiksi fabricin avulla. Aloimmekin siis tutustumaan tähän, ja ratkaisu vaikutti huomattavasti lupaavammalta onnistumisen suhteen. Fabric on siis Python-kirjasto ja -komentorivityökalu, jonka avulla voidaan yksinkertaisesti hallinnoida komentoja.

Fabricin asennus tapahtui seuraavasti

$ sudo software-properties-gtk -e universe

$ sudo apt-get update

$ sudo apt-get install python-pip

$ pip install fabric

Käytimme pip:iä siksi, että Fabricin omalla sivulla suositellaan tekemään näin. Tämä siksi, että pip:n avulla asentuu aina viimeisin versio. Tämän jälkeen Fabricin piti siis olla asennettuna, mutta testatessamme sitä saimme virheilmoituksen, jonka mukaan näin ei ollut.

Annettiin siis vielä peruskomento

$ sudo apt-get install fabric

jonka jälkeen testattiin uudelleen:

$ nano fabfile.py

def hello():

print(”Hello world!”)

$ fab hello

Hello world!

Nyt Fabric siis toimi, ja päästiin perehtymään siihen, miten sillä voisi hallinnoida puhelinta SSH:n yli. Aloitimme selvittämällä, miten Fabricilla luodaan SSH-yhteys. Tämä tapahtuu seuraavasti:

$ nano fabfile.py

from fabric.api import *
env.user ’root’
env.hosts = [’193.66.xx.xx’]
env.password = {’salasana123’}

def deploy():
run(’echo Hello World!’)

$ fab deploy

Ajaessamme tämän vaikutti siltä, että yhteys kyllä syntyi, mutta jostain syystä emme kuitenkaan saaneet vastausta. Testasimme Fabricin toimintaa myös kahden koneen välisessä SSH-yhteydessä. Ajoimme äskeistä esimerkkiä vastaavan fabfilen (tietenkin toista tietokonetta vastaavilla ip-osoitteella ja käyttäjätunnuksella/salasanalla), ja tällöin yhteys onnistuikin heti. Ilmeisesti vika oli siis jälleen jollain tapaa mobiiliverkossa.

Päätimme myös testata meille tunnilla ehdotettua mosh;ia. Mosh on siis mobile ssh-clientti, jonka olisi tarkoitus nopeuttaa ssh-yhteyttä puhelimen ja ssh-palvelimen välillä. Ongelmaksemme tuli kuitenkin se, että Androidille on tarjolla vain moshin client-versio, olisimme tarvinneet server-version, jotta siitä olisi hyötyä tarvitsemallamme tavalla.

Pyrimme vielä jatkamaan ongelman selvittämistä keskiviikon esitystuntiin saakka.

Ajankäyttö:

Viikko 43: Aiheen ja ryhmän valinta ✔
Viikko 44: Projektisuunnitelman palautus ✔
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta ✔
– n.5h/henkilö. Tutustuimme itsenäisesti aiheeseen. Otimme selvää eri tavoista rootata puhelin, sekä myös ohjelmista, joita roottauksen jälkeen voisimme käyttää SSH-yhteyden luomiseen.

Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys. ✔
– 4h/henkilö. Vietimme yhden opetuskerran roottaamisen suorittamiseen ja rootatun puhelimen ihmettelemiseen.

Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua. ✔
– n. 10h/henkilö. Itsenäisen työskentelyn lisäksi kokoonnuimme kahdesti konfiguroimaan ja testaamaan.

Viikko 48-49: Keskitetty hallinta. Alkuperäisestä suunnitelmasta eroten päädyimme puppetin sijaan tutkimaan Fabricin tarjoamia mahdollisuuksia.
– n.25h/henkilö. Itsenäistä työskentelyä oli noin 8h/henkilö. Kokoonnuimme viitenä päivänä pähkäilemään yhdessä, ensin puppetia ja sen hylättyämme fabricia. Tämä näyttääkin lupaavalta, mutta emme kuitenkaan vielä tämän ajan puitteissa onnistuneet löytämään ratkaisua ongelmien ratkaisemiseksi. ✔

Viikko 50: Esitys luokassa.

Linux projekti – väliraportti vk48

Tähän mennessä Linux-projektissa aikaansaamamme asiat on selitetty edellisissä blogimerkinnöissä:

https://jaakkovalja.wordpress.com/2012/11/07/linuxprojekti-androidin-roottaaminen/

https://jaakkovalja.wordpress.com/2012/11/21/linux-projekti_ssh-yhteyden-luomine/

Projektin tavoitteet:
Projektillamme oli kolme tavoitetta. Ensin pyrimme selvittämään Androidin roottausta.

Roottasimmekin onnistuneesti minun Samsung Galaxy Ace -puhelimeni ensimmäisen viikon aikana.

 

Tämän jälkeen aloimme keskittymään projektimme työläämpään osa-alueeseen eli SSH-yhteyden luomiseen puhelimesta puhelimeen ja puhelimesta tietokoneelle.

Saimmekin tuon yhteyden lopulta toimimaan Saunalahden tarjoaman IP:n ansiosta.

 

Viimeisenä tavoitteena meillä oli tutustua ja mahdollisesti toteuttaa Androidin keskitettyä hallintaa puppetin avulla. Kiireellisen aikataulun johdosta toteutus ei kuitenkaan näillä näkymin tule onnistumaan. Pyrimme kuitenkin vielä tulevan viikon aikana tutustumaan aiheeseen ja dokumentoimaan tätä niin paljon kuin mahdollista.

Aikataulu ja toteutuminen:
Viikko 43: Aiheen ja ryhmän valinta ✔
Viikko 44: Projektisuunnitelman palautus ✔
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta ✔
Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys. ✔
Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua. ✔
Viikko 48: Mikäli SSH-palvelin on nopeasti saatu onnistumaan, perehdytään ja yritetään saada
toimimaan keskitetty hallinta. Muussa tapauksessa jatketaan SSH-palvelimen kimpussa.
Viikko 49: Viimeistellään projektia ja raporttia, palautus.
Viikko 50: Esitys luokassa.

Linux-projekti – SSH-yhteyden luominen

Androidin roottaamisen jälkeen aloimme ratkomaan projektimme seuraavaa ongelmaa: SSH-yhteyden muodostaminen puhelimen ja tietokoneen välille. SSH (Secure Shell)-yhteydes tarkoittaa käytännössä salattua yhteyttä kahden eri laitteen välillä, olivat ne sitten missä verkossa tahansa. Toinen laitteista toimii aina palvelimena ja toinen asiakkaana. SSH-yhteys on erittäin käytännöllinen, sillä sen avulla mahdollistuu turvallinen tiedon ja tiedostojen siirto laitteelta toiselle ilman muita ulkoisia apuvälineitä.

Viikolla 46 pidimme lyhyen esityksen siitä, mitä olimme tähän mennessä saaneet projektissamme aikaan. Lisäksi tutustuimme itsenäisesti lisää eri SSH-ohjelmiin ja tutkimme taustatietoa siitä, miten yhteys saataisiin muodostettua.

Löysimme mielestämme lupaavalta vaikuttavat ohjeet Cyanogenmodin sivuilta, joita aloimme seuraamaan.

Yritimme ensin noudattaa ohjeita niin, että Tommin puhelin (Samsung Galaxy S2) oli yhdistettynä koneeseen. Loimme koneella julkinen/yksityinen-salasanaparin ja kopioimme nämä myös puhelimen sdcardille. Tämä siksi, että vain oikean avaimen sisältävät koneet voivat ottaa yhteyden puhelimeen. Ennen tätä sdcard täytyi kuitenkin mountata saadaksemme rw-oikeudet, jotta tiedoston kopiointi onnistuisi.

Tämä onnistui komennoilla

$ adb shell

# mount -o remount rw /sdcard

Tämän jälkeen saimme siis tiedoston kopioitua sdcardille. Seuraavaksi täytyi ohjeiden mukaisesti luoda kansio, siirtää ko. tiedosto sinne ja tehdä joitain muokkauksia sen käyttöoikeuksiin. Törmäsimme kuitenkin kerta toisensä jälkeen virheilmoitukseen siinä vaiheessa, kun yritimme suorittaa komentoa

dropbearkey -t rsa -f /data/dropbear/dropbear_rsa_host_key

Ilmeisesti virheilmoitus johtui siitä, että ohjeissa oletettiin dropbearin olevan systeemissä valmiiksi asennettuna, kun taas todellisuudessa olemme jälkiläteen asentaneet sen siihen.

Yritimme siis seuraavaksi tehdä saman minun puhelimellani (Samsung Galaxy Ace), sillä flashasin siihen roottaamisen jälkeen CyanogenModin käyttöjärjestelmän, johon tuo dropbear oletuksena kuuluu. Tällä kertaa ohjeita seurattuamme pääsimmekin ohi tuon kohdan ja jatkamaan ohjeissa eteenpäin.

Komennolla

# ifconfig wlan0

saimme tietää puhelimeni ip-osoitteen (joka toki näkyy myös Dropbearissa puhelimessa) ja yritimme ottaa yhteyden koneelta puhelimeen. Jostain syystä tämä ei kuitenkaan toiminut puhelinverkon tai wlaninkaan kautta, ja vaikka yritimme monia säätöjä ja etsiä ohjeita eri lähteistä, ei mikään auttanut.

Lopulta päädyimme yrittämään yksinkertaisinta vaihtoehtoa, jota itse en ollut tullut edes ajatelleeksi. Koska molemmilla on Saunalahden liittymät, saa Oma Saunalahti-sivustolta vaihdettua asetuksen, jolla puhelinverkko alkaa käyttää IPv4-protokollaa. Tommi vaihtoi tämän asetuksen päälle ja puhelimessaan muutti vielä saunalahden APN:ää ja voilà!

Tämän jälkeen yhteyden muodostaminen onnistui välittömästi ilman ongelmia, yhteys pyysi vain rootin salasanan (oletuksena ”43”, vaihdoimme kuitenkin hieman monimutkaisempaan turvallisuden säilyttämiseksi) ja kaikki puhelimen tiedostot olivat saatavilla. Testasimme vielä, onnistuuko tätä kautta koneelta lisäämään esimerkiksi kansion puhelimelle. Annettuamme uudelleen tuon luku- ja kirjoitusoikeudet myöntävän komennon tämäkin onnistui ja kansio ”Testi” ilmestyi puhelimen File Manageriin. Yritimme myös yhdistää minun puhelimeni mobiiliverkon kautta Tommin puhelimeen SSH-yhteydellä käyttäen puhelimeni ConnectBot-ohjelmaa. Tämäkin yhteys onnistui ja pääsin selaamaan hänen tiedostojaan.
Ensi kerralla pyrimme vielä saamaan ”oikean” yhteyden toimimaan ilman Saunalahden tarjoamaa helpotusta, jonka jälkeen alamme selvittämään, onnistuisiko puppetin avulla useamman puhelimen keskitetty hallinta.

Linux-projekti – Androidin roottaaminen

Androidin roottaamisella tarkoitetaan sitä, että pystyy käyttämään puhelintaan root-oikeuksin. Käytännössä tämä tarkoittaa mahdollisuutta hallinnoida eri sovelluksia ja ominaisuuksia, joita tavallinen käyttäjä ei pysty muokkaamaan. Root-oikeuksin pystyy siis esimerkiksi poistamaan puhelimen mukana tulleita oletussovelluksia, jotka katsoo itselleen tarpeettomiksi.

Roottauksesta on muitakin hyötyjä: Akun kestoa pystyy pidentämään poistamalla tai jäädyttämällä turhia taustaohjelmia, ulkonäköä pystyy muokkaamaan entistä tehokkaammin sekä itse Androidin version päivitys mahdollistuu täysin uudella tavalla. Toki roottauksesta voi syntyä myös haittoja: Vahingossa saattaa tulla poistaneeksi jonkun oleellisen sovelluksen, jonka seurauksena puhelin tai jokin sen ominaisuus ei enää toimikaan kunnolla, tai voi tulla vahingossa sallineeksi jonkun sellaisen ohjelman, joka sisältää viruksia/haittaohjelmia.

Aloimme työparini kanssa tutkimaan puhelimeni (Samsung Galaxy Ace) roottaamismahdollisuuksia. Parin linkin jälkeen päädyimme XDA-Developersin foorumeille, josta löysimme selkeät ohjeet miten tämä toteutetaan:

1. Ladattiin sivustolta tiedosto upd_1.zip ja kopioitiin se sd-kortille.

2. Sammutettiin puhelin  ja käynnistettiin se recovery modessa home+power -napeilla.

3. Valittiin update from sdcard ja sieltä tuo ladattu zip-paketti.

4. Päivityksen jälkeen käynnistettiin puhelin normaalisti ja tarkistettiin, oliko roottaus onnistunut.

Ensimmäiseksi oli huomattavissa, että sovellusten joukkoon oli ilmestynyt uusi ohjelma, Superuser. Tämän työkalun avulla voidaan hallinnoida uusia asennettavia ohjelmia ja määritellä saavatko ne root-oikeudet.

Seuraavaksi testasimme ladata Google Play -sovelluskaupasta Titanium Backup -ohjelman. Tämän avulla ohjelmista voidaan ottaa varmuuskopioita ohjelmista ja poistaa niitä, siis myös sellaisia oletusohjelmia joita ei yleensä olisi pystynyt hallinnoimaan. Testasinkin poistaa muutaman (News & Weather, Yahoo! Finance), joka onnistuikin. Ainoa outo puoli oli se, että puhelin käynnisti itsensä uudelleen jokaisen poistetun sovelluksen jälkeen. Joka tapauksessa olimme siis saaneet onnistuneesti rootattua puhelimeni.
Aloimme seuraavaksi pohtia ei vaihtoehtoja SSH-yhteyden luomiseksi puhelimelta toiseen tai tietokoneelta puhelimeen. Latasimme seuraavat ohjelmat testi- ja vertailumielessä:

– ConnectBot

– DropBear

– SSHDroid

– SSHconnect

 

Linux-projekti ict4tn018-1 projektisuunnitelma

Tässä on projektisuunnitelmamme Tero Karvisen kurssille Linux-projekti. Aiheen projektiin sai itse valita.

Aihe:

Androidin roottaaminen, etäkäyttö SSH:lla ja keskitetty hallinta.

Valitsimme tämän aiheen, koska olemme molemmat kiinnostuneita Android-maailmasta. Itselleni lisäkiinnostusta tuo myös mahdollisuus projektin aikana suoritettavasta oman puhelimeni roottauksesta. Lisäksi etäkäyttö ja keskitetty hallinta puhelimissa ovat aiheita, joihin ei juuri ole perehdytty ja joista ei ylipäänsä tiedetä kovin paljon.

Ryhmän jäsenet:
Tommi Stadius, kokemusta Androidin roottauksesta, toimii tämän aihealueen vastuuhenkilönä.
Jaakko Väljä, vastuualue SSH-palvelimeen perehtyminen ja toteutus.
Keskitettyyn hallintaan tutustuminen ja sen toteutus toteutetaan kokonaisuudessaan yhdessä.

Projektin tavoite:
Projektillamme on kolme tavoitetta. Ensin pyrimme selvittämään ja toteuttamaan Android-
puhelimen roottauksen. Tämän jälkeen asennamme puhelimelle SSH-palvelimen ja yritämme
konfiguroida sen niin, että SSH-yhteys puhelimeen ja puhelimesta toimii. Viimeisenä tutkimme
mahdollisia keskitetyn hallinnan sovelluksia ja sitä, onko käytännössä mahdollista toteuttaa
puhelimien välistä keskitettyä hallintaa.

Laitteisto & ohjelmisto:

Projektin toteutuksessa käytämme omia puhelimiamme, Samsung Galaxy Ace Android version 2.3.6
ja Samsung Galaxy S2 Android version 4.0.4. Roottaus-vaiheessa tulemme mahdollisesti käyttämään
esimerkiksi sovelluksia SuperSU ja STweaks. SSH-palvelinsovelluksia on useita, tällä hetkellä olemme harkinneet ainakin seuraavia: DropBear SSH-server, ConnectBot, SSHDroid, Quick SSHd ja SSH Autotunnel.

Aikataulu:
Viikko 43: Aiheen ja ryhmän valinta
Viikko 44: Projektisuunnitelman palautus
Viikko 45: Aiheeseen tutustuminen, käytettävien sovellusten valinta
Viikko 46: Roottaus valmis, jatkoon perehtyminen. Väliraportin laatiminen ja esitys.
Viikko 47: SSH-palvelimen asennus ja konfigurointi, onnistumisesta riippuen testailua.
Viikko 48: Mikäli SSH-palvelin on nopeasti saatu onnistumaan, perehdytään ja yritetään saada
toimimaan keskitetty hallinta. Muussa tapauksessa jatketaan SSH-palvelimen kimpussa.
Viikko 49: Viimeistellään projektia ja raporttia, palautus.
Viikko 50: Esitys luokassa.