Portál AbcLinuxu, 12. května 2025 10:45

Dotaz: formát hesel v /etc/shadow

28.12.2007 22:50 Tomáš Skočdopole | skóre: 13
formát hesel v /etc/shadow
Přečteno: 4036×
Odpovědět | Admin
Zdravim

chtel bych se zeptat jakym zpusobem jsou generovana hesla v
/etc/shadow
zkousel jsem
echo "mojeheslo" | md5sum
ale vysledek se neshodoval se zaznamem v souboru shadow.

Zajimalo by me jakym zpusobem se vytvareji zasifrovana hesla. Mam distribuci Ubuntu 7.10
$ cat /etc/pam.d/common-password 
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.

# Explanation of pam_unix options:
#
# The "nullok" option allows users to change an empty password, else
# empty passwords are treated as locked accounts.
#
# The "md5" option enables MD5 passwords.  Without this option, the
# default is Unix crypt.
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# You can also use the "min" option to enforce the length of the new
# password.
#
# See the pam_unix manpage for other options.

password   required   pam_unix.so nullok obscure md5

# Alternate strength checking for password. Note that this
# requires the libpam-cracklib package to be installed.
# You will need to comment out the password line above and
# uncomment the next two in order to use this.
# (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')
#
# password required       pam_cracklib.so retry=3 minlen=6 difok=3
# password required       pam_unix.so use_authtok nullok md5
Diky za vysvetleni!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

kozzi avatar 28.12.2007 23:01 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
no pokud to heslo v /etc/shadow zacina $1$ tak je to md5 heslo jiank to muze byt DES
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
28.12.2007 23:59 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
ano zacina to prefixem $1$
28.12.2007 23:17 depka
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo -n "mojeheslo" | md5sum

-n .... man echo
28.12.2007 23:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
A zkoušel jste to? Tohle totiž nemá šanci fungovat hned z několika důvodů.
29.12.2007 00:00 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
ano mate pravdu :)

ale i pres to to nejde...
30.12.2007 15:32 depka
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
mate pravdu, neskousel, myslel jsem ze bude problem v \n
28.12.2007 23:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud vám jde jen o vygenerování hashe k heslu, použijte např. chpasswd nebo si můžete napsat vlastní nadstavbu nad knihovní funkci crypt(). Pokud vám jde o pochopení používaných algoritmů, tak to není na odpověď do poradny, spíš na článek.
29.12.2007 00:04 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
no ja bych rad spis vedel jakym zpusobem jsou ty hesla generovana a tak...

Kdesi jsem cetl, ze je pridavana k heslu jeste tzv.: "sul", nebo ze se pro roota generuje heslo jinym zpusobem nez pro normalniho usera, nebo ze se pouziva md5(md5(heslo).

Tak by me to praveze zajimalo...
29.12.2007 15:57 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
$ chpasswd
bash: chpasswd: command not found
$ apt-cache search chpasswd
$
:-D
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
29.12.2007 16:13 Martin | skóre: 10 | blog: Nádraží Perdido
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Proč asi.
$ chpasswd
bash: chpasswd: command not found
$ whereis chpasswd
chpasswd: /usr/sbin/chpasswd /usr/share/man/man8/chpasswd.8.gz
$ 
29.12.2007 16:23 diverman | skóre: 32 | blog: život s tučňáčkem
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
heh, chybicka se vloudila :-D
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
29.12.2007 16:34 Martin | skóre: 10 | blog: Nádraží Perdido
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Taky bych řekl. :-)
29.12.2007 00:10 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyz si stahnes zdrojove kody balicku shadow a podivas se na zdrojovy kod programu src/passwd.c tak uvidis ze na radku (cca) 290 je kod:
/*
 * Encrypt the password, then wipe the cleartext password.
 */
cp = pw_encrypt (pass, crypt_make_salt ());
memzero (pass, sizeof pass);
A když se podívaš jak je definovaná funkce pw_encrypt v souboru contrib/pwdauth.c tak zjištíš zaprvé
/*
 * Define HAVE_PW_ENCRYPT to use pw_encrypt() instead of crypt().
 * pw_encrypt() is like the standard crypt(), except that it may
 * support better password hashing algorithms.
...
Takže jde vlastne o standartni fci z glibc, o ktere si muzeme precist nasledujici text z glibc manualu..
32.3 Encrypting Passwords
=========================

 -- Function: char * crypt (const char *KEY, const char *SALT)
     The `crypt' function takes a password, KEY, as a string, and a
     SALT character array which is described below, and returns a
     printable ASCII string which starts with another salt.  It is
     believed that, given the output of the function, the best way to
     find a KEY that will produce that output is to guess values of KEY
     until the original value of KEY is found.

     The SALT parameter does two things.  Firstly, it selects which
     algorithm is used, the MD5-based one or the DES-based one.
     Secondly, it makes life harder for someone trying to guess
     passwords against a file containing many passwords; without a
     SALT, an intruder can make a guess, run `crypt' on it once, and
     compare the result with all the passwords.  With a SALT, the
     intruder must run `crypt' once for each different salt.

     For the MD5-based algorithm, the SALT should consist of the string
     `$1$', followed by up to 8 characters, terminated by either
     another `$' or the end of the string.  The result of `crypt' will
     be the SALT, followed by a `$' if the salt didn't end with one,
     followed by 22 characters from the alphabet `./0-9A-Za-z', up to
     34 characters total.  Every character in the KEY is significant.

     For the DES-based algorithm, the SALT should consist of two
     characters from the alphabet `./0-9A-Za-z', and the result of
     `crypt' will be those two characters followed by 11 more from the
     same alphabet, 13 in total.  Only the first 8 characters in the
     KEY are significant.

     The MD5-based algorithm has no limit on the useful length of the
     password used, and is slightly more secure.  It is therefore
     preferred over the DES-based algorithm.

     When the user enters their password for the first time, the SALT
     should be set to a new string which is reasonably random.  To
     verify a password against the result of a previous call to
     `crypt', pass the result of the previous call as the SALT.

   The following short program is an example of how to use `crypt' the
first time a password is entered.  Note that the SALT generation is
just barely acceptable; in particular, it is not unique between
machines, and in many applications it would not be acceptable to let an
attacker know what time the user's password was last set.

     #include <stdio.h>
     #include <time.h>
     #include <unistd.h>
     #include <crypt.h>

     int
     main(void)
     {
       unsigned long seed[2];
       char salt[] = "$1$........";
       const char *const seedchars =
         "./0123456789ABCDEFGHIJKLMNOPQRST"
         "UVWXYZabcdefghijklmnopqrstuvwxyz";
       char *password;
       int i;

       /* Generate a (not very) random seed.
          You should do it better than this... */
       seed[0] = time(NULL);
       seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);

       /* Turn it into printable characters from `seedchars'. */
       for (i = 0; i < 8; i++)
         salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];

       /* Read in the user's password and encrypt it. */
       password = crypt(getpass("Password:"), salt);

       /* Print the results. */
       puts(password);
       return 0;
     }

   The next program shows how to verify a password.  It prompts the user
for a password and prints "Access granted." if the user types `GNU libc
manual'.

     #include <stdio.h>
     #include <string.h>
     #include <unistd.h>
     #include <crypt.h>

     int
     main(void)
     {
       /* Hashed form of "GNU libc manual". */
       const char *const pass = "$1$/iSaq7rB$EoUw5jJPPvAPECNaaWzMK/";

       char *result;
       int ok;

       /* Read in the user's password and encrypt it,
          passing the expected password in as the salt. */
       result = crypt(getpass("Password:"), pass);

       /* Test the result. */
       ok = strcmp (result, pass) == 0;

       puts(ok ? "Access granted." : "Access denied.");
       return ok ? 0 : 1;
     }

 -- Function: char * crypt_r (const char *KEY, const char *SALT, struct
          crypt_data * DATA)
     The `crypt_r' function does the same thing as `crypt', but takes
     an extra parameter which includes space for its result (among
     other things), so it can be reentrant.  `data->initialized' must be
     cleared to zero before the first time `crypt_r' is called.

     The `crypt_r' function is a GNU extension.

   The `crypt' and `crypt_r' functions are prototyped in the header
`crypt.h'.
Z cehoz teda vyplyva ze hash jednoho retezce muze byt ruzny, protoze zalezi jeste na salt, ktery se voli pri tvorbe toho hesla.. navic muze heslo byt DES nebo MD5. Takze obycejnym hranim si s pipe a md5sum to asi nepujde.. Pro dalsi info doporucuju stahnout si manual ke gnu libc a cist..
29.12.2007 00:24 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Jeste doplnim informaci pro ty, kteri by chteli vyzkouset uvedene priklady, ze je potreba je kompilovat s prepinacem -lcrypt. Napriklad takto
gcc -lcrypt -o checkPasswd checkPasswd.c
29.12.2007 12:30 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Dekuji Vam za pekne vysvetleni! Takze pokud tomu dobre rozumim:

Dostal jsem pocitac na kterem je jakasi stara distribuce linuxu. A nemam k tomu heslo.

Kdyz z neho vyndam HDD, pripojim si ho do sveho pocitace, a stahnu si soubor /etc/passwd a shadow. Tak bez zdrojovych kodu te stare distribuce nemam sanci zmenit rootovske heslo, nebo pridat si vlastni ucet?
29.12.2007 12:52 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Naopak, ty algoritmy se používají všeho všudy asi tak tři, takže pokud nepoužijete blowfish, máte prakticky jistotu, že jakákoli distribuce vydaná po roce 1996 bude formátu rozumět.
pdp7 avatar 29.12.2007 12:59 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Tak pouzij nejaky LiveCD s rootem, a od tam to heslo muzes zmenit.
29.12.2007 13:43 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Nepotřebuje live cd obvykle postačí single režim.

Viz http://www.abclinuxu.cz/forum/show/135608
Jakub Lucký avatar 29.12.2007 14:37 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Pokud je to stará distribuce, tak možná, ale dneska už to moc nefunguje... Zkuste to třeba v Debianu... root password (or type Ctrl-D to continue):
If you understand, things are just as they are; if you do not understand, things are just as they are.
Jakub Lucký avatar 29.12.2007 14:00 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Souhlasím... Nejlepší řešení, pokud nepotřebujete heslo znát, ale potřebujete se do systému dostat, je nabootovat LiveCD, nachrootovat a pak pomocí passwd udělat vlastní heslo...
If you understand, things are just as they are; if you do not understand, things are just as they are.
29.12.2007 18:40 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
No ona to je jakasi distribuce nahrana na FAT filesystemu - asi 20 soboru s priponou lrp, ktere jdou rozbalit TARem... Takze na to asi live CD s chrootem nepomuze.

A co se tyce single mode, tak tam na vyber bohuzel neni... Tusim ta distribuce se jmenuje se Bering, nebo tak nejak. Zhruba rok 1998-2002.

Co se tyce toho hesla v shadow, tak MD5tkou to asi nebude, jelikoz heslo nezacina sekvenci $1$.

Takze pokud dle prispevku, ktery je o trochu vys, existuji celkem tri algoritmy, tak zbyvaji uz jenom dva...

Pokud budu mit chvilu cas, tak bych mohl ten pocitac donest ze sklepa a zapojit ho...
29.12.2007 21:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Začíná-li příslušná položka dvěma znaky z abecedy 'a-zA-Z0-9./', je to DES. Je-li na začátku $2a$, je to blowfish. Je-li tam něco jiného, bude to něco jiného.
30.12.2007 01:28 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
dobra, ja se podivam na jak to vypada, kdyztak ho sem klidne i poslu, vsak nejde o nic tajneho...

Na sekvenci $1$ ani $2$ to urcite nezacinalo, mam takovy dojem, ze se v retezci vyskytovaly jenom znaky a-zA-Z0-9.
30.12.2007 01:30 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Jsou-li tam jen znaky z abecedy 'a-zA-Z0-9/.' a je-li jich třináct, pak je to téměř jistě tradiční DES.
30.12.2007 19:39 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Ano, tomuto popisu heslo odpovida...
stativ avatar 30.12.2007 10:44 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Tím blowfish si nejsem tam moc jistý, jelikož zrovna nedávno jsem měnil pam aby používal blowfish místo md5 a hashe začínají alfanumerickými znaky.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
stativ avatar 30.12.2007 10:53 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Do řiti, právě mi to docvaklo! Není v chpasswd nějaký fallback na DES? Protože jestli se nepletu, jedna z děr pam_unix2 je v tom, že neošetřuje chování chpasswd. chpasswd jsem použil jenom jako obezličku okolo toho, že passwd hlásil, že authentizační token selhal.

Já nemám blowfish v jádře a nejspíš se tedy na hesla použil DES. To bude zase srandy až se nebudu moct přihlásit po zkompilování jádra s podporou blowfish.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
30.12.2007 11:37 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Můj chpasswd (OpenSuSE 10.3) se podle dokumentace (i podle pokusů) řídí souborem /etc/default/passwd a není-li tam algoritmus definován, použije DES. Neoznačil bych to za díru pam_unix2, ale spíš za chybu (nebo vlastnost - podle vkusu) chpasswd (že se neřídí PAM).
stativ avatar 30.12.2007 12:14 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Je to divné, ale moje nastavení CRYPT=blowfish v /etc/default/passwd je mu evidentně zcela fuk.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
30.12.2007 12:40 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
U mne zase naopak chpasswd nastavení CRYPT bere v úvahu i při změně hesla, přestože by ho podle dokumentace měl použít jen v případě, že v /etc/shadow zatím žádný hash není… :-)
29.12.2007 21:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Dodal bych, že bez ohledu na to, jaká hesla distribuce defaultně generuje, pokud tam dáte heslo hashované DESem, obvykle mu to bude rozumět také. Když se pak přihlásíte pod rootem, změníte si ho a pak už bude použit "správný" agoritmus.
Jakub Lucký avatar 29.12.2007 21:36 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Kdybych věděl, že to je takový old-school, tak bych snad ani neradil... tyhle dřevní doby nějak neznám...
If you understand, things are just as they are; if you do not understand, things are just as they are.
30.12.2007 01:29 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Období 1998-2002 zase takový oldschool není, ale tohle (je-li to opravdu z té doby) vypadá na nějaký anachronismus nebo něco velmi speciálního.
30.12.2007 01:41 Ash | skóre: 53
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Je to oldschool, ovšem nikoliv z titulu doby vzniku, protože oldschool rozhodně není období :)
Jakub Lucký avatar 30.12.2007 12:02 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Tak pro mě, který jsem na Linux přesedlal na podzim 2006 to dost oldschool je ;) Pro mě je oldschool už jádro 2.4...
If you understand, things are just as they are; if you do not understand, things are just as they are.
30.12.2007 16:48 8an | skóre: 30
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Bering byla minidistribuce na routery, kdysi jsem to používal (2002-2003). Konfigurace je v etc.lrp, což je normální tar.gz, můžeš to rozbalit, změnit a zase zabalit. Jako první bych zkusil nechat prázdné heslo v /etc/passwd, a pokud to nepomůže, tak zkopírovat zahashované heslo z jiného počítače do /etc/shadow.
If you build an operating system that even an idiot can use, only idiots will use it.
frEon avatar 30.12.2007 13:17 frEon | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
ne, kdyz to pripojis k pocitaci tak se do toho chrootnes a heslo zmenis prikazem passwd, nebo heslo smazes a prihlasis se bez hesla. nebo taky muzes ten system nabootovat s parametrem init=/bin/bash a heslo zmenit (toto funguje pouze pokud mas bootloader nechranen heslem)
Talking about music is like dancing to architecture.
30.12.2007 15:05 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
no ale jak uz jsem psal v predchozim prispevku: na tom souborovem systemu je akorat soubor initrd a pak jakysi konfiguracni soubor a pak soubory s priponou lrc, ktere jdou rozbalit tarem. A pri bootu toho systemu se dle toho konfiguracniho souboru rozbali balicky lrp na prislusne misto...

Takze myslite, ze by to slo udelat tak, ze bych si rucne na svem pocitaci rozbalil ty lrp archivy a vytvoril tak adresarovou strukturu do ktere bych se pak chrootnul?
30.12.2007 15:14 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Pravděpodobně. Pak zase zabalit a zkopírovat místo původních. Ale nejdřív bych si pro jistotu ty původní někam zkopíroval.
30.12.2007 19:45 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Zde posilam pro zajimavost strukturu toho systemu
.
|-- b.lrp
|-- cur.lrp
|-- dhcpd.lrp
|-- etc.lrp
|-- etherw.lrp
|-- initrd.lrp
|-- ipsec.lrp
|-- iptables.lrp
|-- ldlinux.sys
|-- linux
|-- local.lrp
|-- m.lrp
|-- mawk.lrp
|-- mc.lrp
|-- modules.lrp
|-- netutils.lrp
|-- nmap.lrp
|-- pcmcia.lrp
|-- qos-htb.lrp
|-- readme
|-- root.lrp
|-- router.tar
|-- ssh.lrp
|-- sshd.lrp
|-- sshkey.lrp
|-- syslinux.cfg
|-- syslinux.dpy
|-- t.lrp
|-- tc.lrp
|-- tcpdump.lrp
|-- vypis
|-- wireless.lrp
|-- wireutil.lrp
`-- zebedee.lrp
A zde rozbalene lrp soubory:

|-- bin
|   |-- POSIXness
|   |-- ae
|   |-- df
|   |-- e3
|   |-- e3em -> e3
|   |-- e3ne -> e3
|   |-- e3pi -> e3
|   |-- e3vi -> e3
|   |-- e3ws -> e3
|   |-- edit
|   |-- editor -> e3ne
|   |-- grep
|   |-- netstat
|   |-- ping
|   |-- run-parts
|   |-- tinylogin
|   |-- vi
|   `-- zebedee
|-- etc
|   |--  
|   |-- POSIXness.conf
|   |-- adjtime
|   |-- cron.d
|   |   |-- cbq
|   |   |-- multicron
|   |   `-- ntpdate
|   |-- cron.daily
|   |   `-- multicron-d
|   |-- cron.monthly
|   |   `-- multicron-m -> ../cron.daily/multicron-d
|   |-- cron.weekly
|   |   `-- multicron-w -> ../cron.daily/multicron-d
|   |-- crontab
|   |-- default
|   |   |-- ntp-servers
|   |   |-- pcmcia
|   |   `-- rcS
|   |-- dhcpd.conf
|   |-- exports
|   |-- fstab
|   |-- group
|   |-- gshadow
|   |-- host.conf
|   |-- hostname
|   |-- hosts
|   |-- hosts.allow
|   |-- hosts.deny
|   |-- inetd.conf
|   |-- init.d
|   |   |-- bootmisc.sh
|   |   |-- cbq.init
|   |   |-- checkroot.sh
|   |   |-- cron
|   |   |-- dhcpd
|   |   |-- dyna-tx
|   |   |-- firewall
|   |   |-- halt
|   |   |-- hostname.sh
|   |   |-- htb.init
|   |   |-- hwclock
|   |   |-- ifupdown
|   |   |-- inetd
|   |   |-- ipsec
|   |   |-- modutils
|   |   |-- mountall.sh
|   |   |-- mountnfs.sh
|   |   |-- networking
|   |   |-- ntpdate
|   |   |-- pcmcia
|   |   |-- rc
|   |   |-- rcS
|   |   |-- reboot
|   |   |-- rmnologin
|   |   |-- sendsigs
|   |   |-- single
|   |   |-- sshd
|   |   |-- sysklogd
|   |   |-- umountfs
|   |   |-- urandom
|   |   `-- watchdog
|   |-- inittab
|   |-- ioctl.save
|   |-- iproute2
|   |   |-- rt_dsfield
|   |   |-- rt_protos
|   |   |-- rt_realms
|   |   |-- rt_scopes
|   |   `-- rt_tables
|   |-- ipsec
|   |-- ipsec.conf
|   |-- ipsec.secrets
|   |-- issue
|   |-- issue.net
|   |-- localtime
|   |-- lrp.conf
|   |-- modules
|   |-- motd
|   |-- multicron-p -> cron.daily/multicron-d
|   |-- network
|   |   |-- if-down.d
|   |   |-- if-post-down.d
|   |   |   `-- bridge
|   |   |-- if-pre-up.d
|   |   |   |-- bridge
|   |   |   `-- wireless
|   |   |-- if-up.d
|   |   |   `-- bridge
|   |   |-- ifstate
|   |   |-- interfaces
|   |   `-- options
|   |-- networks
|   |-- nsswitch.conf
|   |-- passwd
|   |-- pcmcia
|   |   |-- cis
|   |   |   |-- 3CCFEM556.dat
|   |   |   |-- 3CXEM556.dat
|   |   |   |-- COMpad2.dat
|   |   |   |-- COMpad4.dat
|   |   |   |-- DP83903.dat
|   |   |   |-- E-CARD.dat
|   |   |   |-- LA-PCM.dat
|   |   |   |-- MT5634ZLX.dat
|   |   |   |-- NE2K.dat
|   |   |   |-- PCMLM28.dat
|   |   |   |-- PE-200.dat
|   |   |   |-- PE520.dat
|   |   |   |-- RS-COM-2P.dat
|   |   |   `-- tamarack.dat
|   |   |-- config
|   |   |-- config.opts
|   |   |-- fw.conf
|   |   |-- network
|   |   |-- serial
|   |   |-- shared
|   |   |-- wireless
|   |   `-- wireless.opts
|   |-- profile
|   |-- protocols
|   |-- psdevtab
|   |-- rc.boot
|   |-- rc0.d
|   |-- rc1.d
|   |-- rc2.d
|   |-- rc3.d
|   |-- rc4.d
|   |-- rc5.d
|   |-- rc6.d
|   |-- rcS.d
|   |-- resolv.conf
|   |-- rpc
|   |-- securetty
|   |-- services
|   |-- shadow
|   |-- shadow-
|   |-- shells
|   |-- shorewall
|   |-- ssh
|   |   |-- authorized_keys
|   |   |-- moduli
|   |   |-- ssh_config
|   |   |-- ssh_host_dsa_key
|   |   |-- ssh_host_dsa_key.pub
|   |   |-- ssh_host_key
|   |   |-- ssh_host_key.pub
|   |   |-- ssh_host_rsa_key
|   |   |-- ssh_host_rsa_key.pub
|   |   `-- sshd_config
|   |-- sysconfig
|   |   |-- cbq
|   |   `-- htb
|   |       |-- eth0
|   |       |-- eth0-2.root
|   |       |-- eth0-2:10.minlatency
|   |       |-- eth0-2:20.maxthroughput
|   |       |-- eth0-2:30.www
|   |       |-- eth0-2:40.default
|   |       |-- eth1
|   |       |-- eth1-2.root
|   |       |-- eth1-2:10.minlatency
|   |       |-- eth1-2:20.maxthroughput
|   |       |-- eth1-2:30.www
|   |       |-- eth1-2:40.default
|   |       |-- eth2
|   |       |-- eth2-2.root
|   |       |-- eth2-2:10.minlatency
|   |       |-- eth2-2:20.maxthroughput
|   |       |-- eth2-2:30.www
|   |       `-- eth2-2:40.default
|   `-- syslog.conf
|-- initrd
|-- install
|   `-- doinst.sh
|-- ldlinux.sys
|-- lib
|   |-- POSIXness
|   |   |-- POSIXness.linuxrouter
|   |   |-- POSIXness.mail
|   |   `-- POSIXness.system
|   |-- ipsec
|   |   |-- _confread
|   |   |-- _copyright
|   |   |-- _include
|   |   |-- _keycensor
|   |   |-- _pluto_adns
|   |   |-- _plutoload
|   |   |-- _plutorun
|   |   |-- _realsetup
|   |   |-- _secretcensor
|   |   |-- _startklips
|   |   |-- _updown
|   |   |-- _updown.x509
|   |   |-- auto
|   |   |-- barf
|   |   |-- eroute
|   |   |-- ikeping
|   |   |-- ipsec
|   |   |-- ipsec_pr.template
|   |   |-- klipsdebug
|   |   |-- look
|   |   |-- manual
|   |   |-- newhostkey
|   |   |-- pf_key
|   |   |-- pluto
|   |   |-- ranbits
|   |   |-- rsasigkey
|   |   |-- send-pr
|   |   |-- setup -> /etc/init.d/ipsec
|   |   |-- showdefaults
|   |   |-- showhostkey
|   |   |-- spi
|   |   |-- spigrp
|   |   |-- tncfg
|   |   `-- whack
|   |-- iptables
|   |   |-- libipt_DNAT.so
|   |   |-- libipt_DSCP.so
|   |   |-- libipt_ECN.so
|   |   |-- libipt_LOG.so
|   |   |-- libipt_MARK.so
|   |   |-- libipt_MASQUERADE.so
|   |   |-- libipt_MIRROR.so
|   |   |-- libipt_REDIRECT.so
|   |   |-- libipt_REJECT.so
|   |   |-- libipt_SAME.so
|   |   |-- libipt_SNAT.so
|   |   |-- libipt_TARPIT.so
|   |   |-- libipt_TCPMSS.so
|   |   |-- libipt_TOS.so
|   |   |-- libipt_TTL.so
|   |   |-- libipt_ULOG.so
|   |   |-- libipt_ah.so
|   |   |-- libipt_conntrack.so
|   |   |-- libipt_dscp.so
|   |   |-- libipt_ecn.so
|   |   |-- libipt_esp.so
|   |   |-- libipt_helper.so
|   |   |-- libipt_icmp.so
|   |   |-- libipt_iplimit.so
|   |   |-- libipt_length.so
|   |   |-- libipt_limit.so
|   |   |-- libipt_mac.so
|   |   |-- libipt_mark.so
|   |   |-- libipt_multiport.so
|   |   |-- libipt_owner.so
|   |   |-- libipt_physdev.so
|   |   |-- libipt_pkttype.so
|   |   |-- libipt_quota.so
|   |   |-- libipt_rpc.so
|   |   |-- libipt_standard.so
|   |   |-- libipt_state.so
|   |   |-- libipt_stealth.so
|   |   |-- libipt_tcp.so
|   |   |-- libipt_tcpmss.so
|   |   |-- libipt_tos.so
|   |   |-- libipt_ttl.so
|   |   |-- libipt_udp.so
|   |   `-- libipt_unclean.so
|   |-- libcrypt-2.0.7.so
|   |-- libcrypt.so.1 -> libcrypt-2.0.7.so
|   |-- libdl-2.0.7.so
|   |-- libdl.so.2 -> libdl-2.0.7.so
|   |-- libm-2.0.7.so
|   |-- libm.so.6 -> libm-2.0.7.so
|   |-- libncurses.so.3.4 -> libncurses.so.4
|   |-- libncurses.so.4
|   |-- libnss_dns-2.0.7.so
|   |-- libnss_dns.so.1 -> libnss_dns-2.0.7.so
|   |-- libnss_files-2.0.7.so
|   |-- libnss_files.so.1 -> libnss_files-2.0.7.so
|   |-- libproc.so.1.2.6
|   |-- libresolv-2.0.7.so
|   |-- libresolv.so.2 -> libresolv-2.0.7.so
|   |-- libss.so.2 -> libss.so.2.0
|   |-- libss.so.2.0
|   |-- libutil-2.0.7.so
|   |-- libutil.so.1 -> libutil-2.0.7.so
|   |-- modules
|   `-- zebedee
|       `-- server.zbd
|-- linux
|-- null
|-- readme
|-- root
|-- sbin
|   |-- arp
|   |-- cardmgr
|   |-- clock -> ./hwclock
|   |-- halt
|   |-- htb.init
|   |-- hwclock
|   |-- ifconfig
|   |-- ifdown -> ifup
|   |-- ifup
|   |-- init
|   |-- ip
|   |-- ipsec
|   |-- iptables
|   |-- iwconfig
|   |-- iwevent
|   |-- iwgetid
|   |-- iwlist
|   |-- iwpriv
|   |-- iwspy
|   |-- killall5
|   |-- klogd
|   |-- mkswap
|   |-- pidof -> killall5
|   |-- reboot
|   |-- route
|   |-- runlevel
|   |-- shutdown
|   |-- start-stop-daemon
|   |-- swapon
|   |-- syslogd
|   |-- tc
|   `-- telinit -> init
|-- syslinux.cfg
|-- syslinux.dpy
|-- usr
|   |-- adm -> ../var/log
|   |-- bin
|   |   |-- awk -> /usr/bin/mawk
|   |   |-- backupdisk
|   |   |-- column
|   |   |-- fdformat
|   |   |-- find
|   |   |-- makekey
|   |   |-- mawk
|   |   |-- mc
|   |   |-- mcmfmt
|   |   |-- mcserv
|   |   |-- nmap
|   |   |-- savelog
|   |   |-- scp
|   |   |-- ssh
|   |   |-- ssh-keygen
|   |   |-- top
|   |   `-- xargs
|   |-- etc
|   |   `-- mc.global
|   |-- lib
|   |   `-- mc
|   |       |-- bin
|   |       |   |-- cons.saver
|   |       |   |-- mc.csh
|   |       |   |-- mc.sh
|   |       |   `-- mcfn_install
|   |       |-- desktop-scripts
|   |       |   |-- README.desktop
|   |       |   `-- startup.links
|   |       |-- edit.indent.rc
|   |       |-- extfs
|   |       |   |-- a
|   |       |   |-- deb
|   |       |   |-- extfs.ini
|   |       |   |-- ftplist
|   |       |   |-- hp48
|   |       |   |-- lslR
|   |       |   |-- mailfs
|   |       |   |-- patchfs
|   |       |   |-- readme
|   |       |   |-- rpm
|   |       |   |-- rpms
|   |       |   |-- sfs.ini
|   |       |   |-- trpm
|   |       |   |-- uar
|   |       |   |-- uarj
|   |       |   |-- ucpio
|   |       |   |-- uha
|   |       |   |-- ulha
|   |       |   |-- unarj.diff
|   |       |   |-- urar
|   |       |   |-- uzip
|   |       |   `-- uzoo
|   |       |-- faq
|   |       |-- mc-gnome.ext
|   |       |-- mc.csh
|   |       |-- mc.ext
|   |       |-- mc.hint
|   |       |-- mc.hint.cs
|   |       |-- mc.hint.es
|   |       |-- mc.hint.ru
|   |       |-- mc.hlp
|   |       |-- mc.lib
|   |       |-- mc.menu
|   |       |-- mc.sh
|   |       |-- syntax
|   |       |   |-- ada95.syntax
|   |       |   |-- c.syntax
|   |       |   |-- changelog.syntax
|   |       |   |-- diff.syntax
|   |       |   |-- fortran.syntax
|   |       |   |-- html.syntax
|   |       |   |-- java.syntax
|   |       |   |-- latex.syntax
|   |       |   |-- lsm.syntax
|   |       |   |-- mail.syntax
|   |       |   |-- makefile.syntax
|   |       |   |-- ml.syntax
|   |       |   |-- nroff.syntax
|   |       |   |-- pascal.syntax
|   |       |   |-- perl.syntax
|   |       |   |-- python.syntax
|   |       |   |-- sh.syntax
|   |       |   |-- smalltalk.syntax
|   |       |   |-- swig.syntax
|   |       |   |-- texinfo.syntax
|   |       |   `-- unknown.syntax
|   |       `-- term
|   |           |-- README.xterm
|   |           |-- ansi.ti
|   |           |-- linux.ti
|   |           |-- vt100.ti
|   |           |-- xterm.ad
|   |           |-- xterm.tcap
|   |           `-- xterm.ti
|   |-- local
|   |   `-- bin
|   |       |-- bmon
|   |       |-- fw
|   |       `-- telnet
|   |-- sbin
|   |   |-- brctl
|   |   |-- cron
|   |   |-- dhcpd
|   |   |-- ether-wake
|   |   |-- icmpinfo
|   |   |-- inetd
|   |   |-- lrcfg
|   |   |-- lrcfg.back
|   |   |-- lrcfg.back.initrd
|   |   |-- lrcfg.back.script
|   |   |-- lrcfg.conf
|   |   |-- lrcfg.conf.packs
|   |   |-- ntpdate
|   |   |-- ntptimeset
|   |   |-- sshd
|   |   |-- tcpd
|   |   |-- tcpdump
|   |   |-- ticker
|   |   |-- traceroute
|   |   `-- watchdog
|   `-- share
|       |-- idl
|       |   |-- FileManager.idl
|       |   `-- Makefile.in
|       |-- locale
|       |   |-- cs
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- da
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- el
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- ko
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- no
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- pt_BR
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- sk
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- sv
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- tr
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- uk
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- wa
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   |-- zh_CN.GB2312
|       |   |   `-- LC_MESSAGES
|       |   |       `-- mc.mo
|       |   `-- zh_TW.Big5
|       |       `-- LC_MESSAGES
|       |           `-- mc.mo
|       `-- terminfo
|           |-- l
|           |   `-- linux
|           |-- v
|           |   `-- vt100
|           `-- x
|               `-- xterm
|-- var
|   |-- cache
|   |   `-- htb.init
|   |-- cbq.init
|   |-- cbq.init-cache
|   |-- lib
|   |   |-- lrpkg
|   |   |   |-- brg.conf
|   |   |   |-- brg.list
|   |   |   |-- cur.list
|   |   |   |-- dhcpd.conf
|   |   |   |-- dhcpd.exclude.list
|   |   |   |-- dhcpd.help
|   |   |   |-- dhcpd.list
|   |   |   |-- dhcpd.version
|   |   |   |-- etc.exclude.list
|   |   |   |-- etc.help
|   |   |   |-- etc.list
|   |   |   |-- etc.version -> root.version
|   |   |   |-- etherw.help
|   |   |   |-- etherw.list
|   |   |   |-- ipsec.conf
|   |   |   |-- ipsec.help
|   |   |   |-- ipsec.list
|   |   |   |-- ipsec.version
|   |   |   |-- iptables.help
|   |   |   |-- iptables.list
|   |   |   |-- iptables.version
|   |   |   |-- local.list
|   |   |   |-- m.list
|   |   |   |-- mawk.list
|   |   |   |-- mawk.version
|   |   |   |-- modules.conf
|   |   |   |-- modules.exclude.list
|   |   |   |-- modules.help
|   |   |   |-- modules.list
|   |   |   |-- modules.version -> root.version
|   |   |   |-- netutils.list
|   |   |   |-- nmap.list
|   |   |   |-- nmap.version
|   |   |   |-- pcmcia.conf
|   |   |   |-- pcmcia.help
|   |   |   |-- pcmcia.list
|   |   |   |-- pcmcia.version
|   |   |   |-- qos-htb.help
|   |   |   |-- qos-htb.list
|   |   |   |-- qos-htb.version
|   |   |   |-- root.dev.mod
|   |   |   |-- root.dev.own
|   |   |   |-- root.exclude.list
|   |   |   |-- root.help
|   |   |   |-- root.list
|   |   |   |-- root.log.links
|   |   |   |-- root.net.conf
|   |   |   |-- root.pn.links
|   |   |   |-- root.sys.conf
|   |   |   |-- ssh.conf
|   |   |   |-- ssh.help
|   |   |   |-- ssh.list
|   |   |   |-- ssh.version
|   |   |   |-- sshd.conf
|   |   |   |-- sshd.help
|   |   |   |-- sshd.list
|   |   |   |-- sshd.version
|   |   |   |-- sshkey.help
|   |   |   |-- sshkey.list
|   |   |   |-- sshkey.version
|   |   |   |-- t.conf
|   |   |   |-- t.list
|   |   |   |-- tc.help
|   |   |   |-- tc.list
|   |   |   |-- tc.version
|   |   |   |-- tcpdump.help
|   |   |   |-- tcpdump.list
|   |   |   |-- tcpdump.version
|   |   |   |-- wireless.conf
|   |   |   |-- wireless.help
|   |   |   |-- wireless.list
|   |   |   |-- wireless.version
|   |   |   |-- wireutil.help
|   |   |   |-- wireutil.list
|   |   |   |-- wireutil.version
|   |   |   |-- zebedee.conf
|   |   |   |-- zebedee.help
|   |   |   |-- zebedee.list
|   |   |   `-- zebedee.version
|   |   |-- misc
|   |   |   `-- pcmcia-scheme
|   |   `-- random-seed
|   `-- spool
|       `-- cron
|           `-- crontabs
30.12.2007 19:56 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Jestli se teda nemylim, tak v te adresarove strukture jsem nikde chpasswd ani nic podobneho strukture nenasel - tudiz chroot take nepomuze.

Jak bylo vypatrano v prispevcich vyse - jedna se metodu DES. Heslo je o 13 znacich a sklada se z a-zA-Z0-9 A ta je ve vsech distribucich stejne generovana? Nebo jak to s ni je?
30.12.2007 20:01 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Ano, všude stejně. Výsledek závisí jen na hesle samotném a zvolené hodnotě salt (která může být libovolná). Takže si někde vygenerujte heslo s použitím DES formátu (např. 'chpasswd -c des') a zkopírujte ho do /etc/shadow na cílovém systému.
31.12.2007 11:34 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Díval jsem se ještě na http://www.gnu.org/software/libc/manual/html_node/crypt.html - zde píšou, že DES algoritmus používá dva znaky pro "salt" a zbylych 11 je heslo.

Z uvedených zdrojových kódu v jednom z příspěvku je zřejmé, že se "salt" přidá ještě k nezašifrovanému heslu. Ovšem pořád mi není jasný ten mechanismus ověřování zašifrovaného hesla které obsahuje "salt".

Heslo je zašifrováno takto:
UlozeneHeslo = crypt(getpass("Password:"), salt);
Není mi ale jasné, jak systém určí, jaká hodnota "salt" byla použita při šifrování daného heslo, když je pak to heslo zpětně ověřováno:
ZadaneHeslo = crypt(getpass("Password:"), salt);
ok = strcmp (ZadaneHeslo, UlozeneHeslo) == 0;
...
31.12.2007 12:07 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Při ověřování jako druhý parametr crypt() zadáte uložený hash hesla ze systémové tabulky. Funkce crypt() z něj použije pouze hodnotu salt.
31.12.2007 12:44 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: formát hesel v /etc/shadow
Aha, už to zde vidím - při letmém projití kódu jsem to přehlídl...
/* Read in the user's password and encrypt it,
   passing the expected password in as the salt. */
result = crypt(getpass("Password:"), pass);
Pořád ale nechápu, jak funkce crypt dokáže z řetězce pass najít hodnotu salt, když řetězec pass je zašifrovaný řetězec obsahující heslo a hodnotu salt. Nebo ona snad hodnota salt se přidává již k zašifrovanému heslu?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.