Creative Commons License
.

Aller au contenu | Aller au menu | Aller à la recherche | Voir les modalités d'utilisation des travaux de l'auteur

On Twitter: J'ai voulu déconnecter JOS, mais je me suis déconnecté en meme temps, LAME
Page d'accueil rss Geekstories.fr La Boite à Vomi E-Generation Mon CV

Vous utilisez l'ancienne adresse de ce blog. Cependant, un nouveau nom de domaine à été mis en place, et des dysfonctionnements peuvent se produire avec l'ancienne adresse. Vous avez donc été redirigé vers www.tixlegeek.com. Pensez à mettre à jour vos signets !

mercredi 28 juillet 2010

Mon interpréteur BrainFuck perso

[ Partager : Partager sur Digg ]
Salutations!

Pour ceux qui ne connaissent pas ce merveilleux langage de programmation, il y a dans la note précédente, quelques exemples de code brainfuck. Le brainfuck, conceptuellement, c'est trop cool. Un seul registre, un jeu d'instruction tres réduite, et une utilisation tres proche des systèmes logiques. Et bien, en attendant d'avoir le courage de bidouiller un ordinateur brainfuck, j'ai décidé de coder ma propre version de ce langage!

Voilà, donc j'ai commencé par programmer un interpréteur simple, qui supportait toutes les instructions du brainfuck, pour ensuite le modifier. J'ai déjà implémenté deux ou trois fonctionnalités tres pratiques qui rendent bien service, comme le support des boucles imbriquées, et un incrément numérique des valeur du registres. Prochain étape, l'adressage "direct" du registre. Finalement, ça va s'apparenter à ce que je voulais faire (voir le billet sur mes projets en cours). Le brainfuck est vraiment tout indiqué, et est bien plus facile à interpréter que le BASIC (la conversion "langage->code" c'est trop la merde, et ca dépends trop de la finalité.).

Là, je pense être sur la bonne voie pour créer un langage pratique, rétro-compatible (il peut interpréter un code brainfuck), et léger (moins de répétitions, interpréteur simple=bug--). Je vais poster le code source de l'interpréteur, sous licence GPL (of course) et le langage lui même aussi j'espère.

Et bon surf!

lundi 26 juillet 2010

It's BrainFucking time !

[ Partager : Partager sur Digg ]
Salutations!

Grace à TimGau, qui a posté une de ses sources BrainFuck sur le réseau social totalitaire et bleu, j'ai eu le plaisir de re-goûter à ce merveilleux langage qu'est le BrainFuck. J'ai alors demandé à mon entité cérébrale nerd de me remettre en RAM les vicissitudes de ce dernier. Quel miracle, un langage si simple, et si poétique à la fois! Il regorge de concepts tout à fait intéressants d'ailleurs.

Pour rappel, le brainfuck permet de manipuler UN registre, d'afficher la valeur d'une cellule de ce registre, et de demander la saisie d'une valeur de cellule. Il dispose aussi de la formidable "[]" qui est une boucle conditionnelle.

Quelque petits codes BrainFuck

Signature Brainfuck
+++++ +++++ +++++ ++++
[>+++++<-]
+++[>----<-]>+.
<+++[>+++++++<-]>.     
<+++[>+++++<-]>.
<+++[>----<-]>.
<++[>---<-]>-.
++.
--..
<++[>+++<-]>.
Un petit compte à rebours avec retour-chariot
>+++++ +++
[<+++++ ++>-]<+
>>+++
[<+++>-]<+
>++++++++++.<
[<.->->.<]
Et son homologue, le compteur
>+++++ +++
[<+++++ +>-]<
>>+++
[<+++>-]<+
>++++++++++.<
[<.+>->.<]
Un petit programme mignon tout plein pour les sensibleries geekesques:
>++++++++++
[>+++++++<-]>+++.
<++[>-----<-]>---.
<++[>-----<-]>+.
<++++[>++++++++<-]>++.

Hm... Et c'est tout pour le moment. Je vais avoir le temps de brainfucker, je vous tiens au courant!

Vidéo de la Nuit Du Hack 2010

[ Partager : Partager sur Digg ]
Salutations!

Voici la vidéo résumant la nuit du hack de cette année :

Encore une fois, et, sans me répéter encore, Tres bonne soirée! Bien organisé, malgré la foule impénétrable s'agglutinant dans les salles de conférence, et l'absence de wifi la plupart du temps.

Surprise! Mes bras et mon PC (DooWeee) apparaissent sur la vidéo! J'étais alors entrain de bricoler mon framework graphique pour points d'accès, juste à coté de types qui tentaient de cracker une livebox (je ne leur ai été d'aucune aide... C'est frustrant ;) ) Et juste en face de moi, il y avait Korben (le brun/roux en polo rouge)

Voilà pour le deuxième post de la journée :)

Coder les fonctions usuelles des librairies standard du C

[ Partager : Partager sur Digg ]
Salutations.

Souvent, quand on est amené à manipuler de la mémoire en C, par exemple, lors que l'on a des chaines de caractères, ou que l'on doit analyser une structure "complexe" de données (images, etc...), on aimerait pouvoir résoudre de petits problèmes simples avec élégance... Si les librairies standard offrent de bons moyens de ne pas avoir à savoir coder, il est en revanche un constat accablant à faire: apprendre à bien coder éviteraient parfois de belles bourdes.

Je n'ai pas la prétention d'avoir des leçons a donner. Mais finalement, pourquoi ne pas diffuser un peut ce qui me semble utile?

Je propose donc de donner quelques exemples commentés de fonctions usuelles codées dans un style élégant, qui pourraient vous permettre d'enfin apprécier de faire un code découlant d'une logique implacable. Et le code logique et pur, c'est beau.

Strlen

strlen (string lenght) est une fonction définie dans le header de la librairie standard string.h, et ayant pour prototype "size_t strlen(const char *s);". Son role est de renvoyer la taille d'une chaine de caractères (nombres de caractères contenus dans la chaine). Une chaine correspond en réalité à un pointeur, donnant accès à une plage de caractères, et dont la fin est déterminée par un \0 (valeur à 0). Le pointeur donne l'emplacement mémoire du premier caractère de la chaine.

Comme je le disait plus haut, le C permet une manipulation de la mémoire très propre, et bien intégrée. On pourra donc coder notre fonction de strlen en utilisant les pointeurs et leur syntaxe:


/* (c)Tixlegeek 2010 - GPLv3  */
int strlen(char *str)
{
   int i=0;
   while(*(str+i)){i++;}
   return i;
}

Malgré qu'il puisse etre un peut intimidant pour les débutants (et c'est normal, ya des pointeurs :) ) on peut aisément l'expliquer et le comprendre:


int strlen(char *str)
{
   int i=0;   Déclaration de la variable i et initialisation à 0
   while(*(str+i)){i++}  Tant que la valeur *(str+i) (=valeur à l'adresse str+i) est supérieure à 0, on incrémente i.
   return i;   On est arrivé à un 0, on retourne donc la valeur de i, qui correspond au nombre de caracteres parcouru dans la boucle précédente.
}

ltrim

OOPS! L'ami Mathedit m'a fait remarqué à juste titre que ma fonction ne marchait pas! (je flagellerai ma chaire impure avec une courge molle ce soir, c'est promis) Et m'en a fait la démonstration. Je ne suis pas encore certain des circonstances du bug, mais à l'évidence, ca plante. Ce n'est que partie remise! Et merci à mathedit

Voilà. Ces deux fonctions permettent de comprendre un peut mieux l'utilité des pointeurs, et en quoi ils peuvent nous changer la vie. Ce ne sont que des exemples, mais le haut niveau n'empêche pas d'avoir à savoir programmer un minimum!

vendredi 23 juillet 2010

[Reverse engineering d'enseigne lumineuse] Idée pour la suite: la boite à lambert

[ Partager : Partager sur Digg ]

Salutations!

Je viens de recevoir mon nouveau programmateur de PIC, et suis en passe de le faire marcher sous GNU/Linux. J'ai donc commencé à m'intéresser sérieusement à ce que j'allais faire de l'enseigne lumineuse dont j'ai fait la description ce moi ci. Et j'ai eu une idée tres intéressante: La boite à lambert.

Tout est partit de cette vidéo:

Hohoho

Et donc j'ai trouvé ce dont j'avais besoin, l'entregistrement ultime, retravaillé à partir d'une vidéo de youtube, avec ffmpeg (extraction de la bande sonore) et Audacity (troncature et amélioration)

Je vais donc m'atteler à trouver un PIC en DIP8 avec un oscillateur interne, et une sortie PWM matérielle... Pour pouvoir envoyer le fichier ré-échantillonné dans la mémoire du chip. La PWM, un aop, et un condo feront le reste. Bref!

La suite au prochain épisode.

jeudi 22 juillet 2010

Un petit peu de PUB sur mon blog.

[ Partager : Partager sur Digg ]
Salutations!

Je me suis rendu compte que, mine de rien, mon petit Blog plaisait à quelque personnes. Et ça se traduit en particulier par une fréquentation de plus en plus soutenue. J'ai décidé de tenter deux expériences:

  • Installation d'un bandeau publicitaire en haut de page: Voir s'il me serait possible de financer l'entretien du blog (Hébergement, nom de domaine, sauvegarde) et/ou, quelque projets. J'essaye de faire en sorte que ça ne gêne pas la lecture, et que es lecteurs (vous =) ) ne soient pas agressés par des tracts religieux ou politiques. Entant qu'utilisateur, je sais à quel point c'est chiant.
  • Un bouton d'intégration facebook sur le site, et les articles: Si des gens aiment ce blog, j'aimerai le savoir. Je sais que beaucoup de personnes viennent voir mon blog, et qu'un bon tiers d'entre eux sont des "habitués". Mais connaitre vos opinons, ca m'intéresse, et je sais qu'on ne pense pas forcément à laisser un commentaire, ou qu'on en a pas forcément envie.
  • Voilà! Faites moi part de vos impressions en utilisant le boutton "j'aime", et n'hésitez pas à utiliser les bandeaux publicitaires!

dimanche 18 juillet 2010

Les Chips asiatiques

[ Partager : Partager sur Digg ]

Oui, comme tous les bidouilleurs, je suis une victime du système.

vendredi 9 juillet 2010

Reverse engineering: Les enseignes lumineuses : Contre temps ù__ù

[ Partager : Partager sur Digg ]
image

Je me suis rendu compte, hier, en avançant un peut dans mon reverse d'enseigne lumineuse, que mon programmateur de PIC chinois ne supportait pas les 12F508 !!!!!! et ce, même après quelques modifications... J'en ai commandé un autre pour voir, espérons que je ne sois pas obligé de tout bonnement changer le µC pour une version mieux supportée u___u...

Mais je crois avoir réussi à dumper le firmware, vous en saurez plus d'ici quelques jours!

vendredi 2 juillet 2010

Interlude musical

[ Partager : Partager sur Digg ]

Aujourd'hui, un ptit peut de musique pour se détendre, et oublier la chaleur torride de cet été de montagnard. Waaaahaannnn, black betty!!!! bam a lam...

mardi 29 juin 2010

Reverse engineering: Les enseignes lumineuses

[ Partager : Partager sur Digg ]
Mesdames messieurs, bonsoir.

Depuis ma plus tendre enfance, je ne peux m'empêcher de récupérer toute sorte de bidules électroniques... Que ce soit pour voir ce que ces trucs contiennent, pour récupérer des pièces, ou juste pour en faire autre chose. Du coup, j'hérite souvent par le biais de ma môman, de petits bidules publicitaires, et d'autre trucs sympas (oui, j'ai la vingtaine) en provenance des commerçants du coins (j'ai souvenir d'un énorme écriteau publicitaire comportant 90 LED bleues HL, un vrai bonheur).

Malheureusement, ces petits bidules sont en général tout juste bon à être démantibulés. Leur petits µC "goutte noire" ne permettant pas, en général, de les reprogrammer, ou de les utiliser très intelligemment. Dommage!

Mais hier, un bidule un peut particulier m'est arrivé entre les mains (encore môman). Ce n'était pas qu'un simple bidule clignottant. Non. Ce bidule la, aspirait à devenir bien plus! En regardant l'électronique de plus près, mon sang n'a fait qu'un tour.

Un gros µC en DIP8 en plein milieu! Mais, qu'est-ce? Un double AOP monté en intégrateur pour faire varier la luminosité des LEDs? Probablement pas... Les LEDs clignottent quand on les bouge rapidement, ce qui induit l'utilisation d'un rapport cyclique. Il faudrait au moins 3 AOP pour faire ca en analog, et en DIP8, c'est impensable... Qu'est-ce donc alors? *prends ses yeux macros* MAIS C'EST UN PIC!!!!

Et oui, un PIC, qui l'eu crû? Pas moi en tous les cas. Ma premiere réaction fût de regarder s'il s'agissait d'un modèle ré-inscriptible (xxFxx).. Et bien, croyez le ou non, mais, oui... Et alors? REVERSIIIIIIING!

Le PIC est un 12f508 (que je ne connaissait pas). Il est entouré de deux résistances, un condo, un transistor. Les évidences à en tirer sont donc :

  • Le 12F508 doit disposer d'un oscillateur interne (bon point)
  • Le transistor est controlé par la seule sortie câblée du PIC, et sert sans doutes à driver les LEDs
  • Le condo est une capa de découplage
  • Le circuit est gros, je vais pouvoir souder pleins de fils comme un gros goret.

Toutes ces conclusions de premier abord sont confirmées et précisées par la datasheet du PIC. L'oscillateur interne est à 4mhz. On remarque aussi, sur le PCB, l'URL du site du fabriquant: Led.de.
Il va maintenant être temps de dresser le schéma de la carte. Je l'ai fait en intégralité puis-ce qu'elle n'est pas très compliquée. puis, ça va m'être utile pour câbler un ICSP propre par la suite, et tirer les sorties.

On ne peut plus simple. On remarque surtout que si l'on veut reprogrammer cette petite platine, on à plusieurs solutions:

  • Retirer le PIC, le reprogrammer, le remettre en place (et recommencer à chaque programmation --> chiant et nul)
  • Cabler un port ICSP pour le reprogrammer in-situ, et conserver toute l'intégrité du bordel. (sympa et cool =) )
  • Lui faire le coup du micro onde chamanique (n.b. je viens de l'inventer, n'essayez pas)
Comme tout bon gros geek qui se respecte, je choisis la manière belle et cool (ICSP). En plus, avec des jolis fils de toutes les couleurs, ça aura fier allure, et je pourrai me la péter.

Voilà donc ce que va me donner le cablage ICSP :

Et, déjà, là, ça a de la gueule (croyez le, s'il vous plait)

La suite: Quand je serai retourné chez moi, et que j'aurai récupéré mon fer à souder et mon programmateur de PIC. See you next week!

vendredi 25 juin 2010

(Ré)Capitulatif de mes projets

[ Partager : Partager sur Digg ]
Salutations.

J'ai décidé de faire une note pour parler des projets sur lesquels je bosse, pour ensuite les développer un par un au fil du temps que j'y mettrai. En effet, la note précédente, sur la nuit du hack, m'a fait prendre conscience que je ne parlais pas d'une grosse partie des trucs que je bidouille dans moi coin, sur un coup de tête, ou juste en silence!

  • Librairies pour systèmes embarqués GNU/Linux

    Ensemble de librairies pour l'exploitation de systemes embarqués. Nottament, déjà fonctionnelle: Librairie graphique bas-niveau (buffer & sauvegarde, association, restitution, construction, etc...)

  • Robot WiFi

    Un projet déjà réalisé, mais qui à la suite d'une démonstration foireuse, est à reprendre. Sur la base d'un point d'accès sous OpenWRT, il était, de son temps, capable d'etre dirigé avec un PC, un ipod, ou un smartphone, à une distance d'une centaine de mètres.

    Il utilisait aussi, notamment, une plateforme de prototypage Jeenode, un double pont en H à transistors bipolaires récupéré je ne sais ou, et divers autres bêtises du genre. Mais l'alim à crâmé u____u

  • Développement du concept de robots biomorphes

    Trouver des solution efficace visant à pousser le mimétisme au delà de la traditionnelle robotique beam, avec utilisation de cellules micro-contrôlées en réseau.

  • Interpréteur BASIC-like

    Sous-projet faisant partie du développement de robots biomorphiques...

  • RPG "Monopoly" multijoueur et extensible

    Un genre de mixe entre le Monopoly,Super Mario, et Diablo.

Hm, et pleins d'autres projets bien moins officiels. Voilà!

jeudi 24 juin 2010

2+2=5

[ Partager : Partager sur Digg ]
Salutations

Soit M$ à décidé de faire de l'humour, soit Goebbels à pris en main leur communication:

dimanche 20 juin 2010

#Nuit Du Hack 2010

[ Partager : Partager sur Digg ]
Salutations!
Nuit du hack 2010

De retour du la nuit du hack session 2010! Apres une nuit blanche, quelque demi-litres de bière, quelque tasses de café, et de bonnes rencontres. Au programme:

HoraireTrack 1Track 2
17h00 - 17h30 La révélation des failles de sécurité, risques et enjeux (Jérome Hennecart / Raphael Rault) Malwares pour Unix : étude et poc (Julien Reveret)
17h45 - 18h15 La révélation des failles de sécurité, risques et enjeux II
(Laurence Foraud / Philipe Joliot)
XeeK : XSS Easy Exploitation Kernel (Emilien Girault)
18h30 - 19h00 Evolution IT (Gael THEROND) GPGPU et ses implications sur la sécurité des systèmes de chiffrement (Lucas Fernandez)
19h15 - 19h45 HZVault (Majinboo) La sécurité antivirale est un échec (Stefan Leberre)
20h - 21h Cracking the Playstation 3 (GeoHotz)
21h15 - 21h45 Xdbg, un désassembleur et débogueur open-source (Christophe Devine) Virtualisation & Sécurité (Emanuel Istace)
22h - 23h Analyse avancée de la mémoire physique de Mac OS X (Matthieu Suiche)
23h15 - 23h45 Stack Smashing Protector (Paul Rascagneres - RootBSD) Techniques d'ouverture de serrure avancées(Cocolitos / Mr. Jack)
En provenance de http://www.nuitduhack.com

Et bien entendu le tournage de "La grotte du barbu E00S03", par Babozor =)
Très sympathique en quelque sorte!

En ce qui concerne l'ambiance, il faudrait imaginer 500 geekz et leurs laptops entassés un bateau de trois étages. Certains bricolent dans leur coins, et montrent un petit peut ce qu'ils font (à ce propos, je me suis rendu compte que je ne parlais pour ainsi dire aucunement de mes travaux dans le domaine de l'embarqué, j'en ai profité pour corrigé ça :)), d'autres présentaient officiellement de sympathiques ateliers, d'autre discutaient entre Geekz, tout simplement, et, bien entendu, le parallèle vivant de la loi de godwin appliquée aux Noobz qui voient un hacker bidouiller: "Ha! Alors? On hack le Wi-Fi?" ...

Des conférences de qualité, des challenges corsés, des coûts de consommations raisonnables, une organisation bien foutue... Tres bonne rencontre! Et, vivement l'année prochaine :)

vendredi 18 juin 2010

Découvre la grotte du barbu

[ Partager : Partager sur Digg ]
Salutations!

En début de semaine, en me balladant sur le programme de la NuitDuHack, je suis tombé sur un lien sympa comme tout: La grotte du barbu.


Entrer dans la grotte!

La grotte du barbu, c'est une série de Podcasts réalisés par Babozor, et ou il présente régulièrement de petits "Hacks". Sympa comme tout dis-je! Tout est laissé spontanément. Les petites erreurs, les fails... Et toujours dans la bonne humeur! Une approche très simple qui rebutera peut être les plus aguerri des bidouilleurs... Mais c'est toujours très sympa. Je me suis fait les deux dernières saisons en marathon. Mangez en!

dimanche 6 juin 2010

Recherche d'emploi pour les vacances!

[ Partager : Partager sur Digg ]
Salutations!

Je viens juste de bricoler une petite barre de menu juste sous le header de mon blog. On peut y voir des liens vers les projets auxquel je participe, mais également un onglet "Mon CV"

Treve de bavardage! il sagit de mon CV. (et oui, qui l'eu crû?) Et je suis actuellement à la recherche d'un emploi pour meubler le mois de juillet de cette année. Je suis ouvert à toute propositions. Je peux me déplacer dans la région Jurassienne, dans le Doubs, et aux alentours de Paris. Je peux donner des cours ou assurer un soutien scolaire dans mes domaines de prédilection.

Vous pouvez, si mes services vous intéressent, me contacter par mail ou par l'intermédiaire de ce billet (commentaires). En espérant avoir de bonnes nouvelles sous peu!

Creative Commons License
Les travaux signés "Tixlegeek" by DUBIEF Gery sont mis à disposition selon les termes de la licence Creative Commons Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France.

Pour toute modifications apportées, merci de mentionner l'auteur d'origine, et l'adresse de ce blog.