Musique recyclée…

Désolé je suis un peu loin de mon blog en ce moment. Entre quelques jours de repos, les conférences qui reprennent et le travail, il ne me reste plus beaucoup de temps même pour l’alimenter ;(

Musique recyclée

Si vous avez 6 minutes à perdre, je vous invite cependant à aller faire un tour sur YouTube pour écouter Bohemian Rapsody (Queen) en version pour le moins insolite :

Pas mal, non ?

C’est fou ce qu’on peut faire avec « simplement » (il faut déjà avoir ces pièces de musée inestimables sous la main…) :

et pas mal de patience et de connaissances en électronique et en programmation !!! Tiens, ca me rappelle une certaine RUMP Session du SSTIC il y a quelques années… Et en parlant du loup…

SSTIC 2009 épreuve de rétroconception

Et pour ceux et celles qui se passionnent pour le Reverse Engineering (rétroconception en français), je vous conseille d’aller vous frotter à l’épreuve concoctée à l’occasion du SSTIC 2009. C’est du beau boulot, j’ai jeté un coup d’oeil vite fait mais je n’aurai pas le temps d’aller tres loin. Le peu que j’ai trouvé est que ça parle de noyau Linux, de cuisiniers chinois, de foultitude de sous-routines qui font des opérations booléennes sur des valeurs diverses pour bien embrouiller le reverser, ou qui tapent directement dans le contrôleur d’interuptions, et de sous-routines de calcul qui attendent au final un code de 16 caractère et qui écrivent « FAIL » à l’écran en ascii-art si ce n’est pas bon. Ca m’a l’air sympa mais vu le nombre de routines qui doivent être reversées, je ne me vois pas y passer mes nuits. Hop, un (tout) petit bout du code C reconstitué. Merci Hex-Rays !

sub_2016A1();

v1 = sub_20162F();

sub_201826(v1);

sub_201868(91);

__asm { mov eax, cr4 }

v16 = _EAX;

v17 = _EAX;

vcaractere = sub_20163E() + 16;

v19 = sub_20162F();

validechar((int)&dword_2E111C, (int)&vcaractere, (int)&v19, 0, 0);

_DX = 33;

__asm { in al, dx ; Interrupt controller, 8259A. }

v20 = _AL;

_AL |= 1u;

_DX = 33;

__asm { out dx, al ; Interrupt controller, 8259A. }

while ( 1 )

{

_DX = 100;

__asm { in al, dx ; AT Keyboard controller 8042. }

v22 = _AL;

if ( !(_AL & 1) )

break;

_DX = 96;

__asm { in al, dx ; AT Keyboard controller 8042. }

v21 = _AL;

}

stringlength = 0;

while ( 1 )

{

v10 = read_keyboard(); // Saisie du caractere suivant

vcaractere = v10;

if ( v10 == ‘\n’ ) // Entrée. On arrête.

break;

if ( stringlength <= 15u ) // Tant que moins de 15 lettres, on continue.

{

if ( vcaractere > (unsigned __int8)‘ ‘ ) // Caractere Espace ou plus

{

if ( vcaractere <= (unsigned __int8)‘~’ ) // Caractere 0x127 ou moins

{

inputstring[stringlength++] = vcaractere;

sub_201868((char)vcaractere);

}

}

}

}

_DX = 33;

__asm { in al, dx ; Interrupt controller, 8259A. }

v25 = _AL;

_AL &= 0xFEu;

_DX = 33;

__asm { out dx, al ; Interrupt controller, 8259A. }

sub_200DE4(inputstring, stringlength);

if ( vcaractere <= 0x40u || vcaractere > 0x5Au )

LOBYTE(v17) = v17 | 0x80;

else

LOBYTE(v17) = v17 & 0x7F;

_EAX = v17;

__asm { mov cr4, eax }

sub_2016D2(11);

return sub_200B94(inputstring, stringlength);

Et à bientôt pour un prochain épisode…

Comments

Comment by miib on 2009-05-04 13:22:50 +0200

excellent… je me dis que mon imprimante DMP 2160 peut reprendre du service entre les mains d’un musicien et notamment d’un métalleux pour la rythmique 😉

Comment by pasgeek on 2009-05-04 14:58:04 +0200

le mec qui a que ca a foutre lol , mais je sais comment recycler mon imprimantes matricielles maintenant 🙂

Comment by Didier Guillion on 2009-05-10 17:05:48 +0200

Ahah!

Ca me rappelle les petits malins qui faisaient jouer « God Save the Queen » au lecteur de disquette du Commodore 64 en faisant vibrer la tête de lecture.

Un grand moment.

Cordialement

Comment by Bruno Kerouanton on 2009-05-11 01:41:17 +0200

Ohh ! Voilà que mon « fan » vient lire et écrire sur mon blog ! Chouette 😉 Et oui, je vous rappelle au cas ou vous n’auriez pas lu tout mon blog (!) que mon premier logiciel que je me sois offert a été « Sapiens », sur Thomson MO5 sur K7, puis Atari ST sur disquette, et conçu par Didier et Olivier Guillion. J’étais tellement fan que j’ai ensuite acheté leurs autres jeux sur ST : Salmo, La vie du Lac (deux ludo-éducatifs), ou encore Albedo (dont la protection était… intéressante). Ah et j’oubliais 5ème axe, l’un des premiers jeux sur MO5 (pas acheté, cette fois-ci).

Les plus de Sapiens sur MO5 ? La routine de chargement K7 qui m’avait tellement intrigué(on tapait « LOADM » et le jeu se chargeait tout seul avec son propre loader, alors que normalement il fallait taper « RUN »), que c’est la raison pour laquelle je me suis mis à l’assembleur 6809… et que j’ai fait mes premiers pas en rétroconception ; et la musique de Gilles Soulet, même sur MO5 qui était monovoie rendait bien. Et sur la version Atari, l’utilisation du changement de résolution et de palette sur une partie de l’écran en utilisant les HBL sans être perturbé par les interruptions souris, ainsi que la musique Midi et YM 3 voies m’avaient *vraiment* impressionnés, et là c’est l’assembleur 68000 qui m’a livré ses secrets ! Encore une fois merci pour ces grands moments sans lesquels je ne serai pas rendu à faire mon boulot actuel … comme quoi un jeu peut changer une vie !