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:
5
nmapfe/configure
vendored
5
nmapfe/configure
vendored
@@ -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
|
||||
|
||||
@@ -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 ))
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -234,7 +234,7 @@ enum {
|
||||
|
||||
struct NmapFEoptions {
|
||||
GtkWidget *scanButton;
|
||||
GtkWidget *output;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkWidget *targetHost;
|
||||
GtkWidget *commandEntry;
|
||||
gboolean appendLog;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user