All posts by kastenblog

mysql unsecure password function removed

ok on le savait qu’elle était pas top cette fonction déterministe : https://blog.kastenbaum.net/dont-crypt-password-with-mysql-functions/
mais de là à la supprimer ….
c’est fait mysql8 c’est supprimé (mariadb aussi ? why??).

on veut bien changer , mais pour les anciens mots de passe, on fait comment ??

on émule car old_password c’est compliqué mais on connait, et password, c’est du sha1 de unhex de sha1 https://stackoverflow.com/questions/5654819/how-can-i-decrypt-mysql-passwords :

drop function if exists my5password;
 delimiter $$
 create function my5password (input varchar(250)) 
 returns varchar(50)
 deterministic
 begin 
  return concat('*',upper(sha1(unhex(sha1(input)))));
 end$$
 delimiter ;



 drop function if exists old_password;
 delimiter $$
 create function old_password (input char(250)) 
 returns char(16)
 deterministic
 begin 
   declare nr bigint;
   declare nr2 bigint;
   declare ad bigint;
   declare inlen int;
   declare i int;
   declare b char;
   declare tmp int;
   declare output char(16);
   set nr = 1345345333;
   set nr2 = 0x12345671;
   set ad = 7;
   set inlen = length(input);
   set i = 1;
   while i <= inlen do
     set b = mid(input, i, 1);
     if b != ' ' and b != '\t' then
       set tmp = ord(b);
       set nr = nr ^ ((((nr & 63) + ad) * tmp) + ((nr << 8) & 0xffffffff));
       set nr2 = nr2 + (((nr2 << 8) & 0xffffffff) ^ nr);
       set ad = ad + tmp;
     end if;
     set i = i + 1;
   end while;
   set nr  = nr  & ((1 << 31) - 1);
   set nr2 = nr2 & ((1 << 31) - 1);      
   set output = lower(concat(hex(nr), hex(nr2)));
   return output;
 end$$
 delimiter ;

select my5password('toto'),old_password('toto');

alors bon ouais je n’ai pas réussi à créer la fonction qui s’appelle password() .
Enfin si on peut la créer mais il faut l’appeler mabase.password() donc ça revient au même, il faut repasser dans tous les SQL, et remplacer les where password(saisi)=champw par my5password(…

Quelle idée à la con de supprimer password(), ça va râler, c’est bien un coup d’oracle. On aurait pu rajouter un paramètre ‘salt’ optionnel, mais bon ça n’aurait pas fermé le trou de sécurité risqué par le transport de mot de passe non crypté vers mysql.

Les codes invisibles de gauche à droite rtl ltr 200e e2808e

Dans mon insertion sql de dates, elles n’étaient quelquefois pas reconnues, et du coup default now ou null. Quelquefois.
Et en cherchant sur quoi je tombe ?

06<200e>/<200e>07<200e>/<200e>19

Mais c’est quoi ces codes de m.. (en effet j’hésitais entre unicode et utf8).
Justement, c’est pas pareil, c’est des codes invisibles ltr rtl qui ne préviennent pas. Ils sont là si on veut mettre une citation en hébreu dans la phrase, mais למה לא?.
Justement l’unicode et l’utf8 sont différents. \u200e et \xe2808e
osef on veut les virer partout ?

function udb_clear_invisible($v_in)
{ //clear ltr rtl update udb_mta set mta_value=replace(mta_value,UNHEX('e2808e'),'') where mta_value like CONCAT('%', UNHEX('e2808e'),'%')
return(str_replace(array("\x20\x0e","\x20\x0f","\xe2\x80\x8e","\xe2\x80\x8f"),'',$v_in));
}

ntpdate rdate via http

Fatigué de ramer sur la mise en place de ntp, ntpd, port 123, et le message already used, trouver ntpdate -u, et voir qu’on ne trouve toujours pas les pool.ntp.org, et se dire que tout le monde est à l’heure sauf sa machine, et qu’on n’a que le http comme protocole, et qu’avec le http on a toujours l’heure dans le header, et que pourquoi qu’on n’utiliserait pas cette heure pour mettre à jour, hein ?

curl -X HEAD -s -i http://fr.pool.ntp.org|grep Date|sed -e 's/^Date:/--set="/' -e 's/$/"/'|xargs date