lundi 11 octobre 2010

Windowseries réseaux

Sous Windows, des fois, le simple fait de lancer une application comme TS3 vous permet de brider votre connexion ethernet à 100Mbps alors même que vous venez d'acheter un joli switch 1000Mbps. Passe encore.

Maintenant, vous souhaitez copier des fichiers linux -> windows par CIFS et là ça ne marche pas parce que Windows l'a décidé. En fait il pourrait très bien le faire à condition de modifier un paramètre système qui pose des problèmes de performances avec les jeux et les cartes 3D.

Bref je suis "like the fruit of the oak" comme dirait Francis. J'ai plus qu'à essayer le FTP.

lundi 4 octobre 2010

La meilleure SF de toute la zone lente

Attention, il paraît que Vernor Vinge publie un nouvel opus de la série "Zones of Thought" ce 21 octobre !

vendredi 1 octobre 2010

U SOX

Si toi aussi tu es soumis à Sarbanes-Oxley, peut-être utilises-tu déjà un générateur de mot passe de qualité. Sinon, je te prête celui-ci. Je n'en dis pas plus mais c'est du vrai. Du coup les mots de passe ont tous un petit air de famille.



#define FALSE 0
#define TRUE  1

int rand ();
unsigned long getseed ();

main (int argc, char *argv[])
{
  char AMin[] = "abcdefghijklmnopqrstuvwxyz";
  char AMaj[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  char Nume[] = "0123456789";
  char Spec[] = "!:~{}.^*=+-,?_%";
  long trustedhostid[2];
  int istrustedhost = 0;
  char PassWord[20];
  int NSpec = 15;
  int a = 0;

  int seed, numgen, longpass, typelettre;
  int FMin, FMaj, FNum, FSpe;
  int ic, i, j, k, l, n;
  FMin = FMaj = FNum = FSpe = FALSE;
  l = 1;

#if 0
  if (getuid () > 0)
    {
      fprintf (stderr, "Sorry, only root can run this command\n");
      exit (1);
    }
#endif

  seed = getseed ();
  while (seed <= 100000)
    {
      seed = getseed ();
    }

  longpass = 8;
  numgen = fonct_rand (seed);

  ic = 0;
  n = numgen % 26;
  if (numgen % 2 == 0)
    {
      PassWord[ic] = AMin[n];
      FMin = TRUE;
    }
  else
    {
      PassWord[ic] = AMaj[n];
      FMaj = TRUE;
    }

  for (ic = 1; ic < longpass; ic++)
    {
      seed = numgen;
      numgen = fonct_rand (seed);
      typelettre = numgen % 4;
      if (ic > longpass / 5 && !FMin)
    typelettre = 0;
      if (ic > longpass * 2 / 5 && !FMaj)
    typelettre = 1;
      if (ic > longpass * 3 / 5 && !FNum)
    typelettre = 2;
      if (ic > longpass * 4 / 5 && !FSpe)
    typelettre = 3;

      switch (typelettre)
    {
    case 0:
      n = numgen % 26;
      PassWord[ic] = AMin[n];
      FMin = TRUE;
      break;
    case 1:
      n = numgen % 26;
      PassWord[ic] = AMaj[n];
      FMaj = TRUE;
      break;
    case 2:
      n = numgen % 10;
      PassWord[ic] = Nume[n];
      FNum = TRUE;
      break;
    case 3:
      n = numgen % NSpec;
      PassWord[ic] = Spec[n];
      FSpe = TRUE;
      break;
    }
    }
  PassWord[ic] = '\0';

  printf ("%s\n", PassWord);

}

int
fonct_rand (int j)
{

  int i, k, l;

  l = 1;

  k = j / 100000;
  k *= 100000;

  l = j - k;
  for (i = 0; i < l; i++)
    rand ();

  return rand ();
}

unsigned long
getseed ()
{
  unsigned int myseed;
  FILE *devrandom;

  if ((devrandom = fopen ("/dev/random", "r")) == NULL)
    {
      fprintf (stderr, "Sorry , I can't open /dev/random \n");
      exit (1);
    }

  else
    {
      fread (&myseed, sizeof (myseed), 1, devrandom);
      fclose (devrandom);
    }
  return (myseed);

}