php password generator

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 12 Σεπ 2011 17:11

mrpc έγραψε:Πάντως πιστεύω ότι τα καλύτερα password δεν είναι μια σειρά από λίγους τυχαίους χαρακτήρες χωρίς νόημα. Πιο πολύ νόημα έχει μια μεγάλη φράση με κεφαλαία/μικρά,σύμβολα και αριθμούς, που να βγάζει νόημα για τον χρήστη.
Π.χ. IjoinedFreestuff.grat2000!
Εύκολο να το θυμάσαι, δεν σπάει εύκολα ακόμα και με λεξικό λόγω του συνδυασμού διαφορετικών λέξεων, και περιέχει κεφαλαία, μικρά, αριθμούς και σύμβολα.
Αμα ειναι να το παρουμε ξεκινα την κρυποτγραφια απο τωρα να εισαι κομλπε.
το θεμα ειναι να ειναι ασφαλες αυτο που εχεις γραψει ειναι κατι το οποιο αργει να σπασει επειδη μονο και μονο ειναι 25 περιπου γραμματα .
Δεν ειναι απαραιτητο ο κωδικος να ειναι ευκολος στην απο ανημονευση αλλα δυσκολος στο σπασιμο .
Για παραδειγμα με την τεχνικη τις συχνοτητας εμφανισεων αυτος ο 25 ψηφιος αλλα και στο λεξικο σπαει και δεν μασα γιατι εχεις 5 γνωστες λεξεις αρα σε τσιμπα.(σπαει σε βατο χρονο και οχι καποτε σαν με καποιους αλλους).

διαλεξε καποιο κρυπτοσυστημα και τελειωσες μεχρι στιγμης ειναι το RSA αλλα λενε οτι και αυτο εχει σπασει για καποιους συνδυασμους και αυτο οχι με σιγουρια εχει και αυτο τα δικα του.

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

php password generator

Δημοσίευση από mrpc » 12 Σεπ 2011 18:10

Αυτή η θεωρία που λέω πάντως την βλέπω σε αρκετά security blogs έξω.

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 12 Σεπ 2011 18:45

mrpc έγραψε:Αυτή η θεωρία που λέω πάντως την βλέπω σε αρκετά security blogs έξω.
γιαυτο ειναι ολα τρυπια :D

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

php password generator

Δημοσίευση από mrpc » 12 Σεπ 2011 18:56

Εικόνα

Άβαταρ μέλους
Punkis
Δημοσιεύσεις: 260
Εγγραφή: 27 Αύγ 2009 22:45

php password generator

Δημοσίευση από Punkis » 12 Σεπ 2011 19:33

mrpc έγραψε:Αυτή η θεωρία που λέω πάντως την βλέπω σε αρκετά security blogs έξω.
+1

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

php password generator

Δημοσίευση από mrpc » 12 Σεπ 2011 19:37

Με dictionary attack δεν είναι εύκολο να σπάσεις μεγάλη φράση Το θέμα δεν είναι ότι οι λέξεις είναι γνωστές, αλλά ότι οι συνδυασμοί είναι άπειροι καθώς οι λέξεις είναι χιλιάδες (ενώ τα γράμματα/σύμβολα είναι μόνο μερικές δεκάδες). Παράλληλα στο τέλος ο αριθμός και το σύμβολο περιπλέκουν ακόμα περισσότερο τα πράγματα.

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 15 Σεπ 2011 22:28

mrpc έγραψε:Εικόνα
λοιπον σε hackish γραφανε την δεκαεται του 90 καποιο καλο λεξικο το τσακιζει

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 15 Σεπ 2011 22:32

mrpc έγραψε:Με dictionary attack δεν είναι εύκολο να σπάσεις μεγάλη φράση Το θέμα δεν είναι ότι οι λέξεις είναι γνωστές, αλλά ότι οι συνδυασμοί είναι άπειροι καθώς οι λέξεις είναι χιλιάδες (ενώ τα γράμματα/σύμβολα είναι μόνο μερικές δεκάδες). Παράλληλα στο τέλος ο αριθμός και το σύμβολο περιπλέκουν ακόμα περισσότερο τα πράγματα.
λαθος λαθος λαθος δεν εχεις καταλαβει τι ειναι το λεξικο
ενα σοβαρο λεξικο εχει τις δυνατοτητες να σου βρει την λεξη σε τι χρονο βεβαια ειναι κατι αλλο



ΟΛΑ ΤΑ PASSWORD ΣΠΑΖΟΝΤΑΙ ΔΕΝ ΥΠΑΡΧΕΙ ΚΑΝΕΝΑ ΠΟΥ ΝΑ ΜΗΝ ΣΠΑΕΙ ΝΟΜΟΣ
εχουν βγει τεραστια βιβλια γιαυτο οτι και να σκεφτεις εσυ η καποιος αλλος δεν υπαρχει περιπτωση να μην σπασει

σε τι χρονο βεβαια ειναι αλλο θεμα

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

php password generator

Δημοσίευση από mrpc » 15 Σεπ 2011 22:40

Δεν είπα ότι δεν γίνεται. Είπα ότι δεν είναι εύκολο. Και δεν είναι εύκολο από άποψη χρόνου, λόγω άπειρων συνδυασμών. Λόγω του ότι οι λέξεις σε ένα λεξικό είναι περισσότερες από τους πιθανούς χαρακτήρες σε μια λέξη, είναι πολύ πιο χρονοβόρο να μαντέψεις ένα συνδυασμό λέξεων σε μια πρόταση.

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

php password generator

Δημοσίευση από pimpogio » 16 Σεπ 2011 12:38

το αν σπανε ευκολα ειναι αλυτο προβλημα που περιμενει λυση στα μαθηματικα..
Εχει και τιμητικο δωρο 1 εκατομμυριο ευρω για οποιον το λυσει.Ειναι το ποιο δυσκολο προβλημα μαθηματικων αυτη τη στιγμη στον κοσμο.
Εικασιες βεβαια υπαρχουνε αλλα δεν υπαρχει αποδειξη..

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 16 Σεπ 2011 17:46

http://el.wikipedia.org/wiki/%CE%9A%CF% ... F%89%CE%BD

για κρυπταναλυση info :D

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php password generator

Δημοσίευση από dva_dev » 19 Σεπ 2011 21:07

Και για να κάνουμε τώρα σε php extension τη function του αρχικού post για να υπάρχει διαθέσιμη χωρίς include/copy/paste και να τρέχει λίγο (ή πολύ) πιο γρήγορα...

Εγκαθιστούμε στο linux μας τα gcc, phpize, make από τα σχετικά πακέτα.
Δημιουργούμε ένα νέο φάκελο passwd και εκεί μέσα δημιουργούμε τα εξής αρχεία:

config.m4

Κώδικας: Επιλογή όλων

PHP_ARG_ENABLE(passwd, whether to enable passwd support, [ --enable-passwd Enable passwd support])

if test "$PHP_PASSWD" = "yes"; then
  AC_DEFINE(HAVE_PASSWD, 1, [Whether you have passwd])
  PHP_NEW_EXTENSION(passwd, passwd.c, $ext_shared)
fi

INC_CHECK_DIRS="/usr /usr/local"

for i in $INC_CHECK_DIRS ; do
  if test -f $i/include/php/ext/standard/php_rand.h; then
    PHP_ADD_INCLUDE($i/include/php/ext/standard)
    break
  fi
done
passwd.h

Κώδικας: Επιλογή όλων

#ifndef __PASSWD_H__
#define __PASSWD_H__ 1
#ifndef _WIN32
#include
#endif
#include
#ifdef ZTS
#include "TSRM.h"
#endif

#ifndef BOOL
#define BOOL	short
#endif //BOOL
#ifndef FALSE
#define FALSE	(0)
#endif
#ifndef TRUE
#define TRUE	(1)
#endif

#define PHP_PASSWD_WORLD_VERSION "1.0.0"
#define PHP_PASSWD_WORLD_EXTNAME "passwd"

PHP_FUNCTION(passwd_version);
PHP_FUNCTION(passwd_create);

PHP_MINIT_FUNCTION(passwd);
PHP_MINFO_FUNCTION(passwd);

extern zend_module_entry passwd_module_entry;
#define phpext_passwd_ptr &passwd_module_entry

#endif //__PASSWD_H__
passwd.c

Κώδικας: Επιλογή όλων

#include "php.h"
#include "php_rand.h"

#ifdef _WIN32
#include "ext/standard/info.h"
#endif

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "passwd.h"

#ifndef LONG
typedef long LONG;
#endif

static function_entry passwd_functions[] = {
    PHP_FE(passwd_version, NULL)
    PHP_FE(passwd_create, NULL)
    {NULL, NULL, NULL}
};

zend_module_entry passwd_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
    STANDARD_MODULE_HEADER,
#endif
    PHP_PASSWD_WORLD_EXTNAME,
    passwd_functions,
    PHP_MINIT(passwd),
    NULL,
    NULL,
    NULL,
    PHP_MINFO(passwd),
#if ZEND_MODULE_API_NO >= 20010901
    PHP_PASSWD_WORLD_VERSION,
#endif
    STANDARD_MODULE_PROPERTIES
};

#ifdef COMPILE_DL_PASSWD
ZEND_GET_MODULE(passwd)
#endif

char* passwordChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*&#40;&#41;-_=+&#91;&#93;&#123;&#125;\\|,<.>/?~;&#58;";
int passwordCharsLen = 0; 

static void ZEND_MODULE_GLOBALS_CTOR_N&#40;passwd&#41;&#40;void *passwd_globals TSRMLS_DC&#41;
&#123;
    //php_srand&#40; time&#40;NULL&#41; &#41;;
&#125;

PHP_MINIT_FUNCTION&#40;passwd&#41;
&#123;
    passwordCharsLen = strlen&#40;passwordChars&#41;;
    return SUCCESS;
&#125;

PHP_MINFO_FUNCTION&#40;passwd&#41;
&#123;
    php_info_print_table_start&#40;&#41;;
    php_info_print_table_row&#40;2, "passwd", "passwd Functions"&#41;;
    php_info_print_table_row&#40;2, "passwd_create", "return a random password string"&#41;;
    php_info_print_table_end&#40;&#41;;
&#125;

PHP_FUNCTION&#40;passwd_version&#41;
&#123;
    RETURN_STRING&#40;PHP_PASSWD_WORLD_VERSION, 1&#41;;
&#125; 

PHP_FUNCTION&#40;passwd_create&#41;
&#123;
    long i, llen, rnd_idx;
    char* tmp;
    if &#40;ZEND_NUM_ARGS&#40;&#41; != 1&#41; &#123;
        WRONG_PARAM_COUNT;
    &#125;
    llen = 8;
    if &#40;&#40;zend_parse_parameters&#40;ZEND_NUM_ARGS&#40;&#41; TSRMLS_CC, "l", &llen&#41; == FAILURE&#41; ||
        &#40;llen < 4&#41; || &#40;llen > 128&#41;&#41;
    &#123;
        RETURN_STRING&#40;"len should be an integer between 4 and 128", 1&#41;;
    &#125; 

    tmp = emalloc&#40;llen+1&#41;;

    for &#40;i=0; i<llen; i++&#41;
    &#123;
        rnd_idx = php_rand&#40;TSRMLS_C&#41;;
        RAND_RANGE&#40;rnd_idx, 0, passwordCharsLen-1, PHP_RAND_MAX&#41;;
        tmp&#91;i&#93; = passwordChars&#91;rnd_idx&#93;;
    &#125;
    tmp&#91;i&#93;=&#40;char&#41;0;
    RETURN_STRING&#40;tmp, 0&#41;;
&#125;
Μετά κάνουμε το απαραίτητο build τρέχοντας τις εντολές

Κώδικας: Επιλογή όλων

phpize; ./configure; make; sudo make install
Και τέλος προσθέτουμε πλέον το extension στο php.ini με

Κώδικας: Επιλογή όλων

extension=passwd.so
και έχουμε τη function passwd_create($len) διαθέσιμη.

Τώρα o αντίστοιχος κώδικας του αρχικού post θα μπορούσε να γίνει ως εξής:

Κώδικας: Επιλογή όλων

<?php
header&#40;'Content-type&#58; text/plain'&#41;;
    if &#40;isset&#40;$_GET&#91;'len'&#93;&#41;&#41; $len = &#40;int&#41;$_GET&#91;'len'&#93;;
    if &#40;&#40;$len < 4&#41; || &#40;$len > 128&#41;&#41; $len = 8;
    echo passwd_create&#40;$len&#41;;
?>
Συνημμένα
passwd.zip
linux sources
(2.09 KiB) Μεταφορτώθηκε 350 φορές

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες