Commit 599a13b7 authored by Yoann Ono Dit Biot's avatar Yoann Ono Dit Biot

Migrate blog

parents
Pipeline #901 passed with stages
in 18 seconds
pages:
image: monachus/hugo
script:
- hugo
cache:
paths:
- node_modules
artifacts:
paths:
- public
only:
- master
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
video: ""
paper: ""
---
\ No newline at end of file
baseURL = "https://y0no.fr/"
languageCode = "fr"
title = "To the infinity and beyond"
paginate = 2
disqusShortname = "y0noblog"
[params]
author = "y0no"
authorimage = "img/avatar.jpg"
jobdesc = 'CTO @ <a href="https://manika-consulting.com">Manika</a>'
showBuiltWith = true
favicon = "img/favicon.ico"
[params.social]
twitter = "y0no"
github = "y0no"
linkedin = "yoannonoditbiot"
email = "y0no@y0no.fr"
mastodon = "https://mastodon.tedomum.net/@y0no"
gitlab = "y0no"
custom_gitlab_domain = "forge.tedomum.net"
[menu]
[[menu.main]]
identifier = "page"
name = "Home"
url = "/"
weight = 1
[[menu.main]]
identifier = "posts"
name = "Blog"
url = "/posts/"
weight = 2
[[menu.main]]
identifier = "talks"
name = "Talks"
url = "/talks/"
weight = 3
\ No newline at end of file
---
title: Créer un package Debian
slug: creer-un-package-debian
date: 2012-02-24
categories: Tutorials
tags: ["debian", "ressources", "pdf"]
---
Bien le bonsoir,
Il est souvent utile pour un developpeur de packager son application pour pouvoir la distribuer facilement et pour des questions de maintient de l'application, le versioning, etc... Comme j'ai dû m'occuper de ce genre de travail cette semaine, j'en ai profité pour écrire un petit HowTo, j'espère qu'il vous servira autant à vous qu'à moi, n'hésitez pas à le distribuer, modifier, bruler, etc... il est complêtement copyleft !
Ressource : [http://cod76.free.fr/blog/files/packagingDebian.pdf](http://cod76.free.fr/blog/files/packagingDebian.pdf "How To (format pdf)")
---
title: Bandcamp Downloader (PoC)
slug: bandcamp-downloader-poc
date: 2012-02-26
categories: Scripts
tags: ["script", "python", "bandcamp"]
---
Hello,
Il est rare que je me lance dans ce genre d'outils, mais là, c'était à la limite du supportable pour moi. En effet depuis quelques temps beaucoup de groupes qu'ils soient amateurs ou non déposent leur musique sur le site bandcamp.com. Le principe du site est plutôt cool car, il permet un streaming qui marche bien mieux que celui de myspace, un design pas trop mal et surtout la vente d'albums assez facilement. Donc jusque là rien de bien méchant à déclarer.
Maintenant on va passer aux détails qui craignent. Comme ma curiosité m'y a poussé cet après-midi, j'ai décidé de voir un peu à quoi ressembler le fonctionnement du streaming sur ce site, donc ni une ni deux, je commence par regarder dans les sources de la page et là... STUPEUR, on commence par tomber sur ça :
```text
album_title : "Jerk Alert !",
artist : "Maladroit",
linkback : "http://guerillaasso.bandcamp.com/album/jerk-alert",
download_base : "http://popplers5.bandcamp.com/"
```
cela aurait pu s'arrêter ici, mais non :
```text
trackinfo : [{
"duration":14.76,
"track_num":1,
"has_info":null,
"has_free_download":false,
"unreleased_track":false,
"title":"jerk alert !",
"download_tooltip":"",
"is_downloadable":null,
"has_lyrics":false,
"streaming":1,
"is_draft":false,
"title_link":"\/track\/jerk-alert","id":3922077991,
"sizeof_lyrics":0,
"album_preorder":false,
"file":"http:\/\/popplers5.bandcamp.com\/download\/track?enc=mp3-128&fsig=1c88b87e8075008419db016dc9d3ecc6&id=3922077991&stream=1&ts=1330286400.0"
},...]
```
Oui vous avez bien vu ! On peut donc retrouver directement dans les sources le lien vers le fichier... Je pense honnêtement que c'est du foutage de gueule, quand on se permet de prendre 10% des revenus de l'artiste et que l'on n'est même pas capable de lui fournir un service un minimum protégé... La touche ironique c'est aussi ça :
```
// For the curious:
// http://bandcamp.com/faq#steal
```
Un petit commentaire placé dans les sources nous redirigeant vers une ancre de la FAQ, nous expliquant que le téléchargement peut être une aubaine pour l'artiste blablabla... Alors, pour cette remarque je dis pourquoi pas, mais celà ne devrait-il pas être à l'artiste de décider ?
Enfin quoi qu'il en soit, marchons dans leur jeu, soyons une aubaine et téléchargeons :
```python
import httplib2
from mutagen.mp3 import EasyMP3
import json, re, sys
class BandCampDownloader:
def __init__(self):
print "BandCamp Downloader\n"
def getTracks(self, url):
try:
http = httplib2.Http()
resp, content = http.request(url)
r = re.search("artist : \"(.*?)\"", content)
if r:
artist = r.group(1)
print "Artist : %s" % artist
r = re.search("album_title : \"(.*?)\"", content)
if r:
album = r.group(1)
print "Album : %s" % album
r = re.search("trackinfo : \[(.*?)\]", content)
if r:
print "\nTracks were found"
tracksInfos = '['+r.group(1)+']'
tracks = json.loads(tracksInfos)
for i, track in enumerate(tracks):
print track['file'],' :', track['title']
resp, content = http.request(track['file'])
title = track['title'].replace('/','|')
file = open(title+'.mp3', 'w')
file.write(content)
file.close()
print " [+] File Donwloaded"
song = EasyMP3(title+'.mp3')
song['tracknumber'] = str(i+1)
song['title'] = track['title']
song['artist'] = artist
song['album'] = album
song.save()
print " [+] ID3Tag Done"
else:
print "No track founded... Are you sure of the URL ?"
except httplib2.RelativeURIError:
url = "http://"+url
self.getTracks(url)
def usage():
print '[i] usage: %s bandcampAlbumURL' % sys.argv[0]
print '[i]'
print '[i] + For example to download Demo\'s album from Poesie Zero (great band):'
print '[i]'
print '[i] $ %s http://poesiezero.bandcamp.com/album/demo' % sys.argv[0]
print ''
if __name__ == '__main__':
bcd = BandCampDownloader()
if len(sys.argv[1:]) != 0:
bcd.getTracks(sys.argv[1])
else:
usage()
```
Ce script peut bien sûr être largement amélioré, mais pour le peu qu'il a à faire ça fonctionne pas trop mal. Bien sûr c'est copyleft donc amusez vous :D
Sur ce, bonne soirée !
---
title: "Bandcamp Downloader GUI"
date: 2012-06-25T09:38:12+01:00
categories: Scripts
---
Bien le bonjour !
En cette semaine pluvieuse au fin fond de ma Normandie, j'ai décidé d'améliorer un peu le script que j'avais présenté précédemment [ici](http://y0no.fr/bandcamp-downloader-poc.html). Vu qu'un screenshot vaut toujours mieux qu'un long monologue :
![Bandcamp Downloader](/img/posts/BCD.png)
Concernant l'utilisation, c'est simple, il suffit de mettre le lien de la page BandCamp où les morceaux convoités sont situés, ensuite on cliques sur "Check" histoire de voir les titres que le soft a été capable de récupérer On sélectionnes ceux que l'on veut et l'endroit vers lequel on veut télécharger. Enfin on peut cliquer sur "Download", partir boire un café banane/menthe et revenir kiffer la vibe avec votre musique fraîchement téléchargée !
Bien sûr je rappelle que l'on doit supporter les artistes, c'est toujours cool de pouvoir récupérer de la musique comme on veut, mais il est important de récompenser l'artiste pour son travail, que ce soit en live ou achetant ses albums. Ca vous fera un peu bouger de votre PC (bande de nerdzzz!) et ça fera des heureux :D
Sinon pour les curieux l'interface est codée avec PySide, c'est-à-dire du Qt pour python. La librairie Mutagen permet de marquer les tags MP3 à la volée et la lib httplib2 permet de récupérer les morceaux toussa toussa.
**Téléchargements:**
* Code Source : [ici](http://ge.tt/1tnbKgI/v/0)
* Installeur Windows : [ici](http://ge.tt/5iE1KgI/v/0) (Alpha version)
* Executable linux : [ici](http://ge.tt/7MK7KgI/v/0) (Alpha version)
---
title: Découverte et Rootage de l'OYO
slug: decouverte-et-rootage-oyo
date: 2012-07-16
categories: Infosec
tags: ["rootage", "oyo", "ebook", "chapitre.com"]
---
Bien le bonjour,
aujourd'hui on va un peu jouer au barbus ! Récemment j'ai fait l'acquisition d'un lecteur d'eBooks pour la modique somme de 39€ chez chapitre.com, autant dire que l'envie de le bricoler était grande! Tout d'abord, une petite recherche sur le net m'a conduis sur cette page, une vraie mine d'informations !
![Photo OYO](/img/posts/IMG_0001.jpg)
Donc tout d'abord la description technique de la bête :
* architecture ARM (armv5tejl) de Samsung
* 128Mo de RAM
* une interface WLAN pour pouvoir acheter des livres en ligne
* un écran tactile bénéficiant de la technologie ePaper
Voilà c'est à peu près tout ce qu'il y a à savoir, mis à part peut être qu'un prochain modèle devrait sortir avec la technologie 3G !
Mes tests ont étaient effectués sur une ubuntu 12.04, d'après ce que l'on peut voir sur le net une version inférieure à la 10.10 empêche le matériel de fonctionner correctement.
Aller en "root" maintenant (hohoho)
**Rooter l'OYO**
On va d'abord essayer de gagner un accès sur l'oyo. Pour celà pas trop de problème, on branche l'appareil sur notre linux préféré, une batterie devrait apparaitre. On démarre l'oyo, celui-ci devrait être détecté automatiquement, vérifions tout de même que ce soit le cas :
```text
y0no@bobi:~$ lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 099: ID 0525:a4a6 Netchip Technology, Inc. Linux-USB File Storage
```
Gadget L'oyo étant détecté correctement, on va tenter de se connecter dessus, pour cela nous allons émuler un lien série entre le périphérique et le PC, pour le faire, il nous suffit de taper en console (en prenant soin de remplacer les valeurs de vendor et product par celle que 'lsusb' vous a renvoyé) :
```text
y0no@bobi:~$ sudo modprobe vendor=0x0525 product=0xa4a6
```
Le lien devrait être effectif, on va redémarrer l'OYO en mode debug. Pour cela il vous faudra une carte SD dans la quel nous placerons un fichier nommé usbdebug, un simple redémarrage est le tour est joué !
```text
y0no@bobi:~$ dmesg
...
[ 249.406500] usbserial_generic 2-1.1:1.0: generic converter detected
[ 249.406695] usb 2-1.1: generic converter now attached to ttyUSB0
...
y0no@bobi:~$ cat /var/log/syslog
...
Jul 16 16:19:09 ubuntu modem-manager: (ttyUSB0) opening serial device...
Jul 16 16:19:09 ubuntu modem-manager: (ttyUSB0): probe requested by plugin 'Generic'
Jul 16 16:19:21 ubuntu modem-manager: (ttyUSB0) closing serial device...
Jul 16 16:19:22 ubuntu modem-manager: (ttyUSB0) opening serial device...
Jul 16 16:19:28 ubuntu modem-manager: (ttyUSB0) closing serial device...
...
```
Prenez un logiciel tel que minocom ou n'importe quel équivalent pour communiquer avec votre port série en y entrant les informations suivante :
* PORT : /dev/ttyUSB0
* BAUD : 115200
* Bits de données : 8
* Bits de stop : 1
* Controle de flux : non
Vous voilà relier à l'oyo ! Un identifiant vous sera demandé pour vous connecter:
* Login : root
* Pass : SReader
Maintenant amuser vous bien !
**Maintenir un accès sur l'OYO grâce à telnet**
Se connecter par liaison série à l'oyo n'est pas compliqué mais, est tout de même assez contraignante à la longue, nous allons donc utiliser l'interface wifi de l'OYO pour nous y connecter grâce à telnet !
Pour les plus pressés, il suffit d'entrer la commande inetd sur l'OYO puis d'activer le wifi pour pouvoir accéder en telnet à l'appareil. Le soucis c'est qu'il faudra refaire ça à chaque redémarrage de l'engin. Nous allons donc utiliser une solution beaucoup plus propre, c'est à dire un script de démarrage.
Pour cela, direction le dossier */mnt/etc/init.d/*, créons un fichier inetd dans lequel nous mettrons le script suivant :
```bash
#!/bin/bash
[ -f /usr/sbin/inetd ] || exit 0
RETVAL=0
case "$1" in
start)
echo -n "Starting INET services: "
/usr/sbin/inetd
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed: $RETVAL"
fi
;;
stop)
echo -n "Stopping INET services: "
killall inetd
killall telnetd
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Success"
else
echo "Failed: $RETVAL"
fi
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
```
N'hésitez pas à utiliser 'vi' qui est installé par défaut. Le script n'est pas parfait loin de là, mais il fait ce qu'on lui demande Nous allons ensuite rendre ce script exécutable puis lui demander de se lancer au démarrage de l'appareil:
```text
[root@Samsung ~]# chmod ugo+x inetd
[root@Samsung ~]# cd /mnt/etc/rc3.d
[root@Samsung ~]# ln -s ../init.d/inetd S57inetd
```
Voilà, maintenant plus besoin de relier l'OYO à votre PC pour communiquer avec.
**Comment récupérer les 46 livres intégrés à OYO ?**
En plus, de son prix assez compétitif, l'OYO de chapitre.com contient 46 livres. Malheureusement ceux-ci ne peuvent être récupérés de façon à les stocker sur son pc en attendant de les lire plus tard... Donc profitons de notre accès root pour les sauvegarder ! Donc connectons nous à l'appareil, que ce soit en telnet ou via le port série, puis :
```text
[root@Samsung ~]# cd /home/books/
[root@Samsung books]# mv *.epub *.pdf /mnt/mmc0p2/
```
Grâce à ce petit tricks, nous aurons la possibilité de transférer les eBooks lorsque nous relierons l'oyo à notre pc (en mode sync)
La mise à jour de la bibliothèque ne se fait pas dynamiquement, il est donc nécessaire de redémarrer l'appareil, ou bien de manière plus sale, mais sans redémarrage :
```text
[root@Samsung ~]# cd /qduil/em/
[root@Samsung em]# ./start
```
**Comment accéder à d'autres sites que chapitre.com**
Par défaut, chapitre.com n'autorise que la navigation internet sur son site, pour l'achat de livre électronique. Après quelques recherches sur le web, nous pouvons voir que le modèle allemand n'est lui pas restreint et embarque un navigateur web présent dérrière le bouton "Autres contenus" de l'OYO. Voyons d'où viens cette différence et comment ajouter à notre appareil le navigateur Web.
Tout d'abord, rendons nous dans le dossier **/rwdata/settings** de notre appareil, nous pouvons remarquer la présence d'un fichier **QBookApp.ini**. Après son ouverture, on peut voir qu'il s'agit du fichier de configuration de l'OYO.
En le parcourant, vous aurez remarqué qu'il y a plusieurs parties dans le fichie, et notamment qu'elles portent le nom des différents revendeurs de l'oyo (buch, chapitre, empik, etc...).
En étudiant les différences entre les configurations des revendeurs, notamment entre chapitre et thalia. On remarque un champ suspect has_open_web_browser. Tentons de définir sa valeur à true dans la configuration de chapitre. On redémarre l'OYO et voilà le navigateur est présent dans l'appareil, bon surf !
---
title: Soundcloud Downloader
slug: soundcloud-downloader-script
date: 2012-08-26
categories: Scripts
tags: ["script", "python", "soundcloud"]
---
Bien le bonsoir !
Ça commençait à faire un bout de temps que je n'avais pas poster sur ce site un petit script alakon permettant de jouer les vilains pirates voleurs de musique ! Je vais donc rectifier la chose ce soir en vous proposant un script python permettant de télécharger les sons d'une page soundcloud, c'est bien entendu largement améliorable, mais pour une chose pondue vite fait mal fait c'est déjà pas mal ;)
Le script récupère tout les titres disponibles sur une page soundcloud, les enregistre sur l'ordinateur au format auteur-titre.mp3 et la banane sur le kiwi, tag le mp3 pour qu'on puisse le retrouver facilement dans son lecteur multimédia préféré !
A noter que la librairie mutagen permettant le tag des mp3 à la volée n'est pas fournie avec python, donc pour que le script fonctionne sans soucis il suffit de commenter la partie tagging ;)
Voici donc le bousin :
```python
# Name: Soundcloud Download
# Version: 0.1
# Author: y0no (Based on n0wz soundcloud Downloader)
import os
import sys
import urllib2
import re
import json
from mutagen.mp3 import EasyMP3
from urllib import urlretrieve
def affichemenu():
print ("-----------------------(DOWNLOAD)-----------------------")
print ("USAGE: %s [url]" % (sys.argv[0]))
print ("EXEMPLE: %s http://soundcloud.com/dexisfeelingbad\n" % (sys.argv[0]))
def main(argv):
if len(sys.argv) >= 2:
sURL = sys.argv[1]
oURL = urllib2.urlopen(sURL)
sPage = oURL.read()
sTracksList = re.findall("window.SC.bufferTracks.push\((.*?)\)", sPage)
if sTracksList:
for sTrack in sTracksList:
sTrack = json.loads(sTrack)
sName = sTrack['title']
sAuthor = sTrack['user']['username']
sLink = sTrack['streamUrl']
sFile = os.getcwd() + "/" + sAuthor + " - " + sName + ".mp3"
print("\nAuthor: %s" % (sAuthor))
print("Name: %s" % (sName))
print("Link: %s" % (sLink))
print("Download... :"),
urlretrieve(sLink, sFile)
print("Done")
####### id3tag (optional) #######
song = EasyMP3(sFile)
song['title'] = sName
song['artist'] = sAuthor
song['album'] = "SoundCloud"
song.save()
##################################
else:
print("\nNo track found...")
else:
affichemenu()
if __name__ == "__main__":
main(sys.argv[1:])
```
---
title: "Write Up Wargame NDH2K13: AdminAccess"
slug: writeup-wargame-adminaccess
date: 2013-06-24
categories: Write-up
tags: ["NDH2K13", "writeup", "wargame"]
---
Bon nous y voilà...
La nuit du hack 2013 s'est terminée dimanche au petit matin et c'est le coeur lourd mais plein d'émotions que j'écris ces quelques lignes après un repos bien mérité.
Pour ceux qui n'y étais pas la nuit du hack, c'est un événement annuel que je classe dans la catégorie ouferies annuelles et que je ne peux que vous conseiller! Un résumé de la soirée est d'ailleurs disponible [ici](http://www.undernews.fr/culture-web-emploi/evenements/retour-sur-la-nuit-du-hack-2013-ndh2k13.html).
Bref, cette année j'ai eu l'occasion de filer un coup de patte à la team HackerzVoice en proposant une épreuve pour le wargame. Comme elle n'a apparament pas était résolue pendant la soirée, je me suis dis qu'un petit write-up serait sympa pour les gens qui y étaient presque.
## Épreuve
Pour commencer voici la description de l'épreuve avant d'y acceder:
```text
Trouver le mot de passe de l'admin de ce site.
```
On y va pas par quatre chemins, l'objectif c'est de retrouver le mot de passe de l'admin. A première vue, notre premier point d'entrée est le site web du système téléphonique de sciteek (comprendra qui pourra). La page est un simple formulaire d'authentification doté d'un lien pouvant mener à une inscription au service.
Comme on est curieux, on crée un compte et on tente de s'authentifier sur la page. Jusque là rien d'étonnant, mais c'est à ce moment que les choses sérieuses commencent.
Cette page contient des infos de connexion SIP et un numero de boite vocale.
![adminaccess webpage](/img/posts/adminaccess_web.png)
Encore une fois, il fallait être curieux et se connecter avec un client SIP pour tester si les informations étaient vraies et si une vulnérabilité s'y cachait. Autant vous dire que si j'en parle ici, c'est certainement qu'une faille y était présente. En effet lorsque l'on appelait le numero 3030, nous tombions sur un SVI (service vocal interactif), nous demandant d'entrer notre mot de passe pour acceder au service.
Un mot de passe valide nous gratifiait d'un "Access Granted" tandis qu'un mauvais nous renvoyais un "Access Denied".
Voilà pour la description de l'épreuve maintenant voyons comment l'exploiter.
## Exploitation
La première chose qui est venue à l'esprit de beaucoup de participant du wargame a été de tenter la recherche de vulnérabilités sur la partie web de l'épreuve. Malheureusement à part une XSS mal placée rien de bien probant. La solution se trouvait dans la génération du mot de passe pour la boite vocale. En effet la créations de plusieurs comptes nous permettait de faire une "cryptanalyse" de la génération de mot de passe pour essayer de la comprendre.
Voici plusieurs mot de passe générés pour différents comptes:
```text
username password voicemail_password
machin test 116101115116
truc test 116101115116
bidule test2 11610111511650
```
Pas besoin de trente mille échantillons pour voir ce qui est fait. Le mot de passe de la boite vocale n'est pas généré en fonction du username, mais varie avec le password de l'interface web. On vois aussi que ce dernier est uniquement numérique et de longueur variable.
On voit aussi qu'entre le mot de passe 'test' et 'test2', seul le nombre 50 s'est ajouté en fin de chaine. C'est donc un chiffrement caractère par caractère. Je dirai même plus, il s'agit d'un chiffrement ascii vers décimal. Si vous avez compris ça, vous avez tout compris.
![ascii table](/img/posts/adminaccess_asciitable.png)
La génération des comptes SIP étant dynamique, on peut supposer que les utilisateurs sont créés en base de données, et que l'accès à la boite vocale se fait en consultant cette même base de données. Partant de ce principe on peut donc tout de suite penser à une SQLi au travers asterisk (qui a dit tordu ?!).
On tente deux injections bêtes et on regarde ce qui est retourné:
```text
Clair Chiffré Résultat
' OR '1'='1 39 32 79 82 32 39 49 39 61 39 49 Access granted
' OR '1'='0 39 32 79 82 32 39 49 39 61 39 48 Access denied
```
On est donc en présence d'une belle SQLi bien sale comme il faut, ne demandant qu'à être exploitéee. Malheureusement, je n'ai pas encore eu le temps de coder un script digne de ce nom, mais n'hésitez pas à partager les votres (si il y en a)
Pour valider l'épreuve il suffisait ensuite de se loguer en tant qu'admin sur le site web et le flag était sur la page.
Sur ce bonne soirée et bonne récupération.
This diff is collapsed.
---
title: NetSecure Day
slug: netsecure-day
date: 2013-11-22
categories: Event
tags: ["security", "netsecure day", "windows phone 8"]
draft: true
---
Bien le bonsoir!
Pas de scripts alakon ou de tuto ce soir. Je viens seulement vous parler d'un évènement "Sécurité informatique et réseau" qui va se dérouler le 5 Décembre. Dénommée [Netsecure Day](http://netsecure-day.fr/), l'objectif de cette journée est de réunir professionnels, étudiants et passionnés de sécurité informatique autour de conférences durant un après-midi afin d'échanger et d'apprendre. Les sujets seront variés et tenterons de couvrir les aspects défensifs et légaux de la sécurité avec des talks animés par des professionnels du domaine et des étudiants.
Je serai d'ailleurs là-bas pour y présenter un tour d'horizon de la sécurité du système d'exploitation Windows Phone 8 et y montrer quelques faiblesses que j'ai pu relever durant mes recherches.
Bref j'espère sincément vous y voir, alors n'hésitez pas à vous inscrire ça coute rien: [http://netsecure-day.fr/inscriptions/](http://netsecure-day.fr/inscriptions/)
Sur ce bonne soirée et à bientôt ;)
---
title: NetSecure Day #1: Conférence Windows Phone 8
slug: nsd2k13-conf-wp8
date: 2013-12-15
categories: Events
tags: ["microsoft", "wp8", "windows phone 8", "conférence", "exia", "cesi"]
---
Voici la vidéo de la mini-conférence que j'ai eu l'occasion de donner durant les NetSecure Day.
Il s'agit d'un tour d'horizon de la sécurité du système d'exploitation Windows Phone 8. J'espère que ça vous plaira ;)
{{<youtube gGzH0KnQyGE youtube>}}
Les slides sont disponibles [ici](http://slid.es/y0no/windows-phone-8)
This diff is collapsed.
---
title: Hackathon OpenData76, debriefing ?
slug: hackathon-opendata76
date: 2014-04-15
categories: Events
tags: ["hackhours", "opendata76", "cg76", "insa"]
---
Hey salut!
Ce weekend j'ai eu l'occasion de participer à un Hackathon coorganisé par l'équipe d'Hackhours et le conseil générale de Haute-Normandie dans les locaux de l'hotel du département de Rouen. Clairement l'organisation était d'enfer, et je tiens à féliciter mes camarades de [hackhours](http://hackhours.co/) qui au bout de 3 évenements comme celui-ci arrive à nous accueuillir dans de très bonne condition.
Pour rappel Hackathon, c'est la contraction de Hack et Marathon. En bref, c'est plusieurs dizaine de développeur (ou juste passionné) qui code durant 24H une application répondant à un sujet bien défini. Dans notre cas, il s'agissait de développer une application utilisant les données fournis par [le portail OpenData76](http://www.opendata-27-76.fr/)
Maintenant on va passer au détails qui fachent. Malgré un très bon accueil du staff plusieurs point reste à améliorer:
## La connectivité
Avoir un internet c'est bien, l'avoir de manière constante c'est mieux. Tout était prévu pour que ça se passe bien avec un wifi facilement accéssible et surtout un réseau filaire fonctionnel sur chaque table. Sur ce coup là, chapeau. Par contre le débit a été catastrophique toute la soirée, et lorsqu'on a besoin du net pour respecté certaines contraintes de developpement comme OpenStreetMap ça devient très vite galère...
## Le son
Très bon début de soirée avec un DJ ([son twitter](https://twitter.com/DjMarkusWhite)), mais après son départ l'apocalypse... Je ne saurai dire quel été le pire moment entre Johnny Halliday en duo avec Lara Fabian et la musique de Fort Boyard... Bref la prochaine fois, ne laissez pas DJ Kéké mettre du son, mieux vaut le silence que cette torture...
## Le jury
Hum... comment dire ? Un jury à l'origine pas trop mal réparti, avec une moitié de technicien et l'autre composé de non technicien. Au moins, c'est plutôt cool pour juger le technique, l'aspect commercial et la communication. Malheureusement, l'aspect technique n'a pas du tout été abordé durant les présentation et c'est vraiment dommage. Je reviendrai d'ailleurs sur le sujet dans un prochain article qui décortique la solution apportée par l'équipe gagnante et sur la grosse quenelle qu'ils ont glissé au jury et aux organisateurs.
Pour résumer, un jury en dessous de tout qui s'est laissé berner par du marketing, qui n'a pas du comprendre le principe du hackathon et de l'objectif de la nuit.
## Conclusion
En bref, une très bonne idée, une organisation qui malgré quelques soucis a su nous faire passer un très bon moment, et quelques axes d'améliorations pour la prochaine.
---
title: "OpenData76: Sécurité de l’application CheckTaRoute"
slug: hackathon-opendata76-securite-checktaroute
date: 2014-04-17
categories: Infosec
tags: ["script", "python", "hackathon76", "hackathon", "opendata76", "checktaroute", "security"]
summary: Étude de l’application CheckTaRoute présentée au Hackathon OpenData76
---
## CheckTaRoute
Grand vainqueur du Hackathon organisé par la région et par l’équipe d’Hackhours, l’équipe de Check Ta Route a proposé un système permettant d’évaluer l’état du revêtement d’une route au travers d’une application mobile pour Android. Pour ce faire, ils utilisent l’accéléromètre présent dans les téléphones pour mesurer les vibrations émises durant un trajet et les couplent avec les coordonnées GPS. Ainsi ils peuvent connaitre l’état d’une route à un instant t et une position X,Y.
Après avoir entendu dire qu’ils avaient eu quelques soucis de sécurité mais que c’était corrigé, ma curiosité m’a poussé à aller voir de plus près le fonctionnement de l’application pour voir si elle était sécurisée.
## Capture du trafic réseau
La première chose qui m’est venue en tête a été d’analyser le trafic réseau pour voir comment le téléphone envoyait les informations au serveur de CheckTaRoute. J’ai donc mis en place un point d’accès Wi-Fi sur mon ordinateur auquel j’ai connecté mon téléphone portable. J’ai ensuite coupé la connexion réseau mobile de mon téléphone pour être sûr que mes données soient envoyées qu’au travers du point d’accès. Enfin j’ai lancé WireShark pour voir ce qui se tramait là-dessous (oui je suis fier du jeu de mot...).
Malheureusement, pas grand chose de magique, les données ne semble être envoyées qu’au travers du réseau mobile et les quelques autres données qui sont autorisées à passer par le Wi-Fi passent en HTTPS. Vu que j’ai pas voulu me prendre la tête en vérifiant si les certificats auto-signés passaient, je suis directement passé à une analyse de code.
## Analyse du client mobile
### Récupération et décompilation du code
Vu que l’analyse réseau n’avait pas été fructueuse, j’ai préféré regarder directement dans le code du client mobile.
Pour les personnes qui ne le savent pas, il est facilement possible de décompiler une application Android pour retrouver le code java utilisé avant la compilation en APK.