Чтобы добавлять сообщения и комментарии, .

@melkor217:
melkor217

Вольво таки снова запилили нативный OpenGL рендер в своём движке. И оно уже в день релиза работает гораздо лучше, чем toGL.

@Spumer:
Spumer

Во-первых, сервер работает в одном потоке и не может использовать больше одного ядра. Да, можно написать аддоны, которые будут создавать потоки, может даже процессы и выносить туда свою логику, но речь идет о базовом функционале сервера, пока что он не распараллелен.

Во-вторых, исследуя траффик общения сервера и клиента игры Left 4 Dead 2, удалось выявить особый и, разумеется, недокументированный тип запроса.
Он предназначен для отображения списка серверов в главном меню и пакеты такого запроса содержат номер версии игры и текст InetSearchServerDetails. Стоит сказать, что для этого типа пакетов сервер уже реализует анти-ддос защиту: проверяет версию и следит за числом pps.
Но ситуация усугубляется тем, что для данного типа запросов нет никакого мастер-сервера. Точнее он есть, и возвращает лишь список серверов которые привязаны к Steam-группам в которых ты состоишь. И при получении такого списка клиент сразу же шлет INET_SEARCH-пакеты всем серверам.

Тем не менее, даже с кэшированием сервер тратит драгоценное время на проверку запроса и отправку ответа. Забегая вперед скажу, что полностью сняв с сервера эту обязанность мне удалось снизить задержки в игре (пинг) в 2, а то и 3 раза.

Решение достаточно простое: сервер не должен отвечать на все эти запросы. Вообще. Эту задачу можно попробовать переложить на плечи какой-нибудь службы, которая бы отвечала на весь этот флуд, изредка запрашивала актуальные данные с основного сервера, а ОСь бы грамотно распределяла ресурсы.

Но как отделить пакеты запросов инфы, от обычного обмена данными с сервером? Первой попыткой было использовать statefull firewall. Это обычный знакомый нам фаерволл, который следит за подключениями, может их маркеровать и тд. Не получилось. Вот так просто. Даже поймав пакет и отправив его куда надо (сторонней службе), фаерволл пометит соединение и все что придет с пары ip:port на пару ip:port будет отправлено туда же.
PS: Многие просто не смогут подключиться, так как клиент как правило использует тот же сокет для обмена данными, что и для запроса информации.

stateless firewall я даже не ковырял, и как я потом понял - он мне бы и не подошел.

Остался самый очевидный и как следствие - простой - способ отделить один пакет и направить куда надо. Это модуль ядра. И это сработало!
Я зарегистрировал обработчик пакетов самым первым (там можно выставлять приоритет), еще пока он обрабатывается в пределах RAW таблицы и никто его в глаза не видел. Нагло подменяю порт отправки, пересчитываю контрольную сумму и пропускаю его дальше! А дальше он проходит через воду, огонь и медные трубы и попадает прямо к службе, которая слушает нужный порт. Ответы от службы обратно транслируются и порт подменяется при отправлении.
Для простоты и удобства порты имеют жесткую связку:
27015 -> 27915
27016 -> 27916
...

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

Перспектив для развития достаточно много, можно отвечать не всем, проще управлять лимитами, детектировать атаки и собирать разного рода статистику. В общем, все что душе угодно. И главное - всё это не будет отнимать процессорного времени у сервера (игрового).

@Spumer:
Spumer

Хотелось бы сказать "по долгу службы", ан нет. Не в столь отдаленном прошлом необходимо было решить проблему с "DDoS". Это была не спланированная атака, никто не хотел причинить вред или что-то подобное. Нет. Просто слишком много людей хотело спросить сервер о его состоянии, но обо всем по порядку.

Речь идет о source-based серверах (игровых, на движке Source). При запуске такой сервер отправляет информацию о себе мастер-серверу, и уже с мастер-серевером происходит всё общение клиентов: получение списка серверов и базовая информация. Подробная инфофрмация будет запрошена напрямую. Такое общение происходит по спец. протоколу, который описан тут https://developer.valvesoftware.com/wiki/Server_queries и тут https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol

Атаковать сервер не так уж сложно, достаточно начать флудить запросами, а если еще провайдер позволяет ip-spoofing и на другой стороне нет даже rp-фильтра, то дело за малым. Проблему люди быстро научились решать кэшированием: https://forums.alliedmods.net/showthread.php?t=135543 Кэшируют конечно не всё, но ситуация стала определенно лучше. Проблема же кроется в другом, а для Left 4 Dead 2 их целых две.

@Kim:
Kim

Вот M$ выложили исходники DOS'а. Правда только DOS 2.0 и по ссылке <computerhistory.org> на исходники ошибка 503

@green:
green

Кто там что пиздел про нечитаемость перла? Исходники xCat прекрасны.

@FonMax:
FonMax

github.com

at least.

@uno:
uno

только сейчас узнал что еще в апреле Allwinner открыл сорцы ядра для своего топового проца Allwinner A31 (4 ядра Cortex A7). Молодцы, чо... Остались верны своему принципу открытости :)

@syjgin:
syjgin

Читаю описание их сервера, чтобы понять, что предстоит мне. Забавно: "Задержки сети и лаго-компенсация порождают парадоксы, выглядящие алогично в реальном мире. Например, в вас может попасть противник, которого вы уже даже не можете видеть, потому что вы уже скрылись в укрытии. Это случается потому, что сервер передвинул вас в прошлое на позицию, где вы были еще видимы. Подобные несоответствия не могут быть решены из-за относительно невысокой скорости передачи пакетов. В реальном мире вы не замечаете подобных проблем потому, что свет ("пакет с информацией") путешествует столь быстро, что все вокруг видят мир таким же, как и вы в данный момент."

@mefisteron:
mefisteron

sqlconnect or die

@CheshaNeko:
CheshaNeko

А есть какая-нибудь опен сорсная библиотека распознавания речи, что-то вроде OpenCV но для звука?

@TheKinematiX:
TheKinematiX

Исходный код Андроед 4.1 source.android.com

@Dimez:
Dimez

Если вдруг кому надо, то вот прямая ссылка на исходники, открытые самсунгом, без регистрации и sms:
opensource.samsung.com

@Dimez:
Dimez

Исходники gingerbread — 5.4Gb.

@Dimez:
Dimez

Выкачивать исходники андроида — удел сильных духом

@scame:
scame

SharedPreferences settings = getSharedPreferences(ИМЯ_РЁК, 0);
      
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);
      editor.commit();
      //Работает. Запоминает.
      settings.edit().putBoolean("silentMode", mSilentMode);
      settings.edit().commit();
      //Не работает. Не запоминает. 
      //Очевидно, почему так? Мне вот не сразу стало понятно. И возможность и реализацию второго варианта я бы  //   обсудил
//PS: ушёл искать реализацию http://is.gd/NgQL0g

@scame:
scame

*мысли Мои переводы новостей мира IT: Лицензии Office. Будущее проектов OpenOffice и LibreOffice t.co >> Весьма интересное и неопределённое положение. Я считаю, Libre нужно присоединится к oo и не пороть горячку. OO всё же раскручен уже.

@hagane:
hagane

Ну, собственно, вот и исходник, посоны: dumpz.org

@Kim:
Kim

#ifdef LISP_FEATURE_WIN32
/ touch every single page in the space to force it to be mapped. /
for (count = 0; count < bytes; count += 0x1000) {
volatile int temp = addr[count];
}
#endif

@romanu:
romanu

download.proxmox.com

@omeh2003:
omeh2003

*Die Жуйк, оцени задумку. Есть у нас один сайт созданный для студентов. Где по мимо прочего продаются различные методички и пособия для студентов. Когда открывался сайт мы наивно думали что денег с их продажи хватит на поддержку и развитие :) В общем пришли мы к выводу что пользы от бесплатного распространения будет больше. Вот думаем как красивее и с пользой это обернуть. Пока всего одна мысль. Если на страницу с курсами будет попадать чел с Internet Explorer то ему будет показываться окно в котором написано что он пользуется весьма нехорошим проприетарным софтом. И что если это его осознанный выбор тогда пускай и курсы покупает (раз деньги есть на вЕнду, то значит и на учебники найдутся). А если он передумал то пускай ставить свободный браузер( дать ссылки) и качает все бесплатно. Пользователи остальных браузеров попадают сразу на ссылки для скачивания. P.S. Для троллей. Идея мною подсмотрена в инете, и я это прекрасно знаю :) Не надо мне об этом

@Top4ek:
Top4ek

Погамали по сети в какой то Русский спецназ(на соурсе)... Вот люблю я мясо и угар. НЕТУ! Вот Nexuiz другое дело, ну или в 1.6 контре. Вот там ржака, там мясо и угар.

@Top4ek:
Top4ek

Разум Фримена навёл на меня ностальгию... Сижу гамаюсь в первую халву на сорсовом движке... Ретекстуризация и ресаунд присутствует. А карты тупо конвертнуты из оригинальной халвы.

@IAR:
IAR

Баркод ридер. Парсит изображения. zbar.sourceforge.net

@Oksion:
Oksion

Плиз, продолжите список, если есть данные.
wikimapia.org
kosmosnimki.ru
maps.navitel.su
bing.com
maps.google.com
maps.yandex.ru

@don-Rumata:
don-Rumata

Нашёл и качаю для коллекции сорцы 2000-й винды. Теме уже 4 года, а сиды\личи есть — 20\3. Интересно, хп и семёрку кто-нить выложит?

thepiratebay.org

@xcedz:
xcedz

code audit PHP
Filed under: (in)secure — code, how to, research — custom | Tags: $http_get_vars, $http_post_vars, $_cookie, $_GET, $_post, $_request, $_server, $_session, audit, exec, header location, include, include_once, passthru, proc_open, readfile, require, require_once, shell_exec, source code, system, virtual |

What source code audit is?
It’s a primary technique by which someone can find vulnerabilities of the website, just by inspecting the code.

Consider the following scenarios:
find a ftp service exploit and you can download the entire website in it’s unparsed form
have the source of the web application used by the website

What has to be done?
Instead of emulating the real website (setting up a webserver, database, etc) you can just start and analyze the code for common known vulnerable code.

User input
Most of the time user input is passed to the web application via requests, like:

$_GET
$_POST
$_REQUEST
$HTTP_POST_VARS
$HTTP_GET_VARS

And if register globals in php.ini are activated, user input can be retrieved via <input> names, for example the following html form:

<form name=”basic” method=”post” action=”">
<input type=”text” name=”myname”>
<input type=”text” name=”age”>
<input type=”submit” value=”age & name”<
</form>

…would create and set the following variables:

$myname=”user input”;
$age=”user input”

This request should be always searched for input validation, or xss/sql injection possibility.

Internal inclusion
As imagined I’m talking about file inclusion which could lead to lfi/rfi; the php functions that need to be exploited for a lfi/rfi attack are:

include()
include_once()
require()
require_once()
virtual()
readfile()

Not much to check here, only the parameters origins, validation…

Indirect User Input
Indirect user input? That sounds wierd, but don’t get confused about it; I’m speaking about user-agent information, http referer, cookie reading/writing/printing, session?. The all together could lead to xss/sql injection/http response splitting and why not (remote) code execution/file inclusion. Things to look for:

$_SERVER["REFERER"];
$_SERVER["HTTP_USER_AGENT"]
$_SERVER["REQUEST_URI"]
$_COOKIE
$_SESSION

Also here a non used Referer would mean CSRF ways of exploitation, keep that in mind; might come handy!

Redirections
Maybe you are not aware of this but after each header redirection there should be a script termination like exit() die(), so the following code would be vulnerable:

if($password!=$pass) { header(“Location: noadmin.php”); }

Because if the page would be requested via a telnet connection (for example) which wouldn’t understand header information, would skip the redirection phase and see the rest of the page.

Remote code execution
We already mentioned about remote code execution, but it would be better to also note the functions which should be look upon for code execution:

exec()
passthru()
proc_open()
shell_exec()
system()


The rest, the ugly, the not so common
Besides of the above mentioned vulnerabilities, which are more common, you could also check image upload scripts for proper type/extension validation, and every other shit that I can’t think of….

Go and analyze source code
I pointed out everything that you need to know before auditing PHP code, but if you think I missed something out, don’t bother thinking about it, just drop me a comment…
(http://insanesecurity.wordpress.com)

@nicestep:
nicestep

У разработчиков qutim в исходниках, ёкмакарек, ни одного! комментария. Точнее они конешно есть, но это просто закомменченные куски кода. Ребята, однако, сурово...

@sandr1x:
sandr1x

Решето! aluigi.altervista.org