zoukankan      html  css  js  c++  java
  • 79.cgi硬盘查询个人信息

    运行截图:

    • 把cgi编码转为char*类型
       1 //把cgi编码转为char*类型
       2 char* change(char *str)
       3 {
       4     //分配内存
       5     char *tempstr = malloc(strlen(str) + 1);
       6 
       7     //x是tempstr的下标,y是str的下标
       8     int x = 0, y = 0;
       9     char assii_1, assii_2;
      10     while (str[y])
      11     {
      12         if ((tempstr[x] = str[y]) == '%')
      13         {
      14             //获取第一个字符
      15             if (str[y + 1] >= 'A')
      16             {
      17                 assii_1 = str[y + 1] - 55;
      18 
      19             }
      20             else
      21             {
      22                 assii_1 = str[y + 1] - 48;
      23             }
      24             //获取第二个字符
      25             if (str[y + 2] >= 'A')
      26             {
      27                 assii_2 = str[y + 2] - 55;
      28             }
      29             else
      30             {
      31                 assii_2 = str[y + 2] - 48;
      32             }
      33             tempstr[x] = assii_1 * 16 + assii_2;
      34 
      35             y += 2;
      36 
      37         }
      38         x++;
      39         y++;
      40     }
      41     //最后一位置零
      42     tempstr[x] = '';
      43     return tempstr;
      44 }
    • 查询
       1 //查询
       2 void showlist(char str[256])
       3 {
       4     
       5     
       6     printf("%s%s
      ", str,str);
       7     //文件指针
       8     FILE *pf;
       9     //读取
      10     pf = fopen(strpath, "r");
      11     
      12     if (pf == NULL)
      13     {
      14         printf("文件打开失败");
      15     }
      16     else
      17     {
      18         //没有到文件末尾就继续
      19         while (!feof(pf)) 
      20         {
      21             char readstr[1024] = { 0 };
      22             //读取一行
      23             fgets(readstr, 1024, pf);
      24             //字符串查找
      25             char *p = strstr(readstr, str);
      26             if (p != NULL)
      27             {
      28                 //输出到网页
      29                 //puts(readstr);
      30                 printf("%s",readstr);
      31                 puts("<br>");
      32             }
      33         }
      34         fclose(pf);
      35     }
      36 }
    • 主函数
       1 printf("Content-type:text/html
      
      ");//换行
       2     
       3     //等待一下
       4     system("mkdir 1");
       5     //获取表单的数据到szpost中   格式 cmd1=%BD%C8&cmd2=abc
       6     char szpost[256] = { 0 };
       7     gets(szpost);
       8     printf("%s", szpost);
       9 
      10     //找到第一个输入框的内容
      11     char*p1 = strchr(szpost, '&');
      12     if (p1 != NULL)
      13     {
      14         *p1 = '';
      15     }
      16     //输出相应的信息
      17     printf("<br>%s", szpost + 5);
      18     //cgi编码格式转换为char*类型
      19     printf("<br>%s", change(szpost + 5));
      20 
      21 
      22     //获取第二个输入框的内容
      23     char *p2 = strchr(p1 + 1, '&');
      24     if (p2 != NULL)
      25     {
      26         *p2 = '';
      27     }
      28     printf("<br>%s", p1 + 6);
      29     printf("<br>%s", change(p1 + 6));
      30 
      31     //查询
      32     showlist(change(szpost + 5));

    完整代码

      1 #define  _CRT_SECURE_NO_WARNINGS
      2 #include<stdio.h>
      3 #include<stdlib.h>
      4 #include <string.h>
      5 
      6 //把cgi编码转为char*类型
      7 char* change(char *str)
      8 {
      9     //分配内存
     10     char *tempstr = malloc(strlen(str) + 1);
     11 
     12     //x是tempstr的下标,y是str的下标
     13     int x = 0, y = 0;
     14     char assii_1, assii_2;
     15     while (str[y])
     16     {
     17         if ((tempstr[x] = str[y]) == '%')
     18         {
     19             //获取第一个字符
     20             if (str[y + 1] >= 'A')
     21             {
     22                 assii_1 = str[y + 1] - 55;
     23 
     24             }
     25             else
     26             {
     27                 assii_1 = str[y + 1] - 48;
     28             }
     29             //获取第二个字符
     30             if (str[y + 2] >= 'A')
     31             {
     32                 assii_2 = str[y + 2] - 55;
     33             }
     34             else
     35             {
     36                 assii_2 = str[y + 2] - 48;
     37             }
     38             tempstr[x] = assii_1 * 16 + assii_2;
     39 
     40             y += 2;
     41 
     42         }
     43         x++;
     44         y++;
     45     }
     46     //最后一位置零
     47     tempstr[x] = '';
     48     return tempstr;
     49 }
     50 
     51 //定义路径
     52 char strpath[256] = "kaifang.txt";                                                                                
     53 
     54 //查询
     55 void showlist(char str[256])
     56 {
     57     
     58     
     59     printf("%s%s
    ", str,str);
     60     //文件指针
     61     FILE *pf;
     62     //读取
     63     pf = fopen(strpath, "r");
     64     
     65     if (pf == NULL)
     66     {
     67         printf("文件打开失败");
     68     }
     69     else
     70     {
     71         //没有到文件末尾就继续
     72         while (!feof(pf)) 
     73         {
     74             char readstr[1024] = { 0 };
     75             //读取一行
     76             fgets(readstr, 1024, pf);
     77             //字符串查找
     78             char *p = strstr(readstr, str);
     79             if (p != NULL)
     80             {
     81                 //输出到网页
     82                 //puts(readstr);
     83                 printf("%s",readstr);
     84                 puts("<br>");
     85             }
     86         }
     87         fclose(pf);
     88     }
     89 }
     90 
     91 void main()
     92 {
     93     printf("Content-type:text/html
    
    ");//换行
     94     
     95     //等待一下
     96     system("mkdir 1");
     97     //获取表单的数据到szpost中   格式 cmd1=%BD%C8&cmd2=abc
     98     char szpost[256] = { 0 };
     99     gets(szpost);
    100     printf("%s", szpost);
    101 
    102     //找到第一个输入框的内容
    103     char*p1 = strchr(szpost, '&');
    104     if (p1 != NULL)
    105     {
    106         *p1 = '';
    107     }
    108     //输出相应的信息
    109     printf("<br>%s", szpost + 5);
    110     //cgi编码格式转换为char*类型
    111     printf("<br>%s", change(szpost + 5));
    112 
    113 
    114     //获取第二个输入框的内容
    115     char *p2 = strchr(p1 + 1, '&');
    116     if (p2 != NULL)
    117     {
    118         *p2 = '';
    119     }
    120     printf("<br>%s", p1 + 6);
    121     printf("<br>%s", change(p1 + 6));
    122 
    123     //查询
    124     showlist(change(szpost + 5));
    125 }
  • 相关阅读:
    redis的间隔性速度慢的问题
    centos增加静态路由
    排查问题的一些基本命令
    laradock
    python之sqlalchemy基本
    ssl证书之certbot
    mysql 多实例
    模块和包
    异步
    WSGI
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8455855.html
Copyright © 2011-2022 走看看