原始套接字捕获数据包 10C

#include "stdafx.h"
#include "pcap.h"
#include"remote-ext.h"

typedef struct ip_address {
u_char byte1;
u_char byte2;
u_char byte3;
u_char byte4;
}ip_address;

typedef struct ip_header {
u_char ver_ihl;
u_char tos;
u_short tlen;
u_short identification;
u_short flags_fo;
u_char ttl;
u_char proto;
u_short crc;
ip_address saddr;
ip_address daddr;
u_int op_pad;
}ip_header;

typedef struct udp_header {
u_short sport;
u_short dport;
u_short len;
u_short crc;
}udp_header;

/* packet handler 函数原型 */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
struct tm *ltime;
char timestr[16];
ip_header *ih;
udp_header *uh;
u_int ip_len;
u_short sport, dport;
time_t local_tv_sec;

local_tv_sec = header->ts.tv_sec;
ltime = localtime(&local_tv_sec);
strftime(timestr, sizeof timestr, "H:%M:%S", ltime);
printf("%s.%.6d len:%d", timestr, header->ts.tv_usec, header->len);
ih = (ip_header *)(pkt_data + 14);
ip_len = (ih->ver_ihl & 0xf) * 4;
uh = (udp_header *)((u_char*)ih + ip_len);
sport = ntohs(uh->sport);
dport = ntohs(uh->dport);
printf("%d.%d.%d.%d.%d -> %d.%d.%d.%d.%d\n",
    ih->saddr.byte1,
    ih->saddr.byte2,
    ih->saddr.byte3,
    ih->saddr.byte4,
    sport,
    ih->daddr.byte1,
    ih->daddr.byte2,
    ih->daddr.byte3,
    ih->daddr.byte4,
    dport);

}

int _tmain(int argc, _TCHAR* argv[])
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i = 0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
u_int netmask;
char packet_filter[] = "ip and udp";
struct bpf_program fcode;

/* 获取本机设备列表 */
if (pcap_findalldevs_ex((char *)PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
{
    fprintf(stderr, "Error in pcap_findalldevs: %s\n", errbuf);
    exit(1);
}

/* 打印列表 */
for (d = alldevs; d; d = d->next)
{
    printf("%d. %s", ++i, d->name);
    if (d->description)
        printf(" (%s)\n", d->description);
    else
        printf(" (No description available)\n");
}

if (i == 0)
{
    printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
    return -1;
}

printf("Enter the interface number (1-%d):", i);
scanf("%d", &inum);

if (inum < 1 || inum > i)
{
    printf("\nInterface number out of range.\n");
    /* 释放设备列表 */
    pcap_freealldevs(alldevs);
    return -1;
}

/* 跳转到选中的适配器 */
for (d = alldevs, i = 0; i< inum - 1; d = d->next, i++);

/* 打开设备 */
if ((adhandle = pcap_open(d->name,          // 设备名
    65536,            // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
    PCAP_OPENFLAG_PROMISCUOUS,    // 混杂模式
    1000,             // 读取超时时间
    NULL,             // 远程机器验证
    errbuf            // 错误缓冲池
)) == NULL)
{
    fprintf(stderr, "\nUnable to open the adapter. %s is not supported by WinPcap\n");
    /* 释放设备列表 */
    pcap_freealldevs(alldevs);
    return -1;
}

if (pcap_datalink(adhandle) != DLT_EN10MB)
{
    fprintf(stderr, "\nThis program works only on Ethernet network.\n");
    pcap_freealldevs(alldevs);
    return -1;
}
if (d->addresses != NULL)
    netmask = ((struct sockaddr_in *)(d->addresses->netmask))->sin_addr.S_un.S_addr;
else
    netmask = 0xffffff;

if (pcap_compile(adhandle, &fcode, packet_filter, 1, netmask) < 0)
{
    fprintf(stderr, "\nUnable to compile the packet filter.Check the syntax.\n");
    pcap_freealldevs(alldevs);
    return -1;
}

if (pcap_setfilter(adhandle, &fcode) < 0)
{
    fprintf(stderr, "\nError setting the filter.\n");
    pcap_freealldevs(alldevs);
    return -1;
}
printf("\nlistening on %s...\n", d->description);

/* 释放设备列表 */
pcap_freealldevs(alldevs);

/* 开始捕获 */
pcap_loop(adhandle, 0, packet_handler, NULL);

return 0;

}


调用winpcap实现捕获数据包 (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) 就出现错误转到remote-ext.h定义是这样求解决方案!

如果不用winpcap如何实现原始套接字捕获ip数据包。我在网上找到不少代码,已经基本看懂了原理,编译都没问题但是执行时接收不到任何数据。请大佬帮忙给一份可执行的代码,我的编译环境是vs2017,这周就得交作业了,希望最好能有注释。谢谢

2个回答

localtime scanf那些换成 _s 后缀的。
pcap_findalldevs_ex 那个函数的调用,参数前面加上 (char *) 强制转换下
还有一个错误,但是你的图美看到。

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复z17805008775: 这是编译器参数,你重新创建一个项目,然后代码拷贝过来。
大约 2 年之前 回复
z17805008775
光帅帅 请问一下这个怎么改 : 错误 MSB4030 “否(/sdl-)”对于“CL”任务的“SDLCheck”参数是无效值。“SDLCheck”参数的类型为“System.Boolean”
大约 2 年之前 回复
z17805008775
光帅帅 改过后还是跑不起来
大约 2 年之前 回复

你这个现在不是能编译过,明明提示有两个错误,你截图里面只能看见一个,很明显pcap_findalldevs_ex的第一个按上参数类型没对上,转换一下,把另外一个错误也放上来,不然无法继续判断

z17805008775
光帅帅 请问一下这个怎么解决: 错误 MSB4030 “否(/sdl-)”对于“CL”任务的“SDLCheck”参数是无效值。“SDLCheck”参数的类型为“System.Boolean”。
大约 2 年之前 回复
z17805008775
光帅帅 谢谢,我把程序粘上去了
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
原始套接字捕获的包如何提取出数据

代码如下: #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> #include<net/if.h> #include "arpa/inet.h" #include "linux/sockios.h" #include<sys/ioctl.h> struct ip{ unsigned int ip_length:4; unsigned int ip_version:4; unsigned char ip_tos; unsigned short ip_total_length; unsigned short ip_id; unsigned short ip_flags; unsigned char ip_ttl; unsigned char ip_protocol; unsigned short ip_cksum; unsigned int ip_source; }; struct tcp{ unsigned short tcp_source_port; unsigned short tcp_dest_port; unsigned short tcp_seqno; unsigned int tcp_ackno; unsigned int tcp_res1:4, tcp_hlen:4, tcp_fin:1, tcp_syn:1, tcp_rst:1, tcp_psh:1, tcp_ack:1, tcp_urg:1, tcp_res2:2; unsigned short tcp_winsize; unsigned short tcp_cksum; unsigned short tcp_urgent; }; #define INTERFACE "eth0" int Set_Promisc(char *interface, int sock); int main() { int sock,bytes_recieved,fromlen; char buffer[65535]; struct sockaddr_in from; struct ip *ip; struct tcp *tcp; sock=Open_Raw_Socket();//socket(AF_INET,SOCK_RAW,IPPROTO_TCP); //Set_Promisc(INTERFACE, sock); while(1) { fromlen=sizeof(from); bytes_recieved=recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen); ip=(struct ip *)buffer; printf("\nApplications++++++++++++++++++++++++++++++++++++++\n"); printf("Data received ::: %s\n",buffer); printf("Transportation++++++++++++++++++++++++++++++++++++\n"); tcp=(struct tcp *)(buffer + (4*ip->ip_length)); printf("Source port ::: %d\n",ntohs(tcp->tcp_source_port)); printf("Dest prot ::: %d\n",ntohs(tcp->tcp_dest_port)); printf("Network+++++++++++++++++++++++++++++++++++++++++++\n"); printf("source address ::: %s\n",inet_ntoa(from.sin_addr)); }} int Open_Raw_Socket(){ int sock; if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){// perror("The raw socket was not created"); exit(0); }; return(sock); } 为什么我输出的buffer只有一个E?如果获取的是整个数据包的话怎么提取出数据部分,也就是发送的明文?

用原始套接字发送TCP数据包,显示发送成功但是接收不到,求教

我需要自己构建IP数据包,在IP选项部分添加一些数据,因此用原始套接字发送TCP数据包,但是发送成功了,另一台主机接收不到,用的2003系统,不知道哪位好心人能帮助下,万分感激,谢谢

原始套接字捕获的包如何提取出数据部分?

代码如下: ``` #include<stdio.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<stdlib.h> #include<string.h> #include<net/if.h> #include "arpa/inet.h" #include "linux/sockios.h" #include<sys/ioctl.h> struct ip{ unsigned int ip_length:4; unsigned int ip_version:4; unsigned char ip_tos; unsigned short ip_total_length; unsigned short ip_id; unsigned short ip_flags; unsigned char ip_ttl; unsigned char ip_protocol; unsigned short ip_cksum; unsigned int ip_source; }; struct tcp{ unsigned short tcp_source_port; unsigned short tcp_dest_port; unsigned short tcp_seqno; unsigned int tcp_ackno; unsigned int tcp_res1:4, tcp_hlen:4, tcp_fin:1, tcp_syn:1, tcp_rst:1, tcp_psh:1, tcp_ack:1, tcp_urg:1, tcp_res2:2; unsigned short tcp_winsize; unsigned short tcp_cksum; unsigned short tcp_urgent; }; #define INTERFACE "eth0" int Set_Promisc(char *interface, int sock); int main() { int sock,bytes_recieved,fromlen; char buffer[65535]; struct sockaddr_in from; struct ip *ip; struct tcp *tcp; sock=Open_Raw_Socket();//socket(AF_INET,SOCK_RAW,IPPROTO_TCP); //Set_Promisc(INTERFACE, sock); while(1) { fromlen=sizeof(from); bytes_recieved=recvfrom(sock,buffer,sizeof(buffer),0,(struct sockaddr*)&from,&fromlen); ip=(struct ip *)buffer; printf("\nApplications++++++++++++++++++++++++++++++++++++++\n"); printf("Data received ::: %s\n",buffer); printf("Transportation++++++++++++++++++++++++++++++++++++\n"); tcp=(struct tcp *)(buffer + (4*ip->ip_length)); printf("Source port ::: %d\n",ntohs(tcp->tcp_source_port)); printf("Dest prot ::: %d\n",ntohs(tcp->tcp_dest_port)); printf("Network+++++++++++++++++++++++++++++++++++++++++++\n"); printf("source address ::: %s\n",inet_ntoa(from.sin_addr)); }} int Open_Raw_Socket(){ int sock; if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP))<0){// perror("The raw socket was not created"); exit(0); }; return(sock); } ``` 为什么我输出的buffer只有一个E?如果获取的是整个数据包的话怎么提取出数据部分,也就是发送的明文?

Linux 原始套接字发包问题

用原始套接字 实现了 抓包 协议分析。举个例子现在想通过判断TCP 的数据部分 判断是否含有Host: www.baidu.com之类的 然后返回一个302重定向包 将其请求重定向到另外的一个URL上。但是 发送的包发送不出去 wireshark捕获到 很郁闷。![图片说明](https://img-ask.csdn.net/upload/201501/21/1421819462_425698.png)

VC++ 用原始套接字编程,怎样抓取网页响应数据?

在网上找了很多方法,都是只能抓取发出的请求数据,没有响应数据 recv(sock, recvInf, sizeof(recvInf), 0);//接收包 windows环境下,VS2015

网络数据包捕获与分析

用java 的Jpcap开源库捕获数据包。 通过编程实现抓取通过一个网卡的所有数据包,并把这些数据包存入数据库

基于WinPcap,编写一个简单的数据包捕获程序

* 功能要求: 1) 要求提供图形界面(类似Wireshark),可以捕获网络数据包;提供包过滤功能,可以输入过滤表达式;可以指定时段抓包;显示指定数据包的内容; 2) 提供网络数据包统计功能;提供输入IP地址,向指定IP地址发送数据包 3) 提供数据转储功能,将捕获到的数据包存储到磁盘文件,并可以读取转储的文件 4) 界面美观、大方

将自定义层添加到捕获的数据包失败

<div class="post-text" itemprop="text"> <p>I am trying to implement my own decoding layer ontop of TCP, so far it only works when I create a packet without any Eth/IP/TCP header and set its layer to my custom layer manually. The data of the custom protocol is inside an ordinary TCP payload.</p> <p>How do I decode only the payload of the TCP layer as another layer?</p> <pre><code>package main import ( "fmt" "github.com/google/gopacket" "github.com/google/gopacket/pcap" ) var ( pcapFile string = "capt.pcap" handle *pcap.Handle err error ) type CustomLayer struct { SomeByte byte AnotherByte byte restOfData []byte } var CustomLayerType = gopacket.RegisterLayerType( 2001, gopacket.LayerTypeMetadata{ "CustomLayerType", gopacket.DecodeFunc(decodeCustomLayer), }, ) func (l CustomLayer) LayerType() gopacket.LayerType { return CustomLayerType } func (l CustomLayer) LayerContents() []byte { return []byte{l.SomeByte, l.AnotherByte} } func (l CustomLayer) LayerPayload() []byte { return l.restOfData } func decodeCustomLayer(data []byte, p gopacket.PacketBuilder) error { p.AddLayer(&amp;CustomLayer{data[0], data[1], data[2:]}) // nil means this is the last layer. No more decoding return nil } func main() { handle, err = pcap.OpenOffline(pcapFile) if err != nil { log.Fatal(err) } defer handle.Close() packetSource := gopacket.NewPacketSource(handle, handle.LinkType()) for packet := range packetSource.Packets() { tcpLayer := packet.Layer(layers.LayerTypeTCP) if tcpLayer != nil { fmt.Println("TCP layer detected.") tcp, _ := tcpLayer.(*layers.TCP) fmt.Println("Sequence number: ", tcp.Seq) customLayer := packet.Layer(CustomLayerType) if customLayer != nil { // always nil customLayerContent, _ := customLayer.(*CustomLayer) // Now we can access the elements of the custom struct fmt.Println("Payload: ", customLayerContent.LayerPayload()) fmt.Println("SomeByte element:", customLayerContent.SomeByte) fmt.Println("AnotherByte element:", customLayerContent.AnotherByte) } } fmt.Println() } } </code></pre> <p>Most of the code is from <a href="https://www.devdungeon.com/content/packet-capture-injection-and-analysis-gopacket#custom-layers" rel="nofollow noreferrer">this great post by devdungeon</a>.</p> </div>

怎么用C语言读取WireShark捕获的数据包文件

怎么用C语言读取WireShark捕获的数据包文件,要求能分析出以太网头部,Ip头部,TCP头部,并提取出数据部分,下面是我写的一段代码,但是读的不对,希望高手指点 //.pcap文件 //#ifndef xiaohouzi //#define xiaohouzi #ifndef LITTLE_ENDIAN #define LITTLE_ENDIAN (1) #include<Winsock2.h> typedef unsigned int bpf_u_int32; typedef unsigned short u_short; typedef int bpf_int32; typedef unsigned char u_int8_t; ////////////////////////////// typedef char int8_t; ////////////////////////////// typedef unsigned short int u_int16_t; typedef unsigned int u_int32_t; typedef struct pcap_file_header { bpf_u_int32 magic; u_short version_major; u_short version_minor; bpf_int32 thiszone; bpf_u_int32 sigfigs; bpf_u_int32 snaplen; bpf_u_int32 linktype; }pcap_file_header; typedef struct timestamp { bpf_u_int32 timestamp_s; bpf_u_int32 timestamp_ms; }timestamp; typedef struct pcap_header { timestamp ts; bpf_u_int32 capture_len; bpf_u_int32 len; }pcap_header; typedef struct ether_header { u_int8_t ether_dhost[6]; //destination mac address u_int8_t ether_shost[6]; //source mac address u_int16_t ether_type; //ethernet type }ether_header; typedef u_int32_t in_addr_t; // struct in_addr //{ // in_addr_t s_addr; //}; //total length : 20Bytes typedef struct ip_hdr { #if LITTLE_ENDIAN u_int8_t ihl:4; // u_int8_t version:4; //version #else u_int8_t version:4; u_int8_t ihr:4; #endif u_int8_t tos; //service type u_int16_t tos_len; //total len u_int16_t id; // u_int16_t frag_off; //offset u_int8_t ttl; //live time u_int8_t protocol; // u_int16_t chk_sum; //check sum struct in_addr src_IP; //source ip struct in_addr dst_IP; //destnation ip }ip_hdr; //total length : 20Bytes typedef struct tcp_hdr { u_int16_t src_port; //source port u_int16_t dst_port; //destination port u_int8_t seq_no[4]; u_int8_t ack_no[4]; //u_int32_t seq_no; // //u_int32_t ack_no; // /*struct in_addr seq_no; struct in_addr ack_no; */ //u_int8_t reserved_1:4; //u_int8_t th1:4; //tcp header length //u_int8_t flag:6; //u_int8_t reserverd_2:2; u_int8_t length;//长度 u_int8_t type;//ACK。FIN…… u_int8_t wnd_size[2]; //16 bit windows u_int16_t chk_sum; //16 bits check sum ack,syn...... u_int16_t urgt_p; //16 urgent p }tcp_hdr; //total length :8 Bytes //#endif #endif //.cpp文件 #include"pcap.h" #include <windows.h> #include<winsock.h> #include<string.h> #include<stdio.h> #include<stdlib.h> //#include "C:\Users\Administrator\Desktop\zlib\zlib\src\zlib-1.2.3-src\src\zlib\1.2.3\zlib-1.2.3\zlib.h" //#pragma comment(lib, "zlib1.lib") #pragma comment(lib,"ws2_32.lib") int count=0; void main(/*int argc,char *argv[]*/) { pcap_header *ph=(pcap_header*)malloc(sizeof(pcap_header)); ether_header*eh=(ether_header*)malloc(sizeof(ether_header)); ip_hdr * iph=(ip_hdr*)malloc(sizeof(ip_hdr)); tcp_hdr *tcph=(tcp_hdr*)malloc(sizeof(tcp_hdr)); if(ph==NULL||eh==NULL||iph==NULL||tcph==NULL) { printf("内存分配失败\n"); return ; } /*打开文件*/ FILE *pfile=fopen(/*filename*/"1.pcap","rb"); if(pfile==NULL) { printf("open file failed!\n"); return ; } fseek(pfile,0,SEEK_SET);//将文件指针置于头部 /*跳过文件头*/ if( fseek(pfile,24,SEEK_SET)!=0) { printf("文件头跳过失败!\n"); exit(0); return; } /*读取每个数据包进行分析*/ while(!feof(pfile)) { ZeroMemory(ph,sizeof(pcap_header)); ZeroMemory(eh,sizeof(*eh)); ZeroMemory(iph,sizeof(*iph)); ZeroMemory(tcph,sizeof(*tcph)); count++;//读取的数据包计数 /*读取包头*/ if(!fread(ph,sizeof(pcap_header),1,pfile)) { printf("读取数据包头失败\n"); break; } printf("数据包%d的长度是%d,数据包读取的时间是%f\n",count,ph->capture_len ,ph->ts .timestamp_ms *0.001+ph->ts .timestamp_s ); /*读取以太网头*/ if(!feof(pfile)) { if(!fread(eh,sizeof(*eh),1,pfile)/*||eh->ether_type !=0x0800*/) { printf("读取以太网头部失败\n"); break; } } printf("源MAC地址是:0x%2x:0x%2x:0x%2x:0x%2x:0x%2x:0x%2x\n",eh->ether_shost[0],eh->ether_shost [1],eh->ether_shost [2],eh->ether_shost [3],eh->ether_shost [4],eh->ether_shost [5] ); printf("目的MAC地址是:0x%2x:0x%2x:0x%2x:0x%2x:0x%2x:0x%2x\n",eh->ether_dhost [0],eh->ether_dhost [1],eh->ether_dhost [2],eh->ether_dhost [3],eh->ether_dhost [4],eh->ether_dhost [5]); /*读取IP头*/ if(!feof(pfile)) { if(!fread(iph,sizeof(*iph),1,pfile)/*||iph->protocol !=6*/) { printf("读取IP头失败\n"); break; } } printf("源IP地址:%s\n",inet_ntoa(iph->src_IP)); printf("目的IP地址:%s\n",inet_ntoa(iph->dst_IP )); /*读取TCP头*/ if(!feof(pfile)) { if(!fread(tcph,sizeof(*tcph),1,pfile)) { printf("读取tcp头失败\n"); break; } } printf("源端口:%d\n",tcph->src_port ); printf("目的端口:%d\n",tcph->dst_port ); if(ph->capture_len -54==0)//没有数据部分 { continue; } else//存在数据部分,读取数据 { unsigned char *buf=(unsigned char*)malloc(ph->capture_len -54); if(buf==NULL) { printf("分配数据区域失败!\n"); break; } if(!feof(pfile)) { if(!fread(buf,sizeof(unsigned char),ph->capture_len -54,pfile)) { printf("读取数据失败\n"); break; } } } }//end while /*释放资源*/ free(ph); free(eh); free(iph); free(tcph); fclose(pfile); }

Jpcap编程获取网络IP数据包

在ubuntu下用java基于jpcap写了一个获取网络数据IP数据包的程序,但是在eclipse中运行的时候报错如下: java.io.IOException: wlp4s0: You don't have permission to capture on that device (socket: 不允许的操作) at jpcap.JpcapCaptor.openDevice(Unknown Source) at DispalyNetPacket.main(DispalyNetPacket.java:19) 启动失败: java.io.IOException: wlp4s0: You don't have permission to capture on that device (socket: 不允许的操作) 求大神解释啊啊

请问pcap捕获的是什么数据包?

比如我打开以太网的网卡,那么是否最后捕获到的就是以太网数据帧? 如果设置过滤规则只接收ip包的话,捕获的到底是以太网帧还是IP包? 捕获的数据内容是不是存在packet[]里啊? 设置过滤规则前后捕获的内容有没有变化呢? 在学习pcap抓包,希望知道的能解答一下,谢谢!

网络数据包捕获 负载均衡

我需要对交换机镜像端口的数据包做捕获并分析。由于流量达到千兆,单进程或单线程的性能都达不到,所以在捕获和分析之间做了分流,分成多个流然后递交给相应的分析程序。但是现在的分流是根据五元组来的,就会出现极端情况某一个流的流量很大,大到在1分钟内占了90%,这样又会造成相应的分析进程处理不过来。各位大佬,有没有好的分流方式或者其它处理方式。

无法捕获PHP套接字连接:: 504网关超时的响应

<div class="post-text" itemprop="text"> <p>I am using the following php code to connect and send a request to a remote server through php sockets connection.</p> <pre><code>&lt;?php $host = "X.X.X.X"; $port = 1234; $message = "&lt;request&gt;test&lt;/request&gt;"; echo "Message To server :".$message; // create socket $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket "); // connect to server $result = socket_connect($socket, $host, $port) or die("Could not connect to server "); // send string to server socket_write($socket, $message, strlen($message)) or die("Could not send data to server "); // get server response stream_set_timeout($socket, 10); $result = socket_read ($socket, 1024) or die("Could not read server response "); //echo "Reply From Server :".$result; $info = stream_get_meta_data($socket); if (isset($info['timed_out']) &amp;&amp; $info['timed_out']) { echo 'Connection timed out!'; } else { var_dump($result); } // close socket socket_close($socket); ?&gt; </code></pre> <p>As confirmed, the remote machine is receiving our request and sending appropriate response to us over the same session. But unfortunately, I am getting the following response when the script is executed -</p> <blockquote> <p><em>504 Gateway Time-out. The server didn't respond in time.</em></p> </blockquote> <p>When tried from Putty (same server from where the code was executed), I am getting the response almost instantly (in less than a second).</p> <p>There is no firewall running that would block the responses. All VPN traffic passes through the tunnel without any blocks as seen in telnet request and response.</p> <p>Now I am unable to figure out the exact reason of not getting the response through this php script. I had gone through many tutorials and sample codes but found no luck. :(</p> <p><strong>Members, please help.</strong></p> </div>

为什么使用邮件客户端发送邮件,不能抓到4次断开TCP连接数据包

计算机网络初学小白遇到的问题! 我使用Outlook2019客户端添加了网易的邮箱账号,获知发送邮件端口号是25,因此在WireShark里抓包时设置过滤条件为tcp.port == 25,从抓到的数据包来看有TCP建立连接的三次握手以及邮件传输,但当邮件发送完毕后却没有如书上所说有四次握手,而是三次,为什么会这样呢? ![WireShark截图页面](https://img-ask.csdn.net/upload/201912/22/1576986293_940155.png) ![四次挥手](https://img-ask.csdn.net/upload/201912/22/1576986306_739369.png) 补充: Foxmail的抓包结果,只有书上对应的第3、4次握手 ![图片说明](https://img-ask.csdn.net/upload/201912/22/1576986995_778077.png) 哭了

java如何实现 获取固定IP 发来的所有数据包(端口号未知)

我想实现获取某个固定IP发来的所有的数据包,不管是那个端口发来的都要能得到,java编程如何实现?谢谢!!!!! 问题补充:我主要是不知道怎么写监听端的程序,那个IP的数据发往我的电脑的端口是未知的,小弟高分献上!!!!

Tcpdump属于旁路监听模式吗

Tcpdump可以捕获流经网卡的数据包,这种复制网卡中数据包的方式影响网络性能吗?属于旁路监听模式吗??懂的人回答,希望说的详细点,什么是旁路监听,Tcpdump为什么属于或为什么不属于旁路监听。。

PYTHON网络编程遇到的问题

我在用PYTHON编写一个嗅探脚本时候出现的一个小问题,贴上原代码 import socket import os #监听的主机 host = "127.0.0.1" #创建原始套接字,然后绑定在公开接口上 if os.name == "nt": socket_protocol = socket.IPPROTO_IP else: scoket_protocol = socket.IPPROTO_ICMP sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) sniffer.bind((host,0)) #设置在捕获的数据包中包含IP头 sniffer.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) #在windows上,我们设置IOCTL以启用混杂模式 if os.name == "nt": sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) #读取单个数据包 print sniffer.recvfrom(65565) #在windows平台上关闭混杂模式 if os.name == "nt": sniffer.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) 运行时候提示: File "e:\python\sniffer.py", line 14, in sniffer = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol) File "F:\python\Lib\socket.py", line 191, in init _sock = _realsocket(family, type, proto) socket.error: [Errno 10013] 我百度到的说是端口被占用的问题,可是我找不到我的python服务所占用的端口号,特来求助,这个错误应该怎么解决,多谢

抓取迅雷下载的数据包特征

通过抓取迅雷下载时的数据包分析出流量和五元组。可是迅雷的数据包据说是加密的,不能通过数据包特征判断,那么请问还有什么办法找出那些数据包是属于迅雷的。只要找出迅雷的数据包计算流量就行,不是禁用迅雷下载。本人新手,谢谢各位大神赐教啊!

怎么去分析抓下来的数据包

我用wireshark打开我抓下来的数据包格式是cap,但不会分析,希望哪位大神可以帮我指点一下怎么去分析数据包

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大胆预测下未来5年的Web开发

在2019年的ReactiveConf 上,《Elm in Action》的作者Richard Feldman对未来5年Web开发的发展做了预测,很有意思,分享给大家。如果你有机会从头...

立即提问
相关内容推荐