- •Тема: Функциональные спецификации приложений WhatsApp, Telegram и сервера обслуживания ip-телефонии
- •Основные термины
- •- Android os 2.3.3 , либо iOs 4.3, либо ос Windows Phone 7.5, либо BlackBerry os 4.6.
- •Текущие и исключённые возможности приложения
- •Uml диаграмма прецедентов (Use Case) приложения WhatsApp
- •- Android os 2.2 , либо iOs 6.0, либо ос Windows Phone 8.1, либо MacOs 10.8, либо наличие обновлённого интерент-браузера на пк.
- •Текущие и исключённые возможности приложения
- •Uml диаграмма прецедентов (Use Case) приложения Telegram
- •Uml диаграмма классов (Class Model) приложений WhatsApp, Telegram
- •Описание кода приложений WhatsApp, Telegram
- •Диаграмма коммуникации протоколов приложения WhatsApp
- •Описание кода взаимодействия протоколов приложения WhatsApp
- •Xmpp ServerRequestRef); /ссылка ServerRequest
- •Описание протоколов приложения Telegram
- •Диаграмма коммуникации протоколов приложения Telegram
- •Описание кода взаимодействия протоколов приложения Telegram
- •IncludePayload (ref /через скрипт mtproto
- •Invite (приглашение) — приглашает пользователя принять участие в сеансе связи (служит для установления нового соединения; может содержать параметры для согласования);
- •Диаграмма коммуникации сервера обслуживания ip-телефонии
- •Описание кода сервера обслуживания ip-телефонии
- •Список использованных источников
- •Приложение
Описание кода приложений WhatsApp, Telegram
Чтобы программно описать приложение-мессенджер, такие как WhatsApp и Telegram, используем псевдокод, составленный по UML-диаграмме классов.
#include "windows.h" /добавление скрипта построения окон
public class User{ /создаём класс User
protected string name;
protected int phone;
private set contact = new HashSet(); / сужаем множество контактов до определённого числа (до нужного нам контакта)
public void setName (string newName) { /ввод имени пользователя
name = newName; } /изменение имени пользователя
public string getName() { /просмотр текущего имени пользователя
return name; }
public void setPhone(int newPhone) {
phone = newPhone; }
public int getPhone() {
return phone; }
public set getContact() { /просмотр контакта (из списка контактов)
return contact; }
public void addContact(Contact newContact) { /добавляем новый контакт
contact.add(newContact);
bollean newContact = false; } / применение булевой алгебры, отмена добавления существующего контакта при получении 0
public void WindowBuilder(ref User buildRef); / построение окон для класса пользователь, } / ref – обращение по ссылке
public class Contactlist{
private Contact contact; /присвоение номеру ячейки контакта
private int position; /номер позиции в телефонной книге
public num(int p, Contac c) { /номер телефона и позиция
p = position;
c = contact;}
public void setPosition(int newPosition) { /изменить номер позиции
position = newPosition; }
public set getNum(position){ /просмотр телефона по номеру позиции
return contact;}
public void addContact(Contactlist newNum, Contact NewContact) { /добавть контакт
num.add(newNum); / и номер телефона с позицией
contact.add(newContact);
boolean newNum = false; /проверка на повторение
boolean newContact = false;}
public void WindowBuilder(ref Contactlist buildRef);
}
public class Contact extends Contactlist{ /класс Контакт наследник класса Контактлист
private string name; /имя конакта (номера телефона)
private string status; /статус контакта
private int gender; /пол: 0 - муж., 1 - жен.
gender = boolean gender;
private set message = new HashSet(); /список сообщений
private set num = new HashSet(); /список номеров
public Contact(string n, Contact c){ /имя и ячейка контакта
n = name;
c = contact }
public string getStatus() { /просмотр статуса
return status; }
public int getGender() { /просмотр пола
return gender}
public void setNum(Contactlist NewNum){ /изменить номер телефона и позицию
num = NewNum;
boolean NewNum = false;}
public set getNum(){ /просмотр номера телефона и позиции
return num;}
public void WindowBuilder(ref Contact buildRef);
}
public class Search{ /класс Поиск
private string searchname; /поиск по имени
private int searchnumber; /поиск по номеру
private set contact = new HashSet(); /список контактов
private set num = new HashSet(); /список номеров
public void setSearchName(string Findname) { /ввод значений в поиск по имени
searchname = Findname;}
public void setSearchNumber(int Findnumber) { /... по номеру
searchnumber = Findnumber;}
public set getSearchName() { /показать результат поиска
if (searchname == name) /если имена совпали
return contact; } /выводится результат
public set getSearchNumber() {
if (searchnumber == num)
return num;}
public void WindowBuilder(ref Search buildRef);
}
public class Message{ /класс Сообщений
private string text; /текст сообщения
private Date date; /дата сообщения
private Time time; /время сообщения
private boolean recived; /отправленное сообщение
private boolean read; /полученное сообщение
public set getTime(){
return time; }
public set getDate(){
return date;}
public void setText(string NewText) {
text = NewText;}
public set getRead(){ /считывание всех строчных значений в заданном промежутке,
boolean substring(0, NewText) = false; /повторяющийся результат отображаться не будет
return read; }
public set getRecived(){
boolean substring(New Text) = false;
return recived;}
public void WindowBuilder(ref Message buildRef);
}
public class Date{ /класс Даты
private int day;
private int month;
private int year;
public set getDay(){
return day;}
public set getMonth(){
return month;}
public set getYear(){
return year;}
}
public class Time{ /класс Времени
private int hours;
private int minutes;
private int seconds;
public set getHours(){
return hours;}
public set getMinutes(){
return minutes;}
public set getSeconds(){
return seconds;}
}
Функциональная спецификация протоколов приложений WhatsApp, Telegram
Описание протоколов приложения WhatsApp
Для передачи сообщений в WhatsApp используется модифицированный протокол обмена сообщениями и информацией о присутствии XMPP (ранее известный как Jabber) с шифрованием SSL и TLS.
(Подробную информацию о протоколе XMPP можно найти в пртложении.)
SSL и TLS – это широко используемые криптографические протоколы, обеспечивающие защищённую передачу данных по сети Интернет.
Мультимедиа-сообщения отправляются путём загрузки изображения, звука или видео на HTTP-сервер и передачей гиперссылки на объект вместе с закодированным в Base64 уменьшенным вариантом изображения.
Когда вы входите в приложение с браузера или сканируете QR-код, мобильный клиент подключается к указанному каналу по протоколу WebSocket. WebSocket – это протокол дуплексной связи поверх TCP-соединения, предназначенный для обмена сообщениями в режиме реального времени между браузером и веб-сервером.
Основным недостатком архитектуры приложения является - возможность замены ключей шифрования и организация прослушивания пользователей, в том числе спецслужбами через бэкдор.
