Batignolles
@Batignolles

Как сделать в программе автоматическую отправку ip в nmap?

Доброго времени суток) Пишу программку на C, с помощью команды system() отправляю команды в командную строку. Известно, что такая команда выведет мой IP:
ifconfig | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1}'


Далее мне нужно выполнить команду nmap -sP X/24 - где вместо X - IP, полученный выше.
Вопрос: как сделать так, чтобы программа после нахождения IP адреса сама подставляла его в команду nmap -sP X/24 ?
  • Вопрос задан
  • 2618 просмотров
Решения вопроса 1
@BALLIA_HATALLIA
#include <stdlib.h>


int main()
{
   system("nmap -sP `ifconfig eth0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1}'`/24");
   return 0;
}


Запрос bash отличается от твоего указанием интерфейса для ifconfig.

root@hamanager bash_c # cat test3.c
#include <stdlib.h>

int main()
{
   system("nmap -sP `ifconfig eth0 | grep inet | grep -v inet6 | grep -v 127.0.0.1 | cut -d: -f2 | awk '{printf $1}'`/24");
   return 0;
}

root@hamanager bash_c # gcc -o atest1 test3.c
root@hamanager bash_c # ./atest1

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2014-03-08 02:21 MSK
Host 10.10.8.1 appears to be up.
MAC Address: 00:1B:21:17:0F:41 (Unknown)
Host 10.10.8.2 appears to be up.
MAC Address: 00:1B:21:17:0F:DE (Unknown)
..............................................
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
icelaba
@icelaba
Знаю и умею всё
пример
X=1
echo $X
сделайте по аналогии

или более подробно если не знаете как вывод команды положить в переменную
OUTPUT=$(ls -1)
echo "$OUTPUT"
Ответ написан
@BALLIA_HATALLIA
P.S. Как правило лучше заворачивать слои по возрастанию (С в Bash а не наоборот).

C Код формирует IP интерфейсов на выходе.

root@hamanager bash_c # cat test5.c
#include <stdio.h>
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>

int main (int argc, const char * argv[]) {
    struct ifaddrs * ifAddrStruct=NULL;
    struct ifaddrs * ifa=NULL;
    void * tmpAddrPtr=NULL;

    getifaddrs(&ifAddrStruct);

    for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) {
        if (ifa ->ifa_addr->sa_family==AF_INET) { // check it is IP4
            // is a valid IP4 Address
            tmpAddrPtr=&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr;
            char addressBuffer[INET_ADDRSTRLEN];
            inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
            printf("%s_IPv4 %s\n", ifa->ifa_name, addressBuffer);
        } else if (ifa->ifa_addr->sa_family==AF_INET6) { // check it is IP6
            // is a valid IP6 Address
            tmpAddrPtr=&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr;
            char addressBuffer[INET6_ADDRSTRLEN];
            inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
            printf("%s_IPv6 %s\n", ifa->ifa_name, addressBuffer);
        }
    }
    if (ifAddrStruct!=NULL) freeifaddrs(ifAddrStruct);
    return 0;
}


Компилим:

root@hamanager bash_c # gcc -o ztest1 test5.c

Тестим:

root@hamanager bash_c # ./ztest1
lo_IPv4 127.0.0.1
eth0_IPv4 10.10.8.60
eth1_IPv4 10.10.4.60
lo_IPv6 ::1
eth0_IPv6 fe80::20c:29ff:feb2:da9


Заворачиваем С бинарь в баш с указанием нужного интерфейса:

root@hamanager bash_c # cat zbash.sh
#!/bin/bash
nmap -sP `./ztest1|grep eth0_IPv4|awk {'print $2'}`/24


Получаем конечный результат идентичный ответу выше:

root@hamanager bash_c # ./zbash.sh

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2014-03-08 03:06 MSK
Host 10.10.8.1 appears to be up.
MAC Address: 00:1B:21:17:0F:41 (Unknown)
Host 10.10.8.2 appears to be up.
MAC Address: 00:1B:21:17:0F:DE (Unknown)
..............................................
Ответ написан
Комментировать
@ArturProsto
в С не силён. но попробуй результат записывать в файл. после средствами С считывать этот ип в переменную и удалять за собой файл .
Ответ написан
Комментировать
ntip
@ntip
оружие майнера х=)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы