C++学习day--12 循环的应用,暴力破解密码和输出动图

节 职场修炼:程序员到底能干多久

现状:
很多程序员,过了 30 岁,纷纷转行。
原因:
1 )薪资过万后,很难进一步提升
2 )可替代性高,在新人面前,没有绝对优势。
3 )结婚成家后,在 996 工作环境下,难以承受。
解决方案:
1 )选择合适的方向
前端开发, PHP 开发等方向,技术含量低,可替代性高。
2 )掌握企业的核心业务,核心技术,向技术管理方向发展
3 )掌握外包开发核心技能,逐步拓展外包人脉

 第 2 节 项目拓展 1-循环的经典应用:暴力破解密码

项目需求:假设密码只由6位数字组成,写一个程序破解这个密码!!

新建一个项目1,项目名字叫测试代码,写上如下代码,并运行,

 client.cpp

#include <iostream>
#include <Windows.h>
#include <string>
using namespace std;
int main(void) {
    string pwd; 
    while (1) {
        cout << "Please input your password: ";
        cin >> pwd;
        if (pwd == "000123") {
            break;
        }
        else {
            cout << "Password error." << endl;
        }
    }
    cout << "login success" << endl; 
    cout << "1. 注册" << endl;
    cout << "2. 管理" << endl; 
    cout << "3. 查询" << endl; 
    cout << "4. 删除" << endl; 
    system("pause");
    return 0;
}

 新建项目2,项目名字叫黑客攻击,并写上如下代码

crack.cpp:

#include <iostream>
using namespace std;
int main(void) {
    char dict[64]; //10+26+26+1 = 63;
    char tmp[32];
    int index = 0;
    for (int i = 0; i < 10; i++) {
        dict[index++] = '0' + i;
    }
    dict[index] = '\0';
    int n = index; // 字符个数
    for (int p1 = 0; p1 < n; p1++) {
        for (int p2 = 0; p2 < n; p2++) {
            for (int p3 = 0; p3 < n; p3++) {
                for (int p4 = 0; p4 < n; p4++) {
                    for (int p5 = 0; p5 < n; p5++) {
                        for (int p6 = 0; p6 < n; p6++) {
                            tmp[0] = dict[p1];
                            tmp[1] = dict[p2];
                            tmp[2] = dict[p3];
                            tmp[3] = dict[p4];
                            tmp[4] = dict[p5];
                            tmp[5] = dict[p6];
                            tmp[6] = '\0';
                            cout << tmp << endl;
                        }
                    }
                }
            }
        }
    }
    return 0;
}

就是说client.cpp是要输入数据的,crack.cpp是输出数据的。

在控制台:
crack.exe | client.exe

这个是管道的操作方式,就是用前面那个程序的输出作为后面那个程序的输入,这个管道要掌握!! 

运行结果:

破解成功!! 

第 3 节 项目拓展 2-宅男福利:控制台上跳极乐净土(动画版)

_T( ) 补充说明 : 如果项目使用的是字符集是” 多字节字符集 ” ,那么在使用 easyx 的相关接口时 , 就不需要使用 _T( )。
如果项目使用的是字符集是 ”Unicode 字符集 或其他字符集,那么在使用 easyx 的相关接口时 , 就要使用 _T( ) 。建议两种都会用。
不论什么字符集 , 使用_T() , 则都可以适应 . _T( )是一个特殊的 ”, 其中的参数是常量时 , 才有效果 . 如果参数是变量, 则可能会无效 . 所以, 当加载的文件名是变量时 , 有两个方法 :
方法 1) 把字符集改为 使用 多字节字符集
方法 2) 使用自定义的函数 , 进行字符编码的转换

 Demo:

首先该文件夹下得有图片资源:

 极乐净土:

打开:

 

一共148张图片。

要设置项目属性:

 字符集改为——使用多字节字符集。 (否则有问题)

最后编码设置为中文编码:

不然播放没音乐!! 很多人神恶魔都做好了,也能运行出图片,但是就是没有音乐!就是因为编码没有设置。

#include <iostream>
#include <graphics.h>
#include <Windows.h>
#include <string>
#include <string.h>
#include <MMSystem.h> // 播放音乐需要的头文件
#pragma comment(lib, "winmm.lib") //告诉编译器, 加载 winmm.lib 库文件
using namespace std;
#define COUNT 148
int main(void) {
    char fileName[128]; 
    std::cout << "正在加载..." << std::endl;
    //预加载
    IMAGE images[COUNT];
    for (int i = 1; i <= COUNT; i++) {
        sprintf(fileName, "极乐净土\\images2\\_%04d_图层-%d.jpg",  i-1, COUNT-i+1);
        loadimage(&images[i - 1], fileName);
    }
    initgraph(800, 450);
    mciSendString(_T("play 滑脚怪.mp3 repeat"), 0, 0, 0);//重复播放"滑脚怪.mp3"
    while (1) {
        for (int i = 0; i < COUNT; i++) {
            putimage(0, 0, &images[i]);
            Sleep(75);
        }
    }
    system("pause"); 
    closegraph();
    return 0;
}

这里不得不补充一下sprintf()函数的用法,%0md,就是说数据没有m位时,用0补充。但是没有%2md这种用法,数据不足m位时,用2补充,没有这种用法,只能用0补充!! 

运行结果:我录制了一个视频让大家看效果:

链接:https://pan.baidu.com/s/1adM_ZRyRTQW_Uf-0Nr6giA?pwd=8080 
提取码:8080

 是不是感觉很有趣!后面马上用图形化界面做黑客攻击系统!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23114.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SolVES模型在生态系统服务社会价值评估中的运用

SolVES模型&#xff08;Social Values for Ecosystem Services&#xff09;全称为生态系统服务社会价值模型&#xff0c;是由美国地质勘探局和美国科罗拉多州立大学联合开发的一款地理信息系统应用程序&#xff0c;开发该模型的目的主要是对生态系统服务功能中的社会价值进行空…

全面了解Java连接MySQL的基础知识,快速实现数据交互

全面了解Java连接MySQL的基础知识&#xff0c;快速实现数据交互 1. 数据库的重要性2. MySQL数据库简介2.1 MySQL数据库的基本概念2.2 MySQL的基本组成部分包括服务器、客户端和存储引擎。2.3 安装MySQL数据库2.3.1安装MySQL数据库2.3.2 下载MySQL安装程序2.3.3 运行MySQL安装程…

帽子设计作品——蒸汽朋克的乌托邦,机械配件的幻想世界!

蒸汽朋克是由蒸汽steam和朋克punk两个词组成&#xff0c; 蒸汽代表着以蒸汽机作为动力的大型机械&#xff0c;而朋克则代表一种反抗、叛逆的精神。 蒸汽朋克的作品通常以蒸汽时代为背景&#xff0c;通过如新能源、新机械、新材料、新交通工具等新技术&#xff0c;使画面充满想…

理解深度可分离卷积

1、常规卷积 常规卷积中&#xff0c;连接的上一层一般具有多个通道&#xff08;这里假设为n个通道&#xff09;&#xff0c;因此在做卷积时&#xff0c;一个滤波器&#xff08;filter&#xff09;必须具有n个卷积核&#xff08;kernel&#xff09;来与之对应。一个滤波器完成一…

PMP课堂模拟题目及解析(第13期)

121. 项目经理、团队成员以及若干干系人共同参与一次风险研讨会。已经根据风险管理计划生成并提供一份风险报告。若要为各个项目风险进行优先级排序&#xff0c;现在必须执行哪一项分析&#xff1f; A. 定量风险分析 B. 根本原因分析 C. 偏差分析 D. 定性风险分析 122. …

带你手撕链式二叉树—【C语言】

前言&#xff1a; 普通二叉树的增删查改没有意义&#xff1f;那我们为什么要先学习普通二叉树呢&#xff1f; 给出以下两点理由&#xff1a; 1.为后面学习更加复杂的二叉树打基础。&#xff08;搜索二叉树、ALV树、红黑树、B树系列—多叉平衡搜索树&#xff09; 2.有很多二叉树…

Linux安装MongoDB数据库并内网穿透在外远程访问

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 转发自CSDN cpolarlisa的文章&#xff1a;Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透…

亚马逊开放个人卖家验证入口?亚马逊卖家验证到底怎么搞?

亚马逊卖家账户的安全对于所有卖家来说都非常重要。如果卖家想要在亚马逊上长期稳定地发展&#xff0c;赚取更多的钱并推出更多热卖产品&#xff0c;就必须确保他们的亚马逊卖家账户安全&#xff0c;特别是一直存在的亚马逊账户验证问题。 近期&#xff0c;根据亚马逊官方披露的…

开发敏捷高效 | 云原生应用开发与运维新范式

5 月 18 日&#xff0c;腾讯云举办了 Techo Day 腾讯技术开放日&#xff0c;以「开箱吧&#xff01;腾讯云」为栏目&#xff0c;对外发布和升级了腾讯自研的一系列云原生产品和工具。其中&#xff0c;腾讯云开发者产品中心总经理刘毅围绕“开发敏捷高效”这一话题&#xff0c;分…

单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元

事先声明&#xff1a;以下故事基于真实事件而改编&#xff0c;如有雷同&#xff0c;纯属巧合~ 眼下这位正襟危坐的男子&#xff0c;名为小竹&#xff0c;他正是本次事件的主人公&#xff0c;也即将成为熊猫集团的被告&#xff0c;嗯&#xff1f;这究竟怎么一回事&#xff1f;欲…

手写简单的RPC框架(一)

一、RPC简介 1、什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用协议&#xff0c;一种通过网络从远程计算机上请求服务&#xff0c;而不需要了解底层网络技术的协议。RPC它假定某些协议的存在&#xff0c;例如TPC/UDP等&#xff0c;为通信程序之间携…

PMP考试应该要如何备考?如何短期通过PMP?

我从新考纲考完下来&#xff0c;3A通过了考试&#xff0c;最开始也被折磨过一段时间&#xff0c;但是后面还是找到了方法&#xff0c;也算有点经验&#xff0c;给大家分享一下吧。 程序猿应该是考PMP里面人最多的&#xff0c;毕竟有一个30大坎&#xff0c;大部分人还是考虑转型…

什么是网络编程

目录 一、什么是网络编程&#xff1f; 二、协议 1.用户数据报协议(User Datagram Protocol) 2.TCP协议 TCP三次握手过程 三、实例 1.UDP通信程序 实现步骤 TCP接收数据 四、TCP协议和UDP协议的区别和联系 一、什么是网络编程&#xff1f; 1.在网络通信协议下&#xf…

一图看懂!RK3568与RK3399怎么选?

▎简介 RK3568和RK3399都是Rockchip公司的处理器&#xff0c;具有不同的特点和适用场景。以下是它们的主要区别和应用场景。 ▎RK3568 RK3568是新一代的高性能处理器&#xff0c;采用了22nm工艺&#xff0c;具有更高的性能和更低的功耗。它支持4K视频解码和编码&#xff0c;支持…

电脑如何查找重复文件?轻松揪出它!

电脑如何查找重复文件&#xff1f;小编每天要接触各种文档、图片等资料&#xff0c;很多时候下载了一些图片后&#xff0c;我根本记不住&#xff0c;下次看到不错的图片&#xff0c;我又会下载下来&#xff0c;结果就是和之前下载的图片是一样的内容。下载的重复文件多了&#…

人员定位及轨迹管理技术原理及应用领域

人员定位及轨迹管理的实现涉及多种技术和设备。例如&#xff0c;在GPS定位方面&#xff0c;使用卫星系统可以提供全球范围内的准确定位信息。然而&#xff0c;GPS在室内环境下的信号覆盖可能存在限制&#xff0c;因此在室内定位应用中&#xff0c;常常采用无线传感器网络&#…

第一行代码 第十一章 基于位置的服务

第11章 基于位置的服务 在本章中&#xff0c;我们将要学习一些全新的Android技术&#xff0c;这些技术有别于传统的PC或Web领域的应用技术&#xff0c;是只有在移动设备上才能实现的。 基于位置的服务&#xff08;Location Based Service&#xff09;。由于移动设备相比于电脑…

案例分享 | 纽扣电池石墨片厚度及缺陷检测

石墨片是一种导热散热材料&#xff0c;质轻柔软&#xff0c;能够轻松贴合在各种热源点&#xff0c;在新能源、航天、3C电子等领域应用广泛。 汽车钥匙中的纽扣电池也需要使用石墨片&#xff0c;石墨片会有统一的厚度标准&#xff0c;装配过程中表面不可避免地会出现裂纹、划痕…

Maven学习笔记(上)22版

1. 概述部分 1. 什么是 Maven&#xff1f; 为什么要学习Maven&#xff1f; 管理规模庞大的 jar 包&#xff0c;需要专门工具。脱离 IDE 环境执行构建操作&#xff0c;需要专门工具。 1、构建 Java 项目开发过程中&#xff0c;构建指的是使用『原材料生产产品』的过程。 原…

双目测距联合YOLOv8 项目总结

代码贴&#xff1a;双目测距--5 双目相机 联合 YOLOv8_爱钓鱼的歪猴的博客-CSDN博客 0、图片筛选 可以用matlab,对双目图像做个一个筛选&#xff0c;也就是做双目标定。 熟悉matlab的小伙伴完全可以用matlab做双目标定&#xff0c;我是没咋接触过不知道怎么导出标定结果&#…