亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bnpcap.c

?? 打魔獸戰網的都知道他是什么
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (C) 2001  Marco Ziech (mmz@gmx.net) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#include "common/setup_before.h"#include <stdio.h>#include <pcap.h>#include <errno.h>#include <netinet/in.h>#include <string.h>#include <stdlib.h>#include "compat/strerror.h"#include "compat/getopt.h"#include "common/init_protocol.h"#include "common/bnet_protocol.h"#include "common/udp_protocol.h"#include "common/packet.h"#include "common/eventlog.h"#include "common/hexdump.h"#include "common/list.h"#include "common/version.h"#include "common/util.h"#include "common/setup_after.h"/* FIXME: everywhere: add checks for NULL pointers */char *filename = NULL;pcap_t *pc;char ebuf[PCAP_ERRBUF_SIZE];int bnpcap_dodebug = 0;int bnpcap_beverbose = 0;unsigned int listen_port = 6112;/********************* CONNECTIONS ********************/typedef enum {   tcp_state_none,     tcp_state_syn,     tcp_state_ack,     tcp_state_ok} t_tcp_state;typedef struct {   /* It's IPV4 */   unsigned int ip;   unsigned short port;} t_bnpcap_addr;/* To track connections ... */typedef struct {   t_bnpcap_addr client;   t_bnpcap_addr server;   t_packet_class class;   t_tcp_state tcpstate;   int incomplete;   int clientoff;   t_packet *clientpkt;   int serveroff;   t_packet *serverpkt;   t_list * packets;} t_bnpcap_conn;typedef struct {   t_packet_dir dir;   struct timeval tv;   unsigned int id;   t_packet *p;} t_bnpcap_packet;t_list * conns;t_list * udppackets;struct timeval packettime;static unsigned int current_packet_id = 1;/*********************** HEADERS **********************//* FIXME: don't assume that's always true */typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;/************************** TCP ***********************/typedef struct {   u16 sport;   u16 dport;   u32 seqno;   u32 ackno;   u16 stuff; /* Data offset, various flags */   u16 window;   u16 checksum;   u16 urgp;  /* Urgent Pointer (if URG flag set) */   /* options */} t_tcp_header_raw;typedef struct {   unsigned short sport;   unsigned short dport;   unsigned int seqno;   unsigned int ackno;   unsigned char doffset;   unsigned short flags;#define TCP_URG 0x20 /* Urgent pointer field significant */#define TCP_ACK 0x10 /* Acknowlegdement field significant */#define TCP_PSH 0x08 /* Push function */#define TCP_RST 0x04 /* Reset connection */#define TCP_SYN 0x02 /* Synchronize sequence numbers */#define TCP_FIN 0x01 /* No more data from sender (finish) */   unsigned short window;   unsigned short checksum;   unsigned short urgp;   /* options */} t_tcp_header;/******************************** UDP ************************/typedef struct {   u16 sport;   u16 dport;   u16 len;   u16 checksum;} t_ip_udp_header_raw;typedef struct {   unsigned short sport;   unsigned short dport;   unsigned short len;   unsigned short checksum;} t_ip_udp_header;/******************************** IP *************************/typedef struct {   u8 versionihl;   u8 tos;   u16 len;   u16 id;   u16 flagsoffset;   u8 ttl;   u8 protocol;   u16 checksum;   u32 src;   u32 dst;   /* options */} t_ip_header_raw;typedef struct {   unsigned char version;   unsigned char ihl;   unsigned char tos;   unsigned short len;   unsigned short id;   unsigned char flags;#define IP_DF 0x02 /* 1 == Don't fragment */#define IP_MF 0x01 /* 1 == More fragments */   unsigned short offset;   unsigned char ttl;   unsigned char protocol;   unsigned short checksum;   unsigned int src;   unsigned int dst;   /* options */} t_ip_header;/******************************* ETHERNET *****************************/typedef struct {   u8 dst[6]; /* Ethernet hardware address */   u8 src[6]; /* Ethernet hardware address */   u16 type;  /* Ethernet_II: protocol type */       /* FIXME: Ethernet [802.2|802.3|SNAP]: maybe something else (eg. length) */} t_ether_raw;/************************************************************************//************************* CONNECTION FUNCTIONS *************************/static t_bnpcap_conn * bnpcap_conn_new(t_bnpcap_addr const *s, t_bnpcap_addr const *d){   t_bnpcap_conn * c;      c = (t_bnpcap_conn *) malloc(sizeof(t_bnpcap_conn)); /* avoid warning */   if (!c) {      eventlog(eventlog_level_error,__FUNCTION__,"malloc failed: %s",pstrerror(errno));      return NULL;   }   if (d->port==listen_port || d->port==6200) { /* FIXME: That's dirty: We assume the server is on port 6112 */      memcpy(&c->client,s,sizeof(t_bnpcap_addr));      memcpy(&c->server,d,sizeof(t_bnpcap_addr));   } else {      memcpy(&c->client,d,sizeof(t_bnpcap_addr));      memcpy(&c->server,s,sizeof(t_bnpcap_addr));   }   c->class = packet_class_init;   c->packets = list_create();   c->incomplete = 0;   c->tcpstate = tcp_state_none;   c->clientoff = 0;   c->clientpkt = NULL;   c->serveroff = 0;   c->serverpkt = NULL;   return c;}static void bnpcap_conn_set_class(t_bnpcap_conn *c, t_packet_class class){   c->class = class;}static t_packet_class bnpcap_conn_get_class(t_bnpcap_conn *c){   return c->class;}static t_bnpcap_conn * bnpcap_conn_find(t_bnpcap_addr const *s, t_bnpcap_addr const *d){   t_elem * curr;   LIST_TRAVERSE(conns,curr) {      t_bnpcap_conn *c;            c = elem_get_data(curr);      if (((c->client.ip==s->ip)&&(c->client.port==s->port))&&	  ((c->server.ip==d->ip)&&(c->server.port==d->port))) {	 return c;      } else if (((c->client.ip==d->ip)&&(c->client.port==d->port))&&		 ((c->server.ip==s->ip)&&(c->server.port==s->port))) {	 return c;      }   }   return NULL;}static t_packet_dir bnpcap_conn_get_dir(t_bnpcap_conn const * c, t_bnpcap_addr const *s, t_bnpcap_addr const *d){   if (((c->client.ip==s->ip)&&(c->client.port==s->port))&&       ((c->server.ip==d->ip)&&(c->server.port==d->port)))     return packet_dir_from_client;   else     return packet_dir_from_server;}static int bnpcap_conn_add_packet(t_bnpcap_conn *c, t_bnpcap_packet *bp) {   eventlog(eventlog_level_debug,__FUNCTION__,"id=%u ",bp->id);   list_append_data(c->packets,bp);   packet_add_ref(bp->p);   return 0;}static int bnpcap_conn_packet(unsigned int sip, unsigned short sport, unsigned int dip, unsigned short dport, unsigned char const * data, unsigned int len){   t_bnpcap_addr s;   t_bnpcap_addr d;   t_bnpcap_conn *c;   t_bnpcap_packet *bp;      s.ip = sip;   s.port = sport;   d.ip = dip;   d.port = dport;     if ((c = bnpcap_conn_find(&s,&d))) {      eventlog(eventlog_level_debug,__FUNCTION__,"adding packet to existing connection");      if (c->tcpstate==tcp_state_ack) {	 c->tcpstate = tcp_state_ok;      } else if (c->tcpstate==tcp_state_syn) {	 c->incomplete = 1; /* ACK missing */	 c->tcpstate = tcp_state_ok;      }   } else {      eventlog(eventlog_level_debug,__FUNCTION__,"adding packet to incomplete connection");      c = bnpcap_conn_new(&s,&d);      bnpcap_conn_set_class(c,packet_class_raw); /* we don't know the init sequence */      c->incomplete = 1;      c->tcpstate = tcp_state_ok;       list_append_data(conns,c);   }   if (c->tcpstate!=tcp_state_ok) {      eventlog(eventlog_level_warn,__FUNCTION__,"connection got packet in wrong state!");   }   if (bnpcap_conn_get_class(c) == packet_class_init) {       if (len>1) {	 eventlog(eventlog_level_warn,__FUNCTION__,"init packet larger than 1 byte");      }      switch (data[0]) {       case CLIENT_INITCONN_CLASS_BNET:	 bnpcap_conn_set_class(c,packet_class_bnet);	 break;       case CLIENT_INITCONN_CLASS_FILE:	 bnpcap_conn_set_class(c,packet_class_file);	 break;       case 0xf7: // W3 matchmaking hack	 eventlog(eventlog_level_info,__FUNCTION__,"matchmaking packet");	   bnpcap_conn_set_class(c,packet_class_bnet);	   break;       default:	 bnpcap_conn_set_class(c,packet_class_raw);      }   } else {      t_packet *p;      unsigned int off;      unsigned char const *datap = data;      int always_complete = 0;            if (bnpcap_conn_get_class(c) == packet_class_raw)	always_complete = 1; /* There is no size field */      if (bnpcap_conn_get_class(c) == packet_class_file)	always_complete = 1; /* Size field isn't always there */      if (always_complete) {	 /* packet is always complete */	 eventlog(eventlog_level_debug,__FUNCTION__,"packet is always complete (class=%d)",bnpcap_conn_get_class(c));	 bp = (t_bnpcap_packet *) malloc(sizeof(t_bnpcap_packet)); /* avoid warning */	 if (!bp) {	    eventlog(eventlog_level_error,__FUNCTION__,"malloc failed: %s",pstrerror(errno));	    return -1;	 }	 bp->dir = bnpcap_conn_get_dir(c,&s,&d);	 bp->p = packet_create(bnpcap_conn_get_class(c));	 bp->id = current_packet_id++;	 if (!bp->p) {	    eventlog(eventlog_level_error,__FUNCTION__,"packet_create failed");	    return -1;	 }	 memcpy(&bp->tv,&packettime,sizeof(struct timeval));	 packet_set_size(bp->p,len);	 memcpy(packet_get_raw_data(bp->p,0),data,len);	 bnpcap_conn_add_packet(c,bp);	 if ((packet_get_class(bp->p)==packet_class_file)&&(packet_get_type(bp->p)==SERVER_FILE_REPLY)) {	    eventlog(eventlog_level_debug,__FUNCTION__,"file transfer initiated (setting to raw)");	    bnpcap_conn_set_class(c,packet_class_raw);	 }      } else {	 /* read out saved state */	 if (bnpcap_conn_get_dir(c,&s,&d)==packet_dir_from_client) {	    p = c->clientpkt;	    off = c->clientoff;	 } else {	    p = c->serverpkt;	    off = c->serveroff;	 }	 while ((datap-data)<(signed)len) {	    if (!p) {	       eventlog(eventlog_level_debug,__FUNCTION__,"creating new packet");	       p = packet_create(bnpcap_conn_get_class(c));	       if (!p) {		  eventlog(eventlog_level_error,__FUNCTION__,"packet_create failed");		  return -1;	       }	       packet_set_size(p,packet_get_header_size(p)); /* set it to the minimum for now */	       off = 0;	    }	    if (off < packet_get_header_size(p)) {	       unsigned int l = (packet_get_header_size(p)-off);	       /* (len-(datap-data)) : remaining bytes in buffer */	       if ((len-(datap-data)) < l)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品免费| 久久免费美女视频| 亚洲欧美一区二区三区孕妇| 成人综合在线观看| **性色生活片久久毛片| 色综合咪咪久久| 亚洲午夜成aⅴ人片| 日韩欧美一区二区在线视频| 美女看a上一区| 国产免费观看久久| 91免费国产在线| 亚洲超碰97人人做人人爱| 欧美一级高清片在线观看| 国产乱码精品一区二区三区五月婷| 国产日韩欧美电影| 欧美亚洲一区二区在线观看| 免费成人在线网站| 国产亚洲欧美在线| 91成人在线观看喷潮| 奇米影视一区二区三区| 久久精品一区二区三区四区| 99久久99久久精品免费看蜜桃| 一区二区三区四区高清精品免费观看| 欧美日韩国产片| 国产成人精品一区二区三区网站观看| 亚洲色欲色欲www在线观看| 欧美日韩国产高清一区| 国产一区二区不卡老阿姨| 亚洲色图.com| 精品国产制服丝袜高跟| 91丨porny丨户外露出| 日本成人中文字幕在线视频| 日本一区二区综合亚洲| 欧美日韩不卡一区二区| 国产一区二区三区观看| 亚洲愉拍自拍另类高清精品| 久久久一区二区| 欧美日韩中文字幕一区二区| 国产成人自拍在线| 日本一不卡视频| 亚洲精品一二三| 国产日韩亚洲欧美综合| 欧美精品 国产精品| 99视频在线精品| 韩国精品免费视频| 日韩中文字幕av电影| 国产精品三级av在线播放| 欧美成人精品二区三区99精品| 一本久久综合亚洲鲁鲁五月天 | 91精品国产色综合久久ai换脸 | 亚洲最新在线观看| 国产欧美一区二区三区网站| 制服丝袜中文字幕亚洲| 91看片淫黄大片一级在线观看| 麻豆精品在线看| 舔着乳尖日韩一区| 亚洲乱码国产乱码精品精98午夜| 久久日韩粉嫩一区二区三区| 欧美精品久久天天躁| 91精品91久久久中77777| av成人免费在线| 粉嫩欧美一区二区三区高清影视| 激情六月婷婷久久| 精品一区二区成人精品| 日日夜夜一区二区| 亚洲福利一区二区三区| 洋洋av久久久久久久一区| 日韩久久一区二区| 亚洲裸体xxx| 亚洲乱码国产乱码精品精可以看| 中文字幕在线观看不卡| 亚洲欧美在线观看| 中文字幕亚洲不卡| 国产精品久久免费看| 国产精品网站导航| 国产精品蜜臀av| 中文字幕的久久| 国产精品久久一卡二卡| 综合av第一页| 亚洲综合免费观看高清完整版在线 | www.99精品| 粉嫩13p一区二区三区| 国产乱码字幕精品高清av| 国产成人精品www牛牛影视| 国产一区二区三区观看| 国产成人在线网站| 成人精品电影在线观看| 成人激情小说乱人伦| 不卡欧美aaaaa| 欧美午夜视频网站| 欧美一卡在线观看| 久久久久国产一区二区三区四区| 国产视频911| 亚洲欧洲精品一区二区三区不卡| 国产精品毛片无遮挡高清| 亚洲精品少妇30p| 日韩高清在线一区| 国产精品中文字幕日韩精品| 不卡影院免费观看| 欧美专区日韩专区| 欧美tk丨vk视频| 国产精品色呦呦| 亚洲.国产.中文慕字在线| 极品少妇xxxx精品少妇| av毛片久久久久**hd| 91福利社在线观看| 精品国免费一区二区三区| 国产精品国产精品国产专区不片| 亚洲综合激情网| 久久99在线观看| 成人18视频在线播放| 日本丶国产丶欧美色综合| 欧美一级二级在线观看| 国产精品天美传媒| 午夜私人影院久久久久| 国产大陆亚洲精品国产| 91福利区一区二区三区| 久久久亚洲欧洲日产国码αv| 中日韩av电影| 秋霞午夜av一区二区三区| 国产激情一区二区三区桃花岛亚洲| 日本韩国一区二区| 国产日韩欧美在线一区| 亚洲午夜在线电影| 成人一区二区三区中文字幕| 欧美日韩综合色| 国产精品国产成人国产三级| 日韩av一级电影| 99久久精品久久久久久清纯| 欧美一区二区不卡视频| 亚洲美女视频在线观看| 国产寡妇亲子伦一区二区| 69久久夜色精品国产69蝌蚪网| 欧美国产日本韩| 裸体健美xxxx欧美裸体表演| 97精品国产露脸对白| 久久综合色天天久久综合图片| 亚洲一区二区三区视频在线播放 | 欧洲精品在线观看| 国产精品女主播在线观看| 717成人午夜免费福利电影| 中文字幕在线视频一区| 国内精品写真在线观看| 欧美二区三区91| 亚洲国产sm捆绑调教视频 | 97se狠狠狠综合亚洲狠狠| 日韩一区二区三区电影| 一区二区高清免费观看影视大全| 国产一级精品在线| 欧美电影免费观看高清完整版在| 亚洲国产精品自拍| 日本高清不卡视频| 国产精品福利一区| 成人性视频网站| 久久久美女艺术照精彩视频福利播放| 天堂va蜜桃一区二区三区漫画版 | 丁香激情综合五月| 亚洲精品在线电影| 精品一区二区国语对白| 欧美大尺度电影在线| 日韩国产在线观看一区| 欧美日韩一区二区三区高清| 一区二区久久久| 欧美在线观看一区二区| 樱花草国产18久久久久| 一本大道久久精品懂色aⅴ| 亚洲天堂2014| 色国产综合视频| 亚洲一级电影视频| 欧美日韩国产综合一区二区| 亚洲成a人片在线不卡一二三区| 欧美在线观看禁18| 丝袜亚洲另类欧美综合| 欧美精品18+| 韩国精品在线观看| 中文字幕二三区不卡| 91丨九色丨黑人外教| 樱花影视一区二区| 6080日韩午夜伦伦午夜伦| 免费在线观看成人| 久久九九久精品国产免费直播| 国产成人啪午夜精品网站男同| 国产喷白浆一区二区三区| 91在线小视频| 午夜精品久久久久久久| 日韩一级片网址| 国产精品一线二线三线| 中文字幕日韩一区| 一本久久a久久精品亚洲| 五月激情综合婷婷| 久久久综合网站| 一本久久a久久精品亚洲| 视频一区欧美精品| 国产视频一区在线观看 | 国产成人av一区| 一区二区日韩电影| 精品国产凹凸成av人网站| 国产精品99久久久| 亚洲一区二区精品视频| 久久亚洲一区二区三区四区|