79.cgi硬盘查询个人信息
运行截图:

- 把cgi编码转为char*类型
//把cgi编码转为char*类型
char* change(char *str)
{
//分配内存
char *tempstr = malloc(strlen(str) + ); //x是tempstr的下标,y是str的下标
int x = , y = ;
char assii_1, assii_2;
while (str[y])
{
if ((tempstr[x] = str[y]) == '%')
{
//获取第一个字符
if (str[y + ] >= 'A')
{
assii_1 = str[y + ] - ; }
else
{
assii_1 = str[y + ] - ;
}
//获取第二个字符
if (str[y + ] >= 'A')
{
assii_2 = str[y + ] - ;
}
else
{
assii_2 = str[y + ] - ;
}
tempstr[x] = assii_1 * + assii_2; y += ; }
x++;
y++;
}
//最后一位置零
tempstr[x] = '\0';
return tempstr;
} - 查询
//查询
void showlist(char str[])
{ printf("%s%s\n", str,str);
//文件指针
FILE *pf;
//读取
pf = fopen(strpath, "r"); if (pf == NULL)
{
printf("文件打开失败");
}
else
{
//没有到文件末尾就继续
while (!feof(pf))
{
char readstr[] = { };
//读取一行
fgets(readstr, , pf);
//字符串查找
char *p = strstr(readstr, str);
if (p != NULL)
{
//输出到网页
//puts(readstr);
printf("%s",readstr);
puts("<br>");
}
}
fclose(pf);
}
} - 主函数
printf("Content-type:text/html\n\n");//换行 //等待一下
system("mkdir 1");
//获取表单的数据到szpost中 格式 cmd1=%BD%C8&cmd2=abc
char szpost[] = { };
gets(szpost);
printf("%s", szpost); //找到第一个输入框的内容
char*p1 = strchr(szpost, '&');
if (p1 != NULL)
{
*p1 = '\0';
}
//输出相应的信息
printf("<br>%s", szpost + );
//cgi编码格式转换为char*类型
printf("<br>%s", change(szpost + )); //获取第二个输入框的内容
char *p2 = strchr(p1 + , '&');
if (p2 != NULL)
{
*p2 = '\0';
}
printf("<br>%s", p1 + );
printf("<br>%s", change(p1 + )); //查询
showlist(change(szpost + ));
完整代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include <string.h> //把cgi编码转为char*类型
char* change(char *str)
{
//分配内存
char *tempstr = malloc(strlen(str) + ); //x是tempstr的下标,y是str的下标
int x = , y = ;
char assii_1, assii_2;
while (str[y])
{
if ((tempstr[x] = str[y]) == '%')
{
//获取第一个字符
if (str[y + ] >= 'A')
{
assii_1 = str[y + ] - ; }
else
{
assii_1 = str[y + ] - ;
}
//获取第二个字符
if (str[y + ] >= 'A')
{
assii_2 = str[y + ] - ;
}
else
{
assii_2 = str[y + ] - ;
}
tempstr[x] = assii_1 * + assii_2; y += ; }
x++;
y++;
}
//最后一位置零
tempstr[x] = '\0';
return tempstr;
} //定义路径
char strpath[] = "kaifang.txt"; //查询
void showlist(char str[])
{ printf("%s%s\n", str,str);
//文件指针
FILE *pf;
//读取
pf = fopen(strpath, "r"); if (pf == NULL)
{
printf("文件打开失败");
}
else
{
//没有到文件末尾就继续
while (!feof(pf))
{
char readstr[] = { };
//读取一行
fgets(readstr, , pf);
//字符串查找
char *p = strstr(readstr, str);
if (p != NULL)
{
//输出到网页
//puts(readstr);
printf("%s",readstr);
puts("<br>");
}
}
fclose(pf);
}
} void main()
{
printf("Content-type:text/html\n\n");//换行 //等待一下
system("mkdir 1");
//获取表单的数据到szpost中 格式 cmd1=%BD%C8&cmd2=abc
char szpost[] = { };
gets(szpost);
printf("%s", szpost); //找到第一个输入框的内容
char*p1 = strchr(szpost, '&');
if (p1 != NULL)
{
*p1 = '\0';
}
//输出相应的信息
printf("<br>%s", szpost + );
//cgi编码格式转换为char*类型
printf("<br>%s", change(szpost + )); //获取第二个输入框的内容
char *p2 = strchr(p1 + , '&');
if (p2 != NULL)
{
*p2 = '\0';
}
printf("<br>%s", p1 + );
printf("<br>%s", change(p1 + )); //查询
showlist(change(szpost + ));
}
79.cgi硬盘查询个人信息的更多相关文章
- WMI技术介绍和应用——查询硬件信息
//查询得到系统盘所在硬盘的ID SELECT DiskIndex FROM Win32_DiskPartition WHERE Bootable = TRUE //如何使用WMI查询系统盘所在硬盘的 ...
- 实战DeviceIoControl 之四:获取硬盘的详细信息
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...
- bat命令查询硬件信息
bat命令查询硬件信息 50 需求是这样的写一个bat命令,当命令执行的时候,先请用户输入姓名,然后继续执行查询出以下信息并写入一个文件,文件名称随便,文件可以放在与当前命令同一个文件夹下.最终文件中 ...
- 实战DeviceIoControl系列之四:获取硬盘的详细信息
Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有 ...
- SQL Server2016 新功能实时查询统计信息
SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...
- 16进制ascii码转化为对应的字符,付ipmitool查询硬件信息
最近工作需要在用ipmitool查询服务器硬件信息.ipmitool查询硬件信息 比如电源,使用命令: 获取PSU0信息:Ipmitool raw 0x3a 0x71 0x00: 获取PSU1信息:I ...
- 【Gerrit】Gerrit cmd query (gerrit命令行查询change信息)
本文仅展现个人使用情况和理解,英文原址:https://review.openstack.org/Documentation/cmd-query.html 基本使用格式: ssh -p <por ...
- Asp.Net MVC4入门指南(9):查询详细信息和删除记录
在本教程中,您将查看自动生成的Details和Delete方法. 查询详细信息和删除记录 打开Movie控制器并查看Details方法. public ActionResult Details(int ...
- SQL查询数据库信息, 数据库表名, 数据库表信息
SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ...
随机推荐
- 如何更改jar包源码
首先将你要更改的源码文件在eclipse中编译成.class文件 再找到你需要更改的.jar包 在桌面右键新建个文件夹把你要改的.jar包ctrl+c和ctrl+v 准备好一个压缩工具(这里推荐234 ...
- 关于viewport详解
- OPENCV(6) —— 角点检测
图像特征的类型通常指边界.角点(兴趣点).斑点(兴趣区域).角点就是图像的一个局部特征,应用广泛.harris角点检测是一种直接基于灰度图像的角点提取算法,稳定性高,尤其对L型角点检测精度高,但由于采 ...
- vue踩坑- 报错npm ERR! cb() never called!
在vue项目中引入饿了么elementUI组件的步骤之中,出现以下的错误: D:\my-project-first>npm i element-ui -S Unhandled rejection ...
- Maven学习总结(20)——Maven pom.xml配置再体会
Maven的pom.xml配置文件详解 <!--父项目的坐标.如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值. 坐标包括group ID,artifact ID和 vers ...
- GPU和CPU的区别
http://blog.csdn.net/conowen/article/details/7256260 这里有几种计算平台的Flynn分类法 GPU是SIMD 多核CPU是MIMD 硬件结果多核处理 ...
- Linux下经常使用的C/C++开源Socket库
1. Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html 2. ACE: h ...
- JAVA多态学习1
多态–概念 所谓多态.就是指一个引用(类型)在不同情况下的多种状态. 也能够理解成:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 实现多态有两种方式:1.继承.2.接口 这一次我们先来演 ...
- 在JAVA中怎样跳出当前的多重嵌套循环?
在JAVA中怎样跳出当前的多重嵌套循环? 这道题是考察大家对于break语句的应用.同一时候也是对你多重嵌套循环的使用进行考察.在java中,要想跳出多重循环,能够在外循环语句前面定义 ...
- RadioButton的check改变的时候
https://stackoverflow.com/questions/8095256/asp-net-radio-button-change You'll need to specify the a ...