网络抓包与流量在线分析系统的设计与实现-基于libpcap在MacOS上实现 记录这愉快(DT)的一周

要求:

基于LINUX系统设计并实现一个网络流量的分析系统。该系统具有以下功能:(1)实时抓取网络数据。(2)网络协议分析与显示。(3)将网络数据包聚合成数据流,以源IP、目的IP、源端口、目的端口及协议等五元组的形式存储。(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。在这些统计数据的基础上分析不同网络应用的流量特征。

关键词:linux,libpcap,流量分析,网络抓包,协议分析,哈希链表,文件操作,C语言

功能

(1)能够实时抓取网络中的数据包。并实时显示在程序界面上。用户可自定义过滤条件以抓取所需要的数据包。
(2)分析各个网络协议格式,能够显示各协议字段的实际意义。例如,能够通过该程序反映TCP三次握手的实现过程。
(3)采用Hash链表的形式将网络数据以连接(双向流)的形式存储。
(4)计算并显示固定时间间隔内网络连接(双向流)的统计量(如上行与下行的数据包数目,上行与下行的数据量大小等)。例如,抓取一段时间(如30分钟)的网络流量,将该段时间以固定时长(如1分钟)为单位分成若干个时间片,计算网络连接在每一个时间片内的相关统计量。并在上述统计数据的基础上分析不同应用如WEB、DNS、在线视频等服务的流量特征。注意,可根据实际的流量分析需要自己定义相关的统计量。

实验环境

硬件设备:
(1)MAC笔记本
软件设备:
(2)MACOS(UNIX内核)
(3)网络数据包捕获函数包,Linux平台下为libpcap
(4)编程语言选用C,IDE使用Xcode
实验环境的配置:
Lipcap 下载地址为:http://www.tcpdump.org/release/libpcap-1.7.3.tar.gz
libpcap(Packet Capture library)即数据包捕获函数库。该库提供的C函数接口可用于需要捕获经过网络接口(只要经过该接口,目标地址不一定为本机)数据包的系统开发上。由 Berkeley大学Lawrence Berkeley National Laboratory研究院的Van Jacobson、Craig Leres和Steven McCanne编写。该函数库支持Linux、Solaris和*BSD系统平台。libpcap主要由两部份组成:网络分接头(Network Tap)和数据过滤器(Packet Filter)。
lipcap的安装过程:
1)tar zxvf libpcap-1.7.3.tar.gz 解压文件,并将其放入自定义的安装目录。
2)打开网址:flex.sourceforge.net/ 下载 flex-2.5.35.tar.gz (1.40MB) 软件包,通过 tar zxvf flex-2.5.35.tar.gz 解压文件,并将其放入上述自定义的安装目录中。
注:如果没有编译安装此文件,在编译安装libpcap时,可能会出现 “configure: error: Your operating system’s lex is insufficient to compile libpcap.”的错误提示。
3)打开网址:ftp.gnu.org/gnu/bison/ 下载 bison-2.4.1.tar.gz (1.9MB) 软件包,通过 tar zxvf bison-2.4.1.tar.gz 解压文件,并将其放入上述自定义的安装目录中。
如果没有编译安装此文件,在编译安装libpcap时,可能会出现 “configure: WARNING: don’t have both flex and bison; reverting to lex/yacc checking for capable lex… insufficient” 的错误提示。
4)打开网址:ftp.gnu.org/gnu/m4/ 下载 m4-1.4.13.tar.gz (1.2MB)软件包,通过 tar zxvf m4-1.4.13.tar.gz 解压文件,并将其放入上述自定义的安装目录中。
注:如果没有编译安装此文件,在编译安装bison-2.4.1时,就会出现 “configure: error: GNU M4 1.4 is required”的错误提示。
5)依次进入目录m4-1.4.13,bison-2.4.1,flex-2.5.35,libpcap-1.0.0 并执行以下命令:
./configure
make
make instal
(备注:使用linux或unix系统的需要进入终端用shell指令安装,Xcode中使用libpcap将其当作第三方函数库使用时,需要手动点击蓝色的工程文件,在右边的BuildPhase中LinkBinaryWithLibraries中手动添加libpcap的函数库,并且c中支持的一些基于win平台的函数和头文件在MACOS中有所差异,如#include <malloc.h>需改成#include <mm_malloc.h>,还有一些细节需要自己发现)

源代码

(分为头文件与主c文件两部分)
/main.h 包括网络抓包与流量分析/
#include <stdio.h>
#include <mm_malloc.h>
#include <sys/malloc.h>
#include <time.h>
#include <string.h>
#include <pcap.h>
#include “protocol.h”
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>
#include<unistd.h>

typedef struct _argument
{
pcap_t *handle;
int timeLen;
}argument;

void *thread_clock(void argv)
{
pcap_t handle = ((argument)argv)->handle;
int timeLen = ((argument
)argv)->timeLen; // set time
sleep(timeLen);
pcap_breakloop(handle);
return 2;
}

void cb_getPacket(u_char *dumpfile, const struct pcap_pkthdr *pkthdr, const u_char *packet)
{
// ip_header seg_ip = (ip_header)(package + ETHER_LEN);
pcap_dump(dumpfile, pkthdr, packet);

static int id = 0;
printf(".  ");
if(++id % 30 == 0)
{printf("\n");
}

}

//timeval结构
typedef struct _shh_timeval{
int tv_sec; /* seconds 1900之后的秒数 /
int tv_usec; /
and microseconds */
}shh_timeval;

// pcap_next()方法执行后,pcap_pkthdr类型的指针指向抓包的信息
typedef struct _shh_pkthdr {
shh_timeval ts; /* time stamp 时间 /
bpf_u_int32 caplen; /
length of portion present 包的数据长度?? /
bpf_u_int32 len; /
length this packet (off wire) 包的实际长度 */
}shh_pkthdr;

typedef struct _net5set
{
u_int sip;
u_short sport;
u_int dip;
u_short dport;
u_char protocol;
}net5set;

typedef struct _net_link_node
{
net5set nln_5set;
int nln_upl_size;
int nln_downl_size;
int nln_upl_pkt;
int nln_downl_pkt;
u_char nln_status;
#define CLOSED 0x00
#define SYN_SENT 0x01 // client sent SYN
#define SYN_RECVD 0x02 // recieve SYN, and send SYN ACK
#define ESTABLISHED 0x03 // client get SYN & ACK, server get ACK

#define FIN_WAIT_1 0x04 // client send FIN
#define CLOSE_WAIT 0x05 // server recv FIN, and send ACK
#define FIN_WAIT_2 0x06 // client recv ACK
#define LAST_ACK 0x07 // server send FIN
#define TIME_WAIT 0x08 // client recv FIN
// CLOSED: client send ACK, server recv ACK
#define UNDEFINED 0xff
struct _net_link_node *next;
}net_link_node, *p_net_link;

typedef struct _net_link_header
{
int count_conn;
int count_upl_pkt;
int count_downl_pkt;
int count_upl;
int count_downl;
p_net_link link;
}net_link_header;

#define IPTOSBUFFERS 12
static char iptos(bpf_u_int32 in)
{
static char output[IPTOSBUFFERS][3
4+3+1];
static short which;
u_char *p;

p = (u_char *)&in;
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];

}

char *long2time(long ltime)
{
time_t t;
struct tm *p;
static char s[100];

t = ltime;
p = gmtime(&t);strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", p);
return s;

}

// 需要三个链表,一个哈希链表,保存处于连接状态的包
// 另两个链表分别保存tcp和udp的流量
net_link_header *FLowLink_TCP;
net_link_header *FLowLink_UDP;

/* ========== hash table ============= */
#define HASH_TABLE_SIZE 0xffff
p_net_link HashTable[HASH_TABLE_SIZE];

void init_flowLink(net_link_header *head)
{
head->count_conn = 0;
head->count_upl_pkt = 0;
head->count_downl_pkt = 0;
head->count_upl = 0;
head->count_downl = 0;
head->link = NULL;
}

void add_to_flowLink(net_link_header *head, const net_link_node *theNode)
{
net_link_node *newNode = (net_link_node *)malloc(sizeof(net_link_node));
memcpy(newNode, theNode, sizeof(net_link_node));

head->count_conn ++;
head->count_upl_pkt     += newNode->nln_upl_pkt;
head->count_downl_pkt   += newNode->nln_downl_pkt;
head->count_upl         += newNode->nln_upl_size;
head->count_downl       += newNode->nln_downl_size;newNode->next = head->link;
head->link = newNode;

}

void clear_flowLink(net_link_header *head)
{
if( head->link == NULL ){ return;}

net_link_node *pTemp1 = NULL;
net_link_node *pTemp2 = NULL;pTemp1 = head->link;
pTemp2 = pTemp1->next;
while( pTemp2 != NULL )
{free(pTemp1);pTemp1 = pTemp2;pTemp2 = pTemp1->next;
}
free(pTemp1);head->link = NULL;

}

void parse_flowLink_TCP(FILE *fOutput)
{
fprintf(fOutput, “TCP连接个数:\t%d\n”, FLowLink_TCP->count_conn);
fprintf(fOutput, “TCP数据包个数:\t%d\n”, FLowLink_TCP->count_upl_pkt + FLowLink_TCP->count_upl_pkt);
fprintf(fOutput, “TCP数据总流量:\t%d bytes\n”, FLowLink_TCP->count_upl + FLowLink_TCP->count_downl);
fprintf(fOutput, “TCP数据上传量:\t%d bytes\n”, FLowLink_TCP->count_upl);
fprintf(fOutput, “TCP数据下载量:\t%d bytes\n”, FLowLink_TCP->count_downl);
fprintf(fOutput, “-----------------------\n”);

net_link_node *pTemp = NULL;
pTemp = FLowLink_TCP->link;
while( pTemp != NULL )
{fprintf(fOutput, "%s\t%u\t", iptos(pTemp->nln_5set.sip), pTemp->nln_5set.sport);fprintf(fOutput, "==>\t%s\t%u\t", iptos(pTemp->nln_5set.dip), pTemp->nln_5set.dport);fprintf(fOutput, "上传包数量:%d\t", pTemp->nln_upl_pkt);fprintf(fOutput, "下载包数量:%d\t", pTemp->nln_downl_pkt);fprintf(fOutput, "upload:%d bytes\t", pTemp->nln_upl_size);fprintf(fOutput, "download:%d bytes\t", pTemp->nln_downl_size);fprintf(fOutput, "\n");pTemp = pTemp->next;
}clear_flowLink(FLowLink_TCP);

}

void parse_flowLink_UDP(FILE *fOutput)
{
fprintf(fOutput, “UDP数据包个数:\t%d\n”, FLowLink_UDP->count_upl_pkt + FLowLink_UDP->count_upl_pkt);
fprintf(fOutput, “UDP数据流量:\t%d bytes\n”, FLowLink_UDP->count_upl + FLowLink_UDP->count_downl);
clear_flowLink(FLowLink_UDP);
}

u_short get_ushort_net(u_short virtu)
{
return (u_short)(virtu >> 8 | virtu << 8);
}

u_short get_hash(const net5set *theSet)
{
u_int srcIP = theSet->sip;
u_int desIP = theSet->dip;
u_int port = (u_int)(theSet->sport * theSet->dport);
u_int res = (srcIPdesIP)port;
u_short hash= (u_short)((res & 0x00ff)^(res >> 16));
return hash;
}

void add_to_hashTable(u_short hash, const net_link_node *theNode, u_char flags)
{
net_link_node *HashNode = (net_link_node *)malloc(sizeof(net_link_node));
memcpy(HashNode, theNode, sizeof(net_link_node));

if(HashTable[hash] == NULL)
{HashTable[hash] = HashNode;return;
}
net_link_node *pTemp = HashTable[hash];
net_link_node *pBack = NULL;
int isSame_up = 0;
int isSame_down = 0;
while(pTemp != NULL)
{isSame_up = (pTemp->nln_5set.sip == HashNode->nln_5set.sip)&& (pTemp->nln_5set.dip == HashNode->nln_5set.dip)&& (pTemp->nln_5set.sport == HashNode->nln_5set.sport)&& (pTemp->nln_5set.dport == HashNode->nln_5set.dport);isSame_down = (pTemp->nln_5set.dip == HashNode->nln_5set.sip)&& (pTemp->nln_5set.sip == HashNode->nln_5set.dip)&& (pTemp->nln_5set.dport == HashNode->nln_5set.sport)&& (pTemp->nln_5set.sport == HashNode->nln_5set.dport);if( isSame_up ){pTemp->nln_upl_size += HashNode->nln_upl_size;pTemp->nln_upl_pkt ++;if(pTemp->nln_status == ESTABLISHED && (flags & TH_FIN) ){pTemp->nln_status = FIN_WAIT_1;}else if (pTemp->nln_status == TIME_WAIT && (flags & TH_ACK)){pTemp->nln_status = CLOSED;if(pBack == NULL){HashTable[hash] = NULL;}else{pBack->next = pTemp->next;}add_to_flowLink(FLowLink_TCP, pTemp);free(pTemp);}else if(pTemp->nln_status == CLOSE_WAIT && (flags & TH_FIN)){pTemp->nln_status = LAST_ACK;}free(HashNode);break;}else if( isSame_down ){pTemp->nln_downl_size += HashNode->nln_upl_size;pTemp->nln_downl_pkt ++;if(pTemp->nln_status == ESTABLISHED && (flags & TH_FIN)){pTemp->nln_status = CLOSE_WAIT;}else if(pTemp->nln_status == LAST_ACK && (flags & TH_ACK)){pTemp->nln_status = CLOSED;if(pBack == NULL){HashTable[hash] = NULL;}else{pBack->next = pTemp->next;}add_to_flowLink(FLowLink_TCP, pTemp);free(pTemp);}else if(pTemp->nln_status == FIN_WAIT_1 && (flags & TH_ACK)){pTemp->nln_status = FIN_WAIT_2;}else if(pTemp->nln_status == FIN_WAIT_2 && (flags & TH_FIN)){pTemp->nln_status = TIME_WAIT;}free(HashNode);break;}pBack = pTemp;pTemp = pTemp->next;
}
if(pTemp == NULL)
{pBack->next = HashNode;
}

}

void clear_hashTable()
{
int i = 0;
net_link_node *pTemp1 = NULL;
net_link_node *pTemp2 = NULL;
for(i = 0; i < HASH_TABLE_SIZE; i++)
{
if(HashTable[i] == NULL){ continue;}

    pTemp1 = HashTable[i];while(pTemp1 != NULL){pTemp2 = pTemp1->next;add_to_flowLink(FLowLink_TCP, pTemp1);free(pTemp1);pTemp1 = pTemp2;}HashTable[i] = NULL;
}

}

/*
在以太网中,规定最小的数据包为64个字节,如果数据包不足64字节,则会由网卡填充。
*/

int main(int argc, char const *argv[])
{
char *dev, errbuf[PCAP_ERRBUF_SIZE];
pcap_t *dev_handle;
bpf_u_int32 net, mask;
char packet_filter[] = “ip”;
struct bpf_program fcode;

dev = pcap_lookupdev(errbuf);
if(dev == NULL){printf("No Device:%s\n", errbuf);return 0;
} // */
/*char *wlan_dev = "wlan0";dev = wlan_dev; // */
printf("开始抓取数据,设备:%s\n", dev);dev_handle = pcap_open_live(dev, BUFSIZ, 1, 0, errbuf);
if(dev_handle == NULL){printf("pcap_open_live:%s\n", errbuf);return 0;
}
//args->handle = dev_handle;pcap_lookupnet(dev, &net, &mask, errbuf);//compile the filter
if (pcap_compile(dev_handle, &fcode, packet_filter, 1, mask) <0 )
{printf("\nUnable to compile the packet filter. Check the syntax.\n");return 0;
}
//set the filter
if (pcap_setfilter(dev_handle, &fcode) < 0)
{printf("\nError setting the filter.\n");return 0;
}// open file to save pcap
pcap_dumper_t *dumpfile;
dumpfile = pcap_dump_open(dev_handle, "traffic.data");
if(dumpfile == NULL){printf("\nError opening output file\n");return 0;
}// build a new thread
pthread_t ptClock;
argument args;
args.handle = dev_handle;
int argv_time = 30;
args.timeLen = (argv_time > 0) ? argv_time : 60;
printf("抓取时长:%d s\n", argv_time);
if(pthread_create(&ptClock, NULL, thread_clock, &args))
{printf("pthread_create(): Error!\n");return -1;
}
pcap_loop(dev_handle, -1, cb_getPacket, (u_char*)dumpfile);// close all handle
pcap_dump_close(dumpfile);
pcap_close(dev_handle);
printf("\nDone!\n");
//以上为抓包char *file_output = "/Users/ganyu/Desktop/result.data";
FILE *fOutput = fopen(file_output, "w");
fclose(fOutput);        // clear file
fOutput = fopen(file_output, "a+");char *filename = "traffic.data";
fprintf(fOutput, "数据文件:%s\n", filename);printf("载入文件...\n");
FILE *fp = fopen(filename, "r");shh_pkthdr      *pkthdr     = (shh_pkthdr *)malloc(sizeof(shh_pkthdr));
ether_header    *segEther   = (ether_header*)malloc(sizeof(ether_header));
ip_header       *segIP      = (ip_header*)malloc(sizeof(ip_header));
tcp_header      *segTCP     = (tcp_header*)malloc(sizeof(tcp_header));
udp_header      *segUDP     = (udp_header*)malloc(sizeof(udp_header));
net5set         *Cur5Set    = (net5set *)malloc(sizeof(net5set));
net_link_node   *LinkNode   = (net_link_node *)malloc(sizeof(net_link_node));FLowLink_TCP = (net_link_header *)malloc(sizeof(net_link_header));
init_flowLink(FLowLink_TCP);
FLowLink_UDP = (net_link_header *)malloc(sizeof(net_link_header));
init_flowLink(FLowLink_UDP);long    fileLen     = 0;
int     pktLen      = 0;    // pktLen = Ether + IP
int     trailerLen  = 0;
u_short ipLen_real  = 0;
u_short ipLen_total = 0;
u_short tcpLen_real = 0;
u_short dataLen     = 0;// get length of file
fseek(fp, 0, SEEK_END);
fileLen = ftell(fp);
fseek(fp, PCAP_HEADER_LEN, SEEK_SET);
// 移动文件位置指针。
// If successful, the function returns zero.
// Otherwise, it returns non-zero value.
// SEEK_SET:文件开头;SEEK_CUR:当前位置;SEEK_END:文件结尾fread(pkthdr, PACKET_HEADER_LEN, 1, fp);
fseek(fp, - PACKET_HEADER_LEN, SEEK_CUR);
int tstamp_start    = pkthdr->ts.tv_sec;
int tstamp_offset   = tstamp_start;
int tstamp_now      = tstamp_start;
int cycle           = 5;
cycle = (cycle > 0) ? cycle : 10;
fprintf(fOutput, "分析周期:%d s\n", cycle);//  int i = 0;
while( ftell(fp) > 0 &&  ftell(fp) < fileLen )
{fread(pkthdr, PACKET_HEADER_LEN, 1, fp);pktLen = pkthdr->caplen;tstamp_now = pkthdr->ts.tv_sec;if(tstamp_now - tstamp_offset >= cycle){fprintf(fOutput, "\n\n>>>>> 时间段:%s", long2time(tstamp_offset));fprintf(fOutput, " --> %s\n", long2time(tstamp_offset + cycle));fprintf(fOutput, "----------------------\n");clear_hashTable();parse_flowLink_UDP(fOutput);init_flowLink(FLowLink_UDP);fprintf(fOutput, "----------------------\n");parse_flowLink_TCP(fOutput);init_flowLink(FLowLink_TCP);tstamp_offset = tstamp_now;}//printf("%d\t", pktLen);//printf("\n%d\t", ++i);fread(segEther, ETHER_LEN, 1, fp);if( get_ushort_net(segEther->type) != ETHER_TYPE_IP ){//printf("------\t");fseek(fp, pktLen - ETHER_LEN, SEEK_CUR);continue;}fread(segIP, IP_LEN_MIN, 1, fp);ipLen_real = (segIP->ver_ihl & 0x0f)*4;ipLen_total = get_ushort_net(segIP->tlen);trailerLen = pktLen - ETHER_LEN - ipLen_total;fseek(fp, ipLen_real - IP_LEN_MIN, SEEK_CUR);if( segIP->proto != IP_TCP && segIP->proto != IP_UDP ){//printf("------\t");fseek(fp, ipLen_total - ipLen_real + trailerLen, SEEK_CUR);continue;}Cur5Set->sip = segIP->saddr;Cur5Set->dip = segIP->daddr;Cur5Set->protocol = segIP->proto;//printf("src:%s\t", iptos(Cur5Set->sip));//printf("des:%s\t", iptos(Cur5Set->dip));if(segIP->proto == IP_TCP){//printf("TCP\t");fread(segTCP, TCP_LEN_MIN, 1, fp);tcpLen_real = (((segTCP->th_len)>>4) & 0x0f) * 4;dataLen = ipLen_total - ipLen_real - tcpLen_real;Cur5Set->sport = get_ushort_net(segTCP->th_sport);Cur5Set->dport = get_ushort_net(segTCP->th_dport);fseek(fp, (tcpLen_real - TCP_LEN_MIN) + dataLen + trailerLen, SEEK_CUR);}else if(segIP->proto == IP_UDP){//printf("UDP\t");fread(segUDP, UDP_LEN, 1, fp);dataLen = ipLen_total - ipLen_real - UDP_LEN;Cur5Set->sport = get_ushort_net(segUDP->uh_sport);Cur5Set->dport = get_ushort_net(segUDP->uh_dport);fseek(fp, dataLen + trailerLen, SEEK_CUR);}LinkNode->nln_5set      = *Cur5Set;LinkNode->nln_upl_size  = dataLen;LinkNode->nln_downl_size= 0;LinkNode->nln_upl_pkt   = 1;LinkNode->nln_downl_pkt = 0;LinkNode->nln_status    = ESTABLISHED;LinkNode->next          = NULL;if(segIP->proto == IP_TCP){add_to_hashTable(get_hash(Cur5Set), LinkNode, segTCP->th_flags);}else{add_to_flowLink(FLowLink_UDP, LinkNode);}
}
fprintf(fOutput, "\nover\n");free(pkthdr);
free(segEther);
free(segIP);
free(segTCP);
free(segUDP);
free(Cur5Set);
free(LinkNode);
free(FLowLink_TCP);
free(FLowLink_UDP);
fclose(fOutput);printf("Done!\n");
return 0;

}

/** protocol.h
structs of ethernet, ip, tcp, udp
*/

#define PCAP_HEADER_LEN 24
#define PACKET_HEADER_LEN 16

/* ============= Ethernet ============ */
#define ETHER_LEN 14
#define ETHER_ADDR_LEN 6
#define ETHER_TYPE_LEN 2

#define ETHER_DEST_OFFSET (0 * ETHER_ADDR_LEN)
#define ETHER_SRC_OFFSET (1 * ETHER_ADDR_LEN)
#define ETHER_TYPE_OFFSET (2 * ETHER_ADDR_LEN)

typedef struct _ether_header{
u_char host_dest[ETHER_ADDR_LEN];
u_char host_src[ETHER_ADDR_LEN];
u_short type;
#define ETHER_TYPE_MIN 0x0600
#define ETHER_TYPE_IP 0x0800
#define ETHER_TYPE_ARP 0x0806
#define ETHER_TYPE_8021Q 0x8100
#define ETHER_TYPE_BRCM 0x886c
#define ETHER_TYPE_802_1X 0x888e
#define ETHER_TYPE_802_1X_PREAUTH 0x88c7
}ether_header;

/============== IP ================/
#define IP_LEN_MIN 20

/* IPv4 header */
typedef struct _ip_header{
u_char ver_ihl; // Version (4 bits) + Internet header length (4 bits)
u_char tos; // Type of service
u_short tlen; // Total length
u_short ident; // Identification
u_short flags_fo; // Flags (3 bits) + Fragment offset (13 bits)
u_char ttl; // Time to live
u_char proto; // Protocol
#define IP_ICMP 1
#define IP_IGMP 2
#define IP_TCP 6
#define IP_UDP 17
#define IP_IGRP 88
#define IP_OSPF 89
u_short crc; // Header checksum
u_int saddr; // Source address
u_int daddr; // Destination address
}ip_header;

/=============== TCP ================/
#define TCP_LEN_MIN 20
typedef struct _tcp_header
{
u_short th_sport; // source port
u_short th_dport; // destination port
u_int th_seq; // sequence number field
u_int th_ack; // acknowledgement number field
u_char th_len:4; // header length
u_char th_x2:4; // unused
u_char th_flags;
#define TH_FIN 0x01
#define TH_SYN 0x02
#define TH_RST 0x04
#define TH_PSH 0x08
#define TH_ACK 0x10
#define TH_URG 0x20
u_short th_win; /* window /
u_short th_sum; /
checksum /
u_short th_urp; /
urgent pointer /
}tcp_header; //
/

/================ UDP ==================/
#define UDP_LEN 8
typedef struct _udp_header{
u_short uh_sport; // Source port
u_short uh_dport; // Destination port
u_short uh_len; // Datagram length
u_short uh_sum; // Checksum
}udp_header;

结果截图

程序会先抓包,存在traffic.data文件中,也可以自定义,建议不要动,容易出错,然后对包的内容进行分析,输出结果到result.data中,这个建议自定义文件目录,方便查看。抓取时长和分析周期可以自定义。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 机器学习 · 总览篇 X 可学习性 & VC理论

    VC 理论中 VC维 和 VC界 作为机器学习可学习性的最重要的理论基础,对于机器学习方法的研究和使用具有十分重要的指导意义。比如对于一个任务,我准备使用的机器学习方法是否合理、数据量至少需要多少,这些问题如何在进行实验之前就能被解答?答案就在本文中。文章首发于我的博…...

    2024/4/17 20:59:38
  2. 对AI行业未来发展的一些看法

    对AI行业未来发展的一些看法技术在最初期都是"智障"的,可是拉马车的马是不会觉得有汽车存在的必要的。这一次AI兴起的浪潮,来源于算力的提升,把过去深度学习所欠缺的大算力问题弥补上了,得到了一次质变的飞跃,但从深度学习核心算法角度来看,并非具备划时代的改…...

    2024/4/16 4:27:52
  3. springAOP --3 应用场景

    日志管理权限认证安全检查事务控制 xml文件:pom<groupId>com.mashibing</groupId> <artifactId>spring_aop_study</artifactId> <version>1.0-SNAPSHOT</version><dependencies><!-- https://mvnrepository.com/artifact/junit/…...

    2024/4/16 4:27:06
  4. 机器人技术的未来之ROS2-译

    作者:Bernadette Wilson机器人已成为各类应用中的重要工具,从海洋和太空探索到日常家务(如地板吸尘机器人)。随着制造商继续意识到机器人可以提供更多优势,并且对机器人致力于帮助和服务人类而不是替代人类的想法感到满意,机器人正在越来越多地执行以下任务:精密加工部件…...

    2024/4/19 15:55:55
  5. Payoneer派安盈外贸e户通视频介绍及常见问题解答!

    之前我们有一篇文章:Payoneer推出外贸e户通,5种外贸收款方式,提现仅0.5%!给大家详细介绍了一种新的外贸收款方式派安盈外贸e户通。外贸卖家只需注册一个Payoneer账户,开通外贸e户通账户,便可轻松接收国外客户的采购款,不仅能规避退单、拒付或者延误等风险,还能快速提现…...

    2024/4/16 4:26:31
  6. 线程安全的无锁方案——CAS

    什么是 CAS? CAS,Compare And Swap,即比较并交换。Doug lea 大神在同步组件中大量使用 CAS 技术鬼斧神工地实现了 Java 多线程的并发操作。整个 AQS 同步组件、Atomic 原子类操作等等都是以 CAS 实现的。 算法核心思想如下: 执行函数:CAS(V,E,N)其包含 3 个参数:V 表示要…...

    2024/4/28 19:18:18
  7. 深度分析:Redis 的数据结构及其使用场景分析,原来这么简单?

    Redis基础数据结构有哪些?一、String(字符串)在任何一种编程语言里,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛?在Redis中String是可以修改的,称为动态字符串(Simple Dynamic String简称SDS)(快拿小本本记名词,要考的),…...

    2024/4/16 4:25:45
  8. 失落城堡修改器 Steam+Wegame正版 适度修改,快乐游戏 2020.07

    传送门:https://pan.baidu.com/s/1NjEOdm_T8AlHrjtdgxFQLw 测试视频:https://www.bilibili.com/video/BV184411Y7b5 特别说明:wegame平台win7系统不能用,其余情况都能用。...

    2024/4/17 10:37:11
  9. Linux网络服务——DNS域名解析(正、反解析,主从复制,分解解析)

    文章目录前言DNS系统的作用DNS系统的类型BIND的安装文件实验正向解析 邮件交换记录、别名解析、泛域名解析反向解析实验主从复制实验分离解析实验实验总结 前言域名系统(服务)协议(DNS)是一种分布式网络目录服务,主要用于域名与 IP 地址的相互转换,以及控制因特网的电子…...

    2024/4/18 14:35:35
  10. docker学习一——docker简介

    为什么使用docker docker是一种虚拟化技术,跟传统的虚拟机相比有很大的优势,不用占用太大的内存消耗,充分利用宿主机内存,启动时间以倍数比例减少,以及在持续集成方面都会展现出很大的优势。 传统的虚拟机技术:需要首先进行硬件虚拟,再进行软件虚拟,这样会特别占用宿主…...

    2024/4/16 4:27:47
  11. Oracle查询

    NVL()查询员工的编号,姓名,入职时间,月薪,年薪,年收入(年薪+奖金)select empno "编号",ename "姓名",hiredate "入职时间",sal "月薪",sal*12 "年薪",sal*12+comm "年收入" from emp; 如果结果为null,在sq…...

    2024/4/18 19:15:54
  12. solr4.10.3整合tomcat7.0.96浏览器出现msg=SolrCore ‘collection1‘ is not available due to init failure

    solr4.10.3整合tomcat7.0.96出现HTTP Status 500 - {msg=SolrCore ‘collection1’ is not available due to init failure: Could not load} 报错信息 HTTP Status 500 – Internal Server Error Type Status Report Message {msg=SolrCore ‘collection1’ is not available …...

    2024/4/16 4:27:32
  13. 配置apt-get源

    cp /etc/apt/sources.list /etc/apt/sources.listbak #备份原有配置文件 nano /etc/apt/sources.list #编辑 deb http://mirrors.cloud.aliyuncs.com/debian stable main contrib non-free deb http://mirrors.cloud.aliyuncs.com/debian stable-proposed-updates main …...

    2024/4/19 11:04:29
  14. 记录我的第一次线上CPU99%的经历

    言简意赅:AM:10:00上线,正常;AM:11:20,吃饭食堂里碰到运维人员说上线后现在CPU99%,需要查问题。饭完,上楼,查BUG。第一步:top看下哪个PID这么调皮跑这么快(这个截图是其中一台服务器,最高的一台飙到700%+):然后:top -H -p 115798 查看具体(当时没有截图,忘了…...

    2024/4/16 12:49:44
  15. 【Python】 第3章-1 3-1.大于身高的平均值 (10分)

    中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一…...

    2024/4/16 4:27:22
  16. 【1002】输出第二个整数

    【1002】输出第二个整数 时间限制: 1000 ms    内存限制: 65536 KB 【题目描述】输入三个整数,整数之间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。【输入】只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。【输出】只有…...

    2024/4/16 4:27:37
  17. 西加加:继承和派生练习1

    代码实现: #include <iostream> #include <string> using namespace std;class Person {string Num;string Name;char Sex;string Addr;string Tel;string Email;public:Person(string num, string name, char sex, string addr, string tel, string email){Num =…...

    2024/4/16 4:27:52
  18. 星河区块链7月9日 比特币高位震荡,后续会不断攀升?

    { 前言 } 昨日整个大盘在瑞波领先的拉盘下,都随之攀升至上,而在晚间整体走势开始出现回撤迹象,从整个行情图上看,回撤力度明显不是很充足,空头乏力至极。而现在则保持在高位震荡之中,可以说行情正在处于蓄力状态,准备着下一轮走势的力度。消息面市场上,大批资金量不断涌…...

    2024/3/28 18:25:50
  19. 西加加:7-1 动物世界

    补充程序 :1、实现Mammal类的方法2、由Mammal类派生出Dog类,在Dog类中增加itsColor成员(COLOR类型)3、Dog类中增加以下方法:constructors: Dog()、Dog(int age)、Dog(int age, int weight)、Dog(int age, COLOR color)、 Dog(int age, int weight, COLOR color)、~Dog()acce…...

    2024/4/16 4:27:22
  20. 面向对象编程思想二

    类创建好了,如何使用呢? 代码展示 package cn.ly.combinecode; /* * 通常情况下,一个类并不能直接使用, * 需要根据类创建一个对象,才能使用 * 1.导包 也就是指出需要使用的类,在什么位置。 * import 包名称 类名称; * 对于和当前类属于同一个包的情况,可以省略导包语句…...

    2024/4/24 16:26:30

最新文章

  1. 26版SPSS操作教程(高级教程第十九章)

    目录 前言 粉丝及官方意见说明 第十九章一些学习笔记 第十九章一些操作方法 树模型、随机森林与最近邻元素法 树模型 数据准备 具体操作 结果解释 对案例的进一步分析 结果解释 考虑应用模型时的成本与收益 保存新数据 在选项中看错误分类成本和利润 结果解释…...

    2024/5/9 8:24:21
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. [C++][算法基础]模拟队列(数组)

    实现一个队列&#xff0c;队列初始为空&#xff0c;支持四种操作&#xff1a; push x – 向队尾插入一个数 x&#xff1b;pop – 从队头弹出一个数&#xff1b;empty – 判断队列是否为空&#xff1b;query – 查询队头元素。 现在要对队列进行 M 个操作&#xff0c;其中的每…...

    2024/5/5 0:14:29
  4. Redis分区

    Redis分区是一种数据分片技术&#xff0c;用于将数据分布到多个Redis实例&#xff08;节点&#xff09;上以提高性能和扩展性。分区使得Redis能够处理比单个实例更大的数据集&#xff0c;并允许并行处理客户端请求。 原理&#xff1a; Redis分区通过一致性哈希算法&#xff08;…...

    2024/5/5 1:23:35
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/9 7:32:17
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57