ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

08.03.2009, 20:25
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
jawbreaker
прошу прощения за мою тупость, но что-то не могу найти тип byte.
И как вы себе представляете себе получения значения?
это же получится что-то такое:
struct ip {
byte ip1,ip2,ip3,ip4;
}
ip s1;
допустим дальше я хочу передать это в функцию - как это так получится?
|
|
|

08.03.2009, 21:21
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Glazz
В Visual C++ и вправду нет byte, так что извиняюсь. Из того что есть я бы использовал unsigned __int8. А структуру можно передавать в функцию так же как и число, строчку и тп. Написал тут пример:
Код:
#include <iostream>
using namespace std;
struct ip
{
unsigned __int8 ip1,ip2,ip3,ip4;
};
void foo(ip & tmp) // & означает передачу по ссылке
{
tmp.ip1 = 1;
tmp.ip2 = 2;
tmp.ip3 = 3;
tmp.ip4 = 4;
}
void show_ip(ip cur)
{
cout << (int)cur.ip1 << "." << (int)cur.ip2 << "." << (int)cur.ip3 << "." << (int)cur.ip4;
}
int main()
{
ip my;
foo(my);
show_ip(my);
cin.get();
return 0;
}
Последний раз редактировалось jawbreaker; 08.03.2009 в 21:24..
|
|
|

08.03.2009, 21:29
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
я юзаю Dev-Cpp.
а если я допустим хочу заполнять sockaddr_in ?
addr.sin_addr.s_addr=inet_addr(IP);
|
|
|

08.03.2009, 21:40
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Структура in_addr содержит поле s_addr. Этому полю можно присвоить 32х битное значение IP адреса. Для перевода адреса в целое число из строкового представления можно воспользоваться функцией inet_addr, которой в качестве аргумента передается указатель на строку содержащую IP адрес в виде четырех десятичных чисел разделенных точками. Можно, также, воспользоваться одной из следующих констант:
INADDR_ANY
все адреса локального хоста (0.0.0.0);
INADDR_LOOPBACK
адрес loopback интерфейса (127.0.0.1);
INADDR_BROADCAST
широковещательный адрес (255.255.255.255).
Так должно работать:
Код:
unsigned long adr1;
adr1=inet_addr("124.23.45.67");
|
|
|

08.03.2009, 22:23
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
А вот мне допустим нужно прогнать весь мой сегмент через inet_add(); ( допустим он 10.0.0.128 - 255). Это же нужно тогда как то инкрементировать ип :\ ну т.е. чтоб был inet_addr("10.0.0.130") .... inet_addr("10.0.0.145"); ... не писать же вручную так все ипы + они могут быть разными.
|
|
|

08.03.2009, 22:46
|
|
Познающий
Регистрация: 02.05.2006
Сообщений: 44
Провел на форуме: 122127
Репутация:
9
|
|
Просьба написать статью как Создать кейлоггер, что надо знать где начинать
|
|
|

08.03.2009, 22:50
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Glazz
я бы завёл 4 числа и прибавлял как тебе нужно:
Код:
char buf[20];
int a, b, c, d;
sprintf(buf, "%d.%d.%d.%d", a, b, c, d);
собственно в buf и содержится ip адрес
|
|
|

08.03.2009, 22:50
|
|
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме: 548128
Репутация:
104
|
|
храни адреса в инте, а чтоб пройтись по диапазону можно так
Код:
int ip = 2130706433; //127.0.0.1
for(i = 0; i < 100; i++)
sin.sin_addr.s_addr = htonl(ip + i);
на каждом шаге цикла ты будешь получать инкрементированый адрес от 127.0.0.1 до 127.0.0.100
если хочешь прибавлять во второй октет то сдвинь i на 1 байт в лево (i <= 1  и так далее
|
|
|

08.03.2009, 23:52
|
|
Познающий
Регистрация: 23.09.2007
Сообщений: 75
Провел на форуме: 938032
Репутация:
86
|
|
Сообщение от CHIP:))
Вобщем у меня небольшая проблемка, надо разобрать большой файл, обьемом около 500к строк с данными ГПС. В файле строки
$GPRMC,153255,A,6734.2373,N,03323.8671,E,000.0,354 .3,090209,013.2,E*7A
Мне надо вытаскивать в 2 массива значения широты и долготы 6734.2373, 03323.8671. Потом с ними еще надо будет проводить кое какие математические операции, но это уже не важно, у меня проблема в разборе самой строки, вобщем никак не получается вытащить значения широт и долгот, хелпните кто может)
держи
PHP код:
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char fname[] = "abc.txt";
const char delim[] = ",";
char buff[100];
fstream in;
in.open(fname, fstream::in);
if (!in.is_open()) {
cerr << "Unable to open file " << fname << endl;
return 0;
}
char * tmp;
char * val;
double a, n;
while(in.getline(buff, sizeof(buff))) {
tmp = strtok(buff, delim);
while (tmp != NULL) {
tmp = strtok(NULL, delim);
if (!tmp) break;
if (strcmp(tmp, "A") == 0) {
val = strtok(NULL, delim);
if (val) a = atof(val);
} else if (strcmp(tmp, "N") == 0) {
val = strtok(NULL, delim);
if (val) n = atof(val);
tmp = NULL;
}
}
printf("A: %.4f, N: %.4f\n", a, n);
}
in.close();
return 0;
}
текущие значения ширины и долготы хранятся в переменных a и n. Добавление в массив уже прикрутишь сам, там ничего сложного 
|
|
|

09.03.2009, 10:09
|
|
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме: 560332
Репутация:
15
|
|
Сообщение от __mad
храни адреса в инте, а чтоб пройтись по диапазону можно так
Код:
int ip = 2130706433; //127.0.0.1
for(i = 0; i < 100; i++)
sin.sin_addr.s_addr = htonl(ip + i);
на каждом шаге цикла ты будешь получать инкрементированый адрес от 127.0.0.1 до 127.0.0.100
если хочешь прибавлять во второй октет то сдвинь i на 1 байт в лево (i <= 1  и так далее
Идея интерсная. А такой вид ип адреса ты получил из
int ip = inet_addr("127.0.0.1") ; ?
Похоже не из inet_addr();
Последний раз редактировалось Glazz; 09.03.2009 в 11:54..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|