(Ne)pravidelná piatková (ne)súťaž #2

02.12.2016 13:38 | Články | mirek biňas
Je to neuveriteľné, ale je to tak - máme tu druhé kolo vašej (ne)obľúbenej (ne)pravidelnej piatkovej (ne)súťaže. Prvé kolo dopadlo nad očakávania dobre a vo výsledku sa zišlo niekoľko súťažiacich, ktorí prekypovali fantáziou a posielali jedno riešenie horšie ako druhé. Za zmienku stojí odvážny príspevok napísaný v assembleri alebo zaujímavý nápad použitý v riešení v bashi. A keďže prvé kolo nikto nevyhral, prichádzame s kolom druhým, v ktorom očakávame veľmi podobný postup. O čo teda dnes pôjde?

Na konci leta sme sa v niekoľkých správičkách dozvedeli, že ukazovatelia sily hesla na rozličných stránkach vlastne pracujú pomerne hlúpo, pretože miesto toho, aby kontrolovali ozajstnú silu hesla, zisťujú len počet výskytov veľkých písmien, malých písmien a číslic. Tie sofistikovanejšie ukazovatele vo výsledku ocenia aj to, ak v hesle použijete aj iný znak, ako je písmeno a číslica.

Čo nás teda v dnešom jubilejnom kole nesúťaže čaká? Práve vytvorenie takéhoto sofistikovaného nástroja na zistenie sily hesla. Pravidlá sú nasledovné:

Vytvorte "modul" (program/one-liner/funkciu) pre overenie sily hesla. Heslo bude považované za silné, ak spĺňa nasledovné podmienky:

  • je dlhé minimálne 10 znakov
  • obsahuje minimálne jednu číslicu
  • obsahuje minimálne jedno malé písmeno
  • obsahuje minimálne jedno veľké písmeno

Heslo je zložené len z ASCII znakov, pričom obsahovať môže len písmená alebo číslice. Ak sa jedná o silné heslo, vypíšte na obrazovku text "Strong password". Ak sa naopak jedná o slabé heslo, vypíšte na obrazovku "Weak password".

Tak, ako aj minule, na súťažiacich nečakajú žiadne ceny, takže sa nemáte na čo tešiť. Ale pochváliť sa svojimi výtvormi a pokusmi sa určite pochválite radi. Tak šup do práce!

    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 15:15
      Avatar uid0 Debian  Používateľ
      ruby -e "p=ARGV[0]; if p.length >= 10 and p =~ /[0-9]/ and p =~ /[A-Z]/ and p =~ /[a-z]/ then puts 'Strong password' else puts 'Weak password' end" PassWord10
      Debian. apt-get into it…
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 17:27
      Avatar backb0ne Linux Mint, Debian, Arch  Používateľ
      #!/bin/bash
      
      passwd="$1"
      
      if [ ${#passwd} -ge 10 ] && [[ "${passwd}" =~ [A-Z] ]] && [[ "$passwd" =~ [a-z] ]] && [[ "$passwd" =~ [0-9] ]];
      then
      	echo "Strong password"
      else
      	echo "Weak password"
      fi
      
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 17:45
      Avatar Dušan_Kreheľ Debian  Používateľ
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 19:12
      Avatar wamba   Návštevník
      perl6 -e 'subset Passwd of Str where /^ <[ a..z A..Z 0..9 ]>+ $/;
                subset StrongPasswd of Passwd where { .codes >= 10 }&/ \d /&/ <:Lu> /&/ <:Ll> /;
                multi MAIN ( StrongPasswd $ ) { say "Strong password" }
                multi MAIN ( Passwd $ ) { say "Week password" }' "pPpasPPpas123"
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 19:45
      Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
      • Príspevok bol vymazaný.
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 19:46
      Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
      #!/bin/bash
      
      if echo "$1" | egrep "^.{10,}$" | egrep "[a-z]+" | egrep "[A-Z]+" | egrep "[0-9]+"; then
          echo "Strong password"
      else
          echo "Weak password"
      fi
      
      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 02.12.2016 | 19:56
      Avatar bezpecak   Návštevník

      OT: Aby někdo náhodou nenabyl dojmu, že popsaný estimátor síly hesla je ten správný směr (tj. omezování uživatele vedoucí k psaní hesel na lístečky apod.), kterým se vydat při kontrole hesel, uvedu odkaz na pokus o vytvoření skutečně kvalitního estimátoru:

      https://github.com/dropbox/zxcvbn

    • RE: (Ne)pravidelná piatková (ne)súťaž #2 03.12.2016 | 23:50
      Avatar bedňa antiX, Devuan, LegacyIce  Administrátor
      niekoľko súťažiacich, ktorí prekypovali fantáziou a posielali jedno riešenie horšie ako druhé

      Asi nebudem jediný ktorého by zaujimálo, čo všetko bolo zle.

      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
      • RE: (Ne)pravidelná piatková (ne)súťaž #2 04.12.2016 | 13:49
        Avatar mirek biňas Fedora 25  Administrátor

        nuz... kedze sa jedna o (ne)sutaz, v ktorej sa neda nic vyhrat, musi byt nejako zdovodnene, ze preco nikto ziadnu cenu neziskal. cize je to skor take slovenske na sposob - skutok sa nestal :-)

        • RE: (Ne)pravidelná piatková (ne)súťaž #2 04.12.2016 | 16:08
          Avatar bedňa antiX, Devuan, LegacyIce  Administrátor

          eineltevsyv az mejukaď

          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: (Ne)pravidelná piatková (ne)súťaž #2 09.12.2016 | 10:21
      Avatar LUcoRP Debian, *buntu, Android  Používateľ

      peeehaapeecko

      echo "Enter password: ";
      $handle = fopen ("php://stdin","r");
      $input = fgets($handle);
      
      if ((strlen($input) > 9) && (preg_match('/[A-Z]+/', $input)) && (preg_match('/[[a-z]+/', $input)) && (preg_match('/[0-9]+/', $input))) {
          echo "Strong paswword\n";
      } else {
          echo "Weak password\n";
      }
      • RE: (Ne)pravidelná piatková (ne)súťaž #2 12.12.2016 | 10:22
        Avatar bedňa antiX, Devuan, LegacyIce  Administrátor

        Neskúšal som, ale v PHP by mohlo fungovať aj toto:

        if (preg_match('/(?=.*.{10})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $input)) {

        Je to trochu upravený zápis z PERLu:

        '/(?=.{10})(?=[A-Z])(?=[a-z])(?=[0-9])/'
        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org