информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медГде водятся OGRыПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
тебе же уже сказали на uinc.ru , что проблема не в С,а в том как ты на нем программируешь 02.09.02 23:38  Число просмотров: 1031
Автор: SINоptiK Статус: Незарегистрированный пользователь
<"чистая" ссылка>
<programming>
[C++] проблема с С++ 02.09.02 20:01  
Автор: Fjodor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Вот написал я тут свой порт сканер на С с возможностью сканить диапозоны ИП адресов.
Но работает прога очень глючно! Сканит только первый хост, а потом другие несканит. В программе для хитрости использавана функция sprintf(). А может дело в gcc 2.95.3-19?
Помогите пожалуйста, вот исходник.

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <malloc.h>

int sec = 0;
int main(int argc, char *argv[])
{
int i;
int i1=atoi(argv[2]);
int i2=atoi(argv[3]);
char *buffer;
int sock;
int sock2;
struct sockaddr_in win1, ssh, rpc, addr, nix;
if(argc!=4)
{
printf("inncorect usage of the programm. Usage is ./scannner ip-address\n");
exit(1);
}
printf("Starting WMD port scanner v1.01beta. Made by Bedman. Good Luck to You!\n");
for(i=i1; i<=i2; i++){
sock2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
sprintf(buffer, "%s%d", argv[1], i);
printf("Scaning %s\n", buffer);
win1.sin_family = AF_INET;
win1.sin_addr.s_addr = inet_addr(buffer);
win1.sin_port = htons(138);
rpc.sin_family = AF_INET;
rpc.sin_addr.s_addr = inet_addr(buffer);
rpc.sin_port = htons(111);
ssh.sin_family = AF_INET;
ssh.sin_addr.s_addr = inet_addr(buffer);
ssh.sin_port = htons(22);
nix.sin_family = AF_INET;
nix.sin_addr.s_addr = inet_addr(buffer);
nix.sin_port = htons(23);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(buffer);

printf("Open ports:\n");
for(sec=0; sec<=65535; sec++)
{
addr.sin_port = htons(sec); /*??????????? ????? ????? */
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) == 0)
{
printf("open port %d\n", sec);
}
}
}
}
тебе же уже сказали на uinc.ru , что проблема не в С,а в том как ты на нем программируешь 02.09.02 23:38  
Автор: SINоptiK Статус: Незарегистрированный пользователь
<"чистая" ссылка>
off 03.09.02 00:01  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Сходил по этой ссылочки, темки там ничего, интересные.
Но багтрак лучше ! :))) Красивей, удобней, да и народу тут побольше (и флейма тоже) :)))
это ты про uinc.ru :-) ? 03.09.02 20:44  
Автор: SINоptiK Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ой, мать ;))) 02.09.02 22:58  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
1. Хоть бы написал что в каком параметре передаешь.
2. Это, типа, что ?:
for(i=i1; i<=i2; i++){
sprintf(buffer, "%s%d", argv[1], i);
win1.sin_addr.s_addr = inet_addr(buffer);

По коду можно понять только так:
арг[1] = 10.10.10.
а потом присобачиваешь последнюю цифирю IP адреса ?

3. Совсем не ясно нафига ны заполняешь структуры ssh, rpc, win1... если все равно их нигде не используешь.

4. Ну и последняя классичиская бага:
for(sec=0; sec<=65535; sec++)
if(connect(sock, (struct sockaddr*)&addr, sizeof(addr))

Ресурсы за тебя Пушкин освобождать будет ? Операционка у тебя не резиновая, однако.



> Вот написал я тут свой порт сканер на С с возможностью
> сканить диапозоны ИП адресов.
> Но работает прога очень глючно! Сканит только первый хост,
> а потом другие несканит. В программе для хитрости
> использавана функция sprintf(). А может дело в gcc
> 2.95.3-19?
> Помогите пожалуйста, вот исходник.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <malloc.h>
>
> int sec = 0;
> int main(int argc, char *argv[])
> {
> int i;
> int i1=atoi(argv[2]);
> int i2=atoi(argv[3]);
> char *buffer;
> int sock;
> int sock2;
> struct sockaddr_in win1, ssh, rpc, addr, nix;
> if(argc!=4)
> {
> printf("inncorect usage of the programm. Usage is
> ./scannner ip-address\n");
> exit(1);
> }
> printf("Starting WMD port scanner v1.01beta. Made by
> Bedman. Good Luck to You!\n");
> for(i=i1; i<=i2; i++){
> sock2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
> sprintf(buffer, "%s%d", argv[1], i);
> printf("Scaning %s\n", buffer);
> win1.sin_family = AF_INET;
> win1.sin_addr.s_addr = inet_addr(buffer);
> win1.sin_port = htons(138);
> rpc.sin_family = AF_INET;
> rpc.sin_addr.s_addr = inet_addr(buffer);
> rpc.sin_port = htons(111);
> ssh.sin_family = AF_INET;
> ssh.sin_addr.s_addr = inet_addr(buffer);
> ssh.sin_port = htons(22);
> nix.sin_family = AF_INET;
> nix.sin_addr.s_addr = inet_addr(buffer);
> nix.sin_port = htons(23);
> addr.sin_family = AF_INET;
> addr.sin_addr.s_addr = inet_addr(buffer);
>
> printf("Open ports:\n");
> for(sec=0; sec<=65535; sec++)
> {
> addr.sin_port = htons(sec); /*??????????? ????? ????? */
> sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
> if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) ==
> 0)
> {
> printf("open port %d\n", sec);
> }
> }
> }
> }
[C++] ой, мать ;))) 03.09.02 19:56  
Автор: Fjodor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> 1. Хоть бы написал что в каком параметре передаешь.
> 2. Это, типа, что ?:
> for(i=i1; i<=i2; i++){
> sprintf(buffer, "%s%d", argv[1], i);
> win1.sin_addr.s_addr = inet_addr(buffer);
>
> По коду можно понять только так:
> арг[1] = 10.10.10.
> а потом присобачиваешь последнюю цифирю IP адреса ?
>
> 3. Совсем не ясно нафига ны заполняешь структуры ssh, rpc,
> win1... если все равно их нигде не используешь.
>
> 4. Ну и последняя классичиская бага:
> for(sec=0; sec<=65535; sec++)
> if(connect(sock, (struct sockaddr*)&addr, sizeof(addr))
>
> Ресурсы за тебя Пушкин освобождать будет ? Операционка у
> тебя не резиновая, однако.
>
>
>
> > Вот написал я тут свой порт сканер на С с возможностью
> > сканить диапозоны ИП адресов.
> > Но работает прога очень глючно! Сканит только первый
> хост,
> > а потом другие несканит. В программе для хитрости
> > использавана функция sprintf(). А может дело в gcc
> > 2.95.3-19?
> > Помогите пожалуйста, вот исходник.
> >
> > #include <stdio.h>
> > #include <stdlib.h>
> > #include <sys/socket.h>
> > #include <netinet/in.h>
> > #include <malloc.h>
> >
> > int sec = 0;
> > int main(int argc, char *argv[])
> > {
> > int i;
> > int i1=atoi(argv[2]);
> > int i2=atoi(argv[3]);
> > char *buffer;
> > int sock;
> > int sock2;
> > struct sockaddr_in win1, ssh, rpc, addr, nix;
> > if(argc!=4)
> > {
> > printf("inncorect usage of the programm. Usage is
> > ./scannner ip-address\n");
> > exit(1);
> > }
> > printf("Starting WMD port scanner v1.01beta. Made by
> > Bedman. Good Luck to You!\n");
> > for(i=i1; i<=i2; i++){
> > sock2 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
> > sprintf(buffer, "%s%d", argv[1], i);
> > printf("Scaning %s\n", buffer);
> > win1.sin_family = AF_INET;
> > win1.sin_addr.s_addr = inet_addr(buffer);
> > win1.sin_port = htons(138);
> > rpc.sin_family = AF_INET;
> > rpc.sin_addr.s_addr = inet_addr(buffer);
> > rpc.sin_port = htons(111);
> > ssh.sin_family = AF_INET;
> > ssh.sin_addr.s_addr = inet_addr(buffer);
> > ssh.sin_port = htons(22);
> > nix.sin_family = AF_INET;
> > nix.sin_addr.s_addr = inet_addr(buffer);
> > nix.sin_port = htons(23);
> > addr.sin_family = AF_INET;
> > addr.sin_addr.s_addr = inet_addr(buffer);
> >
> > printf("Open ports:\n");
> > for(sec=0; sec<=65535; sec++)
> > {
> > addr.sin_port = htons(sec); /*??????????? ????? ?????
> */
> > sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
> > if(connect(sock, (struct sockaddr*)&addr,
> sizeof(addr)) ==
> > 0)
> > {
> > printf("open port %d\n", sec);
> > }
> > }
> > }
> > }

Да ты прав, я использую спринтф для склеивания ИП адреса, есть другой способ? но как выделить память под массивы?sec=malloc(10000); не компилируется! помоги плз.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach