Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [TCP/IP] Распознование лже пакета. Распознование идентичного пакета. 
:(
    Опции темы
MuForum
Дата 4.6.2009, 16:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев




Доброе время суток.
Возникла такая интересная ситуация, у меня с одним человеком возник спор, и что бы дальше не разводить сопли и т.д., я прошу вас ответить на вопрос и аргументировать свой ответ.
Людей, которым не интересно, прошу не разводить балаган как это произошло на WASM'е, а просто покинуть тему!


Постараюсь сразу же изначально объяснить подробно, чтобы не возникало вопросов.
Речь будет идти об одном игровом сервере жанра: MMORPG.


Программа client.exe - Клиентская часть.
Программа server.exe - Серверная часть.
Программа cheat.exe - Программа, которая внедряется в основной поток передачи данных. (То есть, прокси)
- Контролирует принятие и отправку данных по WinSock.


На стороне клиента запускается программа client.exe, через неё происходит аутентификаци клиента, и далее идёт обмен данными с сервером(server.exe).
На этом же компьютере, компьютере клиента, запускается программа cheat.exe, она внедряется в основной поток передачи данных программы client.exe и пропускает все пакеты через себя. (То есть, проксик)
То есть, уже все пакеты между client.exe и Server.exe проходят через программу cheat.exe
Допустим Client.exe отправляет на сторону сервера пакет о том, что персонаж делает шаг, программа cheat.exe запоминает этот пакет и отправляет вследок.
Естественно, заголовок TCP пакета идентичен, внутренняя структура самого отправляемого пакета(у данной игры есть собственная внутренняя структура пакетов) тоже идентична.
Используемый протокол передачи данных: TCP. (Уровень: стэк TCP/IP)

# Вопрос: Можно ли отследить выше описанное на стороне сервера?
- Я утверждаю, что нет! Так как данные отправляются из того же потока/сокета, и на стороне сервера никак не распознать разницу, так как пакеты полностью идентичны!
- Просьба не писать сообщения о том, что разработчики игры должны были сделать соответствующие проверки в программе server.exe


Цитата

Я:
- Люди, которые в этом разбираются поймут, что на стороне сервера отличить ложный пакет от оригинального (если он идентичен на 100%) - НЕ ВОЗМОЖНО!

Оппонент:
Да? Уверен? Слыш а кули я уже придумал как это сделать? ТЫ ***! Тебе сказать почему? Ты такой знаток С++ ? Да? Ты типа мега хацкер да? А ты учил протоколы передачи на асм? А кули? А или ты вообще не учил асм? Так забейся к себе в норку и сиди тихо!


# Вопрос: Существует ли разница в передачи данных между C++ и Assembler?
- Ещё раз повторяю, вопрос несёт не познавательный характер, а общественный опрос, что мой оппонент сбил свой пыл.
- Просто человек упорно считает, что раз он начал учить Ассемблер, то это ему открывает какие-то новые перспективы в работе с передачей данных по протоколу TCP и контролю за целостностью информации. (Человек не может понять, что на стороне сервера это не отследить)


P.S. -> Если необходимо что-то уточнить - напишите. Но не разводите балаган.

Это сообщение отредактировал(а) MuForum - 4.6.2009, 16:50


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
ТоляМБА
Дата 4.6.2009, 17:34 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004




Что курил АВАТАР?!
PM   Вверх
MuForum
Дата 4.6.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев




Цитата(ТоляМБА @ 4.6.2009,  17:34)
Что курил АВАТАР?!

Я вроде доступно объяснил, что подобные комментарии не оставлять... (Или у вас проблемы с пониманием?)
- Если не можете ответить по существу, зачем разводить балаган... (что на васме, что тут, всегда найдутся уникалы...)
Если я не совсем точно где-то изъяснился, скажите, а подобные комментарии оставляйте при себе...

Это сообщение отредактировал(а) MuForum - 4.6.2009, 18:12


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
CompWorm
Дата 4.6.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /




MuForum
на мой непрофессиональный взгляд, разнице в использовании ассемблера, с++, или любого другого языка нет. ИМХО, ТСП-АЙПИ это надстройка над сетью (прош грозно не материть меня за мои слабые познания) а в играх используется прикладной, то есть самый верхний уровень. 
то есть нельзя пропалить подставной пакет на верхнем уровне. 

тем не мение, транспортный уровень, то есть сам протокол TCP однозначно не определен и может иметь разные вариации даже для разных операционных систем (это я не помню где слышал и за слова не отвечаю  smile ). так вот тут ваш аппонент теоретически может пропалить cheat.exe так как речь идет вроде как об устройстве протакола, а не устройстве пакета.

извиняюсь, если ошибся где-то или ляпнул лажу  smile

Добавлено через 13 минут и 26 секунд
могу предположить, что с каждым пакетом он отправляет уникальный ID. тогда несвоевременный двойник легко пропалится, но хз как и вряд ли


--------------------
PM MAIL   Вверх
ТоляМБА
Дата 4.6.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004




MuForum, если ты каммент от вопроса отличить не можешь, то у кого тогда проблемы с пониманием то?

"Чем кумушек считать трудиться,
Не лучше ль на себя, кума, оборотиться?"


И.А. Крылов. 1816 г.
PM   Вверх
MuForum
Дата 4.6.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев




Цитата(ТоляМБА @ 4.6.2009,  18:57)
MuForum, если ты каммент от вопроса отличить не можешь, то у кого тогда проблемы с пониманием то?

"Чем кумушек считать трудиться,
Не лучше ль на себя, кума, оборотиться?"


И.А. Крылов. 1816 г.

Я попросил высказываться конкретно по теме. Я жду ответов и аргументов.
- То, что мой оппонент многого не понимает, это и ежу понятно...


Цитата(CompWorm)

так вот тут ваш аппонент теоретически может пропалить cheat.exe так как речь идет вроде как об устройстве протакола, а не устройстве пакета.

Так и весь смысл в том, Что все пакеты проходят через программу cheat.exe, и естественно структура TCP/IP заголовка меняться не будет. Это то же самое, что сразу запустить через proxy сервер.
- Как ты сможешь понять, пакет пришел от cheat.exe (ложный) или это пакет от client.exe, ведь пакет будут приходить от одного и того же потока/сокета, то есть, идентификатор сокета меняться не будет. А если внутренняя структура игрового пакета правильная, то, как ты можешь отследить на стороне сервера, действительно ли персонаж сделал шаг, или это искусственно созданное действие!!!
В этом и дилемма, что отследить это на стороне сервера не представляется возможности!


# Добавлено: Именно по этой причине используют алгоритмы шифрования данных и т.д., чтобы если данные каким-то образом пропустят через какой-то аналог прокси сервера, так не могли отправлять свои пакеты зная внутреннюю структуру игровых пакетов, так как при расшифровывание пакетов на стороне сервера получится ахинея...

Это сообщение отредактировал(а) MuForum - 4.6.2009, 20:03


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
CompWorm
Дата 4.6.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /




MuForum, лично я в таких мелочах не силен. на ум приходит только индексация пакетов. TCPIP протокол четкий и ничего просто так по пути не отвалится как в UDP, поэтому, возможно, имеет смысл проиндексировать. но мне кажется, что это лишние тормоза и вряд ли этим кто-то занимается.

то что парниша знает асм это конечно похвально, но очень сомневаюсь в его приемуществах в области сетей. скорее больше недостатков. 
хотя... чем черт не шутит, может он вручную сигналы модулирует и коллизии удаляет smile  smile  smile   smile 

тема интересная, ждем пояснения от крутых перцев с форума  smile

Добавлено через 13 минут и 13 секунд
может пора перенести тему из флейма в сетевые технологии


--------------------
PM MAIL   Вверх
MuForum
Дата 4.6.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев




Цитата(CompWorm @ 4.6.2009,  20:07)
...
Добавлено @ 20:20
может пора перенести тему из флейма в сетевые технологии

Поддерживаю.
Я просто изначально создал эту тему в разделе флэйм по той причине, что я эту же тему поднял на форуме "wasm.ru" и там развели балаган...
- Начали гнать, что этой теме место в разделе "флэйм", хотя я и с ними не согласен, но на другом форуме я получил только кучу "умных" сообщения не по теме...


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
~FoX~
Дата 5.6.2009, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград




Цитата(MuForum @  4.6.2009,  20:38 Найти цитируемый пост)
А если внутренняя структура игрового пакета правильная, то, как ты можешь отследить на стороне сервера, действительно ли персонаж сделал шаг, или это искусственно созданное действие!!!
 В проинципе этим матиматика гамы занимается....
Но если со стороны именно модели ОСИ смотреть, то во первых на представительском уровне - это ловица (не всегда) , а во вторых есть понятие "контрольной суммы" .....Если контрольная сумма не совпадает, то пакет аккуратно гибнет, инъекцию в пакет не засунешь....Придется весь пакет переваривать, а это отловит математика гамы, сервера, клиента, etc....


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Lazin
Дата 5.6.2009, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re




можно подписывать каждый пакет цифровой подписью, в этом случае cheat.exe не сможет изменить пакет, точнее сможет, но сервер об этом узнает smile 
правда нагрузка на сервер увеличится...

Это сообщение отредактировал(а) Lazin - 5.6.2009, 08:44
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 5.6.2009, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения




Цитата(Lazin @  5.6.2009,  08:38 Найти цитируемый пост)
можно подписывать каждый пакет цифровой подписью, в этом случае cheat.exe не сможет изменить пакет, точнее сможет, но сервер об этом узнает smile 
правда нагрузка на сервер увеличится...


Цитата(~FoX~ @  5.6.2009,  03:47 Найти цитируемый пост)
Если контрольная сумма не совпадает, то пакет аккуратно гибнет, инъекцию в пакет не засунешь....

Это все дополнительная, но не 100% защита.
а что мешает программе cheat.exe составить такой же пакет как и client.exe? client.exe это какая-то особенная программа и написана она как-то особенно? Забудем про cheat.exe, можно изменить сам client.exe внедрив в него свой код, что тогда?
Разумеется речь идет не про нелегальный ход который можно отследить на сервере а про обыкновенный. К примеру пользователь пошел налево, мы отправляем запрос "идти направо".

Цитата(MuForum @  4.6.2009,  16:25 Найти цитируемый пост)
# Вопрос: Существует ли разница в передачи данных между C++ и Assembler?

Программы написанные на С++ и на Ассемблере в итоге после компиляции становятся машинным кодом. Данные по сети передает не ваша программа а операционная система. А на каком языке вы прикажете ей передавать эти данные - абсолютно не важно.

Цитата(MuForum @  4.6.2009,  16:25 Найти цитируемый пост)
Людей, которым не интересно, прошу не разводить балаган как это произошло на WASM'е, а просто покинуть тему!

а почему тема в разделе Флейм?

Цитата(CompWorm @  4.6.2009,  20:07 Найти цитируемый пост)
то что парниша знает асм это конечно похвально

Сейчас ассемблер практически во всех институтах на факультетах хоть как-то связанных с IT в обязательном порядке проходят и каждый кто хоть раз в жизни написал
mov ah, 16h
стал считать себя специалистом по ассемблеру. 99% считающих что они знают ассемблер, нихрена на самом деле не знают.

Это сообщение отредактировал(а) azesmcar - 5.6.2009, 09:19
PM   Вверх
CompWorm
Дата 5.6.2009, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /




Цитата(azesmcar @  5.6.2009,  08:55 Найти цитируемый пост)
стал считать себя специалистом по ассемблеру. 99% считающих что они знают ассемблер, нихрена на самом деле не знают.

ха ха))) прикинь его оппонент - чингачгук ))) шутка. smile 

Цитата(Lazin @  5.6.2009,  08:38 Найти цитируемый пост)
можно подписывать каждый пакет цифровой подписью

Цитата(Lazin @  5.6.2009,  08:38 Найти цитируемый пост)
правда нагрузка на сервер увеличится...


Цитата(CompWorm @  4.6.2009,  20:07 Найти цитируемый пост)
на ум приходит только индексация пакетов.

Цитата(CompWorm @  4.6.2009,  20:07 Найти цитируемый пост)
но мне кажется, что это лишние тормоза 

ну криво я мысли излагаю, что поделаешь smile 


--------------------
PM MAIL   Вверх
azesmcar
Дата 5.6.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения




CompWorm

Такова реальность. Когда я принимал собеседования, в 90 из 100 резюме которые мы получили, язык ассемблер был упомянут.

PM   Вверх
CompWorm
Дата 5.6.2009, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /




azesmcar
ок, учту на будущее и не стану пополнять ряды выскочек)) 
не буду в своем резюме говорить, что у меня дома валяется одна недочитанная книжка по ассемблеру)))))

Добавлено через 1 минуту и 57 секунд
думаю, у них как и у меня, эта книжка давно стала подставкой для кофя


--------------------
PM MAIL   Вверх
MuForum
Дата 5.6.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев




Цитата(Lazin @ 5.6.2009,  08:38)
можно подписывать каждый пакет цифровой подписью, в этом случае cheat.exe не сможет изменить пакет, точнее сможет, но сервер об этом узнает smile 
правда нагрузка на сервер увеличится...

Собственно я так и сделал, использую для ЭЦП - RSA, а для основного трафика блочный/симметричный алгоритм шифрования. Но вопрос не так задавался =)
- С методами шифрования и т.д. я знаком, об этом не имеет смысл писать.
- Меня интересует конкретно вопрос заданный мною в первом сообщении.


Цитата(~FoX~ @ 5.6.2009,  03:47)
Цитата(MuForum @  4.6.2009,  20:38 Найти цитируемый пост)
А если внутренняя структура игрового пакета правильная, то, как ты можешь отследить на стороне сервера, действительно ли персонаж сделал шаг, или это искусственно созданное действие!!!
 В проинципе этим матиматика гамы занимается....
Но если со стороны именно модели ОСИ смотреть, то во первых на представительском уровне - это ловица (не всегда) , а во вторых есть понятие "контрольной суммы" .....Если контрольная сумма не совпадает, то пакет аккуратно гибнет, инъекцию в пакет не засунешь....Придется весь пакет переваривать, а это отловит математика гамы, сервера, клиента, etc....

Хм, интересно. Можете написать какие-то слова-тэги, по которым можно будет найти нужную информацию и почитать.

На сколько я знаю, "контрольная сумма" пакет будет изменяться при изменение самого пакета, а если отправляется искусственно созданный пакет - "шаг влево", то как это отследить, если пакет этот отправляется из основного потока/сокета. На стороне сервера я воспринимаю этот пакет как от программы client.exe
- Суть в том, что на стороне сервера ни как не получается отследить, полученный пакет от клиента - искусственно созданный, или нет. (С учётом, что структура игрового пакета полностью правильная)


Цитата(azesmcar)

...
а что мешает программе cheat.exe составить такой же пакет как и client.exe? client.exe это какая-то особенная программа и написана она как-то особенно? Забудем про cheat.exe, можно изменить сам client.exe внедрив в него свой код, что тогда?
...

Я забыл упомянуть, что в данном случае, рассматривается ситуация, когда внутренний код программы client.exe не изменяется.
Рассматриваем ситуацию, когда перехватываются функции приёма/отправки данных/пакетов через WinSock. (То есть, своеобразный варианты прокси-серверов, инжектов и т.д.)
Как я уже упомянул выше, то задача упирается в следующее...
Допустим я злоумышленник. Я знаю внутреннюю структуру игровых пакетов. Я знаю, что отправив определённый пакет, персонаж делает шаг влево. Я внедряюсь в основной поток/сокет передачи данных, и в какой-то из моментов отправляю искусственный пакет о том, что персонаж делает шаг влево. Сервер этот пакет приймёт без проблем и обработает, так как структура заголовка TCP/IP пакета нарушена не будет, и структура игрового пакета тоже будет правильная. Так же, пакет пришел из основного потока/сокета клиента, а следовательно идентификатор сокета тот же!

Это сообщение отредактировал(а) MuForum - 5.6.2009, 15:07


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.1639 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.