Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
тебе же уже сказали на 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); не компилируется! помоги плз.
|
|
|