Алгоритм перебора ip-адресов из диапазона(С++) - Proxy-Base Community - Анонимность и безопасность в интернете.
Бесплатные прокси. Количество:
Прокси для пользователей форума (API). Количество:
Купить доступ к прокси-листам (API). Количество:
 



Информация по хайдам / репутации

(РЕКОМЕНДУЮ) №1 >>>DDos Атака<<|>>DDoS Service<<< ДДОС СЕРВИС<<|>>Заказать DDOS
Бесплатные прокси уже в Telegram
Все инфопродукты и приватная информация бесплатно
Старый 26.02.2012, 20:18   #1 (permalink)
Добрый доктор Хаус
 
Аватар для krasniy
 
Регистрация: 17.10.2009
Сообщений: 267
Member ID: 4595
ICQ 3374377

Репутация: 838
Репутация: 838
Сказал(а) спасибо: 100
Поблагодарили 370 раз(а) в 167 сообщениях
Топикстартер (автор темы) Хорошо Алгоритм перебора ip-адресов из диапазона(С++)

Представляю на общий суд метод перебора ip-адресов из диапазона.

Код:
unsigned int Proga::ip2int(QString realIp)
{
    QStringList ipoct = realIp.split(".");
    quint16 oct1 = ipoct.at(0).toInt();
    quint16 oct2 = ipoct.at(1).toInt();
    quint16 oct3 = ipoct.at(2).toInt();
    quint16 oct4 = ipoct.at(3).toInt();
    unsigned int res = oct1*16777216+oct2*65536+oct3*256+oct4;
    return res;
}

QString Proga::int2ip(unsigned int intIp)
{
    unsigned int oct1n = intIp/16777216;
    unsigned int oct2n = (intIp-oct1n*16777216)/65536;
    unsigned int oct3n = (intIp-oct1n*16777216-oct2n*65536)/256;
    unsigned int oct4n = intIp-oct1n*16777216-oct2n*65536-oct3n*256;
    QString res = "%1.%2.%3.%4";
    return res.arg(oct1n).arg(oct2n).arg(oct3n).arg(oct4n);
}
Здесь приведены два метода(есть элементы Qt) первая преобразует из IP-адреса в порядковый номер в общем пуле адресов IPv4, вторая наоборот.

Используя эти методы можно итерировать ip-адреса всего одним циклом, делая 2 преобразования, вместо 4 вложенных циклов, которые, по накладным расходам, обойдутся намного дороже.
krasniy вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Старый 27.02.2012, 00:29   #2 (permalink)
SOCKS4
 
Регистрация: 27.09.2011
Сообщений: 164
Member ID: 19312

Репутация: 119
Репутация: 119
Сказал(а) спасибо: 42
Поблагодарили 41 раз(а) в 34 сообщениях
По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

Ну и правильно, я сам так делаю
PHP код:
function UIntToIP(Addrcardinal): string;
const
 
POINT '.';
var
 
pbPByte;
 
ibyte;
begin
 Result 
:= '';

 
pb := @Addr;
 for 
:= 1 to SizeOf(Addr) do
  
begin
   Result 
:= POINT IntToStr(pb^) + Result;
   
Inc(pb);
  
end;

 
Delete(Result1Length(POINT));
end
madvet вне форума   Ответить с цитированием
Старый 27.02.2012, 00:42   #3 (permalink)
Добрый доктор Хаус
 
Аватар для krasniy
 
Регистрация: 17.10.2009
Сообщений: 267
Member ID: 4595
ICQ 3374377

Репутация: 838
Репутация: 838
Сказал(а) спасибо: 100
Поблагодарили 370 раз(а) в 167 сообщениях
Топикстартер (автор темы) По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

Только у тебя алгоритм основан на дельфийном типе byte который имеет диапазон от -255 до 255.
krasniy вне форума   Ответить с цитированием
Старый 27.02.2012, 07:18   #4 (permalink)
SOCKS4
 
Регистрация: 07.01.2010
Сообщений: 192
Member ID: 5556
ICQ 484848484

Репутация: 910
Репутация: 910
Сказал(а) спасибо: 78
Поблагодарили 398 раз(а) в 177 сообщениях
По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

Код:
function ip2int(ip:string):cardinal;//перевод ip адрес в число
var ok1,ok2,ok3,ok4:string;
begin
ok1:=copy(ip,1,pos('.',ip)-1);
delete(ip,1,length(ok1)+1);
ok2:=copy(ip,1,pos('.',ip)-1);
delete(ip,1,length(ok2)+1);
ok3:=copy(ip,1,pos('.',ip)-1);
delete(ip,1,length(ok3)+1);
ok4:=ip;
Result:=strtoint(ok1)*256*256*256+strtoint(ok2)*256*256+strtoint(ok3)*256+strtoint(ok4);
end;

function int2ip(n:cardinal):string;//перевод числа в ip адресс
var ok1,ok2,ok3,ok4:cardinal;
begin
ok1:=trunc(n/(256*256*256));
ok2:=trunc((n-ok1*(256*256*256))/(256*256));
ok3:=trunc((n-ok1*(256*256*256)-ok2*(256*256))/256);
ok4:=n-ok1*(256*256*256)-ok2*(256*256)-ok3*256;
Result:=inttostr(ok1)+'.'+inttostr(ok2)+'.'+inttostr(ok3)+'.'+inttostr(ok4);
end;
на делфи если
k0tt0d вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 27.02.2012, 10:05   #5 (permalink)
SOCKS4
 
Регистрация: 27.09.2011
Сообщений: 164
Member ID: 19312

Репутация: 119
Репутация: 119
Сказал(а) спасибо: 42
Поблагодарили 41 раз(а) в 34 сообщениях
По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

Цитата:
Сообщение от krasniy Посмотреть сообщение
Только у тебя алгоритм основан на дельфийном типе byte который имеет диапазон от -255 до 255.
В байте не может быть этот диапазон, потому что в нем всего 8 бит
madvet вне форума   Ответить с цитированием
Старый 27.02.2012, 10:28   #6 (permalink)
Добрый доктор Хаус
 
Аватар для krasniy
 
Регистрация: 17.10.2009
Сообщений: 267
Member ID: 4595
ICQ 3374377

Репутация: 838
Репутация: 838
Сказал(а) спасибо: 100
Поблагодарили 370 раз(а) в 167 сообщениях
Топикстартер (автор темы) По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

madvet, ссори забыл, что это беззнаковый тип. Конечно 8 бит и значения от 0 до 255

Последний раз редактировалось krasniy; 27.02.2012 в 11:36.
krasniy вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Старый 01.03.2012, 21:14   #7 (permalink)
SOCKS4
 
Аватар для PATCH
 
Регистрация: 17.01.2012
Адрес: Беларусь,Минск
Сообщений: 124
Member ID: 23319

Репутация: 135
Репутация: 135
Сказал(а) спасибо: 43
Поблагодарили 45 раз(а) в 29 сообщениях
По умолчанию Re: Алгоритм перебора ip-адресов из диапазона(С++)

аналог на Php с html разметкой для удобства ввода)

PHP код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Generator IP network range v0.1 </title>
</head>
<body>
<form action="GIPNR.php" method="post">
<div>стартовый ip</div>
<input name="ip_start" type="text" value="127.127.127.127" size="15" maxlength="15">
<div>конечный ip</div>
<input name="ip_end" type="text" value="127.127.127.130" size="15" maxlength="15">
<input name="generation" type="submit">
</form>

<?
set_time_limit
(0);
if(isset(
$_POST['generation']))
{
$start=$_POST['ip_start'];
$end=$_POST['ip_end'];

$long_start=ip2long($start);
$long_end=ip2long($end);

$dif=$long_end-$long_start;
echo 
"<br><br><textarea  cols='30' rows='40'>";
for(
$i=0$i<=$dif$i++)
 {echo 
long2ip($long_start+$i)."\r\n";}
echo 
"</textarea>";
}

?>
</body>
</html>
тему лучше изменить на "Алгоритм перебора ip-адресов из диапазона" т.к тут уже и на делфи и на php и на C++
__________________
Благодарен?!- клацни Спасибо.
PATCH вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интернету не хватает адресов NTR Новости IT 12 06.12.2013 17:56
База почтовых e-mail адресов chernobrovin E-mail 14 18.08.2012 08:30
Сканер открытых портов (алгоритм) ocheretko Наши проекты, статьи, релизы 0 02.10.2011 00:32
Вставка Диапазона hds Флейм 22 24.06.2011 08:40
Выбор диапазонов IP адресов romikvet Proxy SOFT 5 21.01.2011 00:54




DDoS Protected




Мы в твиттере, Proxy-Base.Org Twitter

Proxy-Base Community - Анонимность и безопасность в интернете.
Наши партнеры: CRC Labs, SEO-Crack.Com, Garsuk.Com, SED Team, Skladchik.com, BSS Family

Powered by vBulletin® | Булка сделана в пекарне®
Copyright © 2000 - , Jelsoft Enterprises Ltd. Перевод: zCarot
Вся информация на сайте выложена исключительно в ознакомительных целях.