⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wizspy.c

📁 Linux 上的socket嗅探器
💻 C
📖 第 1 页 / 共 5 页
字号:

*/
GtkScrollCtrl wizspy_areab3={0,0,0,};
GtkScrollCtrl wizspy_areab3_listboxused={0,0,0,};
GtkScrollCtrl wizspy_areab3_listboxunused={0,0,0,}; 

GTK_TextArea wizspy_areab3_info={0,0,0,0,};
void wizspy_areab3_setinfo(gchar *msg)




{
    if(wizspy_areab3_info.regsignal!=GTK_WIDGET_REG)
       return ;
    gtk_text_buffer_set_text (wizspy_areab3_info.buffer, msg,strlen(msg));
}

GtkListBoxItemData  iptype_used[MAX_IPPROTOCOL_NUM];
GtkListBoxItemData  iptype_unused[MAX_IPPROTOCOL_NUM];

void wizspy_areab3_clickbutton(GtkWidget *widget,gpointer fundata)
{
    gint freei,index,found;
    GtkListBoxItemData itemdata;
    GtkScrollCtrl *fromctrl, *toctrl;
    GtkListBoxItemData *fromdata, *todata;

    if(fundata==NULL) // delete
    {
        fromctrl=&wizspy_areab3_listboxused;
        fromdata=iptype_used;
        toctrl=&wizspy_areab3_listboxunused;
        todata=iptype_unused;
    }
    else // add
    {
        fromctrl=&wizspy_areab3_listboxunused;
        fromdata=iptype_unused;
        toctrl=&wizspy_areab3_listboxused;
        todata=iptype_used;
    }

    index=listbox_getselectitem(*fromctrl,&itemdata);
    if(index>=0)
    {
        found=0;
        for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
        {
            if(ip_p_type[freei].type==itemdata.itemdata)
            {
                found=1;
                break;
            }
        }
        if(!found) return ;
        for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
        {
            if(fromdata[freei].itemdata==itemdata.itemdata
            &&(strcmp(fromdata[freei].itemname,itemdata.itemname)==0))
            {
                fromdata[freei].itemdata=0;
                fromdata[freei].itemname[0]=0;
                listbox_deleteitem(*fromctrl,index);
                found=1;
                break;
            }
        }
        if(!found) return ;
        for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
        {
            if(todata[freei].itemdata==0 &&todata[freei].itemname[0]==0)
            {
                todata[freei].itemdata=itemdata.itemdata;
                strcpy(todata[freei].itemname,itemdata.itemname);
                listbox_insertitem(*toctrl,itemdata,0);
                break;
            }
        }
    }
}

void wizspy_areab3_onclicklist( GtkWidget *gtklist, gpointer   func_data )
{
    static gchar itemsg[512];
    gint ret, freei;
    GtkListBoxItemData itemdata;
    GtkScrollCtrl *selctrl=(GtkScrollCtrl *)func_data;
    if(selctrl==NULL)
        return;
    ret=listbox_getselectitem(*selctrl,&itemdata);
    if(ret>=0)
    {
        for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
        {
            if(ip_p_type[freei].type==itemdata.itemdata)
            {
                sprintf(itemsg," Name:   '%s' \n Data:   '%d' \n Info:   '%s'",
                    ip_p_type[freei].name,
                    ip_p_type[freei].type,
                    ip_p_type[freei].info
                    );
                wizspy_areab3_setinfo(itemsg);
                return;
            }
        }//for(freei=0;freei<MAX_ETHER_TYPE_NUM;freei++)
    }//if(ret>=0)
}


GtkWidget *wizspy_areab3_create(GtkWidget *window)
{
    gint freei;
    GtkWidget *vbox, *hbox, *bbox, *ctrl;

    if(wizspy_areab3.regsignal==GTK_WIDGET_REG)
        return (wizspy_areab3.scrolled_window);
    else wizspy_areab3.regsignal=GTK_WIDGET_REG;

    wizspy_areab3.ctrl=gtk_frame_new(NULL);
    vbox=gtk_vbox_new (FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (vbox), 1);
    gtk_container_add (GTK_CONTAINER (wizspy_areab3.ctrl), vbox);

    /* h box*/
    hbox = gtk_hbox_new (FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (hbox), 1);
    gtk_box_pack_start (GTK_BOX (vbox),hbox, TRUE, TRUE, 1);
    
    // add used list box, and add data to this listctrl
    ctrl=listbox_createnew(NULL,&wizspy_areab3_listboxused);
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 120, 120);
    gtk_box_pack_start (GTK_BOX (hbox),ctrl, TRUE, TRUE, 1);
    g_signal_connect (G_OBJECT (wizspy_areab3_listboxused.ctrl), "selection_changed",
                      G_CALLBACK (wizspy_areab3_onclicklist),
                      &wizspy_areab3_listboxused);

    for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
    {
        if(iptype_used[freei].itemdata>0&&iptype_used[freei].itemname[0]!=0)
              listbox_insertitem(wizspy_areab3_listboxused,iptype_used[freei],0);
    }
    // add buttons 'add' and 'delete'
    bbox= gtk_vbutton_box_new();
    gtk_box_pack_start (GTK_BOX (hbox),bbox, TRUE, TRUE, 1);

    gtk_container_set_border_width (GTK_CONTAINER (bbox), 20);
    gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_START);
    gtk_box_set_spacing (GTK_BOX (bbox), 20);
    // button delete
    ctrl=gtk_button_new_with_label("--dismiss-->");
    gtk_container_add (GTK_CONTAINER (bbox), ctrl);
    g_signal_connect (G_OBJECT (ctrl), "clicked",
                              G_CALLBACK (wizspy_areab3_clickbutton), NULL);
    // button add
    ctrl=gtk_button_new_with_label("<--transfer-");
    gtk_container_add (GTK_CONTAINER (bbox), ctrl);
    g_signal_connect (G_OBJECT (ctrl), "clicked",
                              G_CALLBACK (wizspy_areab3_clickbutton), wizspy_areab3_clickbutton);

    // add unused list box
    ctrl=listbox_createnew(NULL,&wizspy_areab3_listboxunused);
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 120, 120);
    gtk_box_pack_start (GTK_BOX (hbox),ctrl, TRUE, TRUE, 1);
    g_signal_connect (G_OBJECT (wizspy_areab3_listboxunused.ctrl), "selection_changed",
                      G_CALLBACK (wizspy_areab3_onclicklist),
                      &wizspy_areab3_listboxunused);
    
    for(freei=0;freei<MAX_IPPROTOCOL_NUM;freei++)
    {            
        if(iptype_unused[freei].itemdata>0&&iptype_unused[freei].itemname[0]!=0)
              listbox_insertitem(wizspy_areab3_listboxunused,iptype_unused[freei],0);
    }

    /* add info texarea */
    ctrl= textarea_createlist(NULL,&wizspy_areab3_info);
    gtk_widget_set_size_request (GTK_WIDGET (ctrl), 300, 60);
    gtk_box_pack_start (GTK_BOX (vbox),ctrl, TRUE, TRUE, 1);
    // add main frame to scrool window, and quit
    wizspy_areab3.scrolled_window=gtk_append_scrollviewport(wizspy_areab3.ctrl);
    if(window!=NULL)
        gtk_container_add (GTK_CONTAINER (window), wizspy_areab3.scrolled_window);
    gtk_widget_show_all (wizspy_areab3.scrolled_window);
    return wizspy_areab3.scrolled_window;
}


/*----------------  B4 ------------------------*/
/*

1.dialog preview:

 ____________
|  ip invald \   
--------------------------------------------------------------
| ( )Accept all expcet in list | ( )Accept all expcet in list |
| (o)Ignore all expcet in list | (o)Ignore all expcet in list |
|------------------------------|------------------------------|
|                              |                              |
|       source ip list         |        dest ip list          |
|                              |                              |
|----------------------------- | -----------------------------|
|       ______     ______      |       ______     ______      |
|      | add  |   |remove|     |      | add  |   |remove|     |
|       ------     ------      |       ------     ------      |
--------------------------------------------------------------

2.main gtk ctrl relations :

  -hbox_main
   |+vbox_src
   | |+radio frame
   | | |-radio Ignore (Ignore all packet expcet that in list)
   | | |-radio Accept (Accept all packet expcet that in list)
   | |-listbox (source ip list)
   | |+button box
   |   |-button add (source)
   |   |-button remove (source)
   |+vbox_dest
   | |+radio frame
   | | |-radio Ignore (Ignore all packet expcet that in list)
   | | |-radio Accept (Accept all packet expcet that in list)
     |-listbox (dest ip list)
     |+button box
       |-button add (dest)
       |-button remove (dest)

*/


GtkScrollCtrl wizspy_areab4={0,0,0,};
GtkScrollCtrl wizspy_areab4_listboxsource={0,0,0,};
GtkScrollCtrl wizspy_areab4_listboxdest={0,0,0,};

#define MAX_NOUSEIPNUM 200
GtkListBoxItemData wizspy_areab4_srcip[MAX_NOUSEIPNUM];
GtkListBoxItemData wizspy_areab4_destip[MAX_NOUSEIPNUM];
gushort ifsrcenableall=0;
gushort ifdestenableall=0;


void wizspy_areab4_clickradioaccept(GtkWidget *widget,gpointer fundata)
{
    if(fundata==(&wizspy_areab4_listboxsource))
        ifsrcenableall=1;
    else if(fundata==(&wizspy_areab4_listboxdest))
        ifdestenableall=1;
}

void wizspy_areab4_clickradioignore(GtkWidget *widget,gpointer fundata)
{
    if(fundata==(&wizspy_areab4_listboxsource))
        ifsrcenableall=0;
    else if(fundata==(&wizspy_areab4_listboxdest))
        ifdestenableall=0;
}

void wizspy_areab4_add(IPDLG_PARAM* iparam, gpointer fundata)
{             
    gint freei;
    GtkListBoxItemData itemdata;
    if(fundata==(&wizspy_areab4_listboxsource))
    {
         if(ipdialog_ifsetip(iparam))
         {
             itemdata.itemdata= ipdialog_getip(iparam,itemdata.itemname);
             if(itemdata.itemdata)
             {
                  for(freei=0;freei<MAX_NOUSEIPNUM;freei++)
                  {
                      if(wizspy_areab4_srcip[freei].itemdata==0
                        &&wizspy_areab4_srcip[freei].itemname[0]==0)
                      {
                          wizspy_areab4_srcip[freei].itemdata=itemdata.itemdata;
                          strcpy(wizspy_areab4_srcip[freei].itemname,itemdata.itemname);
                          listbox_insertitem(wizspy_areab4_listboxsource,itemdata,0);

                          break;
                      }
                  } // for(freei=0;freei<MAX_NOUSEIPNUM;freei++)
             } // if(itemdata.itemdata)
         } //if(ipdialog_ifsetip(iparam))
    }
    else if(fundata==(&wizspy_areab4_listboxdest))
    {
         if(ipdialog_ifsetip(iparam))
         {
             itemdata.itemdata= ipdialog_getip(iparam,itemdata.itemname);
             if(itemdata.itemdata)
             {
                  for(freei=0;freei<MAX_NOUSEIPNUM;freei++)

                  {
                      if(wizspy_areab4_destip[freei].itemdata==0
                        &&wizspy_areab4_destip[freei].itemname[0]==0)
                      {
                          wizspy_areab4_destip[freei].itemdata=itemdata.itemdata;
                          strcpy(wizspy_areab4_destip[freei].itemname,itemdata.itemname);
                          listbox_insertitem(wizspy_areab4_listboxdest,itemdata,0);
                          break;
                      }
                  } // for(freei=0;freei<MAX_NOUSEIPNUM;freei++)
             } // if(itemdata.itemdata)
         } //if(ipdialog_ifsetip(iparam))

    }
}

void wizspy_areab4_clickadd(GtkWidget *widget,gpointer fundata)
{

     ipdialog_new(wizspy_areab4_add,fundata);
}

void wizspy_areab4_clickremove(GtkWidget *widget,gpointer fundata)
{
    gint index, freei;
    GtkListBoxItemData itemdata;
    if(fundata==(&wizspy_areab4_listboxsource))
    {
        index= listbox_getselectitem(wizspy_areab4_listboxsource,&itemdata);
        if(index>=0)
        {
            for(freei=0;freei<MAX_NOUSEIPNUM;freei++)
            {
                if(wizspy_areab4_srcip[freei].itemdata==itemdata.itemdata)
                {
                    wizspy_areab4_srcip[freei].itemdata=0;
                    wizspy_areab4_srcip[freei].itemname[0]=0;
                    listbox_deleteitem(wizspy_areab4_listboxsource,index);
                    break;
                } //if(wizspy_areab4_srcip[freei].itemdata==itemdata.itemdata)
            } // for(freei=0;freei<MAX_NOUSEIPNUM;freei++)   
        }//if(index>=0)
    }
    else if(fundata==(&wizspy_areab4_listboxdest))
    {
        index= listbox_getselectitem(wizspy_areab4_listboxdest,&itemdata);
        if(index>=0)
        {
            for(freei=0;freei<MAX_NOUSEIPNUM;freei++)

⌨️ 快捷键说明

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