1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-31 20:09:02 +00:00

3.96BETA1 is just about ready for release

This commit is contained in:
fyodor
2005-12-30 04:40:16 +00:00
parent e2b19b36a3
commit 5e5ce3ece1
8 changed files with 206 additions and 182 deletions

5
nmapfe/configure vendored
View File

@@ -2190,9 +2190,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
#AM_PATH_GTK(1.0.0,
# [LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"],
# AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?))
# Check whether --enable-gtktest or --disable-gtktest was given.
if test "${enable_gtktest+set}" = set; then
@@ -2411,7 +2408,7 @@ fi
if test "x$no_gtk" = x ; then
echo "$as_me:$LINENO: result: yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&5
echo "${ECHO_T}yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version)" >&6
LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS -DGTK_ENABLE_BROKEN"
LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6

View File

@@ -6,11 +6,8 @@ AC_INIT(nmapfe.c)
AC_PROG_CC
#AM_PATH_GTK(1.0.0,
# [LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"],
# AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?))
AM_PATH_GTK_2_0(2.0.0,
[LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS -DGTK_ENABLE_BROKEN"],
[LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"],
AC_DEFINE(MISSING_GTK) \
AC_MSG_WARN(NMAPFE WILL NOT BE BUILT -- BUT NMAP SHOULD STILL WORK ))

View File

@@ -133,6 +133,7 @@
struct NmapFEoptions opt;
void openLog(char *);
void saveLog(char *);
static void LogOpen_callback (void);
static void LogSave_callback (void);
static void LogAppend_callback (void);
@@ -270,7 +271,7 @@ LogOpen_callback (void) {
static void
LogSave_callback (void) {
static char filename[FILENAME_MAX+1] = "";
gtk_widget_show(create_fileSelection("Save Log", filename, openLog, NULL));
gtk_widget_show(create_fileSelection("Save Log", filename, saveLog, NULL));
}
static void
Quit_callback (void) {
@@ -1323,19 +1324,42 @@ GtkAdjustment *adjust;
/* text widget with scroll bar */
{
GtkWidget *sw;
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_box_pack_start(GTK_BOX(main_vbox), sw, TRUE, TRUE, 5);
GtkWidget *sw;
GtkWidget *view;
opt.output = gtk_text_new(NULL, NULL);
gtk_container_add(GTK_CONTAINER(sw),opt.output);
gtk_text_set_word_wrap(GTK_TEXT(opt.output), 1);
gtk_widget_set_usize(opt.output, 500, 248);
gtk_widget_show(opt.output);
gtk_widget_realize(opt.output);
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_box_pack_start(GTK_BOX(main_vbox), sw, TRUE, TRUE, 5);
view = gtk_text_view_new();
opt.buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(view));
/* Create tag definitions for text coloring */
gtk_text_buffer_create_tag(opt.buffer, "normal",
"family", "monospace", NULL);
gtk_text_buffer_create_tag(opt.buffer, "bold",
"family", "monospace",
"weight", PANGO_WEIGHT_BOLD, NULL);
gtk_text_buffer_create_tag(opt.buffer, "red",
"family", "monospace",
"weight", PANGO_WEIGHT_BOLD,
"foreground", "red", NULL);
gtk_text_buffer_create_tag(opt.buffer, "blue",
"family", "monospace",
"weight", PANGO_WEIGHT_BOLD,
"foreground", "blue", NULL);
gtk_text_buffer_create_tag(opt.buffer, "green",
"family", "monospace",
"weight", PANGO_WEIGHT_BOLD,
"foreground", "green", NULL);
gtk_container_add(GTK_CONTAINER(sw), view);
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD);
gtk_widget_set_usize(view, 500, 248);
gtk_widget_show(view);
gtk_widget_realize(view);
gtk_widget_show(sw);
}
gtk_widget_show(sw);
}
/* status hbox at bottom */

View File

@@ -234,7 +234,7 @@ enum {
struct NmapFEoptions {
GtkWidget *scanButton;
GtkWidget *output;
GtkTextBuffer *buffer;
GtkWidget *targetHost;
GtkWidget *commandEntry;
gboolean appendLog;

View File

@@ -173,30 +173,35 @@ extern char **environ;
int main (int argc, char *argv[])
int
main (int argc,
char *argv[])
{
GtkWidget *main_win;
GtkWidget *main_win;
GtkTextIter iter;
gtk_set_locale();
gtk_init(&argc, &argv);
gtk_set_locale();
gtk_init(&argc, &argv);
#ifndef WIN32
signal(SIGPIPE, SIG_IGN);
opt.uid = getuid();
signal(SIGPIPE, SIG_IGN);
opt.uid = getuid();
#else
opt.uid = 0; /* With Windows (in general), every user is a Super User! */
opt.uid = 0; /* With Windows (in general), every user is a Super User! */
#endif
main_win = create_main_win();
gtk_widget_show(main_win);
main_win = create_main_win();
gtk_widget_show(main_win);
gtk_text_insert(GTK_TEXT(opt.output), NULL, NULL, NULL,
(opt.uid == 0)
? "You are root - All options granted."
: "You are *NOT* root - Some options aren't available.", -1);
gtk_text_buffer_get_end_iter (opt.buffer, &iter);
gtk_text_buffer_insert_with_tags_by_name (opt.buffer, &iter,
(opt.uid == 0)
? "You are root - All options granted."
: "You are *NOT* root - Some options aren't available.", -1,
"normal", NULL);
gtk_main();
return 0;
gtk_main();
return 0;
}
void scanButton_toggled_cb(GtkButton *button, void *ignored)
@@ -204,8 +209,8 @@ void scanButton_toggled_cb(GtkButton *button, void *ignored)
if(GTK_TOGGLE_BUTTON(button)->active) {
char *command = build_command();
if(!(opt.appendLog))
kill_output(NULL);
if(!(opt.appendLog))
gtk_text_buffer_set_text (GTK_TEXT_BUFFER(opt.buffer), "\0", -1);
nmap_pid = execute(command);
}
@@ -214,26 +219,29 @@ void scanButton_toggled_cb(GtkButton *button, void *ignored)
static char string[256];
strcpy(string, "CANCELLED!\n\n");
print_line(GTK_TEXT(opt.output), string);
print_line(GTK_TEXT_BUFFER(opt.buffer), string);
}
}
}
void saveLog(char *filename)
void
saveLog (char *filename)
{
if (filename && *filename) {
FILE *file;
GtkTextIter start, end;
if (filename && *filename) {
FILE *file;
if ((file = fopen(filename, "w"))) {
gtk_text_buffer_get_start_iter(opt.buffer, &start);
gtk_text_buffer_get_end_iter(opt.buffer, &end);
gchar *text = gtk_text_buffer_get_text(opt.buffer,
&start, &end, FALSE);
if ((file = fopen(filename, "w"))) {
char *text = gtk_editable_get_chars(GTK_EDITABLE(opt.output), 0, -1);
fputs(text, file);
fclose(file);
free(text);
}
}
fputs(text, file);
fclose(file);
free(text);
}
}
}
@@ -242,18 +250,15 @@ void openLog(char *filename)
if (filename && *filename) {
FILE *file;
if (!opt.appendLog)
kill_output(NULL);
if (!opt.appendLog)
gtk_text_buffer_set_text (GTK_TEXT_BUFFER(opt.buffer), "\0", -1);
if((file = fopen(filename, "r"))) {
char buf[BUFSIZ+1];
gtk_text_freeze(GTK_TEXT(opt.output));
while(fgets(buf, BUFSIZ, file) != NULL)
print_line(GTK_TEXT(opt.output), buf);
gtk_text_thaw(GTK_TEXT(opt.output));
while(fgets(buf, BUFSIZ, file) != NULL) {
print_line(GTK_TEXT_BUFFER(opt.buffer), buf);
}
fclose(file);
}
@@ -279,13 +284,6 @@ char *filename = gtk_object_get_data(GTK_OBJECT(window), "NmapFE_filename");
}
void kill_output()
{
gtk_text_backward_delete(GTK_TEXT(opt.output),
gtk_text_get_length(GTK_TEXT(opt.output)));
}
/* The idea of execute() is to create an Nmap process running in the background with its stdout
connected to a pipe we can poll many times per second to collect any new output. Admittedly
there are much more elegant ways to do this, but this is how it works now. The functions
@@ -1026,102 +1024,89 @@ char *next_token(char *buf, char *token, int tokensz)
}
void print_line(GtkText *gtktext, char *line)
void
print_line (GtkTextBuffer *buffer,
char *line)
{
/* Get fonts ready */
GdkFont *fixed = gdk_fontset_load ("-misc-fixed-medium-r-*-*-*-120-*-*-*-*-*-*");
GdkFont *bold = gdk_fontset_load("-misc-fixed-bold-r-normal-*-*-120-*-*-*-*-*-*");
GdkColormap *cmap = gdk_colormap_get_system();
GdkColor red, blue, green;
red.red = 0xffff;
red.green = 0;
red.blue = 0;
if (!gdk_color_alloc(cmap, &red))
g_error("couldn't allocate red");
blue.red = 0;
blue.green = 0;
blue.blue = 0xffff;
if (!gdk_color_alloc(cmap, &blue))
g_error("couldn't allocate blue");
green.red = 0x0000;
green.green = 0xffff;
green.blue = 0x0000;
if (!gdk_color_alloc(cmap, &green))
g_error("couldn't allocate green");
GtkTextIter iter;
gtk_text_buffer_get_end_iter (buffer, &iter);
if (opt.viewValue == 1) {
char token[BUFSIZ+1];
char *str;
char token[BUFSIZ+1];
char *str;
while (((str = next_token(line, token, sizeof(token) / sizeof(*token))) != NULL) && (*str != '\0')) {
/********* CATCH STUFF ****************************/
if (strstr(str, "http://") ||
strstr(str, "PORT") ||
strstr(str, "PROTOCOL") ||
strstr(str, "STATE") ||
strstr(str, "SERVICE") ||
strstr(str, "VERSION") ||
strstr(str, "(RPC)") ||
strstr(str, "OWNER") ||
strstr(str, "fingerprint")) {
gtk_text_insert(gtktext, bold, NULL, NULL, str, -1);
/********* BEGIN PORT COLOR CODING ****************/
}else if (strstr(str, "sftp") ||
strstr(str, "mftp") ||
strstr(str, "bftp") ||
strstr(str, "tftp") ||
strstr(str, "ftp") ||
strstr(str, "NetBus") ||
strstr(str, "kshell") ||
strstr(str, "shell") ||
strstr(str, "klogin") ||
strstr(str, "login") ||
strstr(str, "rtelnet") ||
strstr(str, "telnet") ||
strstr(str, "exec") ||
strstr(str, "ssh") ||
strstr(str, "linuxconf")) {
gtk_text_insert(gtktext, bold, &red, NULL, str, -1);
}else if (strstr(str, "imap2") ||
strstr(str, "pop-3") ||
strstr(str, "imap3") ||
strstr(str, "smtps") ||
strstr(str, "smtp") ||
strstr(str, "pop-2")) {
gtk_text_insert(GTK_TEXT(opt.output), bold, &blue, NULL, str, -1);
}else if (strstr(str, "systat") ||
strstr(str, "netstat") ||
strstr(str, "cfingerd") ||
strstr(str, "finger") ||
strstr(str, "netbios") ||
strstr(str, "X11") ||
strstr(str, "nfs") ||
strstr(str, "sunrpc") ||
strstr(str, "kpasswds") ||
strstr(str, "https") ||
strstr(str, "http")) {
gtk_text_insert(gtktext, bold, NULL, NULL, str, -1);
while (((str = next_token(line, token, sizeof(token) / sizeof(*token))) != NULL) && (*str != '\0')) {
/* Catch stuff */
if (strstr(str, "http://") ||
strstr(str, "PORT") ||
strstr(str, "PROTOCOL") ||
strstr(str, "STATE") ||
strstr(str, "SERVICE") ||
strstr(str, "VERSION") ||
strstr(str, "(RPC)") ||
strstr(str, "OWNER") ||
strstr(str, "fingerprint")) {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"bold", NULL);
/* Color the ports... */
} else if (strstr(str, "sftp") ||
strstr(str, "mftp") ||
strstr(str, "bftp") ||
strstr(str, "tftp") ||
strstr(str, "ftp") ||
strstr(str, "NetBus") ||
strstr(str, "kshell") ||
strstr(str, "shell") ||
strstr(str, "klogin") ||
strstr(str, "login") ||
strstr(str, "rtelnet") ||
strstr(str, "telnet") ||
strstr(str, "exec") ||
strstr(str, "ssh") ||
strstr(str, "linuxconf")) {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"red", NULL);
} else if (strstr(str, "imap2") ||
strstr(str, "pop-3") ||
strstr(str, "imap3") ||
strstr(str, "smtps") ||
strstr(str, "smtp") ||
strstr(str, "pop-2")) {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"blue", NULL);
} else if (strstr(str, "systat") ||
strstr(str, "netstat") ||
strstr(str, "cfingerd") ||
strstr(str, "finger") ||
strstr(str, "netbios") ||
strstr(str, "X11") ||
strstr(str, "nfs") ||
strstr(str, "sunrpc") ||
strstr(str, "kpasswds") ||
strstr(str, "https") ||
strstr(str, "http")) {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"bold", NULL);
/******* BEGIN OS COLOR CODING *****************/
}else if (strstr(str, "Linux") ||
strstr(str, "FreeBSD") ||
strstr(str, "Win") ||
strstr(str, "MacOS") ||
strstr(str, "OpenBSD") ||
strstr(str, "IRIX") ||
strstr(str, "Windows")) {
gtk_text_insert(gtktext, bold, &green, NULL, str, -1);
}else{
gtk_text_insert(gtktext, fixed, NULL, NULL, str, -1);
/* Color the Operating systems */
} else if (strstr(str, "Linux") ||
strstr(str, "FreeBSD") ||
strstr(str, "Win") ||
strstr(str, "MacOS") ||
strstr(str, "OpenBSD") ||
strstr(str, "IRIX") ||
strstr(str, "Windows")) {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"green", NULL);
} else {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, str, -1,
"normal", NULL);
}
}
}
} /* END VIEW_TYPE == 1 IF */
else
gtk_text_insert(gtktext, fixed, NULL, NULL, line, -1);
} else {
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, line, -1,
"normal", NULL);
}
}
@@ -1155,7 +1140,7 @@ int count;
(str != buf) && (str != NULL);
str = next_line(buf, sizeof(buf) / sizeof(*buf), line)) {
buflen = strlen(buf);
print_line(GTK_TEXT(opt.output), str);
print_line(opt.buffer, str);
}
}
@@ -1166,7 +1151,7 @@ int count;
while ((str = next_line(buf, sizeof(buf) / sizeof(*buf), line)) != NULL) {
buflen = strlen(buf);
print_line(GTK_TEXT(opt.output), str);
print_line(opt.buffer, str);
if (str == buf)
break;
}

View File

@@ -122,8 +122,7 @@
#include "nmapfe_error.h"
gboolean stop_scan();
void print_line(GtkText *gtktext, char *line);
void kill_output();
void print_line(GtkTextBuffer *gtktext, char *line);
gint read_data(gpointer data);
void entry_toggle_checkbox (GtkWidget *entry, GtkWidget *checkbox);