rendered paste body#include <stdio.h>#include <stdlib.h>char *arp_lookup(char *target) { FILE *fp; int i = 0, ii = 0, itsamac = 0, go = 0; char mac[20], ip[20], c; if((fp = fopen("/proc/net/arp", "r")) <= 0) { fprintf(stderr, "[-] Couldn't open the arp table\n"); exit(-1); } /* Rid us of the preliminary line */ while((c=fgetc(fp)) != EOF) { if(c == '\n' || c == '\r') break; } if(c == EOF) fprintf(stderr, "[-] No addresses found?"); while(1) { i=0; // get ip while((c=fgetc(fp)) != EOF && !isspace(c) && c != '\n') { // printf("%c", c); if(c == '\0') continue; ++i; ip[i] = c; } ip[i+1]='\0'; if(c == EOF) { break; // thats all folks } if(c == '\n') { i=0; continue; } // get mac i=0; while((c=fgetc(fp)) != EOF && c != '\n') { if(isspace(c)) continue; i=0; if(c == '0') { ++i; mac[i]=c; ++i; c = fgetc(fp); mac[i] = c; c = fgetc(fp); ++i; if(c == ':') { mac[i]=c; for(ii=0;ii<14;ii++) { ++i; c=fgetc(fp); mac[i]=c; } while(1) {if((c=fgetc(fp)) == '\n' || c == EOF) break; } break; } else { i=0; } } } // Get mac mac[i+1] = '\0'; printf("ip:%s\n", ip); printf("mac:%s\n", mac); } // infinite loop}int main(int argc, char **argv) { char *mac; mac = arp_lookup("192.168.1.1"); printf("192.168.1.1 is at %s\n", mac);}