aboutsummaryrefslogtreecommitdiff
path: root/research/smartphone.mdwn
blob: a3ad97ac62cdfe76926fd40cbca9f6d1fc6b6437 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
[[!meta title="Smartphone"]]

[[!toc levels=4]]

Objetivo
--------

* Ter um smartphone disponível e funcional sempre que preciso.
* Reduzindo ao máximo as perdas de privacidade e segurança.
* Estabilidade de longo prazo: escolhas de hardware, software e configuração duráveis.

Sistema escolhido
-----------------

Para este estudo, o sistema escolhido foi o [LineageOS](https://lineageos.org).

### Prós

* Código mais aberto.
* Risco menor de backdoors.
* Google Apps não-mandatório.

### Contras

* Menor base de aplicativos.
* Atualizações de segurança mais lentas.
* Ainda dependente de um ecossistema tecnotóxico.
* No caso de root no dispositivo, há redução de segurança.

Modelo escolhido
----------------

Para este estudo, o modelo escolhido foi o Moto E.

### Prós

* Custo relativamente baixo.
* Bom suporte ao LineageOS.

### Contras

* Sem flash.
* Bateria não-removível.
* Jack de áudio não é compatível com qualquer conector.

Checklist
---------

Iterador básico para a manutenção do smartphone:

* Destravamento do bootloader.
* Instalação ou atualização do recovery.
* Instalação do LineageOS.
* [Criptografia do armazenamento interno](https://source.android.com/security/encryption/full-disk).
* Configuração de senha e intervalo de travamento (após cifrar o armazenamento).
* Ferramentas de desenvolvimento habilitadas.
* Restaurar backups e configurações, caso existam.
* Configurações de aparência e comportamento.
* Apps:
    * VPN.
    * Editor.
    * LibreSignal.
    * Barcode Scanner.
    * [Scuttloid](https://f-droid.org/packages/gr.ndre.scuttloid/).
    * [MPDroid](https://f-droid.org/packages/com.namelessdev.mpdroid/).
* Teste e correções.
* Realização de backups.
* Upgrade:
    * Atualizar ROM.
    * Atualizar apps via F-Droid.
    * Atualizar apks manualmente.
    * Alguns apps podem ser auto-autualizáveis.

Detalhes a seguir sobre algumas das etapas acima elencadas.

Destravamento
-------------

Este procedimento é específico para alguns aparelhos para que o bootloader
possa ser desbloqueado, como é o caso do modelo escolhido:

    # stretch onwards: sudo apt install adb fastboot
    sudo apt install android-tools-adb android-tools-fastboot

    1 20160410 14:55:06 user@box:~ $ adb reboot bootloader
    0 20160410 14:55:22 user@box:~ $ fastboot devices
    0012711246      fastboot
    0 20160410 14:55:40 user@box:~ $ fastboot oem get_unlock_data
    ...
    (bootloader) [...]
    OKAY [  0.235s]
    finished. total time: 0.235s
    0 20160410 14:56:01 user@box:~ $ fastboot oem unlock $code
    ...
    (bootloader) Check 'Allow OEM Unlock' in Developer Options.
    FAILED (remote failure)
    finished. total time: 0.007s
    1 20160410 15:30:32 user@box:~ $ fastboot devices
    0012711246      fastboot
    0 20160410 15:30:49 user@box:~ $ 

Recovery
--------

Usando o [TWRP para Moto E surnia](https://twrp.me/devices/motorolamotoelte.html):

    adb reboot bootloader
    fastboot flash recovery recovery.img
    fastboot reboot

Instalação
----------

Detalhes de instalação já são bem cobertos pela documentação do LineageOS,
incluindo a ativação do ADB:

* [Update and build preparation](http://lineageos.org/Update-and-Build-Prep/).
* [Moto E surnia builds](https://download.lineageos.org/surnia).
* [Verifying builds](http://wiki.lineageos.org/verifying-builds.html).
* [Info about surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia).
* [Install LineageOS on surnia | LineageOS Wiki](https://wiki.lineageos.org/devices/surnia/install).
* [Using ADB and fastboot | LineageOS Wiki](https://wiki.lineageos.org/adb_fastboot_guide.html).

Backups
-------

Usaremos o [adb-sync](https://github.com/google/adb-sync) e o [adb-export](https://github.com/snatik/adb-export):

    # Pasta de trabalho
    cd ~/load

    # Parâmetros
    date="`date +%Y%m%d`"
    base="/storage/emulated/0"
    previous="data-do-backup-anterior"
    storage="/var/backups/remote/celular.`facter domain`/"

    mkdir -p $date && cd $date

    # Se você tiver um backup antigo e quiser aproveitá-lo com hardlinks:
    sudo cp -alf $storage/$previous/files files

    # Garante a existência da pasta de arquivos
    mkdir -p files

    # Contatos
    # Exportar também para .vcf direto do aplicativo de contatos
    adb-export.sh           -e    content://com.android.contacts/contacts
    adb shell content query --uri content://com.android.contacts/contacts > contacts.rows

    # Configurações
    adb backup -all

    # Arquivos: cópia completa
    #adb pull $base files/

    # Remover cache multimídia do backup
    #rm -rf files/Music

    # Arquivos: cópia completa básica
    #adb shell ls -1 $base | grep -v ^Music | while read file; do
    #  adb pull $base/$file files/
    #done

    # Arquivos: cópia incremental básica
    adb shell ls -1 $base | grep -v ^Music | while read file; do
      adb-sync --delete --reverse $base/$file files/
    done

    # Move backup to storage
    cd .. && sudo mv $date $storage/

Restauro
--------

A partir de um sistema recém-instalado:

    # Arquivos: cópia completa
    #for file in `ls files`; do
    #  adb push files/$file $base/$file
    #done

    # Arquivos: cópia incremental
    for file in `ls files`; do
      adb-sync --delete files/$file/ $base/$file/
    done

    # Configurações
    adb restore backup.ab

## Subir músicas

Podem ser enviadas a partir de acervos compatíveis com o [playlister](https://git.fluxo.info/playlister/about/):

    playlist-copy <playlist> adb

Dicas
-----

## Escondendo arquivos do mídia player

    touch /storage/emulated/0/SomeApp/Media/.nomedia

Via [Hide Certain Files in Android Music Player (or Photo Gallery)](http://www.guidingtech.com/15563/hide-certain-files-android-music-player-photo-gallery/).

## Checagem de fingerprint do ADB

    awk '{print $1}' < ~/.android/adbkey.pub | openssl base64 -A -d -a | openssl md5 -c | \
    awk '{print $2}' | tr '[:lower:]' '[:upper:]'

Via [Validating the Android 4.2.2 RSA fingerprint](https://shred.zone/cilla/page/374/validating-the-android-422-rsa-fingerprint.html).

## Instalação manual de apps

Checagem de assinatura:

    apksigner verify --print-certs app.apk

Instalação:

    adb install app.apk

## Movendo arquivos do sdcard para o armazenamento interno

    adb shell
    cd /storage/emulated/0
    mv /storage/1FAC-34C3/Music/* Music/

Referências
-----------

* Aplicativos interessantes: snoopsnitch.
* [Modificações de hardware](https://web.archive.org/web/20160402005909/https://people.torproject.org/~ioerror/skunkworks/moto_e/).
* [List of custom android firmware](https://en.wikipedia.org/wiki/List_of_custom_Android_firmware).
* [Fossdroid: Free and open source Android apps](https://fossdroid.com/).
* Backups:
    * [Android: How to Backup Contacts and SMS Messages | chombium's blog](https://chombium.wordpress.com/2012/09/30/android-how-to-backup-contacts-and-sms-messages/), but requires root on recent androids.
    * [Does adb backup include contacts? - Android Enthusiasts Stack Exchange](https://android.stackexchange.com/questions/85269/does-adb-backup-include-contacts).
    * [GitHub - stachre/dump-contacts2db: Bash script that dumps contacts from an Android contacts2.db to stdout in vCard format. Especially helpful when the device is inop or missing, with only a contacts2.db file available (from backup, etc.) to migrate contac](https://github.com/stachre/dump-contacts2db).
    * [Full Phone Backup without Unlock or … | Samsung Galaxy Nexus](https://forum.xda-developers.com/galaxy-nexus/general/guide-phone-backup-unlock-root-t1420351).
    * [How to use ADB backup to back up your unrooted phone - Pocketables](http://www.pocketables.com/2012/09/how-to-use-adb-backup-to-back-up-your-unrooted-phone.html).