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

📄 callbacks.c

📁 AirSnort 是一个无线局域网工具
💻 C
📖 第 1 页 / 共 2 页
字号:
         }         if (len == 0) {   //this is name info            if (read(fd, &chan, 1) != 1) {            }            pi.channel = chan & 0x0F;            dummyPacket[178] = chan & 0x10 ? 0 : 0x10;            if (read(fd, &slen, 1) != 1) {            }            pi.name = (char*) malloc(slen + 1);            if (read(fd, pi.name, slen) != slen) {            }              pi.name[slen] = 0;            addBssid(&cap);         }         else {            pi.channel = 0;            pi.pack = (Packet *) malloc(sizeof(Packet));            cap.iv = pi.pack->buf = (unsigned char *) malloc(len - 6);            pi.pack->len = len - 6;            pi.pack->next = NULL;            if (read(fd, pi.pack->buf, len - 6) != (len - 6)) {            }            addPacket(NULL, &cap, 1);         }      }      close(fd);   }}/***********************************************************  format of saved data:  For ksample packets:  4 byte integer length of 802.11b data = n+6 (includes bssid)  6 byte bssid  n bytes of packet data     3 byte IV     n-3 bytes of data w/ 802.11b checksum at the end  For sample packets  4 byte integer length = 11  6 byte bssid  5 bytes of packet data     3 byte IV     1 dummy byte = 0     1 byte = first byte of 802.11b data (the 0xAA byte)  For AP name information  4 byte integer length = 0  6 byte bssid  1 byte channel number  1 byte length of name = n  n byte AP name************************************************************/voidsavePacketData                         (GtkButton       *button,                                        gpointer         user_data){   unsigned char first, dummy = 0;   Packet *pkt;   Sample *samp;   BssidList *temp = head;   int len, i;   unsigned char uchar;   char *fname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(user_data));   int fd = open(fname, O_WRONLY | O_CREAT, 0644);   if (fd != -1) {      for (; temp; temp = temp->next) {         if (temp->name) {            len = 0;            write(fd, &len, sizeof(int));            write(fd, temp->bssid, 6);            uchar = temp->channel;//            uchar |= temp->usingWep ? 0 : 0x10;            write(fd, &uchar, 1);            uchar = strlen(temp->name);            write(fd, &uchar, 1);            write(fd, temp->name, uchar);         }         if (temp->ap) {            for (pkt = temp->ap->pkts; pkt; pkt = pkt->next) {               len = pkt->len + 6;               write(fd, &len, sizeof(int));               write(fd, temp->bssid, 6);               write(fd, pkt->buf, pkt->len);            }            len = 11;            for (i = 0; i < 13; i++) {               for (samp = temp->ap->samples[i]; samp; samp = samp->next) {                  write(fd, &len, sizeof(int));                  write(fd, temp->bssid, 6);                  write(fd, samp->iv, 3);                  write(fd, &dummy, 1);                  first = samp->firstByte ^ 0xAA;                  write(fd, &first, 1);               }            }         }      }   }   close(fd);   if (quitting) {      reallyQuit();   }}voidon_savefile_cancel                     (GtkButton       *button,                                        gpointer         user_data){   if (quitting) {      reallyQuit();   }}voidon_stats_activate                      (GtkMenuItem     *menuitem,                                        gpointer         user_data){//fprintf(stderr, "stats\n");}voidon_delete_activate                     (GtkMenuItem     *menuitem,                                        gpointer         user_data){   int row, column, result;//fprintf(stderr, "delete\n");   result = gtk_clist_get_selection_info(theList, popupEvent->x, popupEvent->y, &row, &column);   if (result) {//fprintf(stderr, "row = %d, col = %d\n", row, column);   }   else {//   fprintf(stderr, "not found\n");   }}voidon_stop_activate                       (GtkMenuItem     *menuitem,                                        gpointer         user_data){//fprintf(stderr, "stop\n");}voidon_gps_activate                        (GtkMenuItem     *menuitem,                                        gpointer         user_data){   gtk_widget_show_all (create_GpsDialog());}voidon_GpsOk_clicked                       (GtkButton       *button,                                        gpointer         user_data){}voidon_log_activate                        (GtkMenuItem     *menuitem,                                        gpointer         user_data){   logFileMenu = GTK_CHECK_MENU_ITEM(menuitem);   if (logFileMenu->active) {      gtk_widget_show_all (create_LogFile());   }   else if (logfile) {  //file is open, time to close//      close(logfile);//      logfile = -1;   }}voidon_log_ok_clicked                      (GtkButton       *button,                                        gpointer         user_data){   //this will only take effect when user clicks start to begin a capture   strcpy(dumpfile, gtk_file_selection_get_filename(GTK_FILE_SELECTION(user_data)));}voidon_log_cancel_button_clicked           (GtkButton       *button,                                        gpointer         user_data){   gtk_check_menu_item_set_active(logFileMenu, 0);}voidon_load_pcap_file_activate             (GtkMenuItem     *menuitem,                                        gpointer         user_data){   if (!doCapture) {      gtk_widget_show_all (create_PcapFile());   }   else {  //can't load while capturing      quick_message("Error", "Can't load while capture in progress");   }}voidon_pcap_ok_clicked                     (GtkButton       *button,                                        gpointer         user_data){   CaptureArg *ca = (CaptureArg*) malloc(sizeof(CaptureArg));   char *fname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(user_data));   ca->pcap = pcap_open_offline(fname, errbuf);   if (ca->pcap) {      switch (pcap_datalink(ca->pcap)) {         case DLT_PRISM_HEADER:            ca->offset = 144;            break;         default: //DLT_IEEE802_11            ca->offset = 0;      }      ca->dump = NULL;      oldscan = scan;      scan = 0;      doCapture = 1;      readPcapFile = 1;      pthread_create(&capThread, NULL, capture, ca);   }}voidon_CardType_changed                    (GtkEditable     *editable,                                        gpointer         user_data){   char *ct = gtk_entry_get_text(GTK_ENTRY(editable));   for (cardType = 0; cardType < NUM_CARDS; cardType++) {      if (!strcmp(cards[cardType], ct)) break;   }   if (cardType == OTHER && realized) {      //tell user that they must set monitor mode manually      quick_message("Notice", "You must place your card into monitor mode\nmanually.  Channel scan may not be available");   }}voidon_DeviceName_changed                  (GtkEditable     *editable,                                        gpointer         user_data){   strcpy(dev, gtk_entry_get_text(GTK_ENTRY(editable)));}void breadthChanged(void) {   BssidList *node;   for (node = head; node; node = node->next) {      if (node->usingWep && !node->ap->cracked) {         node->channelChanged = 1;         sem_post(&(node->crackSem));      }   }}voidon_breadth40_changed                   (GtkEditable     *editable,                                        gpointer         user_data){   breadth40 = gtk_spin_button_get_value_as_int((GtkSpinButton*) editable);   breadthChanged();}voidon_breadth128_changed                  (GtkEditable     *editable,                                        gpointer         user_data){   breadth128 = gtk_spin_button_get_value_as_int((GtkSpinButton*) editable);   breadthChanged();}voidon_freq_realize                        (GtkWidget       *widget,                                        gpointer         user_data){   gtk_spin_button_set_value((GtkSpinButton*) widget, chan);}voidon_CardType_realize                    (GtkWidget       *widget,                                        gpointer         user_data){   gtk_entry_set_text (GTK_ENTRY (widget), cards[cardType]);   realized = 1;}voidon_DeviceName_realize                  (GtkWidget       *widget,                                        gpointer         user_data){   gtk_entry_set_text(GTK_ENTRY(widget), dev);}voidon_breadth40_realize                   (GtkWidget       *widget,                                        gpointer         user_data){   gtk_spin_button_set_value((GtkSpinButton*) widget, breadth40);}voidon_breadth128_realize                  (GtkWidget       *widget,                                        gpointer         user_data){   gtk_spin_button_set_value((GtkSpinButton*) widget, breadth128);}

⌨️ 快捷键说明

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