- Timestamp:
- 2010-03-14T23:15:05Z (14 years ago)
- Branches:
- master
- Children:
- 81ee561
- Parents:
- 7c5affca (diff), 7e2b593 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
unix.c
r7c5affca r3330468 25 25 26 26 #include "bitlbee.h" 27 28 #include "arc.h" 29 #include "base64.h" 27 30 #include "commands.h" 28 #include "crypting.h"29 31 #include "protocols/nogaim.h" 30 32 #include "help.h" 31 33 #include "ipc.h" 34 #include "md5.h" 35 #include "misc.h" 32 36 #include <signal.h> 33 37 #include <unistd.h> … … 40 44 static void sighandler( int signal ); 41 45 46 static int crypt_main( int argc, char *argv[] ); 47 42 48 int main( int argc, char *argv[] ) 43 49 { … … 45 51 char *old_cwd = NULL; 46 52 struct sigaction sig, old; 53 54 if( argc > 1 && strcmp( argv[1], "-x" ) == 0 ) 55 return crypt_main( argc, argv ); 47 56 48 57 log_init(); … … 160 169 } 161 170 171 static int crypt_main( int argc, char *argv[] ) 172 { 173 int pass_len; 174 unsigned char *pass_cr, *pass_cl; 175 176 if( argc < 4 || ( strcmp( argv[2], "hash" ) != 0 && 177 strcmp( argv[2], "unhash" ) != 0 && argc < 5 ) ) 178 { 179 printf( "Supported:\n" 180 " %s -x enc <key> <cleartext password>\n" 181 " %s -x dec <key> <encrypted password>\n" 182 " %s -x hash <cleartext password>\n" 183 " %s -x unhash <hashed password>\n" 184 " %s -x chkhash <hashed password> <cleartext password>\n", 185 argv[0], argv[0], argv[0], argv[0], argv[0] ); 186 } 187 else if( strcmp( argv[2], "enc" ) == 0 ) 188 { 189 pass_len = arc_encode( argv[4], strlen( argv[4] ), (unsigned char**) &pass_cr, argv[3], 12 ); 190 printf( "%s\n", base64_encode( pass_cr, pass_len ) ); 191 } 192 else if( strcmp( argv[2], "dec" ) == 0 ) 193 { 194 pass_len = base64_decode( argv[4], (unsigned char**) &pass_cr ); 195 arc_decode( pass_cr, pass_len, (char**) &pass_cl, argv[3] ); 196 printf( "%s\n", pass_cl ); 197 } 198 else if( strcmp( argv[2], "hash" ) == 0 ) 199 { 200 md5_byte_t pass_md5[21]; 201 md5_state_t md5_state; 202 203 random_bytes( pass_md5 + 16, 5 ); 204 md5_init( &md5_state ); 205 md5_append( &md5_state, (md5_byte_t*) argv[3], strlen( argv[3] ) ); 206 md5_append( &md5_state, pass_md5 + 16, 5 ); /* Add the salt. */ 207 md5_finish( &md5_state, pass_md5 ); 208 209 printf( "%s\n", base64_encode( pass_md5, 21 ) ); 210 } 211 else if( strcmp( argv[2], "unhash" ) == 0 ) 212 { 213 printf( "Hash %s submitted to a massive Beowulf cluster of\n" 214 "overclocked 486s. Expect your answer next year somewhere around this time. :-)\n", argv[3] ); 215 } 216 else if( strcmp( argv[2], "chkhash" ) == 0 ) 217 { 218 char *hash = strncmp( argv[3], "md5:", 4 ) == 0 ? argv[3] + 4 : argv[3]; 219 int st = md5_verify_password( argv[4], hash ); 220 221 printf( "Hash %s given password.\n", st == 0 ? "matches" : "does not match" ); 222 223 return st; 224 } 225 226 return 0; 227 } 228 162 229 static void sighandler( int signal ) 163 230 { … … 215 282 return( (double) time->tv_sec + (double) time->tv_usec / 1000000 ); 216 283 } 217 218
Note: See TracChangeset
for help on using the changeset viewer.