Articles

Halte aux squatteurs !

Sunday, 08 December 2024
|
Écrit par
Grégory Soutadé

Trouver un nom est toujours un exercice délicat, car il aura toujours une portée et une connotation sur un temps plus ou moins long. Une fois les choses actées, en changer pourra jeter le trouble chez les personnes qui auront connues l'ancienne référence.

Mon dernier projet en date est Drycat. Le nom retenu n'a été choisi que récemment. Toute sa version de développement s'est faite sous l'acronyme ssss, qui reflète plus la nature du projet mais est moins facile à retenir pour l'utilisateur. Une fois ce joli nom évoquant nos chères bestioles choisi, il aurait été bon de faire une recherche pour savoir s'il n'était pas déjà attribué. J'ai oublié de faire la démarche. Résultat, le projet est un homonyme d'un aspirateur industriel... Les deux mondes restent toutefois suffisamment éloignés pour éviter les confusions et que l'utilisateur puisse retomber rapidement sur ses pattes.

Le projet est désormais exposé aux yeux du monde entier via l'adresse https://drycat.net. Comme pour toutes les adresses internet, elle doit être enregistrée chez un organisme certifié appelé "registrar" (bureau d'enregistrement). Cet enregistrement n'est pas gratuit. Il faut s'acquitter d'une cotisation annuelle plus ou moins importante selon les organismes et l'extension choisie (.fr, .com, .net, ...).

Mon idée première était d'enregistrer l'adresse drycat.com. Le premier réflex est de tester directement cette adresse dans un navigateur. On arrive alors sur une page indiquant que le nom de domaine est à vendre. Bonne nouvelle puisque je souhaite l'acquérir. Ce service est proposé par l'Américain GoDaddy. Là où les choses deviennent étranges, c'est qu'il y a un encart qui propose de faire une offre pour le nom de domaine ("Make an offer") et n'est donc pas soumis à une grille tarifaire. Je tente de rentrer 10$, ce qui semble cohérent (en France, un nom de domaine en .com coûte dans les ~15€/an). Un message en rouge apparaît indicant que le propriétaire n'accepte pas d'offre en dessous de 5 000$ ! En gros, il y a un co***** qui a enregistré ce nom de domaine dans le seul but de le revendre.

Ce phénomène de squat n'est pas nouveau. Sauf que jusqu'à présent il était utilisé pour 2 raisons principales :

  • Faire payer de grosses entreprises
  • Créer un site de phishing

Le premier point n'excuse pas le squat. Les entreprises peuvent d'ailleurs porter l'affaire en justice lorsque la marque a été enregistrée préalablement au nom de domaine. À l'inverse, certaines entreprises ont tenté de s'approprier des noms déjà réservés par des personnes légitimes. Le deuxième point ne l'excuse pas non plus et peut être particulièrement vicieux avec des nom comme faceboook.com ou facebook.co. D'autant plus que depuis 2012, le nombre d'extensions a considérablement été élargi, passant de 21 + 250 extensions régionales à plus de 1 000 ! Avec des extensions plus ou moins farfelues telle que .builders, .buzz, .christmas, .guru, .kim, .ninja, .rich ...

Je pense que cette ouverture a poussé à la création d'un marché dit "secondaire". Il y a même une section dédiée sur le site de GoDaddy. Il devient donc de plus en plus cher pour une entreprise (internationale) de couvrir toutes les possibilités acceptables. Dans ce nouveau marché secondaire, les noms de domaines les plus prisés sont ceux avec une extension courte (et générique), souvent associée à un pays.

Transformer cette mécanique légitime en actif numérique spéculatif est une pratique infecte. Même si le spéculateur arrive, de temps en temps, à écouler un de ses squats, les entités qui gagnent vraiment de l'argent sont les registrars. Comme dans une guerre, les personnes qui s'enrichissent sont celles qui vendent des armes...

Personnellement, je possède plusieurs noms de domaine. Mon registrar favoris était Gandi, mais ils ont, semble-t-il, décidé de se saborder complètement avec d'une part, une diminution des services associés au nom de domaine (adieu le mail) et, d'autre part, une augmentation significative des tarifs. Ainsi, s'enregistrer chez eux (hors .fr) coûte 2 à 3 fois plus cher qu'ailleurs, ce qui est complètement injustifié !

J'ai donc migré tous mes actifs (hors soutade.fr) vers OVH. Le tarif y est correct, l'interface de gestion très moche et les fonctionnalités plus restreintes. Typiquement, on n'a pas une totale liberté quant aux entrées DNS. Particulièrement pour créer les entrées DNS inverse (PTR), qui ne sont disponibles que quand on loue un serveur... Résultat, j'ai dû monter mon propre serveur DNS pour Drycat afin de ne pas être filtré par les clients mails (notamment gmail qui impose une entrée PTR). Le problème est qu'un serveur DNS non officiel peut être considéré comme n'étant pas de confiance par beaucoup d'acteurs... Bref, tout le monde essaie de trouver des sous de tous les côtés.

How to do polymorphism in C ?

Thursday, 31 October 2024
|
Écrit par
Grégory Soutadé

At work, I had to write a code architecture with types polymorphism in C language. The idea is very basic : one header with common functions and multiple backend implementations. At compile time, we decide which kind of implementation is taken. This can be achieved in a very elegant way using a not so much known C feature : forward definition.

First, a quick recap :

here is a declaration of a function (usually in a header):

int my_func(void); 

Here is a definition of a function (usually in a .c file):

int my_func(void) { return 4; }

This is the same for structures.

Good solution

When compiling, compiler checks that types match declaration, but it needs definition only when object is handled. So, we can create an opaque structure (lets say struct my_struct_s) that can have multiple implementations using its pointer version:

public_header.h

#ifndef _PUBLIC_HEADER_H_
#define _PUBLIC_HEADER_H_

/* Opaque type "my_struct_s" */
struct my_struct_s;
typedef struct my_struct_s* my_struct_t;

my_struct_t init(void);
void do_something(my_struct_t param);
void print_my_struct_t(my_struct_t param);
void delete(my_struct_t param);

my_struct_t init2(void);
void do_something2(my_struct_t param);
void print_my_struct_t2(my_struct_t param);
void delete2(my_struct_t param);

#endif

And two private implementations:

private.c

#include "stdlib.h"
#include "stdio.h"

#include "public_header.h"

/* Private implementation */
struct my_struct_s
{
    int member_i;
};

my_struct_t init(void)
{
    my_struct_t res;

    res = malloc(sizeof(*res));
    res->member_i = 0;

    return res;
}

void do_something(my_struct_t param)
{
    param->member_i++;
}

void print_my_struct_t(my_struct_t param)
{
    printf("I'm an integer with value %d\n",
           param->member_i);
}

void delete(my_struct_t param)
{
    free(param);
}

private2.c

#include "stdlib.h"
#include "stdio.h"

#include "public_header.h"

/* Private implementation */
struct my_struct_s
{
    char member_c;
};

my_struct_t init2(void)
{
    my_struct_t res;

    res = malloc(sizeof(*res));
    res->member_c = 'a';

    return res;
}

void do_something2(my_struct_t param)
{
    param->member_c++;
}

void print_my_struct_t2(my_struct_t param)
{
    printf("I'm a character with value '%c'\n",
           param->member_c);
}

void delete2(my_struct_t param)
{
    free(param);
}

In main.c

#include "public_header.h"

int main()
{
    my_struct_t var;

    var = init();
    do_something(var);
    print_my_struct_t(var);
    delete(var);

    var = init2();
    do_something2(var);
    print_my_struct_t2(var);
    delete2(var);

    return 0;
}

In this example, both implementations are present in output program. But, we can use only one implementation, selected at compile time, and thus have same function names in both private.c and private2.c.

This example works because my_struct_t is a pointer to struct my_struct_s. So, type is checked correctly, and it doesn't care about pointed value unless operation like increment, decrement or dereferencement is done on it. For example, in main.c :

struct my_struct_s var2;

Will generate an error:

error: storage size of ‘var2’ isn’t known

Bad solution

Another solution for pylomorphism is

typedef void* my_struct_t;

But, I do not recommend to write it, because in this case pointer type is not checked, void* is too generic and match all of them. This code compiles without warnings and can lead to type confusion error !

#include "stdio.h"
#include "public_header.h"

typedef void* my_struct_t2;

static void print_string(char* a)
{
    printf("Value of param '%s'\n", a);
}

int main()
{
    my_struct_t2 var;
    var = init();
    do_something(var);

    print_string(var);

    delete(var);

    return 0;
}

NB : In my examples, I use "stdio.h" only because "<" and ">" are removed by code coloration.

La Poste et moi

Monday, 21 October 2024
|
Écrit par
Grégory Soutadé

La Poste d'Espelette

On a tous une histoire avec La Poste, notamment les personnes qui ont connu l'entité en tant qu'organisme d'État. Il faut dire que le facteur est une personne qui nous connaît par procuration, via les courriers et les colis que l'on reçoit et qu'il délivre de par sa tournée. Il reste pourtant souvent dans l'ombre de nos boîte aux lettres. Si, dans l'inconscient collectif, le groupe a une réputation plutôt moyenne, je dois dire que personnellement, et en dehors des périodes estivales, je n'ai de mémoire jamais eu de problème de livraison. Au contraire, le facteur arrive même à compléter les éléments parfois manquants de l'adresse, et ça, c'est quand même vachement bien !

Pourtant, tout n'est pas rose. Particulièrement quand on discute avec celles et ceux qui ont travaillé pour le groupe avant le changement de statut. Mais également avec la plupart des personnes du service publique qui ont connu une période dorée jusque dans les années 1990/2000. C'est d'ailleurs en 1991 que les PTT sont séparés de France Telecom pour devenir La Poste, alors une entreprise publique autonome. Cette transformation est l'application d'une directive très libérale Européenne visant à supprimer les monopoles d'État (pour ouvrir les marchés à la concurrence). Deux an plus tard (novembre 1993) voit la ratification du traité de Maastricht qui transforme la Communauté Européenne en Union Européenne, telle que nous la connaissons aujourd'hui.

La deuxième étape majeure pour le groupe intervient en 2010 avec la création d'une Société Anonyme en lieu et place de l'entreprise publique autonome. Si l'aspect financier et rentabilité se retrouvent sous le feu des marchés, l'aspect politique reste inchangé puisque la société nouvellement créée est détenue à 66% par la Caisse des dépôts et consignations et à 34% par l'État Français. Du fait de son statut d'entreprise privée, le groupe se doit donc, à minima, de trouver un point d'équilibre financier. Pas évident dans un monde en transformation constante et rapide. Notamment quand son statut de service publique lui a offert une arme à double tranchant : un maillage territorial important, donc une masse salariale importante. Ce maillage permet pourtant de délivrer des services locaux qu'aucune autre entreprise ne serait en mesure de créer sur le court terme. Pourtant, il a tendance à disparaître dans les zones peu rentables. Les services postaux et associés y sont peu à peu confiés à l'administration (via les bureaux de mairie) ou à des sociétés locales (bar, commerce...).

Pour faire rentrer de l'argent, La Poste n'a donc d'autres choix que la diversification. Le groupe, via ses multiples filiales, est aujourd'hui un monstre présent un peu partout : livraison de courrier, livraison de colis (Collisimo, Chronopost, DPD), Immobilier, Finance (La Banque Postal), Prévoyance, Assurance, Bourse (EasyBourse), Telecom (La Poste Mobile), Cinéma, Numérique (Docaposte). Dans le numérique, elle se paie même le luxe de racheter le logiciel Pronote et la plateforme KissKissBankBank. Il faut reconnaître que cette stratégie semble fonctionner puisque depuis 2004 (alors que le nombre d'entités est en croissance), le groupe a toujours été bénéficiaire. La crise du COVID lui a même permis de doubler son résultat net à plus de 2 milliards d'euros ! Pourtant, à partir de 2019, et malgré une réduction des effectifs de 30% depuis 2004, la dette du groupe n'a cessé d'augmenter passant de ~3/4 milliards à plus de 10 milliards d'euros en 2022 ! Le conseil d'administration semble être devenu accro à l'endettement, ce qui ne présage rien de bon pour la suite.

La Poste a donc besoin de se ré inventer constamment pour rester en vie. En ce qui concerne son cœur de métier (courrier - colis), elle propose des services assez innovants, mais pas forcément très bien mis en avant.

  • Le premier qui permet de gagner en temps de livraison tout en diminuant la pollution est l'impression à distance. L'idée est de faire imprimer le courrier par l'agence postale la plus proche du destinataire. La confidentialité en prend pour son compte, mais l'efficacité est de mise !

  • Le second est la possibilité d'imprimer à la maison son bon de livraison, de le coller sur son colis et de le mettre dans sa boîte aux lettres. Le facteur se chargera de le récupérer le lendemain et de le déposer lui même au bureau de poste. Ce qui évite les files d'attente et/ou le fait de devoir se déplacer dans un bureau dont les horaires ne nous conviennent pas forcément (notamment quand ils sont tenu par des agents de mairie). Attention cependant, le colis ne sera pris en charge pour le transport que le lendemain du dépôt au bureau (donc J+2 par rapport à l'impression de l'étiquette).

  • Dans la même veine, on peut désormais imprimer ses timbres numériques, même si La Poste continue de vendre toute une collection de timbres originaux (ou classiques).

  • Pour augmenter ses marges, la société met également en vente des cartons de taille diverses et variées dans ses agences.

Tout n'est donc pas parfait avec cette entreprise qu'au fond on aime bien (et donc que l'on châtie bien), mais il faut savoir reconnaître et mettre en valeur les bons aspects quand ils existent. Ce que les Français ont beaucoup de mal à faire !

Hello, I'm a hacker

Sunday, 06 October 2024
|
Écrit par
Grégory Soutadé
Hello!
I am a hаckеr who has аccess to your operating system.
I also have full аccess to your account.
...

C'est le genre de message que l'on reçoit (malheureusement) de plus en plus souvent... Il va s'en dire qu'il s'agit d'un SPAM. Il a d'ailleurs été classifié comme tel par gmail. Le texte est rédigé dans un Anglais parfait. Problème : la cible ne parle pas forcément cette langue. Dans le doute ils tentent quand même...

Les arguments déployés sont de nature à mettre le destinataire en état de stress :

  • L'ordinateur a été piraté par un cheval de Troie (trojan)
  • Le pirate a pris des photos intimes via la caméra (sans pour autant joindre des preuves)
  • Le cheval de Troie est indétectable par un anti virus car il est polymorphe (et il utilise le driver ?)
  • Le pirate va envoyer les photos à tous nos contacts et les publier sur les réseaux sociaux
  • Son email est intraçable
  • Le pirate ne fait pas d'erreur
  • Si on tente de prévenir quelqu'un d'autre, il mettra ses menaces à exécution

La rançon (parce que c'est le plus important) est de 1300 dollars (1200 €) à payer dans les 52 heures sur une adresse bitcoin (soit 0,000016 bitcoin). Il n'y a pas de lien étrange dans ce SPAM.

Là où ça devient intéressant et qui est souvent un critère de détection des SPAM : l'adresse email d'émission semble parfaitement valide : Hope Mcknight info@protonmail.com. Proton Mail offre des solutions (mail, calendrier, espace de stockage, VPN, gestionnaire de mot de passe, gestionnaire de crypto monnaie) sécurisées et garantissant la vie privée (du moins sur le papier). Elle est basée en Suisse, à Genève. Hope Mcknight semble être une personne réelle, même si on peut se douter que l'adresse "info" ne correspond pas à une adresse personnelle. Il s'agit donc d'une technique appelée "spoofing" ou usurpation d'identité. Elle consiste à afficher une adresse valide qui ne correspond pas à l'émetteur réel.

Maintenant, si l'on regarde avec attention le message original du mail avec toutes les entêtes, on peut noter :

Authentication-Results: mx.google.com;
       spf=softfail (google.com: domain of transitioning info@protonmail.com does not designate 45.95.146.101 as permitted sender) 

et surtout l'auteur original :

Received: from linkmasters.ru (linkmasters.ru [45.95.146.101])

Ces deux messages sont très intéressants car ils nous disent, d'une part, que l'adresse IP d'émission ne correspond pas à un serveur de Proton Mail (ses adresses sont référencées dans ses entrées DNS) et, d'autre part, qu'il vient en fait d'une société d'envoi d’email "linkmasters" d'origine Russe. L'IP du serveur émetteur (45.95.146.101) correspond quant à elle à un hébergeur de serveurs Néerlandais, ce qui augmente les chances de passer à travers les filtres anti-spam.

Ce message nous ramène donc directement à l'actualité. Pour passer outre les sanctions internationales et le désengagement Occidental en Russie, un des moyens de financer la guerre est de rançonner la population. C'est le genre de message qui ne coûte quasiment rien à envoyer et peut rapporter gros car la somme demandé est importante, mais en adéquation avec ce que serait prêt à payer les personnes pour protéger leur intimité. Il est le plus souvent l’œuvre d'un groupe de hackers malveillants plus ou moins sponsorisé par leur gouvernement respectif. Les champions en la matière sont Russes, mais aussi Chinois, Nord Coréen et bien d'autres.

Pour éviter que ses clients ne se fassent abuser, tout hébergeur de mail un tant soit peu sérieux se doit donc de vérifier les paramètres SPF et si possible DKIM (qui utilise une signature cryptographique) des messages entrants.

Malheureusement, dans la panique et parmi la masse de personnes touchées, certaines peuvent céder et payer la rançon.

Déchets à emporter

Sunday, 01 September 2024
|
Écrit par
Grégory Soutadé

Nous sommes en septembre ! Les grosses chaleurs de l'été vont bientôt s'estomper, on va pouvoir enfin respirer. Certains regrettent justement cette chaleur, les longues journées de vacances et les bons fruits et légumes gorgés de soleil, avec comme perspective grisaille et travail. Pourtant il se produit le contraire autour du bassin méditerranéen où le reste de l'année est agréable à vivre tandis que l'été est une période suffocante (encore 34°C le 1er septembre)... Bref, septembre marque le début d'un nouveau cycle. Cycle où traditionnellement l'on pouvait reprendre le travail sans trop se brûler la peau, à commencer par les vendanges. De nos jours ce cycle est calqué sur le cycle scolaire. Après une douce montée en charge fin août, c'est donc l'agitation de la rentrée qui opère. On se replonge dans un quotidien chargé en activités. Tout reprend en même temps, ce qui en fait un mois plutôt chaotique d'un point de vue circulation, le temps que chacun s'adapte à son (nouvel) emploi du temps.

Avec le retour au travail (et une moindre disponibilité de fruits et légumes variés), la question des repas revient sur la table. D'après une étude réalisée par Harris Interactive pour Cetelem (2023) et qui se base que sur un échantillon de 1165 personnes, 45% des actifs apportent un repas sur leur lieux de travail, 25% vont à la cantine, 10% au restaurant et 20% achètent leur repas le jour même. En se concentrant sur la région Parisienne, 40% se restaurent à la cantine. Les disparités sont donc importantes selon la région et la catégorie socio-professionnelle. L'étude nous apprend également que la pause déjeuner est souvent courte (inférieure 30 minutes dans 46% des cas, 1h dans dans 86% des cas).

Pour répondre à ce besoin de se sustenter pendant et en dehors des heures de travail, le recours à un achat externe est devenu monnaie courante. Il est d'ailleurs amusant de noter que les vendeurs ambulants ont (quasiment) toujours existé dans les villes. Aujourd'hui, on appelle ça la street food. Composés à la fois d'échoppes ambulantes (food trucks) et fixes. D'aucun pourra regretter le déclin de la grande cantine commune ou du bistrot du coin. Cette pratique du repas sur commande connaît d'ailleurs une forte croissance grâce à la livraison. Côté qualité, il y en a pour tout les goûts. Certes, hormis pendant la période du COVID, il sera difficile d'atteindre une qualité équivalente à un bon restaurant dans une offre à emporter/commander, mais l'on peut trouver des plateaux repas tout à fait correct, voire même des camions à nourriture de bonne qualité.

Le revers de la médaille, comme souvent quand il s'agit de "simplifier" la vie du consommateur, est une production de déchets importante (notamment plastiques et cartons). Déchets qui seront difficiles à recycler car souillés (liquides, gras, bactéries). De manière plus générale, l'alimentation est une grande génératrices de déchets à causes d'emballages et de sur emballages nombreux. Face à ce constat amer, une association Toulousaine a vu le jour en 2019 "En boîte le plat". Le nom n'est pas forcément très vendeur, mais l'idée tombe sous le sens : proposer un circuit de distribution/nettoyage aux commerçants. Ces derniers délivrent alors les repas dans un contenant consigné qui pourra être réutilisé de nombreuses fois. La principale difficulté de mettre en place un système de consigne est le fait que la plupart du temps les producteurs et les consommateurs sont éloignés via une (longue) chaîne de distribution, ce qui n'est pas le cas dans la vente à emporter; la plupart du temps locale et récurrente !

En quelques années, le réseau ETIC Emballages a pris de l'ampleur avec des antennes sur Rennes, Besançon, Compiègne, Saint-Étienne, Toulouse, le bassin Sophiapolitain et quelques 180 commerces engagés. Si ce chiffre peut paraître anecdotique au regard de l'offre nationale, l'important est surtout la volonté de faire bouger les choses et pourquoi pas l'évolution des mentalités. Car, même s'ils ne le proposent pas d'eux même, la plupart des commerçants acceptent DÉJÀ de disposer leurs produits dans nos propres contenants. Il faut juste anticiper un minimum avant de sortir faire des achats. Boulangerie, Pâtisserie, Boucherie, Poissonnerie, Traiteur, Food Truck... Pensez à apporter votre propre contenants, exactement comme on pense à apporter ses propres sacs de courses.

Aparté : Au delà de la production de déchets, de la qualité et du niveau d'équilibre nutritifs très moyen des repas, la vente à emporter favorise des comportements très mauvais d'un point de vue nutritionnel car elle s'accompagne souvent de desserts et "boissons" très sucrés via les "formules". Ces éléments qui sont peu souvent fait sur place, permettent au commerçant de réaliser de grosses marges unitaires. Pour autant, c'est une mauvaise habitude de les associer à son repas, car on aura tendance à reproduire ce schéma lors des repas courants (notamment pour les plus jeunes).