информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаЗа кого нас держат?Портрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
тебе же уже сказали на uinc.ru , что проблема не в С,а в том как ты на нем программируешь 02.09.02 23:38  Число просмотров: 1113
Автор: 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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach