nmapfe.c

来自「Ubuntu packages of security software。 相」· C语言 代码 · 共 1,601 行 · 第 1/5 页

C
1,601
字号
  gtk_window_position(GTK_WINDOW(aboutDialog), GTK_WIN_POS_CENTER);  vbox = GTK_DIALOG(aboutDialog)->vbox;  notebook = gtk_notebook_new();  gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0);  label = gtk_label_new("NmapFE");  text = gtk_label_new("Author: Zach Smith\n"		       "EMail: key@aye.net\n"		       "http://a.linuxbox.com\n"		       "Written in: C/GTK\n"		       "\n"		       "GUI rewritten by:\n"		       "Author: Peter Marschall\n"                       "EMail: peter@adpm.de");  gtk_widget_show(label);  gtk_widget_show(text);  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), text, label);  label = gtk_label_new("Nmap");  text = gtk_label_new("Author: Fyodor\n"		       "EMail: fyodor@insecure.org\n"		       "http://www.insecure.org/nmap\n"		       "Written in: C++");  gtk_widget_show(label);  gtk_widget_show(text);  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), text, label);  gtk_widget_show_all(aboutDialog);#endif    }#if GTK_CHECK_VERSION(2,6,0)/* FIXME: This needs to be rewritten because it's an ugly hack :( * See below for comment... */static gbooleanis_separator (GtkTreeModel *model,              GtkTreeIter  *iter,              gpointer      data){    GtkTreePath *path;    gboolean     result;    path = gtk_tree_model_get_path (model, iter);    /* FIXME: Here we should see whether the contents of the row     * equals "<separator>. But it works for now... :)     */    result = gtk_tree_path_get_indices (path)[0] == SEPARATOR;    gtk_tree_path_free (path);    return result;}#endifstatic GtkTreeModel *create_dropdown_store(Entry *data, gboolean is_root){    GtkTreeIter     iter;    GtkTreeStore    *store;    gint i;        store = gtk_tree_store_new (1, G_TYPE_STRING);    for (i = 0; data[i].scan; i++) {        if (is_root || (data[i].rootonly == is_root)) {            gtk_tree_store_append(store, &iter, NULL);            gtk_tree_store_set(store, &iter, 0, data[i].scan, -1);        }    }    return GTK_TREE_MODEL (store);}        GtkWidget* create_main_win(){  GtkWidget *main_vbox;  GtkWidget *menubar;GtkWidget *hbox;GtkWidget *vbox;GtkWidget *label;GtkWidget *button;GtkWidget *notebook;GtkWidget *nblabel;GtkWidget *nbpage;GtkWidget *frame;GtkWidget *table;GtkAdjustment *adjust;  GtkAccelGroup *accel_group;  GtkActionGroup *action_group;  GtkUIManager *ui_manager;  GError *error;  /* initialize our options */  opt.viewValue = 1;  opt.appendLog = FALSE;  opt.scanValue = SYN_SCAN;  opt.throttleValue = NORMAL_THROTTLE;  opt.resolveValue = DEFAULT_RESOLVE;  opt.protportValue = DEFAULT_PROTPORT;  opt.outputFormatValue = NORMAL_OUTPUT;#ifdef WIN32  opt.isr00t = 1;  /* for nmap version */#include "nmap_winconfig.h"#define VERSION NMAP_VERSION#else  opt.isr00t = !geteuid();#endif/* main (toplevel) window */  main_win = gtk_window_new (GTK_WINDOW_TOPLEVEL);  gtk_window_set_title(GTK_WINDOW(main_win), "Nmap Front End v" VERSION);  gtk_window_set_position (GTK_WINDOW (main_win), GTK_WIN_POS_CENTER);  g_signal_connect (GTK_OBJECT (main_win), "delete_event",		     GTK_SIGNAL_FUNC(Quit_callback), NULL);  /* vertical box for menu bar, input, output and status fields */  main_vbox = gtk_vbox_new(FALSE, 0);  gtk_container_add (GTK_CONTAINER (main_win), main_vbox);  gtk_widget_show (main_vbox);  action_group = gtk_action_group_new ("MenuActions");  gtk_action_group_add_actions (action_group, menu_entries,           G_N_ELEMENTS (menu_entries), main_win);  gtk_action_group_add_radio_actions (action_group, menu_entries_radio,           G_N_ELEMENTS (menu_entries_radio), 0,           G_CALLBACK(Colourize_callback), main_win);    gtk_action_group_add_toggle_actions (action_group, menu_entries_toggle,           G_N_ELEMENTS (menu_entries_toggle), main_win);  ui_manager = gtk_ui_manager_new ();  gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);  error = NULL;  if (!gtk_ui_manager_add_ui_from_string (ui_manager, menu_description, -1, &error)) {      g_message ("building menus failed: %s", error->message);      g_error_free (error);      exit (EXIT_FAILURE);  }  /* main menu */  menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu");  gtk_box_pack_start (GTK_BOX (main_vbox), menubar,           FALSE, TRUE, 0);  gtk_widget_show (menubar);  /*  Install the accelerator table in the main window  */  accel_group = gtk_ui_manager_get_accel_group (ui_manager);  gtk_window_add_accel_group (GTK_WINDOW (main_win), accel_group);/* upper hbox for horizontal alignment */  hbox = gtk_hbox_new(FALSE, 5);  gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);  gtk_box_pack_start(GTK_BOX(main_vbox), hbox, FALSE, FALSE, 10);/* Target(s) entry field and label */  label = gtk_label_new("Target(s):");  gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);  gtk_widget_show(label);  opt.targetHost = gtk_entry_new();  gtk_entry_set_max_length(GTK_ENTRY(opt.targetHost), 256);  GTK_WIDGET_SET_FLAGS(opt.targetHost, GTK_CAN_DEFAULT);  gtk_widget_grab_focus(opt.targetHost);  gtk_entry_set_text(GTK_ENTRY(opt.targetHost), "127.0.0.1");  g_signal_connect(GTK_OBJECT(opt.targetHost), "changed",                     GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL);  gtk_box_pack_start(GTK_BOX(hbox), opt.targetHost, TRUE, TRUE, 0);  gtk_widget_show(opt.targetHost);/* Exit button (rightmost in hbox) */  button = gtk_button_new_with_label("Exit");  /*gtk_object_set(GTK_OBJECT(button), "width", 48, NULL);*/  g_signal_connect(GTK_OBJECT(button), "clicked",                     GTK_SIGNAL_FUNC(Quit_callback), NULL);  gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);  gtk_widget_show(button);/* Scan button (2nd right in hbox) */  opt.scanButton = gtk_toggle_button_new_with_label("Scan");  /*gtk_object_set(GTK_OBJECT(opt.scanButton), "width", 72, NULL);*/  g_signal_connect(GTK_OBJECT(opt.scanButton), "toggled",                     GTK_SIGNAL_FUNC(scanButton_toggled_cb), NULL);  gtk_box_pack_end(GTK_BOX(hbox), opt.scanButton, FALSE, FALSE, 0);  gtk_widget_show(opt.scanButton);  gtk_widget_show(hbox);/* notebook in vbox below hbox */  notebook = gtk_notebook_new();  gtk_container_set_border_width(GTK_CONTAINER(notebook), 5);/* Scan page (first in notebook) */  nblabel = gtk_label_new("Scan");  // nbpage = gtk_vbox_new(FALSE, 5);  nbpage = gtk_table_new(5, 3, TRUE);  gtk_table_set_col_spacings(GTK_TABLE(nbpage), 5);  gtk_table_set_row_spacings(GTK_TABLE(nbpage), 5);  gtk_container_set_border_width(GTK_CONTAINER(nbpage), 5);  frame = gtk_frame_new("Scan Type");  // gtk_box_pack_start(GTK_BOX(nbpage), frame, FALSE, FALSE, 0);  gtk_table_attach_defaults(GTK_TABLE(nbpage), frame, 0, 2, 0, 3);  table = gtk_table_new(2, 4, FALSE);  gtk_container_set_border_width(GTK_CONTAINER(table), 5);  gtk_table_set_col_spacings(GTK_TABLE(table), 5);  gtk_table_set_row_spacings(GTK_TABLE(table), 5);  gtk_container_add(GTK_CONTAINER(frame), table);  /* Create "Scan Type" combobox */  {      GtkCellRenderer *renderer;      GtkTreeModel    *model;      model = create_dropdown_store (scanentries,               opt.isr00t ? TRUE : FALSE);      opt.scanType = gtk_combo_box_new_with_model (model);      g_object_unref (model);      opt.scanValue = opt.isr00t ? SYN_SCAN : CONNECT_SCAN;      gtk_table_attach_defaults (GTK_TABLE(table), opt.scanType, 0, 4, 0, 1);      gtk_widget_show (opt.scanType);      renderer = gtk_cell_renderer_text_new ();      gtk_cell_layout_pack_start (              GTK_CELL_LAYOUT (opt.scanType), renderer, TRUE);      gtk_cell_layout_set_attributes (              GTK_CELL_LAYOUT (opt.scanType), renderer,              "text", 0,              NULL);      g_object_unref(renderer);      g_signal_connect(G_OBJECT(opt.scanType), "changed",              G_CALLBACK (scanType_cb), scanentries);        }    opt.scanRelayLabel = gtk_label_new("Relay Host:");  gtk_label_set_justify(GTK_LABEL(opt.scanRelayLabel), GTK_JUSTIFY_LEFT);  if ((opt.scanValue != BOUNCE_SCAN) && (opt.scanValue != IDLE_SCAN))    gtk_widget_set_sensitive(GTK_WIDGET(opt.scanRelayLabel), FALSE);  gtk_table_attach_defaults(GTK_TABLE(table), opt.scanRelayLabel, 0, 1, 1, 2);  gtk_widget_show(opt.scanRelayLabel);  opt.scanRelay = gtk_entry_new();  gtk_entry_set_max_length(GTK_ENTRY(opt.scanRelay), 256);  /*gtk_object_set(GTK_OBJECT(opt.scanRelay), "width", 150, NULL);*/  g_signal_connect(GTK_OBJECT(opt.scanRelay), "changed",                     GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL);  if ((opt.scanValue != BOUNCE_SCAN) && (opt.scanValue != IDLE_SCAN))    gtk_widget_set_sensitive(GTK_WIDGET(opt.scanRelay), FALSE);  gtk_table_attach_defaults(GTK_TABLE(table), opt.scanRelay, 1, 4, 1, 2);  gtk_widget_show(opt.scanRelay);  gtk_widget_show(table);  gtk_widget_show(frame);  /* Scanned ports frame */  {    gint i;    opt.protportFrame = gtk_frame_new("Scanned Ports");    gtk_table_attach_defaults(GTK_TABLE(nbpage), opt.protportFrame, 2, 3, 0, 3);    table = gtk_table_new(2, 2, FALSE);    gtk_container_set_border_width(GTK_CONTAINER(table), 5);    gtk_table_set_col_spacings(GTK_TABLE(table), 5);    gtk_table_set_row_spacings(GTK_TABLE(table), 5);    gtk_container_add(GTK_CONTAINER(opt.protportFrame), table);    opt.protportType = gtk_combo_box_new_text();        for(i = 0; protportEntries[i]; i++) {        gtk_combo_box_append_text(GTK_COMBO_BOX(opt.protportType), protportEntries[i]);    }    g_signal_connect(G_OBJECT(opt.protportType), "changed",            G_CALLBACK (protportType_cb), NULL);        gtk_table_attach_defaults(GTK_TABLE(table), opt.protportType, 0, 2, 0, 1);    opt.protportLabel = gtk_label_new("Range:");    gtk_label_set_justify(GTK_LABEL(opt.protportLabel), GTK_JUSTIFY_LEFT);    if (opt.protportValue != GIVEN_PROTPORT)        gtk_widget_set_sensitive(GTK_WIDGET(opt.protportLabel), FALSE);    gtk_table_attach_defaults(GTK_TABLE(table), opt.protportLabel, 0, 1, 1, 2);    gtk_widget_show(opt.protportLabel);        opt.protportRange = gtk_entry_new();    gtk_entry_set_max_length(GTK_ENTRY(opt.protportRange), 256);    /*gtk_object_set(GTK_OBJECT(opt.protportRange), "width", 100, NULL);*/    g_signal_connect(GTK_OBJECT(opt.protportRange), "changed",            GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL);    if (opt.protportValue != GIVEN_PROTPORT)        gtk_widget_set_sensitive(GTK_WIDGET(opt.protportRange), FALSE);    gtk_table_attach_defaults(GTK_TABLE(table), opt.protportRange, 1, 2, 1, 2);    gtk_widget_show_all(opt.protportFrame);  }  frame = gtk_frame_new("Scan Extensions");  // gtk_box_pack_start(GTK_BOX(nbpage), frame, FALSE, FALSE, 0);  gtk_table_attach_defaults(GTK_TABLE(nbpage), frame, 0, 2, 3, 5);  table = gtk_table_new(1, 4, FALSE);  gtk_container_set_border_width(GTK_CONTAINER(table), 5);  gtk_table_set_col_spacings(GTK_TABLE(table), 5);  gtk_table_set_row_spacings(GTK_TABLE(table), 5);  gtk_container_add(GTK_CONTAINER(frame), table);  opt.RPCInfo = gtk_check_button_new_with_label("RPC Scan");  g_signal_connect(GTK_OBJECT(opt.RPCInfo), "released",

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?