HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2491  
Старый 08.03.2009, 20:25
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

Репутация: 15
По умолчанию

jawbreaker
прошу прощения за мою тупость, но что-то не могу найти тип byte.
И как вы себе представляете себе получения значения?
это же получится что-то такое:
struct ip {
byte ip1,ip2,ip3,ip4;
}

ip s1;

допустим дальше я хочу передать это в функцию - как это так получится?
 
Ответить с цитированием

  #2492  
Старый 08.03.2009, 21:21
jawbreaker
Участник форума
Регистрация: 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..
 
Ответить с цитированием

  #2493  
Старый 08.03.2009, 21:29
Glazz
Участник форума
Регистрация: 09.08.2008
Сообщений: 139
Провел на форуме:
560332

Репутация: 15
По умолчанию

я юзаю Dev-Cpp.
а если я допустим хочу заполнять sockaddr_in ?
addr.sin_addr.s_addr=inet_addr(IP);
 
Ответить с цитированием

  #2494  
Старый 08.03.2009, 21:40
jawbreaker
Участник форума
Регистрация: 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");
 
Ответить с цитированием

  #2495  
Старый 08.03.2009, 22:23
Glazz
Участник форума
Регистрация: 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"); ... не писать же вручную так все ипы + они могут быть разными.
 
Ответить с цитированием

  #2496  
Старый 08.03.2009, 22:46
Tcl70
Познающий
Регистрация: 02.05.2006
Сообщений: 44
Провел на форуме:
122127

Репутация: 9
По умолчанию

Просьба написать статью как Создать кейлоггер, что надо знать где начинать
 
Ответить с цитированием

  #2497  
Старый 08.03.2009, 22:50
jawbreaker
Участник форума
Регистрация: 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 адрес
 
Ответить с цитированием

  #2498  
Старый 08.03.2009, 22:50
__mad
Участник форума
Регистрация: 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 и так далее
 
Ответить с цитированием

  #2499  
Старый 08.03.2009, 23:52
t4Nk
Познающий
Регистрация: 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(fnamefstream::in);
    
    if (!
in.is_open()) {
        
cerr << "Unable to open file " << fname << endl;
        return 
0;
    }
    
    
char tmp;
    
char val;
    
double an;
    
    while(
in.getline(buffsizeof(buff))) {
        
tmp strtok(buffdelim);
        while (
tmp != NULL) {
            
tmp strtok(NULLdelim);
            if (!
tmp) break;
            if (
strcmp(tmp"A") == 0) {
                
val strtok(NULLdelim);
                if (
valatof(val);
            } else if (
strcmp(tmp"N") == 0) {
                
val strtok(NULLdelim);
                if (
valatof(val);
                
tmp NULL;
            }
        }
        
printf("A: %.4f, N: %.4f\n"an);
    }
    
    
in.close();
    
    return 
0;

текущие значения ширины и долготы хранятся в переменных a и n. Добавление в массив уже прикрутишь сам, там ничего сложного
 
Ответить с цитированием

  #2500  
Старый 09.03.2009, 10:09
Glazz
Участник форума
Регистрация: 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..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часто задаваемые вопросы по MySQL Серый PHP 5 28.12.2006 18:26
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ