Docsity
Docsity

Подготовься к экзаменам
Подготовься к экзаменам

Учись благодаря многочисленным ресурсам, которые есть на Docsity


Получи баллы для скачивания
Получи баллы для скачивания

Заработай баллы, помогая другим студентам, или приобретай их по тарифом Премиум


Руководства и советы
Руководства и советы

Разработка почтового клиента для операционной системы Windows курсовая по информатике , Дипломная из Информатика

Разработка почтового клиента для операционной системы Windows курсовая по информатике

Вид: Дипломная

2016/2017

Загружен 12.04.2017

refbank20495
refbank20495 🇷🇺

4.8

(4)

10 документы

1 / 29

Toggle sidebar

Сопутствующие документы


Частичный предварительный просмотр текста

Скачай Разработка почтового клиента для операционной системы Windows курсовая по информатике и еще Дипломная в формате PDF Информатика только на Docsity! Федеральное агентство по образованию ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Институт систем управления и информационной безопасности Пояснительная записка к курсовому проекту «Разработка почтового клиента для операционной системы Windows» Пенза 2007 Введение Post Office Protocol (POP) - протокол доставки почты пользователю из почтового ящика почтового сервера РОР. Многие концепции, принципы и понятия протокола POP выглядят и функционируют подобно SMTP. Команды POP практически идентичны командам SMTP, отличаясь в некоторых деталях. На рис.7 изображена модель клиент-сервер по протоколу POP. Сервер POP находится между агентом пользователя и почтовыми ящиками. В настоящее время существуют две версии протокола POP - РОР2 и РОРЗ, обладающими примерно одинаковыми возможностями, однако несовместимыми друг с другом. Дело в том, что у РОР2 и РОРЗ разные номера портов протокола. Между ними отсутствует связь, аналогичная связи между SMTP и ESMTP. Протокол РОРЗ не является расширением или модификацией РОР2 - это совершенно другой протокол. РОР2 определен в документе RFC 937 (Post Office Protocol-Version 2, Butler, et al, 1985), a РОРЗ - в RFC 1225 (Post Office Protocol-Version 3, Rose, 1991). Далее кратко рассмотрим POP вообще и более подробно - РОРЗ. PОРЗ разработан с учетом специфики доставки почты на персональные компьютеры и имеет соответствующие операции для этого. Ранее почтовые сообщения большинства сетей доставлялись непосредственно от одного компьютера к другому. И если пользователь часто менял рабочие компьютеры или один компьютер принадлежал нескольким пользователям, существовали определенные проблемы. В наши дни общепринята доставка сообщения не на компьютеры пользователя, а в специальные почтовые ящики почтового сервера организации, который круглосуточно работает (включен). Конструкция протокола РОРЗ обеспечивает возможность пользователю обратиться к своему почтовому серверу и изъять накопившуюся для него почту. Пользователь может получить доступ к РОР-серверу из любой точки доступа к Интернет. При этом он должен запустить специальный почтовый агент (UA), работающий по протоколу РОРЗ, и настроить его для работы со своим почтовым сервером. Итак, во главе модели POP находится отдельный персональный компьютер, работающий исключительно в качестве клиента почтовой системы (сервера). Подчеркнем также, что сообщения доставляются клиенту по протоколу POP, а посылаются по-прежнему при помощи SMTP. То есть на компьютере пользователя существуют два отдельных агента-интерфейса к почтовой системе - доставки (POP) и отправки (SMTP). Разработчики протокола РОРЗ называет такую ситуацию "раздельные агенты" (split UA). Концепция раздельных агентов кратко обсуждается в спецификации РОРЗ. 1. В протоколе РОРЗ оговорены три стадии процесса получения почты: авторизация, транзакция и обновление. После того как сервер и клиент РОРЗ установили соединение, начинается стадия авторизации. На стадии авторизации клиент идентифицирует себя для сервера. Если авторизация прошла успешно, сервер открывает почтовый ящик клиента и начинается стадия транзакции. В ней клиент либо запрашивает у сервера информацию (например, список почтовых сообщений), либо просит его совершить определенное действие (например, выдать почтовое сообщение. На стадии обновления сеанс связи заканчивается. 1. Описание программы В ходе выполнение курсового проекта была разработана, реализующая функции клиентского приложения, функционирующего по протоколу pop3. Программа была разработана в среде Microsoft Visual Studio 2005. Проект приложения имеет диалоговый тип. В ходе разработки приложения использована библиотека классов MFC. В частности был использован базовый класс CSocket, который является производным классом от CsynkSocket – класс синхронных сокетов. Использование механизма синхронных сокетов позволяет организовать упорядоченное функционирование приложения, не используя дополнительных механизмов для синхронизации. Синхронный механизм не позволяет начать выполнение действия до того, как было получено подтверждение о выполнении предыдущего. В разработанном проекте был реализован класс pop3Socket, который является наследником класса CSocket. В ходе реализации приложения использовался класс md5Capi, который содержит реализации хэш-функции MD5 с использованием библиотеки wincrypt.h 1.1 Описание класса pop3Socket Разработанный класс имеет следующую структуру: class pop3Socket: public CSocket { public: pop3Socket(Cpop3ClientDlg* Dlg); 1.2 Описание класса pop3ClientDlg Класс pop3ClientDlg является наследником класса CDialog. Класс имеет следующую структуру: class Cpop3ClientDlg: public CDialog { public: Cpop3ClientDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data enum { IDD = IDD_POP3CLIENT_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: HICON m_hIcon; // Generated message map functions virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CListBox Protocol; public: afx_msg void OnBnClickedButton1(); public: CButton connect_btn; public: CButton disconnect_btn; public: afx_msg void OnBnClickedButton2(); public: afx_msg void OnBnClickedRadio1(); public: bool simple; public: bool apop; public: bool auth; public: afx_msg void OnBnClickedRadio2(); public: afx_msg void OnBnClickedRadio3(); }; Cpop3ClientDlg(CWnd* pParent = NULL) – стандартный конструктор, наследуемый от класса CDialog; virtual void DoDataExchange(CDataExchange* pDX) – метод, реализующий механизм обмена данными DDX. Методы, генерирующие сообщения: virtual BOOL OnInitDialog(), afx_msg void OnSysCommand(UINT nID, LPARAM lParam), afx_msg void OnPaint(), afx_msg HCURSOR OnQueryDragIcon(), DECLARE_MESSAGE_MAP(). При разработке класса были созданы следующие методы и свойтсва: CListBox Protocol – Компонент управления типа ClistBox, в который производится вывод строк протокола обмена между сервером и клиентом. CButton connect_btn – переменная, связанная с кнопкой установки соединения с сервером CButton disconnect_btn – переменная, связанная с кнопкойразрыва соединения с сервером bool simple, apop, auth – логические переменные. Они устанавливаются в значение «true» в зависимости от того, какой тип аутентификации выбран пользователем. afx_msg void OnBnClickedButton1() – метод, вызываемый принажатии на компонент Button1(кнопка соединения). afx_msg void OnBnClickedButton2() – метод, вызываемый принажатии на компонент Button2(кнопка разрыва соединения). afx_msg void OnBnClickedRadio1() – метод, вызываемый при нажатии на компонент RadioButton1 – простая аутентификация. afx_msg void OnBnClickedRadio2() – метод, вызываемый при нажатии на компонент RadioButton1 – APOP аутентификация. afx_msg void OnBnClickedRadio3() – метод, вызываемый при нажатии на компонент RadioButton1 – AUTH аутентификация. Описание класса pop3ClientDlg содержится в файле pop3ClientDlg.h. Реализация класса содержится в файле pop3ClientDlg.cpp. из которого считывается строка и переменная, в котороую данные считываются. GetDlgItemText(IDC_EDIT1,ip); - из строки ввода в переменную ip GetDlgItemText(IDC_EDIT2,login); - из строки ввода имени пользователя в переменную login; port = atoi(login); - с помощью функции atoi строка login преобразуется в целочисленное значение и присваивается переменной port. GetDlgItemText(IDC_EDIT3,login); - из строки ввода имени в строку login GetDlgItemText(IDC_EDIT4,pswd); - из строки ввода пароля в строку pswd. После этого производится проверка того, что был выбран тип аутентификации, если ни один из типов аутентификации выбран не был, то происходит вызов диалогового окна с сообщением об ошибке. Если проверка проёдена успешно, происходит создание сокета pSocket=new pop3Socket(this), и его инициализация pSocket->Create(). Далее функционирование программы осуществляется в зависимости от выбранного типа аутентификации. Для этого производится анализ переменных simple, apop и auth. 3. Простая аутентификачия 1. Осуществляется соединение с сервером с помощью вызова методоа сокета pSocet: pSocket->Connect(ip,port), где в качестве параметров передаются строка, содержащая адрес сервера и номер порта Если соединение не установлено по каким-либо причинам, то производится вызов окна ошибки и завершение программы. 2. Ожидание и получение строки ответа от сервера в массив и buf с помощью вызова метода сокета pSocet->Receive(buf,0). В случае, если данные не были получены этот метод возвращает отрицательное число, в противном случае возвращает количество полученных байт. Количество байт, полученных от сервера присваивается переменной int recived. 3. Производится форматирование с помощью метода строки messtr.Format() строки messtr messtr.Format("S: %s",buf). Этот метод добавляет в начало строки символ последовательность “S: ” и далее содеримое массива buf. 4. Производится ывод строки messtr в ListBox с помощью вызова метода Protocol->Add(messtr). 5. В цикле от 0 до 127 элемента производится обнуление массива buf 6. С помощью вызова метода EnableWindow объекта disconect_btn с true в качестве параметра производится установка окна кнопки разрыва соединения с сервером в активное сотояние. 7. С помощью вызова метода EnableWindow объекта conect_btn с false в качестве параметра производится установка окна кнопки соединения с сервером в неактивное стостояние. 8. Если от сервера получен положительный ответ (проверяется по значению переменной fl: если она имеет значение «+», то ответ положителен, если «-», то отрицателен), тогда производится отправка ему строки с командой USER: «pSocket->Send("USER " + login + "\n\r",strlen("USER ")+strlen(login) + strlen("\n\r"),1)», если нет, то осуществляется переход к пункту 14 9. Повторить 2-7 10. Повторить п 8-9 (с командой PASS: pSocket->Send("PASS " + pswd + "\n\r",strlen("PASS ")+strlen(pswd)+strlen("\n\r"),0)) 11. Повторить п 8-9 с командой STAT: рзоске->Зепа("ЗТАТ\п\г" ,зеп("$ТАТ\в\""),0) 12. — Послать серверу команду ОПГ: рзоске->Зепа("ООТТГ\п\г" ,5еп("ООТГ\в\г"),0) 2. Описание алгоритма программы Производится подключение к серверу. Если соединение не может быть установлено, то выдается соответствующее сообщение об ошибке и программа завершает свою работу. Если соединение с сервером установлено, то производится выбор ветки алгоритма, по которой пойдет выполнение программы. Она выбирается в зависимости от выбранного пользователем типа аутентификации. В зависимости от этого типа, программа выполняет соответствующую процедуру. Программа поддерживает три вида аутентификации: простая аутентификация, при которой пароль и имя пользователя передаются по каналу связи в незащищенном открытом виде; аутентификация с использованием безключевой хэш-функции MD5, аутентификация с использованием ключевой хэш-функции MD5. В случае, если пользователем выбран тип аутентификации – простая аутентификация, то производится переход к процедуре обработки этого типа аутентификации. В случае, если пользователем выбран тип аутентификации с использованием хэш-функций MD5, то производится формирование строки, которая используется для вычисления хэш-функции и производится переход к процедурам, обрабатывающим данные виды аутентификации. 2.1 Простая аутентификация После подключения разрабатываемого клиентского приложения к серверу и воду пользователем необходимых строк, серверу отправляется команда USER с именем пользователя. После этого программа переходит в режим ожидания ответа сервера. После того как строка с ответом сервера приходит в сокет клиента, то эта строка сохраняется в соответствующий буфер, который используется для хранения строк, содержащих команды протокола. После этого производится проверка ответной строки сервера. Если строка ответа сервера содержит начальную подстроку –ERR, то значит ящика с данным именем на сервере не существует. В данном случае серверу отправляется команда QUIT и производится выход из процедуры. Если же строка начинается с +ОК, то почтовый ящик с данным именем существует на сервере и сервер ожидает пароля для доступа к нему. Далее производится отправка серверу строки с командой PASS, содержащей пароль пользователя для доступа к почтовому ящику. Далее программа опять переходит в режим ожидания ответа сервера и производится прием и анализ полученной от него строки. Если строка содержит начальную подстроку +ОК, значит пароль, введенный пользователем корректен, и сервер перешел в операционную фазу. Если строка-ответ сервера содержит подстроку –ERR, то серверу отправляется команда QUIT и производится выход из процедуры. Если аутентификация успешно завершена, то алгоритм работы программы переход в операционную фазу. На этой фазе функционирования программы серверу последовательно отсылаются команды STAT – для вывода статистики почтового ящика пользователя и команда QUIT – для завершения соединения с сервером. 2.2 APOP аутентификация Если пользователем был выбран тип аутентификации с использованием бесключевой хэш-функции MD5, то алгоритм программы переходит к выполнению данной процедуры. В данном виде аутентификации используется строка, которая была получена из основной части алгоритма. На втором шаге алгоритма функции apop производится склеивание полученной строки метки времени сервера с паролем пользователя. После этого производится вычисление MD5 хэша от этой строки. После этого формируется строка для команды APOP. Эта строка имеет следующий вид: «APOP имя_пользователя хэш-функция». После того, как эта строка сформирована, она отправляется серверу. После этого программа переходит в состояние ожидания ответна от сервера. После получения строки с ответом сервера производится ее разбор. Если строка содержит начальную подстроку –ERR, то аутентификации е пройдена и производится отправка серверу строки с командой QUIT и выход из программы. Если строка содержит начальную подстроку +OK, то значит аутентификация пройдена успешно и программа переходит в операционную фазу. В этой фазе серверу отсылается команда STAT и после этого команда QUIT. После этого производится разрыв связи с сервером и завершение программы. 2.3 AUTH аутентификация (CRAM-MD5) Вызов данной функции осуществляется в случае, если пользователем был выбран вид аутентификации с использованием ключевой функции MD5. Алгоритм функционирования данной функции практически полностью совпадает с алгоритмом, описным в предыдущем пункте., за исключением того, что: - производится вычисление хэш-функции MD5 от уникальной метки, полученной от сервера мс использованием пароля, введенного пользователем. - Серверу отправляется строка вида «AUTH имя_пользователя хэш-функция» Список использованных источников 1. м\мутздр.ги 2. уму’. содепе.ги 3. уму. Ятерв. Приложение А. Алгоритм функционирования программы Простая аутентификация Аутентификация с бесключевой хэш-функцией. Команда APOP
Docsity logo