ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Упрощенный string replace |

12.02.2009, 02:12
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Упрощенный string replace
Пользовательская функция replace для которой нужны только 3 параметра - (исходный текст, найтичто, заменитьчем)
Написал вот такой реплейсер т.к. встроенный в C++ для меня не неудобен.
Обновлённая версия
Последний раз редактировалось rudvil; 25.02.2010 в 15:10..
|
|
|
Time Before End Of Para 1.0 beta |

04.10.2009, 21:55
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Time Before End Of Para 1.0 beta
Выходные скукота, решил доделать свою идею, которая появилась у меня в начале семестра. А именно, разработать программу, которая показывала бы время до окончания пары. Встречаем! >>> Time Before End Of Para 1.0 beta- Программа компактна и весит всего 4 096 байт (писал на Си WinAPI, т. к версию под FASM было очень муторно отлаживать).
- Открытый исходный код.
- Не жрет память и автоматически настраивает таймер обновления времени.
- Имеет файл конфигурации!
Особо её не тестировал отсюда приставка beta. Найдете глюки пишите исправим.
|
|
|
Bruteforce MMP / брут паролей сервиса mail.ru |

26.01.2010, 00:45
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Bruteforce MMP / брут паролей сервиса mail.ru
> intro
Посмотрел сейчас сюжет про linux, про идеи open source (лиценцию GNU GPL) и решил опубликовать исходники.
// тему создавал отдельную, но тут и обсуждать не чего. Пусть хоть исходник потеряется в сабжах нужной темы
> WARNING
Перед тем как компилировать исходники, настоятельно рекомендую прочесть статью 272 часть 2 (до пяти лет) и статью 138 УК РФ (до трёх лет)
- about
Функция генерация пароля взята из статьи " Циклический инкремент паролей", собственно каркас TCP/IP клиента у Криса Касперски, а идеи построения нормального сетевого приложения вычитаны у Йона Снейдера
Клиент MMP собственно мой... многопоточность достигается путем открытия сразу N сокетов, которые в дальнейшем живут своей жизнью.
+ test
При тестировании на скорости ~256 кб/c один сокет проверяет 4 пароля в секунду... 4 сокета соответственно 16 (думаю можно и больше не проверял). Приблизительно через 10 минут сервер попросту закрывает все соединения с данного IP (ну я так думаю, потому что помогает переподключение к инету).
--==[ СОРЦЫ Bruteforce MMP ]==---
|
|
|

10.02.2010, 00:06
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
Flash grabber by Gar|k
Размер exe - 3.5 Кб
Язык - winAPI
Разрабатывалась для успешной сдачи сесси, препод зажал лекции в электронке
Фишки:
- Копирует скрытые файлы
- Не нужно прав администратора
- Небольшая нагрузка на процессор
- Копирует только файлы определенного формата, пропуская уже скопированные файлы
- Запоминает уже копированные флешки по серийному номеру и запускает повторное сканирование ЭТОЙ только через сутки.
Подробнее о релизе смотреть тут - ИСХОДНИК, EXE
Скомпиленная версия держит форматы doc,docx,ppt,pptx,rtf - все это легко правится из исходника + я предоставил проект vs2008 со всеми настройками
|
|
|

26.03.2010, 02:46
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
base64_encode [C]
Сейчас для HTTP аутентификации понадобилось... Может кому ещё пригодится.
написано с помощью...
Код:
// base64 by Gar|k
//#define B64_DEF_LINE_SIZE 72
//#define B64_MIN_LINE_SIZE 4
// buf - строка для кодирования
// sizebuf - размер строки
// rez - буффер для результата
// функция возвращает размер полученого хеша
int base64_encode(char *buf,int sizebuf,char *rez,int linesize)
{
static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
unsigned char in[3], out[4];
int i, len, blocksout=0,count=0;
while(count!=sizebuf)
{
len = 0;
for( i = 0; i < 3; i++ )
{
if( count!=sizebuf )
{ in[i] = (unsigned char)*buf++; count++; len++; }
else in[i] = 0;
}
if( len )
{
out[0] = cb64[ in[0] >> 2 ];
out[1] = cb64[ ((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4) ];
out[2] = (unsigned char) (len > 1 ? cb64[ ((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6) ] : '=');
out[3] = (unsigned char) (len > 2 ? cb64[ in[2] & 0x3f ] : '=');
memcpy(rez,out,4); rez+=4;
blocksout++;
}
if( blocksout >= (linesize/4) || count==sizebuf ) blocksout = 0;
}
*rez++=0;
return count;
}
Последний раз редактировалось Gar|k; 26.03.2010 в 03:01..
|
|
|

18.04.2010, 23:32
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
MD5 на основе Crypto API
Понадобилось генерировать 128-ми битные ключи для RC4 шифрования, вспомнил про MD5.
вариант с использованием динамически выделяемой памяти
Код:
#include <wincrypt.h>
// на выходе адрес буфера 16 байтного хеша
// после использования выполни VirtualFree(LPVOID lpAddress,0,MEM_RELEASE);
unsigned char *md5(unsigned char *string,DWORD count)
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
unsigned char *hash_value;
// Инициализация контекста криптопровайдера
if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
{
// Cоздание хеш-объекта
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
// Передача хешируемых данных хэш-объекту.
if (CryptHashData(hHash, string, count, 0))
{
// Получение хеш-значения
count = 0;
if (CryptGetHashParam(hHash, HP_HASHVAL, NULL, &count, 0))
{
hash_value=(unsigned char *)VirtualAlloc(NULL,count,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
if (CryptGetHashParam(hHash, HP_HASHVAL, hash_value, &count, 0))
{
return hash_value;
}
}
}
}
}
return NULL;
}
но хеш-то всегда 16 байт поэтому можно оптимизировать так
Код:
// hash_value указатель на >=16 байтный буфер (напр. char hash[16];)
BOOL md5(unsigned char *hash_value,unsigned char *string,DWORD count)
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
// Инициализация контекста криптопровайдера
if (CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0))
{
// Cоздание хеш-объекта
if (CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash))
{
// Передача хешируемых данных хэш-объекту.
if (CryptHashData(hHash, string, count, 0))
{
// Получение хеш-значения
count = 16;
if (CryptGetHashParam(hHash, HP_HASHVAL, hash_value, &count, 0)) return TRUE;
}
}
}
return FALSE;
}
Последний раз редактировалось Gar|k; 19.04.2010 в 00:14..
Причина: хммм а нафига динамически выделять...
|
|
|

21.02.2009, 23:37
|
|
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
Длинная арифметика
программа для считивания, вывода и сравнения двух длинних положительных числел
pascal:
Код:
program crypt_lab1;
uses
crt;
const
MaxDig = 1000; { максимальное количество цифр }
Osn = 10000; { основание нашей системы счисления }
type
TLong = array[0..MaxDig] of integer;
{ считивание длинного числа с файла }
procedure ReadLong(filename :string; var a:TLong);
var i :integer;
F :text;
ch :char;
begin
for i:=0 to MaxDig do a[i]:=0;
a[0]:=1;
assign(F, filename);
reset(F);
while not eof(F) do begin
read(F,ch);
for i:=a[0] downto 1 do begin
a[i+1] := a[i+1] + ( longint(a[i]) *10) div Osn;
a[i] := ( longint(a[i]) *10) mod Osn;
end;
{val(ch,temp,temp); a[1] := a[1] + temp;}
a[1] := a[1] + ord(ch) - ord('0');
if (a[a[0]+1]>0) then inc(a[0]);
end;
close(F);
end;
{ вывод длинного числа на экран из массива}
procedure WriteLong(var a :TLong);
var ls,s:string; i:integer;
begin
str( Osn div 10, ls);
write(a[a[0]]); {starwa cufra}
for i:=a[0] - 1 downto 1 do begin
str(a[i], s);
while length(s)<length(ls) do
s:='0'+s;
write(s);
end;
writeln;
end;
{ сравнения двох дл. чисел: a == b }
function Eq(a,b :TLong):boolean;
var
i:integer;
begin
Eq := false;
if ( a[0]<>b[0] ) then exit;
{ a[0] == b[0] }
for i:=1 to a[0] do
if (a[i] = b[i]) then
Eq := i = a[0];
end;
{ сравнения двох дл. чисел: a > b }
function More(a,b :TLong):boolean;
var i :integer;
begin
if ( a[0]>b[0] ) then More:=true else
More:=false;
for i:=a[0] downto 1 do
if (a[i]<>b[i]) then
begin
if (a[i]>b[i]) then More:=true else More:=false;
break;
end;
end;
{ сравнения двох дл. чисел: a > b }
function Less(a,b :TLong):boolean;
var i :integer;
begin
Less := Not(More(a, b) Or Eq(a, b))
end;
{ сравнения двох дл. чисел: a >= b }
function More_Eq(a, b : TLong) : boolean;
begin
More_Eq := More(a, b) Or Eq(a, b)
end;
{ сравнения двох дл. чисел: a <= b }
function Less_Eq(a, b : TLong) : boolean;
begin
Less_Eq := Not More(a, b)
end;
{ сложения двух длинних чисел: a + b }
procedure Sum2Long(var a,b :TLong; var c :TLong);
var i,k:integer;
begin
for i:=0 to MaxDig do { aHaJlor: }
c[i] := 0; { fillchar(c, sizeof(c), 0); }
if a[0]>b[0] then k:=a[0] else k:=b[0];
for i:=1 to k do begin
c[i+1] := (c[i] + a[i] + b[i]) div osn;
c[i] := (c[i] + a[i] + b[i]) mod osn;
end;
if (c[k+1] = 0) then c[0]:=k else c[0] := k+1;
end;
var
a,b,c :TLong;
i :integer;
begin
clrscr;
ReadLong('num1.txt',a);
ReadLong('num2.txt',b);
write('a = '); WriteLong(a);
write('b = '); WriteLong(b);
Sum2Long(a,b,c);
write('a+b = '); WriteLong(c);
writeln( 'a > b ', More(a,b) );
writeln( 'b > a ', More(b,a) );
writeln( 'c > b ', More(c,b) );
writeln( 'c > a ', More(c,a) );
readln;
end.
пример входних данных:
num1.txt: 102030405060708090
num2.txt: 11222333444455555666666777777888888899
|
|
|

22.02.2009, 10:19
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
Парсинг гугла
Парсинг гугла на ссылки.
Используемый язык - C#
Пример использования:
PHP код:
void Button1Click(object sender, EventArgs e)
{
var g = new Google(textBox1.Text) {LinksCount = 100};
var result = new List<string>();
while(g.Read())
{
var tmp = g.GetResult();
foreach(var s in tmp)
{
result.Add(s);
}
}
if (checkBox1.Checked)
{
result = result.Distinct().ToList();
}
foreach(var s in result)
{
textBox2.Text += s + "\r\n";
}
}
Подробнее (описание методов и полей) - https://forum.antichat.ru/showthread.php?p=1118071
пример + класс http://www.sendspace.com/file/jbwxtf
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

12.03.2009, 21:23
|
|
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
HQ9+ интерпретатор:
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var i,ii,x:integer;
s:string;
begin
ReadLn(s);
//Алгоритм работы будет повторяться, пока пользователь не введет команду exit
while s<>'exit' do begin
write('> ');
ReadLn(s);
for i:=1 to Length(S) do
case s[i] of
//Если символ равен заглавной или прописной H, вывести Hello, world!
'H':writeLn('] Hello, world!');
'h':writeLn('] Hello, world!');
'Q':writeLn(s);
//Если символ равен заглавной или прописной Q, вывести переменную S.
//Там код программы
'q':writeLn(s);
'+':Inc(x); //Если символ равен плюсу, увеличить икс.
'9':begin //Символ девять выводит стих.
writeLn('] 99 bottles of beer');
for ii:=98 downto 1 do begin
writeLn('] you take one down, pass it around,');
writeLn('] '+IntToStr(ii)+' bottles of beer on the wall');
writeLn('] ');
writeLn('] '+IntToStr(ii)+' bottles of beer');
end;
writeLn('] you take it down, pass it around,');
writeLn('] no more bottles of beer on the wall.');
end;
end;
end;
end.
Код:
> HQ++QH
Результат:
> Hello, world. HQ++QH HQ++QH Hello, world.
Последний раз редактировалось eLWAux; 12.03.2009 в 21:28..
|
|
|

22.03.2009, 23:06
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
http://ru.wikipedia.org/wiki/HQ9%2B
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|