79.cgi硬盘查询个人信息
Posted 喵小喵~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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] = \'\\0\'; 43 return tempstr; 44 }
- 查询
1 //查询 2 void showlist(char str[256]) 3 { 4 5 6 printf("%s%s\\n", 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\\n\\n");//换行 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 = \'\\0\'; 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 = \'\\0\'; 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] = \'\\0\'; 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\\n", 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\\n\\n");//换行 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 = \'\\0\'; 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 = \'\\0\'; 119 } 120 printf("<br>%s", p1 + 6); 121 printf("<br>%s", change(p1 + 6)); 122 123 //查询 124 showlist(change(szpost + 5)); 125 }
以上是关于79.cgi硬盘查询个人信息的主要内容,如果未能解决你的问题,请参考以下文章