Ответы пользователя по тегу C
  • Как сделать в программе автоматическую отправку ip в nmap?

    @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)
    ..............................................
    Ответ написан
    Комментировать
  • Как сделать в программе автоматическую отправку ip в nmap?

    @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)
    ..............................................
    Ответ написан
    Комментировать