Nuit du Hack 2010
Comme l’année dernière, la nuit du Hack a eu lieu sur une péniche transformée pour l’occasion en bateau pirate. La comparaison s’arrête là car cette année tout était plus grand : plus de conférences, plus de challenges publics, plus de musique, et l’apparition de workshops.
Tout a commencé à 16h avec l’ouverture des portes de la Péniche alors que certains attendait sur le quai depuis un moment déjà. Quelques binouzes plus tard, il est déjà 17h et c’est le début des conférences et l’heure des choix cornéliens : chacun des deux étages de la Péniche héberge une conférence différente. Il faut donc choisir entre deux bonnes conférences ce qui n’est pas tout le temps facile. Je n’ai malheureusement pas eu l’occasion de suivre les premières conférences car trop occupé à finalisé la conférence que j’ai présenté à 19h15.
Une fois ma conférence terminée, je peux enfin profiter totalement de l’évènement et enchainer les conférences. Tout d’abord, GeoHot : Hacking embedded devices avec des détails sur l’état de l’art du hacking de la PS3. Ensuite, cde nous a présenté le déboguer opensource xdbg qui n’atteint pas encore le niveau de IDA Pro mais semble très prometteur. Puis c’est au tour de Mathieu Suiche qui nous explique comment analyser la mémoire physique d’un mac sous leopard et fini par récupérer le mot de passe de l’utilisateur stocké dans un buffer qui n’a pas jamais été vidé par le process de logon. (Il faudra que je test ça sur mon macbook 10.6.4)
La fin des conférences permet d’aller faire un tour du côté des workshops, j’ai malheureusement raté le hack de caddie made in la grotte du barbu. Par contre, j’ai vu des gens très intéressants reprogrammer une LiveBox et Xavier de Xavbox reprogrammer des consoles de jeux. Le concept des workshops permet de créer un hacker space temporaire qui s’accorde très bien avec le reste de la soirée.
Le reste de la soirée a été partagé entre un concert rock terminé par un mix électro et les différents challenges (CTF + challenge public très varié). Pour ma part, j’ai donné quelques coup de mains à droite et à gauche et j’ai discuté avec quelques hackers qui avaient pour certains fait plusieurs centaines de kilomètres pour évènement.
Concernant HZVault, les slides de la conférence sont disponibles ici et là. La release de l’outil aura lieu dans quelques jours.
Parmi les innombrables plugins Firefox que j’ai pris l’habitude d’utiliser. Il y a ASNumber, ce plugin permet de faire la correspondance entre un site web et l’AS qui l’héberge. Pour simplifier, l’AS est un des identifiants réseau de l’hébergeur.
Malheureusement, je suis passé sur la dernière version de Firefox et vu qu’aucune mise à jour n’a été effectué par le mainteneur du plugin, le plugin n’était plus utilisable. Heureusement pour moi, les plugins Firefox sont en fait de simple fichiers ZIP contenant une description et une archive JAR qui contient des fichiers javascripts et css. Après quelques modifications, j’ai pu réaliser une version du plugin compatible avec Firefox 3.5. Le mainteneur a été contacté mais pour les impatients la version modifiée du plugin est disponible à cette adresse : http://mirror.labs.fr/pub/Firefox/asnumber_35.xpi.
Astuce : Si vous voullez heberger des extensions Firefox sur votre propre serveur, il ne faut pas oublier d’associer l’extension .xpi au mime-type application/x-xpinstall.
Introduction à la programmation C sur iPhone
Un petit article sur un système BSD un peu particulier : iPhone OS en version 2.x pour l’instant mais cet article devrait normalement s’appliquer sans soucis sur un iPhone 3.0 d’ici quelques jours/semaines.
/!\ Cet article va à l’encontre de ce qu’Apple cherche à imposer sur son produit. /!\
Présentation de l’OS
L’iPhone OS est un dérivé de MacOS X lui même dérivé de FreeBSD. On se retrouve rapidement en terrain connu avec le firewall ipfw par exemple. L’OS est par défaut bridé par Apple, pour en profiter, pleinement il faut effectuer un JailBreak. Cette opération ne sera pas détaillée dans cet article (Google est très locace sur le sujet). Le système de packages le plus utilisé sur les iPhone jailbreakés est Cydia (un portage iPhone d’apt). Une fois Cydia installé, il est de bon ton d’installer BSD subsystem et OpenSSH.
Une fois l’accès SSH activé (changer le mot de passe est une très bonne idée), il est possible d’utiliser Cydia en ligne de commande :
#mise à jour de la base de packages apt-get update #recherche du package gcc apt-cache search gcc #installation du package gdb apt-get install gdb
Les logiciels suivants seront très utiles pour la suite :
- iphone-gcc : le compilateur gcc arm
- com.bigboss.20toolchain : la toolchain qui contient entre autre les fichiers d’include standards
- gdb : bien utile pour le debug
- screen : evite de perdre les programmes en cours si le signal wifi est coupé
- vim : pas besoin de le présenter
toto.c
Nous allons réaliser un programme le plus simple possible :
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char ** argv)
{
printf("%s is working !\n",argv[0]);
return 0;
}
Pour compiler ce programme, nous allons devoir préciser à gcc l’emplacement des headers standards :
# gcc toto.c -o toto -I /private/var/include/ ./toto Killed
L’iPhone a refusé d’exécuter notre programme. En effet, l’OS vérifie que le programme a bien été signé par Apple. Heuresement pour nous, il est tout à fait possible de signer nous-même le programme avec ldid (par contre cette signature ne sera reconnue que sur les iPhone jailbreakés) :
ldid -S toto ./toto toto is working !
Conclusion
Il est possible d’aller plus loin, un certain nombre de programmes et de librairies libres ont dors et déjà été portées sur iPhone. Il ne vous reste plus qu’à laisser s’exprimer votre créativité. Attention cependant, cette methode ne permet de réaliser que des programmes utilisables en ligne de commande, pour réaliser des interfaces graphiques iPhone, la meilleure solution reste l’utilisation de l’Objective C.