1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PACKER_H
#define _PACKER_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
/*
* This program is copyright Alec Muffett 1993. The author disclaims all
* responsibility or liability with respect to it's usage or its effect
* upon hardware or computer systems, and maintains copyright as set out
* in the "LICENCE" document which accompanies distributions of Crack v4.0
* and upwards.
*/
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <synch.h>
#include <syslog.h>
#define PWADMIN "/etc/default/passwd"
#define TRUNCSTRINGSIZE (PATH_MAX/4)
#define STRINGSIZE PATH_MAX
typedef unsigned char int8;
typedef unsigned short int int16;
typedef unsigned long int int32;
#ifndef NUMWORDS
#define NUMWORDS 16
#endif
#define MAXWORDLEN 32
#define MAXBLOCKLEN (MAXWORDLEN * NUMWORDS)
struct pi_header
{
int32 pih_magic;
int32 pih_numwords;
int16 pih_blocklen;
int16 pih_pad;
};
typedef struct
{
FILE *ifp;
FILE *dfp;
FILE *wfp;
int32 flags;
#define PFOR_WRITE 0x0001
#define PFOR_FLUSH 0x0002
#define PFOR_USEHWMS 0x0004
int32 hwms[256];
struct pi_header header;
int count;
char data[NUMWORDS][MAXWORDLEN];
} PWDICT;
#define PW_WORDS(x) ((x)->header.pih_numwords)
#define PIH_MAGIC 0x70775631
void PWRemove(char *);
PWDICT *PWOpen(char *, char *);
char *Mangle(char *, char *);
#define CRACK_TOLOWER(a) (isupper(a)?tolower(a):(a))
#define CRACK_TOUPPER(a) (islower(a)?toupper(a):(a))
#define STRCMP(a, b) strcmp((a), (b))
char *Trim(register char *);
int32 FindPW(PWDICT *, char *);
int PWClose(PWDICT *);
int PutPW(PWDICT *, char *);
char Chop(register char *);
char Chomp(register char *);
char *GetPW(PWDICT *, int32);
#define DATABASE_OPEN_FAIL -1
#define DICTIONARY_WORD 2
#define REVERSE_DICTIONARY_WORD 3
/* Dictionary database dir and prefix */
#define CRACK_DIR "/var/passwd"
#define CRACK_DICTPATH "/var/passwd/pw_dict"
#define DICT_DATABASE_HWM "pw_dict.hwm"
#define DICT_DATABASE_PWD "pw_dict.pwd"
#define DICT_DATABASE_PWI "pw_dict.pwi"
int packer(char *, char *);
char *Reverse(char *);
char *Lowercase(char *);
int DictCheck(char *, char *);
int make_dict_database(char *, char *);
int build_dict_database(char *, char *);
int lock_db(char *);
void unlock_db();
/* Return values for dictionary database checks */
#define NO_DICTDATABASE 1
#define UPDATE_DICTDATABASE 2
#define DICTFILE_ERR -1
#define DICTPATH_ERR -2
#define DICTDATABASE_BUILD_ERR -3
#ifdef __cplusplus
}
#endif
#endif /* _PACKER_H */
|