Fonction MySQL pour générer une séquence hexadécimale

Dans le cadre d’un petit développement, je devais générer une séquence aléatoire hexadécimale stockée sous la forme d’une chaîne de caractère dans une base MySQL.

L’ensemble des chiffres hexadécimaux à utiliser était ’0′-’9′, ‘a’-'f’ (minuscules).

La longueur de la chaîne pouvait être arbitrairement longue. Afin d’avoir une longueur finie, elle a été fixée à 256 caractères au maximum.

J’ai décidé de faire une fonction MySQL pour générer cette chaîne directement depuis le moteur de base de données.

For a small personal development, I had to generate a random hexadecimal sequence stored as a string in a MySQL database.

The set of hexadecimal digits to be used was ’0′-’9′ and ‘a’-'f’ (lower case).

The string may have an arbitrary long length. It was fixed to a maximum of 256 characters.

I decided to code it as a MySQL function, in order to be directly executed from the DB engine.

delimiter |
CREATE FUNCTION randomHexSequence(_length INT)
RETURNS VARCHAR(256)
BEGIN
  SET @hexSet := '0123456789abcdef';
  SET @hexStr := '';
  SET @i := 0;
  WHILE @i < _length DO
    SET @car := SUBSTRING(@hexSet, ROUND(RAND() * 15) + 1, 1);
    SET @hexStr := CONCAT(@hexStr, @car);
    SET @i := @i + 1;
  END WHILE;
  RETURN @hexStr;
END|
delimiter ;

Je ne détaille pas le fonctionnement de la fonction, cette dernière étant très simple.

Je souhaite néanmoins rappeller que cette fonction sera exécutée par le moteur de base de données. S’il est souhaité d’optimiser au maximum les performances de la base de données, il faut bien réfléchir si une fonction de ce type doit être réalisée sur le serveur de base de données ou sur le serveur applicatif. Si cette fonction doit être appelée souvent – et à plus forte raison, si elle doit générer de longues chaînes hexadécimales – il peut être préférable de laisser l’application réaliser cette tâche.

I don’t explain how the function works, as it is a simple code.

I would like to remind that this function will be executed by the DB engine. If it is expected to optimize the DB performance, it must be seriously considered if this function is better run on the DB system or on the application one. If this function has to be frequently called – and even worse if it has to generate long hexadecimal strings – it could be better to let the application perform this task.

Nmap Network Scanning, Gordon Lyon

Nmap Network Scanning, Gordon Lyon

Insecure Press, ISBN 0-97995871-7, ISBN-13 978-0-97995871-7

Nmap est un scanner réseau permettant de détecter les équipements connectés sur une adresse IP ou une plage d’adresses IP. Succinctement, cet outil permet de déterminer s’il y a un équipement derrière une adresse IP, quels ports sont ouverts, quels services (et quel serveur) servent un port donné, quel est le système d’exploitation qui fonctionne sur le système distant. Nmap est devenu un outil très performant et polyvalent et se retrouve facilement dans la trousse à outil de tout ingénieur de sécurité, et de plus en plus chez les administrateurs réseau.

Ce livre est donc dédié à ce scanner et peut être vu comme un mode d’emploi très complet agrémenté d’exemples, et de mises en situations. Le fonctionnement des différents types de scanning est détaillé, la manière de réduire la durée du scan est expliquée, et des conseils sur la manière de réussir la découverte d’hôtes sont donnés.

Ce livre s’adresse aussi bien au débutant qui s’intéresse aux scanning de réseau, qu’à l’utilisateur expérimenté qui souhaite découvrir des fonctionnalités et des pratiques qu’il ne connaissait pas forcément.

Pour ne rien gâcher, ce livre a été écrit par la personne qui connaît certainement le mieux cet outil, puisque Gordon Lyon est le développeur principal de Nmap.

IPv6 Essentials, Silvia Hagen

IPv6 Essentials, Silvia Hagen

O’Reilly, 2002, ISBN 0-59600125-8, ISBN-13 978-0-59600125-4

 

Cet article commente le livre IPv6 Essentials de Silvia Hagen:

Ce livre a été (et reste toujours) considéré comme LA référence concernant IPv6. Au menu on retrouve, un rapide historique sur IPv6, un tour d’horizon sur les réseaux IPv6, avant de plonger dans la partie technique.

Cette dernière présente la description des en-têtes IPv6, l’adressage IPv6 avec les différents types d’adresses (unicast, multicast, anycast) en les détaillant, …

Un chapitre est dédié à ICMPv6 et à ses utilisations spécifiques à IPv6 (autoconfiguration, duplicate address detection, path MTU discovery, or multicast listener discovery).

Le chapitre traitant des fonctionnalités de sécurité d’IPv6 fait bien plus que de présenter IPsec avec les AH et ESP, mais il décrit le contexte global de la sécurité IPv4 et des méthodes couramment utilisées pour ajouter de la sécurité à IPv4 qui n’en avait pas lors de sa création. Le lecteur comprend alors l’objectif d’IPsec qui est d’introduire de la sécurité nativement à IPv6.

Le chapitre dédié à la qualité de service présente, lui-aussi, le contexte global de la QoS avant de détailler les méthodes mises en œuvre par IPv6 pour offrir ces fonctionnalités.

Un chapitre est dédié aux considérations réseau de base : Cela va du support d’IPv6 par les différents protocoles de niveau 2, au design d’un réseau IPv6, en passant par des notions de multicast IPv6 et d’IPv6 mobile.

Le chapitre suivant intéressera plus l’administrateur réseau que l’administrateur système. Ce chapitre est dédié aux protocoles de routages qui supportent IPv6 (RIPv6 ou RIPng, OSPFv3, MP-BGP, …). Ce chapitre est suffisament détaillé pour permettre à une personne n’ayant pas ou peu de connaissances en protocoles de routage (même pour IPv4) d’approcher de manière bien détaillée ces protocoles sans être perdu.

Un chapitre est dédié aux protocoles de niveau supérieur (transport et application) et présente les conséquences du changement d’IPv4 à IPv6.

Le livre dédie un chapitre aux solutions de coexistence entre les 2 protocoles IP (IPv4 et IPv6) : Dual-stack, tunnels et NAT).

Le dernier chapitre donne une série d’indications pour activer IPv6 sous différents systèmes (Linux, Windows, Cisco IOS, …).

Bien que ce livre ait bientôt 10 ans, que de nouvelles RFCs soient sorties dans l’intervalle, le contenu du livre reste très pertinent et sa lecture est très agréable pour le technicien et l’ingénieur qui souhaite découvrir IPv6, puis avoir sous le coude une référence IPv6 lorsqu’il faut rechercher une information particulière. Certains passages du livre (comme 6Bone aujourd’hui démantelé) peuvent être considérés comme une information, alors que d’autres (format des trames FDDI ou Token Ring avec les datagrammes IPv6) peuvent être simplement ignorés (ces protocoles sont aujourd’hui pratiquement plus utilisés).

L’ingénieur déjà expérimenté en IPv6 pourra toujours utiliser ce livre comme référence, grâce aux descriptions des en-têtes IPv6, ICMPv6, RIPng, ou OSPFv3. Par contre, il restera rapidement sur sa faim, ce livre étant très académique, mais donnant peu d’informations ou de conseils pratiques.

D’autres livres indispensables pour aborder IPv6 sont dans ce post.

Quelques livres indispensables pour s’attaquer à IPv6

Les personnes qui souhaitent partir à la découverte d’IPv6, doivent commencer à découvrir ce nouveau protocole. Plusieurs livres (en anglais) existent pour faire cette introduction (et bien plus):

IPv6 Essentials, Silvia Hagen

O’Reilly, 2002, ISBN 0-59600125-8, ISBN-13 978-0-59600125-4

Running IPv6, Iljitsch van Beijnum

Apress, 2005, ISBN 1-59059527-0, ISBN-13 978-1-59059527-5

Migrating to IPv6: A Practical Guide to Implementing IPv6 in Mobile and Fixed Networks, Marc Blanchet

Wiley, 2006, ISBN 0-47149892-0, ISBN-13 978-0-47149892-6

Cette liste n’est pas exhaustive et sera complétée au fur et à mesure de mes découvertes.