#include <iostream>
#include <Windows.h>
#include <string>
#include <conio.h>  //getch使用
#include "hacker.h"
using namespace std;

#define WIDTH 40
#define HEIGHT 15

void inputPwd(char pwd[], int size) {
    char c;
    int i = 0;

    while (1)
    {
        c = getch();  //这个getch连回车符都吃!!!
        if (c == '\r') {
            pwd[i] = 0;
            break;
        }
        pwd[i++] = c;
        cout << "*" ;
    }
    cout << endl;
}
void init() {
    char cmd[128];
    sprintf_s(cmd, "mode con cols=%d lines=%d", WIDTH, HEIGHT);
    system(cmd);
}
void printInMiddle(string msg) {
    int space = (WIDTH - msg.length()) / 2;
    for (int i = 0; i < space; i++) {
        cout << " ";
    }
    cout << msg << endl;
}
void login(void) {
    string name;
    //string pwd;
    char pwd[32];

    while (1) {
        system("cls");

        std::cout << "请输入账号:";
        std::cin >> name;

        std::cout << "请输入密码:";
        //std::cin >> pwd;
        //实现密码的输入
        inputPwd(pwd, sizeof(pwd));

        if (name == "54hk" && !strcmp(pwd,"123456")) { //若比较结果是相等的就会等于0,非0为真
            //break;
            return;
        }
        else {
            cout << "用户名或密码错误!" << endl;
            system("pause");
        }
    }
}

void menuShow(void) {
    system("cls");
    string menu[] = {
        "1.网站404攻击",
        "2.网站篡改攻击",
        "3.网站攻击修复",
        "4.查看攻击记录",
        "5.退出"
    };

    system("cls");
    printInMiddle("---黑客攻击系统---");

    // 计算菜单最大长度:
    int max = 0;
    int menuCount = sizeof(menu) / sizeof(menu[0]);
    for (int i = 0; i < menuCount; i++) {
        if (menu[i].length() > max) {
            max = menu[i].length();
        }
    }

    int leftSpace = (WIDTH - max) / 2;

    for (int i = 0; i < menuCount; i++) {
        for (int i = 0; i < leftSpace; i++) {
            printf(" ");

        }
        cout << menu[i] << endl;
    }
}

int menuChoise(void) {
    int n = 0;

    while (1) {
        cout << "请选择菜单项:";
        cin >> n;
        if (cin.fail()) {
            cin.clear();
            cin.sync();
            cout << "无效输入. 请重新输入." << endl;
            system("pause");
        }
        else {
            break;
        }
    }

    return n;
}

void attack404(void) {
    char id[64];
    char response[4096];

    system("cls");
    printInMiddle("---网站404攻击---");

    cout << "请输入准备攻击的网站ID:";
    cin >> id;

    cout << "正在执行404攻击..." << endl;

    hk_404(id, response);  //发起攻击
    //id指对应网站的端口号
    //服务器返回的结果是utf-8编码格式

    string retStr = UTF8ToGBK(response);
    cout << retStr << endl;

    // int hk_404(char *id, char *response) ;
    //cout << "404攻击..." << endl;   
    system("pause");
}
void siteEdit(void) { system("cls"); char id[64]; char response[4096]; string attackText; //cout << "网站篡改攻击..." << endl; cout << "请输入准备攻击的网站ID:"; scanf_s("%s",id, size(id)); cout << "请输入你要写入的内容:"; cin>> attackText; cout << "正在执行网站篡改攻击...\n"; GBKToUTF8(attackText); hk_tamper(id, (char*)attackText.c_str(),response); string retStr = UTF8ToGBK(response); cout << retStr << endl; system("pause"); } void siteRepair(void) { char id[64]; char response[4096]; system("cls"); printInMiddle("---网站攻击修复---"); cout << "请输入准备修复的网站ID:"; cin >> id; cout << "正在执行攻击修复..." << endl; hk_restore(id, response); //发起攻击 //id指对应网站的端口号 //服务器返回的结果是utf-8编码格式 string retStr = UTF8ToGBK(response); cout << retStr << endl; system("pause"); } void attckRecord(void) { char id[64]; char response[4096]; system("cls"); printInMiddle("---网站攻击记录---"); cout << "请输入需要查看记录的网站ID:"; cin >> id; cout << "正在查看攻击记录..." << endl; hk_record(id, response); //id指对应网站的端口号 //服务器返回的结果是utf-8编码格式 string retStr = UTF8ToGBK(response); cout << retStr << endl; system("pause"); } int main(void) { // 登录 init(); login(); while (1) { menuShow(); int n = menuChoise(); switch (n) { case 1: attack404(); break; case 2: siteEdit(); break; case 3: siteRepair(); break; case 4: attckRecord(); break; case 5: //break; return 0; default: cout << "无效输入. 请重新输入." << endl; system("pause"); break; } } system("pause"); return 0; }

 

posted on 2022-08-22 23:17  wshidaboss  阅读(318)  评论(0编辑  收藏  举报