unix4fun

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 26 août 2009

Des états de branche dans ta couverture GCC

Ce billet:

  • parle en bien de sqlite
  • explique la différence entre un programme sure et fiable
  • digère la page d'explication de test de sqlite, a lire pour les passionés de TDD
  • explique les branches et les états de ton code et comment utiliser GCC pour évaluer le taux de couverture

Bref une bonne petite leçon d'analyse de code pour testage efficace.

Source

vendredi 21 août 2009

et si pour cette fin de vacances, on explorait à l'envers l'univers des binaires

L'été sera chaud, l'été sera chaud, tellement chaud qu'on va se rappeler le kit de survie de l'unxien pour réaliser l'exploration de binaire. So, re en veux-tu, en voilà.

On commence par les trucs de bases gdb, objdump, readelf, elfdump, etc puis on s'attadera sur une suite ddd (le front end à gdb), kcachegrind (utile pour recomposer les call graphs), biew, xxd, od, hexedit (pour l'édition hexadécimale) et pour finir sur l'outil radare qui fait tout à la fois avec même des possiblités de scripting.

Et puis ici, une petite liste sympa des opcodes des caractères imprimables x86 et x64. Ah au fait un concept intéressant c'est les WAF, ca se passe ici.

A plus, en tongue sur la plage ;)

y a pas de driver, mgrlgmrlb que faire salete de $#@!$#@!

wai toujours pareil, un type (poilu) il s'ennuie et il a un clavier drole, mais qui ne marche que sous win32, alors il se dit bon je vais reverser ce $#@!$#@! de driver win32 et faire un driver open avec... gentil et poilu le monsieur, il explique ce qu il a fait ici:

comme quoi c'est accessible a n'importe qui, meme a des tubbes comme moi... nom de dieu!$#@!$@! :)

mercredi 12 août 2009

Une petite piqûre d'hér... de rappel.

Bon ben je sais pas pour vous, mais j'ai toujours fait des trucs moches genre :


void
sighandler_foo(int nsig)
{
   printf("Signal %d caught.  Exiting.\n", nsig);
   exit(EXIT_SUCCESS);
}

J'ai schématisé, mais l'idée est là. Bah en fait faut surtout pas écrire cette horreur. Là, normalement vous me pointez du doigt en riant très fort, et je deviens rouge de honte. Mais j'ai vaincu ma peur du ridicule, et je le clame : oui ! je suis une bille !

Sinon, pour ceux qui ne savent pas, en fait j'ai appris ça en lisant un post de Solar Designer sur nmap-dev, qui expliquait par le menu pourquoi c'est super crappy :

Après avoir vérifié, rien de tout ça n'est écrit dans signal(2) sur ma machine (Linux), mais c'est très clair dans le man OpenBSD, en revanche.

HTH.

UNIX c'est bon comme un taboule garbit!

C'est les vacances, du coup moins de posts, ca glandouille/bronze sec, du temps pour reflechir, penser, coder, philosopher, etc..
Alors je partage quelques modestes liens qui m'ont marques, interesses et/ou influences:

Rootless Root:

Pour celui (ceux) qui aime(nt) la confiture et l'etaler regulierement:

Et j'en rajoute une du patriarche (Ken) Thompson:

  • "When in doubt, use brute force!"

Voila une bonne dose de flan avant de dormir, enjoy!

samedi 18 juillet 2009

fait ton propre kit d'espion du 21eme cyber siecle de la cyber armee du commandement ultra internet connecte

Et voila un truc drole, une boite qui a release les plans pour fabriquer/bricoler son propre "keylogger wireless", c'etait drole alors je me suis dit que j'allais "newser".

c'est par ici

Enjoy!

mardi 30 juin 2009

de paquets pour jouer et des tools pour faker

Tel un agent du FB^WWW, tu as en ta possession des informations critiques à ne pas divulger sur tes machines scellées au niveau -42.

Cependant, pour tes analyses à postériori, tu dois mettre à disposition les traces des connexions que tu as relevé. Mais tu sais pertinemment que dans ces traces se trouvent des infos hautement sensibles.

Tu te tournes alors vers l'anonymisation des traces afin de transmettre tes journaux sans aucune anxièté. Et pour cela, tu as à ta disposition les outils

Limite, ca te fait kiffer alors tu joues de plus en plus et même tu te documentes

samedi 20 juin 2009

un week end de glande, netbsd, un macmini..

J'ai recu un mac mini et j'ai installe un NetBSD dessus, comme c'est un tout petit peu different, voici quelques liens qui peuvent etre utiles a d'autres :

Alors comme c'est relou de compiler sur un truc pareil et que netbsd te permet de cross compiler sans effort, voila deux ligne de plus:

# ./build.sh -m macppc -T tooldir.NetBSD-5.0_STABLE-macppc tools
# ./build.sh -m macppc -T tooldir.NetBSD-5.0_STABLE-macppc kernel=GENERIC

et pratiques, au moins ca traine pas sur mon laptop de compet multicore avec une hotte et des plaques a inductions integree..

et voila la bete:

capsule# uname -a
NetBSD capsule.unix4fun.net 5.0 NetBSD 5.0 (GENERIC) #0: Sun Apr 26 22:53:55 UTC 2009  builds@b4.netbsd.org:/home/builds/ab/netbsd-5-0-RELEASE/
macppc/200904260229Z-obj/home/builds/ab/netbsd-5-0-RELEASE/src/sys/arch/macppc/compile/GENERIC macppc
capsule#

me reste juste a cross compiler qqes package!

lundi 15 juin 2009

du bon gros vrai hack!

TERRIBLE!

C'est rafraichissant, enfin un bon gros "hacker" oldschool avec un bon gros vrai hack bien classieux et poilu...pas de la branlette de shellcode ou je ne sais quoi..

Bordel je trippe en voyant ca... y a des mecs qui s'amusent encore avec autre chose dans la tete que monter les marches du festival de cannes, ca fait du bien!!!

mercredi 10 juin 2009

le code c'est comme une barbie ca s'entretient, ca se coiffe, on lui achete un mobilum, on la maquille, on lui trouve un boulet, etc...

Un peu de bla et une tres courte discussion sur "monitorer" la memoire d'un process et ca derive sur le profiling, les call-graphs etc... et de tout ca qqes liens interessants:

enjoy!

samedi 30 mai 2009

Intel rajoute de la mozarella dans ses proc...

Je me balladais tranquille, en week end et je suis tombe sur le lien suivant:

moi>Intel AES instruction set support?! hu?! depuis quand?!?!

J'ai vite lu la doc et j'ai voulu voir si mon CPU tout recent supportais cette joyeusete, Intel file du code, mais ca compilait pas direct alors j'ai vite refait tout simple..:

#include <stdio.h>
#include <unistd.h>

int chk_cpu_aes_support() {
    unsigned int rc;
    asm ("mov $0x01, %%eax\n\t"
         "cpuid\n\t"
         "mov %%ecx, %0\n\t"
         :"=r"(rc)
         : /* no inputs */
         :"%ecx", "%eax"
        );
    return (rc & 0x2000000);
}

/* ORIGINAL INTEL CODE.
int Check_CPU_support_AES() {
#if defined(__INTEL_COMPILER)
    int CPUInfo[4] = { -1 };
    __cpuid(CPUInfo, 1);
    return (CPUInfo[2] & 0x2000000);
#else
    unsigned int a=1,b,c,d;
    __cpuid(1, a,b,c,d);
    return (c & 0x2000000);
#endif
}
*/

int main(int argc, char ** argv)
{
    fprintf(stdout, "%08x(%d)\n", chk_cpu_aes_support(), chk_cpu_aes_support());
    return 0;
}

Et tristesse...:

$ ./intelaesdetect
00000000 (0)

  • sniff*...

si qqun a un resultat "positif" n'hesitez pas a _COMMENTER_ juste que je sache quel series est capable de faire ca..

vendredi 22 mai 2009

RUMP non ca n'est PAS le nom des nouveaux batonnets findus!

Non, non et non, pas findus, c'est un nouveau (en tout cas pour moi) concept introduit dans NetBSD qui permet d' "externaliser" en userspace des elements kernelspace de maniere (dixit) "simple", en gros RUMP (c'est son nom) vous permet de "runner" certains des call/fonctions/syscalls kernelspace depuis la librump plutot que d'appeler le kernel, ca semble necessiter de recoder le dit appel dans la librump, rump semble donne un access plus direct a certaines partie du kernel vous laissant la liberte de traiter la majorite du code de controle en userland, je vais faire joujou et lire le code pour "tenter" de comprendre le fonctionnement, mais c'est interessant, je me demande si ca sent pas l'envie de faire un microkernel a long terme ca...

mercredi 13 mai 2009

salade, tomates, oignons, sauce rouge, sauce blanche?!

A l'epoque j'ai fantasme sur un NAS NetBSD a base de HW RAID (ou du RAIDframe) et de cgd le tout en sfs, nfs, cifs etc...

un petit NAS maison, avec du hotplug tout ca, les finances n'etaient pas terribles a l'epoque alors j'ai laisse tomber...

Aujourd'hui je me demande comment refaire le coup, j'ai bien reflechis a Solaris X ou OpenSolaris mais bon niveau empreinte memoire,

je cite: "c'est sympa Solaris, mais qu'est ce que ca suce..." et c'est clair qu'il suce, j'apprends petit a petit a domestiquer le "biniou" (c) et avec ZFS y a quand meme un joli fantasme...

En cherchouillant un peu je suis tombe sur les deux projets suivants:

En gros, des gens (bravo messieurs) qui se sont dit, on va gzip, bzip (ou soyons fou, soyons jeune, soyons mode) xz une installation et son empreinte memoire afin que ca puisse de "runner"sur du "petit" matos.

Ca a l'air sympa, le monsieur arrive a faire tenir un OpenSolaris sur 50 MB avec ZFS/NFS/SAMBA et l'admin qui faut pour runner ca...

Ca m'a fait tout chose, il ne me reste plus qu'a patienter (ou participer pour ceux qui ont du temps libre) pour que ca:

soit enfin stable et puisse encrypter le root pool. a suivre!!

mardi 12 mai 2009

DOS 1.0 et le reversing du... mardi midi.

Bon ben il a remis le couvert, le bougre. Cette fois, il explique comment fonctionne l'intéraction avec le matériel, via une bibliothèque d'abstration (comment discuter avec le port série, etc).

Le lien, c'est par ici.

Enjoy.

jeudi 7 mai 2009

DOS 1.0 et le reversing du dimanche matin!

Le soleil vient de se lever,

Encore une belle journée,

et il va bientôt arriver,

l'ami Ricoré !

Tuluuuuulululululutulutuut

Un joli debut de post d'un type sympa qui reverse des programmes "pour le plaisir" le dimanche!
Marrant a lire, sympa pour demarrer son p'tit bout d'OS dans son coin, c'est un peu comme deterrer des momies on apprends pleins de choses!

mardi 5 mai 2009

le botnet qui boite!

Ca pourrait etre un WEF, mais on est pas en week end alors ca sera juste un lien, un paper sympathique d'une equipe de recherche qui a "takeover" un botnet, marrant a lire!

ca se passe ici.

++

mercredi 22 avril 2009

ca arrive toujours avant de se coucher....

ca arrive toujours avant de se coucher.... eh merde..

putain!

si ca se trouve c'est hyper connu.. je suis juste passe a cote..

bonne nuit..

hint: n'allez pas fouillez les autres sections..

[...]

trop tard...

SXCE tun/tap et quelques champignons s'il vous plait!

J'ai besoin d'openvpn et le tun(7M) c'est pas vraiment ce que je pensais etre un device tun... Alors apres avoir joue avec tun(7M) pour constater que j'avais pas ce que je voulais, j'ai un peu cherche et voila vite fait un ptit resume...

D'abord un "tutorial" etape par etape pour l'installation d'OpenVPN avec OpenSolaris... bon ok faut un driver tuntap "externe", mais bon...

Ensuite on rencontre des tites merdes genre :

# make install
ld -64 -r -o tun tun.o
ld -64 -r -o tap tap.o
/usr/bin/ginstall -c -m 644 -o root -g root if_tun.h /usr/include/net 
/usr/bin/ginstall -c -m 644 -o root -g root tun /usr/kernel/drv/amd64
/usr/bin/ginstall -c -m 644 -o root -g root tap /usr/kernel/drv/amd64
/usr/bin/ginstall -c -m 644 -o root -g root tun.conf /usr/kernel/drv
/usr/bin/ginstall -c -m 644 -o root -g root tap.conf /usr/kernel/drv
/usr/sbin/rem_drv tun >/dev/null 2>&1
/usr/sbin/rem_drv tap >/dev/null 2>&1
/usr/sbin/add_drv tun   
devfsadm: driver failed to attach: tun
Warning: Driver (tun) successfully added to system but failed to attach
/usr/sbin/add_drv tap
devfsadm: driver failed to attach: tap
Warning: Driver (tap) successfully added to system but failed to attach

et GnaGNAGnagnagnaGnaAGnA!!

Apr 22 00:16:45 deep genunix: [ID 370954 kern.notice] symbol tun_ppa: 
Apr 22 00:16:45 deep genunix: [ID 780480 kern.notice] value 0xffffffffc0347950 does not fit
Apr 22 00:16:45 deep genunix: [ID 286029 kern.notice] relocation error: R_AMD64_32: 
Apr 22 00:16:45 deep genunix: [ID 720415 kern.notice] file /usr/kernel/drv/amd64/tap: 
Apr 22 00:16:45 deep genunix: [ID 370954 kern.notice] symbol tun_ppa: 
Apr 22 00:16:45 deep genunix: [ID 780480 kern.notice] value 0xffffffffc0347950 does not fit
Apr 22 00:16:45 deep genunix: [ID 286029 kern.notice] relocation error: R_AMD64_32: 
Apr 22 00:16:45 deep genunix: [ID 720415 kern.notice] file /usr/kernel/drv/amd64/tap: 
Apr 22 00:16:45 deep genunix: [ID 370954 kern.notice] symbol tun_ppa: 
Apr 22 00:16:45 deep genunix: [ID 780480 kern.notice] value 0xffffffffc0347950 does not fit
Apr 22 00:16:45 deep genunix: [ID 399259 kern.notice] do_relocations: /usr/kernel/drv/amd64/tap do_relocate failed
Apr 22 00:16:45 deep genunix: [ID 603676 kern.notice] tap error doing relocations
Apr 22 00:20:52 deep genunix: [ID 286029 kern.notice] relocation error: R_AMD64_32: 
Apr 22 00:20:52 deep genunix: [ID 720415 kern.notice] file /platform/i86pc/kernel/drv/amd64/tun: 
Apr 22 00:20:52 deep genunix: [ID 370954 kern.notice] symbol : 
Apr 22 00:20:52 deep genunix: [ID 780480 kern.notice] value 0xfffffffff82ee590 does not fit
Apr 22 00:20:52 deep genunix: [ID 286029 kern.notice] relocation error: R_AMD64_32: 
Apr 22 00:20:52 deep genunix: [ID 720415 kern.notice] file /platform/i86pc/kernel/drv/amd64/tun: 
Apr 22 00:20:52 deep genunix: [ID 370954 kern.notice] symbol tun_ppa: 

Bon hop hop on prends son cerveau, on tente de l'allumer (il est a peu pres minuit...).. apres etre passe par la, puis la...

j'ai finalement abouti ICI et la houra!

J'ai modifie qqes details dans le Makefile du driver Tun/Tap "externe" vite fait... Makefile:

[...]
CC = cc
LD = ld

DEFS = -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DTUN_VER=\"1.1\ 04/22/2009\"
CFLAGS = $(DEFS) -O2 -D_KERNEL -I. -m64 -xmodel=kernel

ADD_DRV = /usr/sbin/add_drv
REM_DRV = /usr/sbin/rem_drv
DRV_DIR = /usr/kernel/drv/amd64
DRV_CONF_DIR = /usr/kernel/drv
[...]

et on dit merci a -xmodel=kernel..

au passage je suis tombe sur ces deux choses aussi..

Et c'est apres m'etre pris la tete 20 minutes ( alors que je suis une grosse feignasse...) que je vois que qqun avait aussi resolu le 'blem ici

au final on finit par avoir:

Apr 22 00:37:52 deep tun: [ID 654686 kern.notice] Universal TUN/TAP device driver ver 1.1 04/22/2009 (C) 1999-2000 Maxim Krasnyansky
Apr 22 00:37:52 deep pcplusmp: [ID 805372 kern.info] pcplusmp: ide (ata) instance 1 irq 0xf vector 0x44 ioapic 0x8 intin 0xf is bound to cpu 1
Apr 22 00:37:52 deep pseudo: [ID 129642 kern.info] pseudo-device: tun0
Apr 22 00:37:52 deep genunix: [ID 936769 kern.info] tun0 is /pseudo/tun@0
Apr 22 00:37:53 deep tap: [ID 654686 kern.notice] Universal TUN/TAP device driver ver 1.1 04/22/2009 (C) 1999-2000 Maxim Krasnyansky
Apr 22 00:37:53 deep pcplusmp: [ID 805372 kern.info] pcplusmp: ide (ata) instance 1 irq 0xf vector 0x44 ioapic 0x8 intin 0xf is bound to cpu 0
Apr 22 00:37:53 deep pseudo: [ID 129642 kern.info] pseudo-device: tap0
Apr 22 00:37:53 deep genunix: [ID 936769 kern.info] tap0 is /pseudo/tap@0

youpi.

NB: j'utilise le compilo sun.

lundi 20 avril 2009

OpenSolaris c'est bon comme des pates aux jambon

Alors voila, j'etais en b104, j'ai decide de tenter la premiere methode d'upgrade pour SXCE aka "liveupgrade"

J'ai suivi betement des instructions que de gentilles personnes ont ecrites (comme un bon mouton!), genre:

Ca a marche du premier coup...*blaze*...

mais bon petit suspense au reboot, plus d'opengl, plus de "desktop effects", donc plus de compiz-pour-brancher-les-filles-quand-elles-viennent-chez-toi... du coup, j'ai vu ca et la COUP DE THEATRE:

# svccfg -s application/opengl/ogl-select setprop options/vendor=nvidia
# svcadm restart application/opengl/ogl-select
# reboot

et au reboot, opengl etait revenu!!! la raison est expliquee ici

voila now:

[3] eau@deep:~ 
$ uname -a
SunOS deep 5.11 snv_112 i86pc i386 i86pc

Et le tour est joue (merci google!), alors comme je sais qu'il y a bcp de moutons comme moi, si ca peut aider!

jeudi 9 avril 2009

base32 c'est bon comme la saucisse de george!

J'avais besoin d'un base32, alors hop une implementation "vite fait" (*bruit-de-sac-poubelle*) de base32.

Bordel j'ai galere comme un pouilleux pour faire ca!; un peu comme quand on pousse une crotte trop grosse.

C'est pourtant pas dur...bref la honte et je la partage avec vous.

base32.c

feedback, correction, bugs, welcome...

- page 2 de 9 -