1# rcracki_mt is a multithreaded implementation and fork of the original 2# RainbowCrack 3# 4# Copyright Martin Westergaard Jørgensen <martinwj2005@gmail.com> 5# Copyright 2009, 2010 Daniël Niggebrugge <niggebrugge@fox-it.com> 6# Copyright 2009, 2010, 2011, 2012 James Nobis <quel@quelrod.net> 7# 8# This file is part of rcracki_mt. 9# 10# rcracki_mt is free software: you can redistribute it and/or modify 11# it under the terms of the GNU General Public License as published by 12# the Free Software Foundation, either version 2 of the License, or 13# (at your option) any later version. 14# 15# rcracki_mt is distributed in the hope that it will be useful, 16# but WITHOUT ANY WARRANTY; without even the implied warranty of 17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18# GNU General Public License for more details. 19# 20# You should have received a copy of the GNU General Public License 21# along with rcracki_mt. If not, see <http://www.gnu.org/licenses/>. 22 23SHELL = /bin/sh 24BIN = $(DESTDIR)/usr/bin 25CXX ?= g++ 26# -mtune=native doesn't work on NetBSD 5.1 with gcc 4.1.3 and make (fine with gmake) 27# -mtune=native doesn't work on OSX either 28# add -mtune=native to OPTIMIZATION for better performance (if it works) 29OPTIMIZATION = -O3 30INCLUDES = -I. -I/usr/local/include 31CXXFLAGS += -Wall -ansi $(INCLUDES) $(OPTIMIZATION) -c $(DEBUG) 32LFLAGS = -Wall -ansi $(INCLUDES) $(OPTIMIZATION) $(DEBUG) 33# doesn't play well with some distros 34# LFLAGS += -filt 35LIBS = -L/lib -L/usr/lib -L/usr/local/lib -lcrypto -lpthread 36OBJS = BaseRTReader.o ChainWalkContext.o ChainWalkSet.o CrackEngine.o \ 37 fast_md4.o fast_md5.o HashAlgorithm.o HashRoutine.o HashSet.o keyspace.o \ 38 lm2ntlm.o MemoryPool.o Public.o RainbowCrack.o rcrackiThread.o RTReader.o \ 39 RTIReader.o RTI2Reader.o 40COMMON_API_PATH = . 41CUDA_SHARED_PATH = ../../boinc_software/boinc_client_apps/distrrtgen_cuda 42#sha1.o 43WARNALL = -Wextra -Wunused-macros -Wunsafe-loop-optimizations -Wundef -Woverlength-strings -Wdisabled-optimization -Wformat-extra-args -Wformat-security -Winline 44 45OSNAME = $(shell uname -s) 46# apparently --strip-debug works on FreeBSD, Linux, NetBSD, OpenBSD, and NetBSD 47# but not on OSX which only takes the short name -S 48# OpenSolaris effectively uses -x 49# Oh lets just forget this until we have autoconf 50#STRIP = $(shell which strip) -S 51 52#LIBS_Darwin = 53#LIBS_FreeBSD = 54#LIBS_Linux = 55LIBS_NetBSD = -ldes 56#LIBS_OpenBSD = 57#LIBS_SunOS = 58 59LIBS += ${LIBS_$(OSNAME)} 60 61RELEASE_DIR = rcracki_mt_0.7.0_src 62 63#all: rcracki_mt strip 64all: rcracki_mt 65 66gui: CXXFLAGS += -DGUI=1 67gui: CXXFLAGS += -I../rcracki_mt-gui/gui 68gui: CXXFLAGS += $(shell pkg-config --cflags gtk+-2.0) 69gui: LFLAGS += $(shell pkg-config --libs gtk+-2.0) 70gui: $(OBJS) 71 72rcracki_mt: $(OBJS) 73 $(CXX) $(LFLAGS) $(OBJS) $(LIBS) -o rcracki_mt 74 75clean: 76 rm -f core *.o *.gcno *.gcda *.gcov rcracki_mt rcracki.session \ 77 rcracki.progress rcracki.precalc.0 rcracki.precalc.0.index 78 79debug: DEBUG += -DDEBUG -g 80debug: all 81 82debugall: DEBUG += -DDEBUG -g $(WARNALL) 83debugall: all 84 85dumpasmall: DEBUG += -S -fverbose-asm 86dumpasmall: all 87 88dumpasmprofileuseall: DEBUG += -S -fverbose-asm 89dumpasmprofileuseall: profileuseall 90 91debugprofileuseall: DEBUG += -fprofile-use 92debugprofileuseall: debugall 93 94m32: DEBUG += -m32 95m32: all 96 97m32debug: DEBUG += -m32 98m32debug: debug 99 100m32debugall: DEBUG += -m32 101m32debugall: debugall 102 103m32dumpasmall: DEBUG += -m32 104m32dumpasmall: dumpasmall 105 106m32dumpasmprofileuseall: DEBUG += -S -fverbose-asm -m32 107m32dumpasmprofileuseall: profileuseall 108 109m32profilegenall: DEBUG += -m32 110m32profilegenall: profilegenall 111 112m32profileuseall: DEBUG += -m32 113m32profileuseall: profileuseall 114 115profilegenall: DEBUG += -fprofile-generate $(WARNALL) 116profilegenall: all 117 118profileuseall: DEBUG += -fprofile-use $(WARNALL) 119profileuseall: rcracki_mt 120 121gcovall: DEBUG += -DDEBUG -g -fprofile-arcs -ftest-coverage 122gcovall: rcracki_mt 123 124gprofall: DEBUG += -DDEBUG -g -pg 125gprofall: rcracki_mt 126 127install: 128 install -d $(BIN) 129 install --group=root --owner=root --mode=755 rcracki_mt $(BIN) 130 131release: clean 132 mkdir $(RELEASE_DIR) 133 cp $(COMMON_API_PATH)/architecture.h $(COMMON_API_PATH)/BaseRTReader.* \ 134 $(COMMON_API_PATH)/ChainWalkContext.* \ 135 $(COMMON_API_PATH)/ChainWalkSet.* CrackEngine.* \ 136 $(COMMON_API_PATH)/fast_md5.* $(COMMON_API_PATH)/keyspace.* \ 137 $(COMMON_API_PATH)/HashAlgorithm.* $(COMMON_API_PATH)/HashRoutine.* \ 138 HashSet.* $(COMMON_API_PATH)/global.h \ 139 lm2ntlm.* $(COMMON_API_PATH)/fast_md4.* $(COMMON_API_PATH)/MemoryPool.* \ 140 $(COMMON_API_PATH)/Public.* RainbowCrack.* $(CUDA_SHARED_PATH)/rcuda.h \ 141 $(CUDA_SHARED_PATH)/rcuda.cu $(CUDA_SHARED_PATH)/rcuda_ext.cpp \ 142 $(CUDA_SHARED_PATH)/rcuda_ext.h $(CUDA_SHARED_PATH)/rcuda_lm.inc \ 143 $(CUDA_SHARED_PATH)/rcuda_md4.inc $(CUDA_SHARED_PATH)/rcuda_md5.inc \ 144 $(CUDA_SHARED_PATH)/rcuda_ntlm.inc $(CUDA_SHARED_PATH)/rcuda_sha1.inc \ 145 rcrackiThread.* $(COMMON_API_PATH)/RTI2Common.* \ 146 $(COMMON_API_PATH)/RT*Reader.* sha1.* ChangeLog.txt charset.txt COPYING \ 147 INSTALLING.txt README.txt TODO rcracki_mt.ini ../../LICENSE.txt \ 148 $(RELEASE_DIR)/ 149 cat Makefile | sed 's/..\/..\/common\/rt_api/./' > $(RELEASE_DIR)/Makefile 150 cat Makefile.cuda | sed 's/..\/..\/common\/rt_api/./' | \ 151 sed 's/..\/..\/boinc_software\/boinc_client_apps\/distrrtgen_cuda/./' \ 152 > $(RELEASE_DIR)/Makefile.cuda 153 154rebuild: clean all 155 156static: DEBUG += -static -static-libgcc 157static: all 158 159#strip: 160# $(STRIP) rcracki_mt 161 162uninstall: 163 rm -f $(BIN)/rcracki_mt 164 165BaseRTReader.o: $(COMMON_API_PATH)/BaseRTReader.h \ 166 $(COMMON_API_PATH)/BaseRTReader.cpp 167 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/BaseRTReader.cpp 168 169ChainWalkContext.o: $(COMMON_API_PATH)/ChainWalkContext.h \ 170 $(COMMON_API_PATH)/ChainWalkContext.cpp $(COMMON_API_PATH)/HashRoutine.h \ 171 $(COMMON_API_PATH)/Public.h 172 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/ChainWalkContext.cpp 173 174ChainWalkSet.o: $(COMMON_API_PATH)/Public.h $(COMMON_API_PATH)/ChainWalkSet.h \ 175 $(COMMON_API_PATH)/ChainWalkSet.cpp 176 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/ChainWalkSet.cpp 177 178CrackEngine.o: $(COMMON_API_PATH)/Public.h HashSet.h \ 179 $(COMMON_API_PATH)/ChainWalkContext.h $(COMMON_API_PATH)/MemoryPool.h \ 180 $(COMMON_API_PATH)/ChainWalkSet.h rcrackiThread.h \ 181 $(COMMON_API_PATH)/RTReader.h $(COMMON_API_PATH)/RTIReader.h \ 182 $(COMMON_API_PATH)/RTI2Reader.h CrackEngine.h CrackEngine.cpp 183 $(CXX) $(CXXFLAGS) CrackEngine.cpp 184 185fast_md5.o: $(COMMON_API_PATH)/fast_md5.h $(COMMON_API_PATH)/fast_md5.cpp \ 186 $(COMMON_API_PATH)/global.h 187 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/fast_md5.cpp 188 189#HashAlgorithm.o: $(COMMON_API_PATH)/HashAlgorithm.h HashAlgorithm.cpp \ 190 $(COMMON_API_PATH)/Public.h $(COMMON_API_PATH)/fast_md5.h \ 191 $(COMMON_API_PATH)/fast_md4.h sha1.h 192HashAlgorithm.o: $(COMMON_API_PATH)/HashAlgorithm.h \ 193 $(COMMON_API_PATH)/HashAlgorithm.cpp $(COMMON_API_PATH)/Public.h \ 194 $(COMMON_API_PATH)/fast_md5.h $(COMMON_API_PATH)/fast_md4.h 195 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/HashAlgorithm.cpp 196 197HashRoutine.o: $(COMMON_API_PATH)/HashRoutine.h \ 198 $(COMMON_API_PATH)/HashRoutine.cpp $(COMMON_API_PATH)/global.h \ 199 $(COMMON_API_PATH)/HashAlgorithm.h 200 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/HashRoutine.cpp 201 202HashSet.o: HashSet.h HashSet.cpp $(COMMON_API_PATH)/Public.h 203 $(CXX) $(CXXFLAGS) HashSet.cpp 204 205keyspace.o: $(COMMON_API_PATH)/keyspace.h $(COMMON_API_PATH)/global.h \ 206 $(COMMON_API_PATH)/architecture.h 207 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/keyspace.cpp 208 209lm2ntlm.o: lm2ntlm.h lm2ntlm.cpp $(COMMON_API_PATH)/Public.h \ 210 $(COMMON_API_PATH)/fast_md4.h 211 $(CXX) $(CXXFLAGS) lm2ntlm.cpp 212 213fast_md4.o: $(COMMON_API_PATH)/fast_md4.h $(COMMON_API_PATH)/fast_md4.cpp \ 214 $(COMMON_API_PATH)/global.h 215 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/fast_md4.cpp 216 217MemoryPool.o: $(COMMON_API_PATH)/MemoryPool.h \ 218 $(COMMON_API_PATH)/MemoryPool.cpp $(COMMON_API_PATH)/Public.h \ 219 $(COMMON_API_PATH)/global.h 220 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/MemoryPool.cpp 221 222Public.o: $(COMMON_API_PATH)/Public.h $(COMMON_API_PATH)/Public.cpp \ 223 $(COMMON_API_PATH)/global.h 224 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/Public.cpp 225 226RainbowCrack.o: RainbowCrack.h RainbowCrack.cpp CrackEngine.h lm2ntlm.h 227 $(CXX) $(CXXFLAGS) RainbowCrack.cpp 228 229rcrackiThread.o: rcrackiThread.h rcrackiThread.cpp \ 230 $(COMMON_API_PATH)/ChainWalkContext.h $(COMMON_API_PATH)/Public.h HashSet.h 231 $(CXX) $(CXXFLAGS) rcrackiThread.cpp 232 233RTReader.o: $(COMMON_API_PATH)/RTReader.h $(COMMON_API_PATH)/RTReader.cpp 234 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/RTReader.cpp 235 236RTIReader.o: $(COMMON_API_PATH)/RTIReader.h $(COMMON_API_PATH)/RTIReader.cpp 237 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/RTIReader.cpp 238 239RTI2Reader.o: $(COMMON_API_PATH)/RTI2Reader.h \ 240 $(COMMON_API_PATH)/RTI2Reader.cpp $(COMMON_API_PATH)/BaseRTReader.h 241 $(CXX) $(CXXFLAGS) $(COMMON_API_PATH)/RTI2Reader.cpp 242 243#sha1.o: sha1.h sha1.cpp $(COMMON_API_PATH)/global.h 244# $(CXX) $(CXXFLAGS) sha1.cpp 245