1619, 1/81 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   ÇØÅ·ÀßÇϰí½Í´Ù
   http://¾øÀ½
   realip_finder

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=8615 [º¹»ç]


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>

// »ö»ó ÄÚµå (ÇØÄ¿ °¨¼º & °¡µ¶¼º)
#define COLOR_RED     "\x1b[31m"
#define COLOR_GREEN   "\x1b[32m"
#define COLOR_YELLOW  "\x1b[33m"
#define COLOR_RESET   "\x1b[0m"

// Cloudflare IPv4 ´ë¿ª (Ãà¾àµÊ, ÇÊ¿ä½Ã ÃֽЏ®½ºÆ®·Î ¾÷µ¥ÀÌÆ®)
const char *CF_RANGES[] = {
    "173.245.48.0/20", "103.21.244.0/22", "103.22.200.0/22", "103.31.4.0/22",
    "141.101.64.0/18", "108.162.192.0/18", "190.93.240.0/20", "188.114.96.0/20",
    "197.234.240.0/22", "198.41.128.0/17", "162.158.0.0/15", "104.16.0.0/13",
    "104.24.0.0/14", "172.64.0.0/13", "131.0.72.0/22", NULL
};

// CIDR °è»ê ÇÔ¼ö
int is_ip_in_cidr(const char *ip_str, const char *cidr_str) {
    char cidr_copy[32];
    strncpy(cidr_copy, cidr_str, 31);
    char *slash = strchr(cidr_copy, '/');
    if (!slash) return 0;
    *slash = '\0';
    
    int prefix_len = atoi(slash + 1);
    struct in_addr ip_addr, net_addr;
    
    if (inet_pton(AF_INET, ip_str, &ip_addr) != 1) return 0;
    if (inet_pton(AF_INET, cidr_copy, &net_addr) != 1) return 0;
    
    uint32_t ip = ntohl(ip_addr.s_addr);
    uint32_t net = ntohl(net_addr.s_addr);
    uint32_t mask = (prefix_len == 0) ? 0 : (~0U << (32 - prefix_len));
    
    return (ip & mask) == (net & mask);
}

// Cloudflare ÆÇº° ·ÎÁ÷
int check_if_cloudflare(const char *ip) {
    for (int i = 0; CF_RANGES[i] != NULL; i++) {
        if (is_ip_in_cidr(ip, CF_RANGES[i])) return 1;
    }
    return 0;
}

// µµ¸ÞÀÎ -> IP º¯È¯ ¹× ÆÇº°
void analyze_domain(char *domain) {
    // °³Çà ¹®ÀÚ Á¦°Å
    domain[strcspn(domain, "\n")] = 0;
    
    struct addrinfo hints, *res;
    char ip_str[INET_ADDRSTRLEN];
    
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    
    if (getaddrinfo(domain, NULL, &hints, &res) != 0) {
        // DNS Á¶È¸ ½ÇÆÐ ½Ã Á¶¿ëÈ÷ ³Ñ¾î°¨ (¼Óµµ¸¦ À§ÇØ)
        return;
    }
    
    struct sockaddr_in *ipv4 = (struct sockaddr_in *)res->ai_addr;
    inet_ntop(AF_INET, &(ipv4->sin_addr), ip_str, INET_ADDRSTRLEN);
    
    if (check_if_cloudflare(ip_str)) {
        printf("[CF]   %s -> %s\n", domain, ip_str);
    } else {
        // [Áß¿ä] ¸®¾ó IP ¹ß°ß ½Ã »¡°£»ö °­Á¶ Ãâ·Â
        printf(COLOR_RED "[REAL] %s -> %s (Target Found!)" COLOR_RESET "\n", domain, ip_str);
    }
    
    freeaddrinfo(res);
}

int main(int argc, char *argv[]) {
    if (argc != 2) {
        printf("»ç¿ë¹ý: %s <target-domain>\n", argv[0]);
        return 1;
    }

    char cmd[512];
    char line[256];

    printf(COLOR_GREEN "=== Auto Real-IP Detector Started ===\n" COLOR_RESET);
    printf("Target: %s\n", argv[1]);
    printf("Scanning subdomains using 'subfinder'...\n\n");

    // 1. subfinder¸¦ ÆÄÀÌÇÁ(popen)·Î ½ÇÇà (Á¶¿ëÈ÷ ½ÇÇà: -silent ¿É¼Ç)
    // ÁÖÀÇ: ½Ã½ºÅÛ¿¡ subfinder°¡ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÔ
    snprintf(cmd, sizeof(cmd), "subfinder -d %s -silent", argv[1]);
    
    FILE *fp = popen(cmd, "r");
    if (fp == NULL) {
        perror("Subfinder ½ÇÇà ½ÇÆÐ (¼³Ä¡ È®ÀÎ ÇÊ¿ä)");
        return 1;
    }

    // 2. subfinder°¡ ¹ñ¾î³»´Â ¼­ºêµµ¸ÞÀÎÀ» ÇÑ ÁÙ¾¿ ½Ç½Ã°£À¸·Î ÀÐÀ½
    while (fgets(line, sizeof(line), fp) != NULL) {
        analyze_domain(line);
    }

    pclose(fp);
    printf(COLOR_GREEN "\n=== Scan Completed ===\n" COLOR_RESET);

    return 0;
}

  Hit : 374     Date : 2026/02/05 07:25



    
     [°øÁö] °­Á¸¦ ¿Ã¸®½Ç ¶§´Â ¸»¸Ó¸®¸¦ ´Þ¾ÆÁÖ¼¼¿ä^¤Ñ^ [29] ¸Û¸Û 02/27 21717
1618   realip_finder(asm ver)     ÇØÅ·ÀßÇϰí½Í´Ù
02/05 355
  realip_finder     ÇØÅ·ÀßÇϰí½Í´Ù
02/05 373
1616   ¸®´ª½º Ä¿³Î&¿î¿µÃ¼Á¦ °³·Ð (1)     ÇØÅ·ÀßÇϰí½Í´Ù
11/02 725
1615   stack overflow »çÀÌÆ® ¹ø¿ª     ÇØÅ·ÀßÇϰí½Í´Ù
07/09 1147
1614   [L.O.B ¿øÁ¤´ë] - troll     ÇØÅ·ÀßÇϰí½Í´Ù
07/08 1434
1613   [L.O.B ¿øÁ¤´ë] - orge     ÇØÅ·ÀßÇϰí½Í´Ù
07/07 1375
1612   [L.O.B ¿øÁ¤´ë] - darkelf     ÇØÅ·ÀßÇϰí½Í´Ù
07/07 1340
1611   [L.O.B ¿øÁ¤´ë] - wolfman     ÇØÅ·ÀßÇϰí½Í´Ù
07/03 1338
1610   [L.O.B ¿øÁ¤´ë] - orc     ÇØÅ·ÀßÇϰí½Í´Ù
07/03 1191
1609   [L.O.B ¿øÁ¤´ë] - goblin     ÇØÅ·ÀßÇϰí½Í´Ù
07/02 1357
1608   [L.O.B ¿øÁ¤´ë] - cobolt     ÇØÅ·ÀßÇϰí½Í´Ù
07/02 1556
1607   [L.O.B ¿øÁ¤´ë] - gremlin     ÇØÅ·ÀßÇϰí½Í´Ù
07/02 1253
1606   [L.O.B ¿øÁ¤´ë] - gate     ÇØÅ·ÀßÇϰí½Í´Ù
07/02 1240
1605   ARP ½ºÇªÇÎ - Part.1 -     ÇØÅ·ÀßÇϰí½Í´Ù
04/20 1814
1604   http ½º´ÏÆÛ ±¸Çö     ÇØÅ·ÀßÇϰí½Í´Ù
04/20 1579
1603   pcapÀ¸·Î ÆÐŶ ½º´ÏÆÛ ±¸ÇöÇϱ⠠   ÇØÅ·ÀßÇϰí½Í´Ù
04/20 1414
1602   ÇØÄ¿½ºÄ𠸸ȭÀÇ ÀÚµ¿À¸·Î ½ºÄµÇÏ´Â ÇÁ·Î±×·¥     ÇØÅ·ÀßÇϰí½Í´Ù
02/18 1813
1601   ½Ã½ºÅÛ ÄÝ ÃßÀû È®ÀåÆÇ[2]     ÇØÅ·ÀßÇϰí½Í´Ù
01/19 1937
1600   °£´ÜÇÑ ½Ã½ºÅÛ ÄÝ ÃßÀû ÇÁ·Î±×·¥ ¸¸µé±â     ÇØÅ·ÀßÇϰí½Í´Ù
01/18 1929
1 [2][3][4][5][6][7][8][9][10]..[81]

Copyright 1999-2026 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org