PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Uggy : Rooter/jailbreaker le Kindle PW2 par le port série

dimanche 8 novembre 2015 à 13:42

Introduction

Il n'y a même pas la possibilité par défaut sur un Kindle de changer les images de veille. Rien que pour cette raison, on est tenté de rooter/jailbreaker son Kindle afin d'en reprendre un peu le controle. (My device, my rules).

Quand je me le suis procuré il y a quelques mois, il est arrivé en version 5.6 quelquechose et il n'est pas possible à l'heure où sont écrites ces lignes, de le rooter/jailbreaker de manière uniquement logicielle.

Dans des versions précédentes, il était possible de faire passer le JailBreak pour une mise à jour, mais ceci a été "corrigé" par Amazon.

La seule solution est pour l'instant d'ouvrir le Kindle, et d'accèder au port série. (Au moins il y en a un, c'est déjà çà).

IMG_20151107_220727.jpg-s.jpg


La technique dans les grandes lignes:

- Ouvrir le Kindle et se connecter sur le port série
- Booter sur la 2ème partition de debug/diag
- Trouver le mot de passe de cette partition de debug/diag et se connecter en root dessus
- Une fois root sur la partion de debug/diag, monter la partition "principale" pour éditer le fichier /etc/passwd pour en débloquer l'accès root.
- Rebooter sur la 1ère partition et s'y connecter en root.
- Lancer le script de JailBreak

Si j'ai bien compris, Amazon n'autorise que les applications qu'ils ont signés eux (avec leur clé privée) à s'installer. Le JailBreak consiste à ajouter une autre clé publique (dont la communauté connait la clé privée) rendant donc possible l'installation d'applications non authorisée par Amazon.

uggy-kindle-pubKey.png-s.jpg


Connaitre sa version de firmare

Menu/Paramètres/Menu/Infos sur l'appareil/Version du micrologiciel


Trouver son numéro de série/modèle

http://wiki.mobileread.com/wiki/Kindle_Serial_Numbers


Avoir un accès console avec niveaux logiques 1.8V

Le port série des Kindles (au moins mon PW2) communique avec des niveaux logiques 1.8V.

Il faut donc utiliser un port série qui utilise ces niveaux logiques et non les classiques 3.3V et 5V

J'ai utilisé un PL2303HXrevD (dans les 4€ sur Ebay)

PIN4 The power pin for the serial port signals.
The range can be from 1.8V~3.3V

(Attention, le PL2303HX (pas révision D) ne supporte pas le 1.8V d'après la datasheet)

Il suffit de décoller doucement la PIN4 du chip (par exemple avec une petit aiguille) afin de pouvoir la connecter ensuite à du 1.8V (ou 3V3 ou 5V pour d'autres usages)

IMG_20151108_190546.jpg-s.jpg


Trouver le mot de passe de la partition diag (2ème partition)

J'avais initialement utilisé le code suivant trouvé sur le forum http://www.mobileread.com/forums/

#!/usr/bin/env python
import hashlib
print("fiona%s"%hashlib.md5("XXXYOURSERIALXXX\\n".encode('utf-8')).hexdigest()[7:11])

Mais dans mon cas, le mot de passe ainsi trouvé n'a ensuite PAS fonctionné.
Même problème avec le site https://www.sven.de/kindle/ qui utilise le même "algo".

J'ai donc utilisé kindletool qui lui m'a donné un mot de passe différent qui a fonctionné sur mon Kindle.

$ ./kindletool info XXXYOURSERIALXXX
Platform is Wario or newer
Root PW fionaXXX
Recovery PW fionaXXXX
$


Démonter le Kindke pour accéder au port console

Je me suis basé sur cette vidéo

Si vous acheter le PL2303HXrevD à HongKong sur un site d'enchère (environ 4€), cà vaut peut être le coup d'acheter en même temps les "Metal spudger" (2€ les 2) mais sinon un couteau avec une lame fine peut faire l'affaire.

Le plus difficile est de ne pas laisser de trace pour passer le spudger sous la coque au tout début.
La suite du démontage est triviale.
Faire cependant attention à la bande de plastique blanche au niveau des LEDs car elle joue sur la répartition de la lumière sur la dalle.


Connecter le port série

uggy-serial-kindle.png-s.jpg

Les pins sont toutes petites, donc à souder avec précaution

IMG_20151107_220202.jpg-s.jpg

Pour les branchements, TX sur RX, RX sur TX, Gnd sur Gnd, le fil vert sur le bouton vert etc..

Les paramètres sont: 8N1 115200

J'ai utilisé "screen"

$ screen /dev/ttyUSB0 115200


Sortir de "veille" le kindle

Si tout se passe bien le port série devrait s'afficher comme ceci

uggy-kindle-Serial.png-s.jpg

Il dit "Welcome", c'est qu'on a le droit de se connecter :)


Boot de la partition diag

Rebooter le Kindle, tapez sur n'importe quelle touche au début du boot pour arreter la séquence (il y a un créneau que de quelques secondes), allez en mode diag en tapant bootm 0xE41000

uggy-kindle-bootm.png-s.jpg


Choisir "Exit, Reboot or Disable Diags" puis "Exit to login prompt" etc...

uggy-kindle-menu1.png-s.jpg

uggy-kindle-menu2.png-s.jpg

uggy-kindle-menu3.png-s.jpg

uggy-kindle-menu4.png-s.jpg


Se logguer

Utiliser le compte de la partition diag trouvé à l'une des étapes précédentes: root/fionaXXX

uggy-kindle-root-diag.png-s.jpg


Monter la partition principale (la 1ère partition) et éditer le fichier etc/passwd

uggy-kindle-passwd1.png-s.jpg


Modifier la ligne pour root.

root:*: -> Indique un mot de passe chiffré dans /etc/shadow
root:: -> Indique qu'il n'y a pas de mot de passe

uggy-kindle-passwd2.png-s.jpg

uggy-kindle-passwd3.png-s.jpg

Pour l'instant on choisi d'enlever le mot de passe


Rebooter, tester l'accès root à la partition principale

uggy-kindle-root-main.png-s.jpg


Télécharger les fichiers de jailBreak

http://www.mobileread.com/forums/showthread.php?t=186645


Connecter l'USB, copier les fichiers à la racine sur le Kindle (USB classique) puis déconnecter l'USB


Executer le scipt de jaibreak avec l'acces root (partition principale, pas diag)

uggy-kindle-jb.png-s.jpg


Conclusion

Ce billet de couvre pas l'installation des outils que l'on peut alors utiliser.

Mais j'ai commencé par personnaliser l'écran de "veille"...

IMG_20151108_191509.jpg-s.jpg

Crédit: De nombreux posts et personnes de http://www.mobileread.com/forums/

Gravatar de Uggy
Original post of Uggy.Votez pour ce billet sur Planet Libre.

Ilphrin : Mes premiers tests unitaires en Web

dimanche 8 novembre 2015 à 00:00

Dans le cadre de mon stage, je dois faire un outil de monitoring en Web pour afficher des statistiques sur des bases de données ElasticSearch. Nous avions carte blanche pour les technos à utiliser, l’organisation de l’outil, etc… L’outil en lui-même fonctionne, mais puisqu’il s’agit d’un stage (mon premier en plus), il y a tout interêt à solidifer cet outil et en profiter pour apprendre le plus de technos possibles.

Dans cette optique, je me suis lancé dans l’idée de rajouter des tests unitaires pour aider au développement futur de notre outil de monitoring. Je n’ai jamais fait de tests unitaires (je suis étudiant ne me jetez pas de pierres tout de suite ;) ), c’était donc l’occasion d’apprendre à en faire. Après avoir regardé à droite et à gauche sur le net, mon attention s’est fixé sur la combinaison PhantomJS + Mocha + Chai. Donc pour ceux qui ne connaissent pas:

Pour information, l’outil web utilise le Framework AngularJS. Donc il faut que tout ce gros bazar fonctionne pour tester mes controlleurs, mes services, etc… Et je puis vous dire que ça a été un beau gros casse tête, c’est un point que je déteste dans le web c’est cet éparpillement d’outils dans tous les sens et pour tout et n’importe quel utilisation. Et plus il y a d’outils plus c’est difficile de mettre de l’ordre dans ce qu’on fait et de maitriser ce qu’il se passe. M’enfin c’est un autre sujet.

Et donc pour que les trois outils, cités plus haut, fonctionnent avec une application AngularJS, il faut rajouter à la liste Angular Mocks, qui permet d’injecter des modules/services et autres pour des tests unitaires.

Dans un fichier html, on inclu tout ça comme ci-dessous (et dans cet ordre, sinon tout se casse):

<script src="./node_modules/mocha/mocha.js">
<script src="./node_modules/chai/chai.js">

<script>
  mocha.setup('bdd');
  mocha.reporter('html');


<script src="angular-mock.js">
<script src="test/tests.js">

<script>
  if (window.mochaPhantomJS) {
    mochaPhantomJS.run();
  }
  else {
    mocha.run();
  }

J’ai installé Mocha et Chai par le biais de Node Package Manager (npm), PhantomJS a été compilé à la main (c’est super long je vous préviens), et avec npm toujours j’ai installé mocha-phantomjs, qui permet de faire fonctionner les deux ensembles.

Une fois tout cela en place on va pouvoir commencer à écrire les tests unitaires dans le fichier tests.js. Mon but est de tester les fonctionalités de mon Service AngularJS, qui contient la quasi-totalité des fonctions de mon applications. J’appelle ici mon module ‘monitoring’ et mon service ‘totalService’.

var expect = chai.expect;
var assert = chai.assert;

angular.module('monitoring');

describe("totalService", function () {
  beforeEach(function () {
    module('monitoring');

    inject(function (_totalService_, _$resource_, _$location_) {
      totalService = _totalService_;
      $resource = _$resource_;
      $location = _$location_;
    });
  });
});

On initialise ici Chai et on injecte le module d’abord en lançant angular.module(‘monitoring’), puis dans le beforeEach avec module(‘monitoring’), ainsi que le service TotalService avec la méthode inject(). Il ne reste plus qu’à le tester en lançant la commande:

mocha-phantomjs -p chemin/vers/phantomjs/bin/phantomjs test/TestRunner.html

Ensuite le reste dépend de l’application, et tout est expliqué correctement sur les docs respectives de Mocha, Chai et PhantomJS. Je suis content d’y être finalement arrivé après plusieurs jours à me casser la tête pour faire marcher tout ça. J’ai notamment passé deux jours avec un ‘undefined is not a function’ de angular-mock. Je pense que si je dois me lancer dans un gros projet Web ce serait de faire une bibliothèque qui simplifie tout ça, par exemple un pack qui comprend Mocha, Chai, PhantomJS, et Angular Mock, avec une simple commande pour lancer tout ça, et avec de base un dossier d’exemple qu’il ne reste plus qu’à reprendre et modifier pour travailler.

Gravatar de Ilphrin
Original post of Ilphrin.Votez pour ce billet sur Planet Libre.

La vache libre : Rendera – Une petite application sympa pour restaurer ou retoucher vos images

samedi 7 novembre 2015 à 20:07

Rendera_002

Ce n’est pas évident de trouver des applications à vous présenter dans la mesure où je fouine un peu moins ces derniers temps. Cela dit je garde toujours un œil sur mes flux et quand je vois passer un nom que je ne connais pas je regarde de quoi il s’agit et si ça me botte je teste. C’est le cas avec Rendera, que je ne connaissais pas encore et qui a attiré ma curiosité. Il s’agit d’une application conçue dans le but de fournir aux utilisateurs un outil de retouche d’image, idéal pour effectuer quelques travaux de retouche, de restauration, ou simplement pour laisser parler votre fibre artistique.

L’interface est assez simple et nous sommes loin d’une grosse machine telle Gimp, mais vous aurez quand même de quoi faire avec les manipulations de base à portée de clic. Recadrage, redimensionnement, découpage, rotation etc etc…

Vous disposerez aussi d’une palette de couleur, d’un outil texte, d’un outil de clonage, d’un outil de remplissage et d’un bon paquets de filtres très faciles à appliquer, dont certains ont été spécifiquement conçus pour de la restauration d’image.

Comme le montre l’image ci-dessous ceux-ci vous permettrons de bien vous amuser.

Rendera_003

Alors je vais être franc avec vous, je n’ai fait que survoler les possibilités de cette application. cependant elle m’a parue vachement sympa et si vous recherchez une solution de ce type vous ne perdez rien à essayer.

Le seul bémol réside dans un nombre assez restreint de formats pris en charge (PNG, Targa, Bitmap, JPEG) et notez aussi que seul le PNG est totalement pris en charge (import/export).

Alors si ça vous tente, vous pouvez jeter un œil sur la page Github du projet où vous trouverez les sources et sur le wiki pour en savoir un peu plus.

Si vous tournez sur Ubuntu vous pourrez tester la bête en ajoutant le PPA suivant à l’aide de ces quelques lignes de commande :

Installer Rendera  :

sudo add-apt-repository ppa:dhor/myway
sudo apt-get update
sudo apt-get install rendera

Supprimer Rendera :

sudo add-apt-repository -r ppa:dhor/myway
sudo apt-get update
sudo apt-get remove rendera

Amusez-vous bien.

source, Yoda

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

nIQnutn : RTMPDump: enregistrer un flux rtmp

samedi 7 novembre 2015 à 18:29

Certains sites diffusent des vidéos avec le protocole Real Time Messaging Protocol (RTMP). Pour diverses raisons, il est utile de récupérer ce flux pour le lire hors ligne ou le convertir dans un autre format.

La plupart des lecteurs vidéos comme VLC permettent la lecture des flux RTMP mais il n'est pas possible d'avancer la vidéo (on peut seulement mettre en pause). C'est pas toujours pratique, surtout quand on a besoin de revoir un moment précis de la vidéo.
Pour voir la vidéo dans de bonnes conditions, il ne me restait plus qu'à récupérer le flux via RTMPDump, un utilitaire en ligne de commande.

Installation

RTMPDump est dans les dépots officiels Debian, pour l'installer, lancer la commande:

#root
apt install rtmpdump 
RTMPDump v2.4

Utilisation

Il existe de nombreuses options à RTMPDump mais je n'utilise qu'une seule commande pour récupérer ma vidéo:

#root
rtmpdump   -r 'rtmp://url-du-flux.com/video.flv'   -o '/tmp/video.flv'   --resume ;

La fin du téléchargement devrait afficher "Download complete". On peut maintenant lire la vidéo hors ligne ou l'encoder si besoin. Il est possible de l'intégrer dans un script pour récupérer automatiquement ses vidéos.

Bien évidemment il faut connaître l'URL du flux. Si on ne la connaît pas, on peut utiliser par wireshark (c'est plutôt bien documenté).

Ressources

Pour connaître toutes les options de RTMPDump:
$user
man rtmpdump 

© 2015 nIQnutn

Gravatar de nIQnutn
Original post of nIQnutn.Votez pour ce billet sur Planet Libre.

Boutor : Utiliser OpenMP avec Code::Blocks sous Windows

samedi 7 novembre 2015 à 12:20

J’avais déjà fait en 2011 un article sur OpenMP et Code::Blocks (http://wp.me/pJPCq-6H).
Comme celui-ci a toujours du succès et qu’il est franchement daté, je le remets au goût du jour.

Je vous laisse installer Code::Blocks. Quelque soit la version choisie, le MinGW intégré ne supporte pas OpenMP.

Vous allez dans le répertoire C:\\Program Files (x86)\\CodeBlocks et changer le répertoire MinGW en MinGW_old, pour revenir en arrière en cas de besoin.

Vous allez chercher le MinGW de TDM disponible ici : http://tdm-gcc.tdragon.net/download.
Vous lancez l’application et choisissez CREATE.

Le lanceur TDM-GCC

Le lanceur TDM-GCC

Choisissez le 32 ou le 64 bits.

On veut que le TDM-gcc vienne remplacer l’ancien wingw, on remplit la destination comme suit : C:\\Program Files (x86)\\CodeBlocks\\MinGW\\

Emplacement de création du TDM-GCC

Emplacement de création du TDM-GCC

Il faut ne pas oublier de cocher que l’on veut installer OpenMP.

TDM settings

TDM settings

On finit l’installation de TDM-gcc.

On lance code::blocks. Il faut ensuite aller changer les noms des exécutables pour la compilation : Settings -> Compiler.

Et aller dans l’onglet (image ci-dessous) : Global compiler settings, et sous onglet toolchain executables.
Entrez les exécutables correspondant au TDM installé (varie selon 32 ou 64 bits).

Compiler settings

Compiler settings

Tout est ok pour la partie installation de TDM-gcc.

Je vous propose d’aller tester l’installation réalisée.

Je vous laisse créer un projet OMPTest et de mettre le code suivant dans main.cpp.

#include 
#include 
#include 


using namespace std;

void simple(int n, double *a, double *b)
{
    int i;
    #pragma omp parallel for
    for(int j = 0; j < 3300; j++) {
        for (i=1; i

Je l’exécute sans OpenMP, il dure 12 secondes.

Pour activer OpenMP, on va dans Project -> build options et on ajoute -fopenmp dans Compiler Settings, onglet Other options.

Compiler Other options

Compiler Other options

On va ensuite dans l’onglet Linker Settings, où on ajoute la librairie : C:\\Program Files (x86)\\CodeBlocks\\MinGW\\lib\\gcc\\x86_64-w64-mingw32\\5.1.0\\libgomp.a. Il faut probablement adapter le lien.

Linked libraries

Linked libraries

On peut lancer la compilation. Si vous faîtes le test avec le gestionnaire de tâches, vous voyez que les 4 processeurs tournent en parallèle. Le code est très mauvais puisque la version parallèle est plus lente que la version scalaire (54 secondes).


Gravatar de Boutor
Original post of Boutor.Votez pour ce billet sur Planet Libre.