rtfm

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

mardi, juillet 15 2008

CFP Entropie !

Entropie #1 : appel à contribution

WAR IS PEACE FREEDOM IS SLAVERY IGNORANCE IS STRENGTH —George Orwell, 1984

When the calling finally comes Will there be no one waiting? —VNV Nation, Entropy

Matter is illusion, energy is illusion, we are illusion. Only Chaos is real. —Heldon, Only Chaos is Real

Métabolismes mutants, technologies dévoyées, sciences dégénérées, voici notre monde. Individus noyés dans la masse aux espoirs broyés par un système totalitaire face auquel toute résistance est futile, voici notre vie.

Notre combat n’est pas celui d’une utopie aux lendemains qui chantent, mais celui de la survie. Nous sommes plus que jamais conscients que le dernier combat à livrer concerne l’Information, car comme l’avaient prédit un certain nombre de cerveaux clairvoyants réunis sous l’étiquette cyberpunk nous ne pourrons survivre qu’en restant anonyme tout en constituant des bibliothèques d’urgence, contenant des savoirs philosophiques, artistiques, et technologies afin d’échapper tant bien que mal au rouleau-compresseur du système, qui ne tolère ni l’intelligence ni la culture, et tire toute sa force de l’ignorance généralisée dans laquelle se complaît une humanité déshumanisée.

C’est dans cette perspective Nietzschéenne, et en prenant appui sur plus d’un demi-siècle de contre-culture souterraine, que le magazine électronique underground Entropie appelle tout individu encore capable de mériter d’être qualifié d’homme libre à contribuer à l’accomplissement de ce projet que nous pensons juste, en proposant des articles en vue de la parution, prévue pour cet automne, du premier numéro.

Le magazine électronique underground Entropie, édité par le groupe DegenereScience, publiera tout article ayant trait à la contre-culture underground du hacking.

Nous ne cherchons pas à être un magazine de hackers, et nous pensons que la pluridisciplinarité et l’ouverture d’esprit sont des forces sur lesquelles il faut prendre appui. En particulier, il est hors de question qu’Entropie se limite à n’être qu’une compilation d’articles techniques disparates. Il est pour nous essentiel que le magazine forme un tout, un bloc, afin qu’il puisse servir d’arme contre-culturelle face au totalitarisme ambiant. Nous appelons donc toute personne intéressée à se manifester et à nous faire parvenir toute contribution d’ordre métaphysique, politique, artistique, littéraire, et bien entendu technique. A seul titre d’exemple, voici une liste non-exhaustive de sujets intéressants pour nous :

   * hacking : exploitation de failles en espace utilisateur et/ou en espace noyau
   * hacking : technologies permettant de conserver l’accès à un système compromis, en espace utilisateur ou en espace noyau (rootkits)
   * hacking : exploitation de failles web2.0
   * hacking : piratage d’infrastructures réseau
   * phreaking : montages électroniques
   * phreaking : piratage de systèmes téléphoniques privés old school : PABX/VMB, etc.
   * phreaking : prise de contrôle et piratage de systèmes de téléphonie par IP (VoIP)
   * électronique : détournement de technologies d’identification à distance type RFID ou autre
   * art et contre-culture : tout article à visée critique, polémique ou fictionnelle
   * sociologie : tout article de niveau universitaire concernant le milieu underground du hacking
   * philosophie : tout article d’ordre métaphysique ou politique concernant le droit à l’Information et la lutte contre l’ignorance généralisée

Nous ne sommes pas animés par un esprit de compétition, et nous invitons nos éventuels collaborateurs à considérer les autres publications underground afin de faire publier leurs articles là où ils seraient le mieux mis en valeur. Nous pensons que la diversité est une force, et nous faisons le choix d’être solidaires de magazines électroniques tels Rafale ou Blackclowns. Nous partageons le même combat qu’eux, nous poursuivons les mêmes objectifs, et leur travail nous inspire le plus profond respect. La diversité des magazines permet une diversité de points de vue, et c’est ce qu’Entropie veut favoriser. Si votre article est plutôt orienté ancienne école (phreaking, crochetage de serrures, exploration urbaine, etc.) alors nous préférerions qu’il soutienne l’excellent Rafale ; s’il est résolument technique et qu’il touche au noyau d’un système informatique, alors les Clowns Noirs sauront mieux que nous le mettre en valeur.

Concernant la forme, les articles devront être proposés en français, et au format HTML. Nous exigeons d’avoir été contacté avant toute proposition d’article. Les auteurs peuvent nous contacter en privé, que ce soit par e-mail, par IRC ou par SILC, voire même dans les meetings 2600 auxquels participent certains membres du groupe DegenereScience. Les auteurs qui le souhaitent peuvent demander l’anonymat de leur contribution, et nous nous engageons à respect leur souhait.

La langue officielle du magazine est le français, mais nous encouragerons fortement les auteurs à participer à l’effort de traduction vers l’anglais que nous coordonnerons, car nous avons la volonté de permettre l’accès à l’Information au plus grand nombre.

Le format officiel du magazine est le HTML, mais nous prévoyons de publier certains articles qui seront plus à l’aise au format PDF. Il est également possible qu’une version papier soit éditée en plus de la version électronique HTML. Si cela arrive, elle serait tirée artisanalement à un très faible nombre d’exemplaires destinés principalement aux auteurs et aux meetings 2600 francophones.

Nous espérons, avec un minimum de soutien extérieur, pouvoir publier trois à quatre numéros par an, soit un numéro tous les trois à quatre mois.

Soutenez le combat pour la liberté de l’Information !

Contact :

https://www.dg-sc.org/index.html
Entropie
Réseau silc.dg-sc.org

jeudi, mai 1 2008

II] Pcapy/Impacket le retour

Voilà un nouvel article sur mes deux modules adorés : pcapy/impacket.

Introduction :

Aujourd'hui nous allons écrire une petite classe qui permet de sniffer de mot de passe.
Tout comme dsniff, qui supporte une collection de protocole d'identification en plaintext, nous nous orienterons vers le protocole ftp. Il vous suffira alors d'établir les motifs  de recherche pour inclure d'autres protocoles et arriver à faire un dsniff like.

Rappel du protocole TCP/IP et exemple d'un message du protocole ftp :



On voit ici que chaque protocole est emboité(on préférera le terme d'encapsulation) avec un autre, chacun a son but, et ils finissent par créer un packet complet.

A chaque étape, notre paquet s'agrandit et porte un nom différent. Un simple message au niveau de la couche applicative, un segment quand le transport s'ajoute(celle qui contrôle ou pas les données), un datagramme pour la couche internet(celle qui s'occupe du routage), et enfin une trame pour le réseau LAN.

Concernant l'exemple de capture, bien evidemment je n'ai pas détaillé les champs des en-têtes car ce n'est pas le but ici. Globalement on voit quel type de donnée contient chaque couche, on en comprend mieux son utilité.


Schéma global de pcapy/impacket :



Voilà un schéma de pcapy et impacket et de l'expérience que j'ai pu tiré de l'étude de ces deux modules. On voit que le front-end de la libpcap, alias pcapy, envoit les paquets vers les classes d'impacket. Impacket qui posséde en son sein, quelques protocoles hauts-niveaux comme ntlm, smb...


ImpactPacket et ImpactDecoder sont deux classes qui gére les couches, ImpactDecoder est basé sur ImpactPacket. ImpactPacket posséde une collection de classe et méthode bas niveau pour jouer avec un paquet à toutes les couches. C'est d'ailleur pour ca qu'il est sur la base du TCP/IP sur le schéma et que la pyramide décroissante pousse en direction d'Impacket. ImpactDecoder est réservé à la désencapsulation.


On notera la présence de self.child(), il représente l'instance hérité, en d'autre mot la couche supérieur. En effet dans impacket, les classes sont contruits hiérarchiquement, en respectant le modèle TCP/IP. Nous l'utiliserons pour être plus explicite, dans le code du sniffer. À l'opposé on aurait pu noter la méthode self.set_parent(parent), qui permet d'ajouter la couche inférieur. Nous reverrons dans un autre billet la création de paquet.

Je n'ai pas non plus ici détaillé le schéma, notamment en imposant une limite(ici la libpcap), pour ne pas sortir du cadre de cet article.


Le sniffer de mot de passe ftp :

Le code est vraiment basic, nous allons intercepter des paquets, poser un filtre bpf sur le port 21, et lire le message envoyé. Ce message sera comparé à notre expression régulière.
Ici l'interface utilisé est ath0

# -*- Encoding: Latin-1 -*-
import pcapy
from impacket.ImpactDecoder import EthDecoder
#expression reguliere
import re

class Sniffer():
"""I Can sniff ftp pass!"""
def __init__(self, promisc, device):
self.promisc = promisc
self.dev = device
self.mtu = 1500 #Maximum transmission unit
self.timer = 100 # Timer before handling captured data
self.sniffer = pcapy.open_live(self.dev, self.mtu, self.promisc, 100) #Return pcapy instance object
self.sniffer.setfilter("dst port 21")

def start(self):
"""Starting sniffing"""
print "Sniffing en cours (Ctrl-C pour quitter)"
self.sniffer.loop(0, self.analyze)

def analyze(self, header, data):
""" analyze and find ftp pass"""
#Retourne une instance EthDecoder, identique à l'ensemble des couches du paquet, soit la trame
eth = EthDecoder().decode(data)
ip = eth.child() #L'instance du datagramme)
tcp = ip.child() #L'instance du segment
msg = tcp.child() #L'instance du message

#Retourne un type string du contenu du message
message = msg.get_buffer_as_string()
#Place aux expressions régulières :
ftp = re.compile("(?:user|pass) .{1,30}", re.IGNORECASE)
verdict = re.findall(ftp, message)

if (len(verdict)):
print "From >", ip.get_ip_src(), " port :", tcp.get_th_sport()
print "To >", ip.get_ip_dst(), " port :", tcp.get_th_dport()
print ">", "".join(verdict)

passftp = Sniffer(0, 'ath0')
passftp.starting()

Voilà en une trentaine de ligne, nous aurions passé beaucoup plus de temps dans d'autres langages(comme le C par exemple, sans vouloir vexer personne =)

Conclusion:

Cette seconde approche a permis d'éclaircir la relation d'impacket avec le modèle TCP/IP. On a pu ainsi comprendre l'utilité de la hiérarchie au sein des classes, nous pouvions aussi hériter pcapy ici à notre classe Sniffer pour accéder directement aux méthodes interressantes.

Le prochain article sur impacket/pcapy, traitera du multithread, ainsi que d'une méthode très utile pour réaliser un sniffer propre : next() de la classe pcapy. En effet si vous avez testé les codes présents, vous remarquerez qu'il est impossible d'interrompre la capture sans agir avec les signaux. Nous créons en effet une boucle (loop()) bloquante.

A bientôt & Have fun!

jeudi, avril 10 2008

En manque de connaissance ?

Avant de commencer, je voudrais vous prévenir que j'ai beaucoup de travail, c'est pourquoi j'ai décidé de faire une publication bimensuel/mensuel selon mon temps disponible. En effet, j'ai toujours apprécié la qualité à la quantité, autant le faire ici.

Ce billet va donc vous filer quelques tuyaux si vous ne les avez pas déjà! Il est destiné à vous tenir d'actualité avec la sécurité informatique, et de suivre des experts, ou des conférenciers qui ont bosser sur un projet précis.

Blackhat Security :

C'est un rendez-vous annuel, rassemblant des passionnés, des experts, des agences(gouvernementales,...) et j'en passe. Le dernier s'est terminé il y a 2semaine, à Amsterdam. Il a lieu également aux Etats-Unis(la prochaine se déroule du 2 au 7 août à LasVegas), et en Asie(du 7 au 10 octobre au Japon!!). Pourquoi j'en parle ? Leurs conférences sont riches en information, elles apportent généralement lot de nouveauté et vous permettront peut-être de découvrir un domaine encore inconnu :)

La page d'archive est le lien de référence qui vous propose l'ensemble des papers des conférences BlackHat.
Exemple de liste pioché dans les archives :

  • Joel Eriksson "Kernel Wars"
  • David Litchfield "Advanced Oracle Attack Techniques"
  • Lluis Mora "SMTP Information Gathering"
  • ERESI Team : " Next Generation Debuggers for Reverse Engineering "
  • John Heasman : " Firmware Rootkits and the Threat to the Enterprise "
  • Dino Dai Zovi : " Hardware Virtualization Based Rootkits "
  • Sean Barnum " Attack Patterns: Knowing Your Enemies in Order to Defeat Them "
  • Joanna Rutkowska " Subverting Vista Kernel For Fun And Profit " (une femme :o !)

Voilà à quoi elle ressemble :



Héhé ok j'arrêtes de faire du blogoporn !, Je l'encourage cependant à continuer en espérant voir plus de féminité dans ce milieu ;)
Faîtes vous plaisir avec les papers. Dès que c'est possible j'en présenterai un en détail.

Flazx :

Et voilà un site de poid. Qualifié de "Centre d'apprentissage en Technologie de l'Information". Il propose le libre téléchargement des Ebooks! Imaginez les grands auteurs dans les catégories suivantes :

Artificial Intelligence
Certification
Computer Application
Computer Engineering
Computer Hardware
Computer Science
Computer Security
Databases
Design & Graphics
Information Systems
Miscellaneous
Mobile Computing
Multimedia
Networks
Operating System
Programming
Software Engineering
Telecommunication
Web

Par exemple, dans la section Programming > Python, on retrouve plus d'une vingtaine de bouquin(haypo pour toi ;). Imaginez alors le nombre de livre en C ou C++,... Dans la section Operating System > Windows > BSD (pour toi db)... Dans la section Network vous retrouverez une autre liste de catégorie alléchante :

Cisco (pour toi TiTan ;)
Home Networking
Internet
IPv6
Network Programming(pour moi :))
Network Security(pour moi :))
Protocols(pour moi :))
Storage Area Network (SAN)
Virtual Private Network (VPN)
VoIP/IP Telephony
Wireless Network

Voilà il y a de nombreux livres, n'hésitez pas à proposer en commentaire une liste pertinente des livres incontournables!(j'en ferais une prochainement)

A bientôt!

lundi, mars 17 2008

I] Modules jumeaux en python : Impacket et Pcapy.

Introduction

Impacket et Pcapy sont des modules pour python qui permettent de jouer avec les paquets réseaux. A l'instar de Scapy, ces modules sont indépendants l'un de l'autre, et ont chacunes leurs particularités.

Impacket est une collection de classes. Elles permettent ainsi de crafter(forger) ses propres paquets, ou dans le cas contraire de dissequer les paquets. Parmis les protocoles supportés, on retrouve donc IP, TCP, UDP, ICMP, ARP, et pleins d'autres... Pcapy, quant à lui, s'occupe de la capture des paquets. Inutile de vous faire un dessin...

Ces deux modules, ont été écrit par le Core Security Technologie. Une compagnie active dans le milieu de la sécurité. Ils sont responsables du CoreImpact(Environnement de pentest avancée pour les professionnels), et ont rendu plusieurs projets libres, dont InlineEgg(permet de créer des payloads), Heapdraw(permet de suivre l'évolution du tas dans un processus), et pleins d'autres outils libres(voir référence, pour plus d'information).

Comparaison Impacket/Pcapy vs Scapy ?

Points communs :

     + Références pour la manipulation de paquet en python.
+ Plusieurs protocoles supportés
+ Outils fournis (ping, tracer...)
+ Code portable
- Souffre cruellement de documentation francaise.
- Pas de réelle communauté(si ce n'est une mailing list...)

Scapy :

     + Fléxibilité
- Instable avec le multithread
- Perte de paquet dans certaines conditions
- Lenteur
- ?

Impacket/Pcapy :

     + Syntaxe plus explicite
+ Support du multithread
+ Realisé par le CoreImpact
?

Si vous avez des remarques, ou vous voulez compléter ce tableau, n'hésitez pas à laisser vos commentaires.

Cours n°1 : "Introduction globale sur les fonctionnalités des jumeaux"

Les exemples suivants sont à lancés en mode root, dans le shell interfactif de python.

Pcapy

findalldevs()
Liste tout simplement les interfaces activent sous forme de liste.

>>> from pcapy import *
>>> dev = findalldevs()
>>> type (dev)
<type 'list'>
>>> print dev
['eth0', 'wifi0', 'ath0', 'eth0:avahi', 'any', 'lo']

open_live(device, snaplen, promisc, to_ms)
Permet d'initialiser la capture en renvoyant un descripteur de paquet capturé. Les arguments sont :
device, l'interface utilisé lors de la capture(Mettez "null", ou "any", pour écouter sur toutes les interfaces)
snaplen, correspond à la taille maximum(en octect) d'un paquet.
promisc, Etat boléen, si il est à 1 l'interface sera mis en mode promiscious.
to_ms, est un timeout. Un timeout de 100, n'affichera les paquets capturé que toutes les 100millisecondes. Celà permet donc de cumuler un certain nombre de paquet avant de les traiter. Attention certains système d'exploitation ne gère pas ce timeout.
A noter, que cette fonction ne lance en aucun cas le sniffing en lui même.

>>> p = open_live('ath0', 1500, 0, 0)
>>> print "Réseau : ", p.getnet()
Réseau : 192.168.1.0
>>> print "Masque : ", p.getmask()
Masque : 255.255.255.0

Les méthodes getnet et getmask retournent l'adresse du réseau et son masque associé.

open_offline(filename)
Permet d'ouvrir un fichier de paquet capturé de type pcap.

int loop(maxcant, (* callback))
Cette fonction permet de lancer le sniffing, elle retourne le nombre de paquet capturé. Elle prend en argument :
maxcant, qui est le nombre maximum de paquet à capturer('0', pour ne pas s'imposer cette limite).
* callback, est une routine qui sera appelé à chaque paquet capturé. Cette fonction se compose de deux arguments. Elle retourne deux instances, qui seront les deux arguments da la routine, le header qui contient comme méthodes, getcaplen(qui retourne la taille du paquet), getlen(qui retourne la taille totale, en cas de fragmentation par exemple), et getts(Renvoie un tuple de deux éléments : Nombre de seconde depuis la date d'epoch et une autre valeur en microseconde qui d'après ce que j'ai compris n'est vraiment pas interressante.). Et comme second argument le paquet lui-même.
Cette fonction peut se définir comme ca :

>>> def routine(info, data):
>>> ....print "Taille du paquet recu : ", info.getcaplen()
>>> ....print "Taille total : ", info.getlen()
>>> ....print "Sec. depuis l'epoch : %d | Ecart entre la capture et date du paquet en micro-seconde -_-' : %d"%(info.getts()[0], info.getts()[1])
>>> ....print "Paquet recu : ", data
>>> (ligne vide, tapez entrée)
>>> p.loop(1, routine)

Respectez l'indentation en python(remplacer les points par des espaces).

setfilter(bpf)
Applique un filtre bpf(comme ceux de tcpdump) à l'objet pcap du descripteur de paquet captué.

>>> p.setfilter("dst 192.168.1.1")

Relancer la fonction loop(celle de l'exemple précédent), et tapez dans un shell à part :

ping -c 1 192.168.1.1

Cool, on voit que le filtre est bien appliqué.

Néanmoins la sortie est "illisible"! C'est de là qu'intervient impacket.

Impacket

Nous allons donc utiliser la classe EthDecoder, qui décode les paquets dont la couche de liaison utilise le protocole Ethernet.
Importons là :

>>> from impacket.ImpactDecoder import EthDecoder

Reprenons la fonction routine, modifions là de telle sorte que le code devient le suivant :

>>> def routine(info, data):
>>> ....print "Taille du paquet recu : ", info.getcaplen())
>>> ....print "Taille total : ", info.getlen())
>>> ....print "Paquet recu (avant) : ", data
>>> ....print "Paquet recu (après) : ", EthDecoder().decode(data)
>>> (ligne vide, tapez entrée)
>>> p.loop(1, routine)

Voilà vous aurez, dorénavant, quelque chose comme :

packet = Ether: 00:17:9A:XX:XX:XX -> 00:19:4b:XX:XX:XX
IP 192.168.1.13 -> 208.71.XX.XX
TCP ack 56341 -> 6667
......TCP Option: No Operation
......TCP Option: No Operation
......TCP Option: Timestamp
[Données en Hexadecimal] [Données en ASCII]

C'est mieux ! Vous avez bien sur, une large panoplie de fonction, vous pouvez également extraire les champs à part en accédant aux méthodes des sous classes decode().
Par exemple :

EthDecoder().decode(data).child().get_ip_src()

Vous affichera l'adresse ip source.

Je vous laisse le soin de vous aventurer plus loin.

Conclusion & références :

Page d'impacket
Page de pcapy

J'ai été ravi de vous présenter ce qui se présente comme l'un des premiers articles francophones traitant d'impacket, et pcapy.
Vous l'aurez compris, pcapy sans impacket, ne vaut rien, d'autres billets viendront compléter cette première approche.
Bien évidemment, je tiens à préciser que je ne suis pas un maitre en la matière, et je m'excuse d'avance des erreurs qui auraient pu être commises(tant orthographique que technique), n'hésitez donc pas à m'envoyer un mail.

HaveFun!

mercredi, mars 5 2008

.DS_Store - Macintosh OSX Folder Information.

Le fichier .DS_Store

Le système Unix MAC OSX, possède en son sein, un programme nommé Finder, un gestionnaire de fichier.. Lorsque vous ouvrez des fênetres, des applications, un fichier .DS_STORE est stocké afin de réunir des informations sur ces fichiers, les icones, les positions de la fenetre, et pleins d'autres conneries. Si vous voulez en savoir plus sur l'origine du ds_store je vous conseille alors cet article : On origins of Dsstore Maintenant que vous êtes familliarisé avec ce fichier bien mystérieux, ancrons le contexte...

Introduction :

Un soir de septembre(2007), je naviguais sur l'océan bleu du net. Pas de tempête, ni de pertubation... Une nuit bien calme. Voilà que je me mets à un lire un important site dans le domaine multimédia(je ne préciserais pas l'activité exacte du site, car celle-ci est peu pratiqué, et les références dans ce domaine se comptent sur les doigts). Ces services sont pas des moins importants, en effet, parmis leurs clients, on y retrouve de grosse pointure.

La recherche pour l'exploitation :

En regardant les rubriques du site, on tombe sur ses statistiques et quelques informations peu interressantes. Jusqu'à... Hô! L'url a l'air bien étrange.
Serait-ce une faille include ? dans un site pareil !? incroyable, elle est bien présente! Hmm l'include est interne, on est donc restreint à rechercher le maximum de fichier(Identification de l'os à travers /etc/issues, utilisateurs et groupes, pas de temps à perdre, des fichiers profiles, aux htaccess, on prends tout ce qui bouge!)
Après ca, on commence à lancer jtr sur ces hashs générés par crypt() dans le htpasswd. Pendant ce temps là, on décortique ce que les fichiers peuvent souligner comme bonne information.
(... je vous évite la suite, vous vous en doutez un peu)
Ah voilà... un serveur redhat, avec les informations rassemblés, on l'identifie clairement à un LAMP(Linux + Apache + Mysql + Php)... pas de quoi être surpis, c'est courant.
Sympa, on commence à dessiner le serveur qu'on a en façe, sa configuration, et les pensées d'administrateurs et développeurs douteuses.

Je commence à patoger... Les pass m'ouvrent vers les portes des responsabilités des utilisateurs en question. Les précédent ont été concluant, mais pas satisfaisant, il faut pousser au maximum!

La découverte :

Soudain... à travers le navigateur, un répertoire que je croyais ininterressant(suite à la récolte d'information) me liste ses fichiers... Hmmm... Mais tiens donc, un fichier .DS_STORE bien étrange(jamais vu ce genre de fichier!), pourquoi est-il caché? suspect non?

Watson: Oui merci, mais ajoutez-y un peu de cognac car j'arrive au plus intéressant cher collègue

Googleeeee \o/ ! 10minutes de recherche(pour les formats et extention rien de tel que les sites qui les recensent http://filext.com/), on comprend l'utilité de ce fichier. Je tente donc par hasard de voir si il est présent également à la racine du site. http://www.example.com/.DS_Store et ouiiii(un vrai "oui" jouissif hein!)
Sur le site des fichiers, aucune information concrète sur le contenu exact n'a l'air de circulé, simplement une description du fichier. A nous de faire le reste!
Ouvrons le!
D'après le site les dix premiers octects identifient le fichier, ceux là :

Hex: 00 00 00 01 42 75 64 31 00 00
ASCII: ....Bud1

Voyons voir si ils correspondent avec le notre (c'est utile dans le cas de version multiple...etc) :

zoa$ hexdump -C DS_Store -n 10
00000000 00 00 00 01 42 75 64 31 00 00 |....Bud1..|

Yeah pas de doute c'est bien le même! Mais que dit-il de plus ?

(...)
00004dd0 ff 00 00 00 00 00 08 00 70 00 6f 00 72 00 74 00 |........p.o.r.t.|
00004de0 75 00 67 00 61 00 6c 49 6c 6f 63 62 6c 6f 62 00 |u.g.a.lIlocblob.|
00004df0 00 00 10 00 00 01 0e 00 00 16 0d ff ff ff ff ff |................|
00004e00 ff 00 00 00 00 00 06 00 70 00 72 00 65 00 73 00 |........p.r.e.s.|
00004e10 73 00 65 49 6c 6f 63 62 6c 6f 62 00 00 00 10 00 |s.eIlocblob.....|
00004e20 00 01 c2 00 00 16 0d ff ff ff ff ff ff 00 00 00 |................|
00004e30 00 00 0a 00 70 00 72 00 6f 00 64 00 75 00 63 00 |....p.r.o.d.u.c.|
00004e40 74 00 69 00 6f 00 6e 49 6c 6f 63 62 6c 6f 62 00 |t.i.o.nIlocblob.|
00004e50 00 00 10 00 00 00 5a 00 00 16 69 ff ff ff ff ff |......Z...i.....|
00004e60 ff 00 00 00 00 00 0a 00 70 00 72 00 6f 00 67 00 |........p.r.o.j.|
00004e70 63 00 61 00 73 00 74 00 74 00 76 49 6c 6f 63 62 |e.t.v.i.p.vIlocb|
00004e80 6c 6f 62 00 00 00 10 00 00 01 0e 00 00 16 c5 ff |lob.............|
00004e90 ff ff ff ff ff 00 00 00 00 00 05 00 50 00 72 00 |............P.r.|
00004ea0 6f 00 6d 00 6f 49 6c 6f 63 62 6c 6f 62 00 00 00 |o.m.oIlocblob...|
00004eb0 10 00 00 01 c2 00 00 16 c5 ff ff ff ff ff ff 00 |................|
00004ec0 00 00 00 00 08 00 70 00 72 00 6f 00 76 00 69 00 |......p.r.o.v.i.|
00004ed0 6e 00 63 00 65 49 6c 6f 63 62 6c 6f 62 00 00 00 |n.c.eIlocblob...|
(...)

Soyez attentif sur cette portion de fichier, et essayez de regrouper les mots, on remarque des espaces (par des "."), mais c'est normal, c'est le format du fichier, maintenant retirez le "llocblob"( apparement il s'agit surement d'information sur le fichier en question)... bingo ! on a vraiment le listing des fichiers et répertoires présents ("portugal", "presse", "production", "projetvip", "Promo", "province"...)!!
Héhé voilà bien un coup de marteau qui enfonce le clou.
Une dernière question me chagrine néanmoins(qui a dû aussi traverser l'esprit de certain d'entres vous...) qu'est-ce qu'un fichier .DS_STORE fait-il dans une distribution comme REDHAT ? Plusieurs hypothèses sont possibles, à vous de les évaluer(pour ma part je pense aux employés qui bossent sur un MACOSX et ont accés aux serveurs, chose inévitable lors de transfert de fichiers/répertoires).

Conclusion

Voilà, j'ai essayé à travers ce billet, d'apporter un sujet original, qui à ma connaissance n'a jamais été abordé(j'ai fouillé le web à la recherche de celà, sans succés), à noter que le fichier .DS_STORE a déjà eu des antécédents avec la justice sécurité, notamment une vulnérabilité de type buffer overflow avec un gestionnaire de fichier sous MacOSX.

Have Fun!

Etre un Homme, libre...

Mon identitié n'existe plus.
Mon esprit est sa philosophie.
Ma vie est son but.

 
   Join us now and share the software;
You'll be free, hackers, you'll be free.
Join us now and share the software;
You'll be free, hackers, you'll be free.
   Hoarders may get piles of money,
That is true, hackers, that is true.
But they cannot help their neighbors;
That's not good, hackers, that's not good.
   When we have enough free software
At our call, hackers, at our call,
We'll kick out those dirty licenses
Ever more, hackers, ever more.
   Join us now and share the software;
You'll be free, hackers, you'll be free.
Join us now and share the software;
You'll be free, hackers, you'll be free.

A travers ce texte, je fais le serment de servir le libre. Et de rejoindre cette communauté qui contribue pour le libre et bien plus.

Certains auront pu remarquer la modification de ce billet. Oui ma présensation n'égale pas un Hommage pareil.

Je témoigne mon plus grand respect pour cet Homme si Grand, si Admirable, qui se dévoue corps et âme au Libre! Merci à toi RMS, de nous offrir tant de plaisir chaque jour, et nous montrer la vraie voie d'un Homme...

je te dédie ce post.