Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2020-02-15 | 124 |
5.00
из
|
Заказать работу |
|
|
Данную экспериментальную проверку будем осуществлять, изменяя скорость подбора паролей, и фиксировать время, за которое не будет скомпрометирован пароль, при этом значения P и S изменяться не будут.
- вероятность подбора пароля P=10-3;
- мощность пространства паролей S=1,6*1012
Время, за которое данный пароль не будет скомпрометирован, вычисляется по следующей формуле: T=(P * S) / V
1 Скорость подбора пароля V, паролей /сек-1*105;
T=(10-3*1.6*1012) / 105 = 1600 секунд => 4.44 часа
2 Скорость подбора пароля V, паролей /сек-2*105;
T=(10-3*1.6*1012) / 2*105 = 8000 секунд => 2.22 часа
3 Скорость подбора пароля V, паролей /сек-2,5*105;
T=(10-3*1.6*1012) / 2,5*105 = 6400 секунд => 1.77 часа
4 Скорость подбора пароля V, паролей /сек-3*105;
T=(10-3*1.6*1012) / 3*105 = 5333 секунд => 1.48 часа
При увеличении скорости подбора паролей в два раза время, затраченное на подбор, уменьшается также в два раза.
Для того, что бы точно скомпрометировать пароль за три часа, необходима скорость подбора паролей V=1.5*108 паролей /сек. Время взлома также уменьшается от вида атаки и от степени осведомлённости злоумышленника. Так простейшая программа для взлома паролей архиватора RAR “Advanced RAR Password Recovery” предусматривает 3 типа атаки:
- перебор
- по маске
- по словарю
Сократить время взлома также можно, указав предполагаемую длину или установив её рамки, так же можно указать язык или набор символов, из которых предположительно состоит пароль.
Руководство пользователя
Для начала работы с программой необходимо запустить файл с названием PassGen. После запуска появится окно. Для генерации пароля необходимо нажать на клавишу “GENERIROVANIE”. После чего в окошке появится сгенеррированный пароль. Далее необходимо запомнить пароль и использовать по назначению. При повторном нажатии на клавишу пароль будет сгенерирован вновь. Для выхода из программы необходимо нажать на клавишу “Выход” или нажав на “крестик”.
|
Заключение
В процессе выполнения курсового проекта была разработана программа, генерирующая пароли пользователей. Программа была написана при помощи интегрированной среды разработки Visual C++. Программа соответствует всем функциональным требованиям, заданным на курсовое проектирование. Взаимодействие с пользователем осуществляется с помощью графического интерфейса.
Таким образом, задание на курсовое проектирование было полностью выполнено.
Список использованных источников
1 http://www.diwaxx.ru/hak/index.php
2 http://www.passwords.ru
3 Келецкий Я. Энциклопедия языка Си/ Пер. с англ.- М.: Мир, 1992. -687с.
4 Керниган Б., Ричи Д., Фьюер А. Язык программирования Си. Задачи по языку С/ Пер. с англ. - М.: Финансы и статистика, 1985.-279с.
ПРИЛОЖЕНИЕ А
Алгоритм программы
|
--------------[на лист 2
Рисунок А.1. Алгоритм программы
---------------------------------------[с листа 1
|
Рисунок А.1. Лист №2
ПРИЛОЖЕНИЕ Б
Текст программы
// Password.cpp: implementation of the Password class.
//////////////////////////////////////////////////////////////////////
#include <afx.h>
#include "stdafx.h"
#include "PassGen.h"
#include "Password.h"
#include "Random.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Password::Password(int l)
{length = l;
passwrd = new char [length+1];
dicstr = new char [length+1];
PassAlfavit = new char [36];
HowMuchn = new int [length];
dicstr[length]='\0';
ValueOfDictionary= 134547;}
Password::~Password()
{delete(passwrd);
delete(dicstr);
delete(PassAlfavit);
delete(HowMuchn);}
void Password::GenAlfavit()
{char symbol='A';
for (int index=0;index<36;index++)
{if (index==26)
symbol='0';
PassAlfavit[index]=symbol;
symbol++;}}
char * Password::GetPassword()
{return passwrd;}
|
void Password::GenPass()
{Random rnd1;
for (int index =0;index<length;index++)
passwrd[index]=PassAlfavit[rnd1.NextR(35)];
passwrd[index]='\0';}
BOOL Password::TestChar()
{ClearMass(length,HowMuchn);
for (int index1=0;index1<length;index1++)
for (int index2=0;index2<length;index2++)
if (passwrd[index1]==passwrd[index2])
HowMuchn[index1]++;
if (HowMuch(length,HowMuchn))
return TRUE;
else return FALSE;}
void Password::ClearMass(int length,int * mass)
{for (int index =0;index<length;index++)
mass[index]=0;}
BOOL Password::HowMuch(int length, int *HowMuch)
{for (int index =0;index<length;index++)
if (HowMuch[index]>1)
return FALSE;
return TRUE;}
BOOL Password::TestDictionary()
{CFile Dictionary;
Try
{Dictionary.Open("length08.txt",CFile.modeRead,NULL);}
catch(CFileException *e)
{Dictionary.Abort(); // close file safely and quietly
e->~CFileException();
MessageBox(0,"Не удается открыть словарь", "ошибка", MB_APPLMODAL|MB_OK|MB_ICONSTOP);
return FALSE;}
for (int index =0;index<ValueOfDictionary;index++)
{Dictionary.Read(dicstr,8);
Dictionary.Seek(2,CFile.current);
if (Compare(length))
return FALSE;}
Dictionary.Close();
return TRUE;}
int Password::Compare(int length)
{for (int index=0;index<length;index++)
if (passwrd[index]!=dicstr[index])
return 0;
return 1;}
ПРИЛОЖЕНИЕ В
Random.cpp
// Random.cpp: implementation of the Random class.
//////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <Winbase.h>
#include <stdlib.h>
#include "stdafx.h"
#include "PassGen.h"
#include "Random.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Random::Random()
{srand(GetTickCount());}
Random::~Random()
{}
int Random::NextR(int x)
{int rnd1;
rnd1=rand();
srand(rnd1);
rnd1=rand() % x;
return rnd1;}
ПРИЛОЖЕНИЕ Г
PassGenDlg.cpp
// PassGenDlg.cpp: implementation file
#include "stdafx.h"
#include "PassGen.h"
#include "PassGenDlg.h"
#include "Password.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPassGenDlg dialog
CPassGenDlg::CPassGenDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPassGenDlg::IDD, pParent)
{//{{AFX_DATA_INIT(CPassGenDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
void CPassGenDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPassGenDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP}
BEGIN_MESSAGE_MAP(CPassGenDlg, CDialog)
//{{AFX_MSG_MAP(CPassGenDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDGEN, OnGen)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPassGenDlg message handlers
BOOL CPassGenDlg::OnInitDialog()
{CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
|
// this is automatically done for you by the framework.
void CPassGenDlg::OnPaint()
{if (IsIconic())
{CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);}
else
{CDialog::OnPaint();}}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CPassGenDlg::OnQueryDragIcon()
{return (HCURSOR) m_hIcon;}
void CPassGenDlg::OnGen()
{Password ps (8);
ps.GenAlfavit();
do
{ps.GenPass();
if (!ps.TestChar())
continue;
else
if (ps.TestDictionary())
break;
else
continue;}
while (TRUE);
SetDlgItemText(IDC_EDIT1,ps.GetPassword());}
|
|
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!