crypt (enigma) z BSD
Miroslav BENES
miroslav_benes na zdas.cz
Čtvrtek Únor 9 15:08:37 CET 2006
>A chcete je mit sifrovana jen po dobu prenosu, nebo skutecne mit ulozena
>sifrovana na obou discich (v prvnim pripade bych uvazoval o sftp, pripadne
>ftp over ssl).
>
>
I uložená.
Jde totiž o to, že onen BSD server nemá přímý přístup do vnitřní sítě (a
naopak), takže jediné "styčné místo" pro předávání dat mi vyšel FTP
server v DMZ.
Přenášené soubory se budou sypat asynchronně, takže tak musí nějakou
dobu ležet. A protože je to teoreticky "prolomitelné" místo, radši bych
je tam měl nečitelná.
>>- přenést zdroják utility crypt z BSD na linux, ale nedá se to zkompilovat :
>>$ make
>>Makefile:11: *** missing separator. Stop.
>>
>>
>
>To bude nejaka uplna drobnost (nejaky chybejici/prebyvajici tabulator,
>atd).
>
>
# $FreeBSD: src/usr.bin/enigma/Makefile,v 1.9 2004/02/05 22:44:24 ru Exp $
PROG= enigma
LINKS= ${BINDIR}/enigma ${BINDIR}/crypt
MLINKS= enigma.1 crypt.1
DPADD= ${LIBCRYPT}
LDADD= -lcrypt
.include <bsd.prog.mk>
Nikdy jsem se v Makefile moc nevrtal, ale nějak tu nevidím definici "cíle".
Odkazuje se na "bsd.prog.mk" - ten jsem mu tam taky nakopíroval, ale
nepomohlo to.
>>$ gcc enigma.c
>>enigma.c: In function 'setup':
>>enigma.c:45: warning: passing argument 2 of 'memcpy' makes pointer from
>>integer without a cast
>>/tmp/ccqblTnC.o(.text+0x15): In function `setup':
>>enigma.c: undefined reference to `strlcpy'
>>
>>
>
>strlcpy() je BSDckova vymyslenost, ktera se snazi byt jeste bezpecnejsi
>nez strncpy() ... muzete ji klidne nahradit za strncpy() (rozdil je jen v
>NULL-termination destination stringu).
>
>
OK, nahrazeno.
>>/tmp/ccqblTnC.o(.text+0x27):enigma.c: undefined reference to `crypt'
>>collect2: ld returned 1 exit status
>>
>>
>
>-lcrypt (s libcrypt se standardne nelinkuje).
>
>
$ gcc enigma.c -lcrypt
enigma.c: In function ‘setup’:
enigma.c:45: warning: passing argument 2 of ‘memcpy’ makes pointer from
integer without a cast
Nějak nechápu, co vlastně chce (holt nejsem v C natolik kovaný) :
..
31: char buf[13];
...
44: strncpy(salt, pw, sizeof(salt));
45: memcpy(buf, crypt(pw, salt), sizeof(buf));
Přitom podle man memcpy mají být parametry :
void *memcpy(void *dest, const void *src, size_t n);
a funkce crypt :
char *crypt(const char *key, const char *salt);
No nevím, ale připadá mi to, že jsou správného typu. Nebo se pletu ?
Obě deklarace mi navíc připadají stejné i na BSD :
void *
memcpy(void *dst, const void *src, size_t len);
char *
crypt(const char *key, const char *salt);
V čem by ještě mohl být problém ?
BTW ten zdroják má asi 2,5 kB a jinak vypadá na pohled celkem snesitelně.
Další informace o konferenci Linux