Гайд - Исходники - Софт - Sniffing Network Traffic | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Гайд Исходники Софт Sniffing Network Traffic

TexasSCAM

Сеньор
Автор темы
DEVELOPER
29 Июн 2023
191
40
28
Предоставляю вам немного отредаченный софт из паблика, вот он, полумое творение.
Написан на С. Его суть заключается в том что вы можете видеть все пакеты которые передаются по интернет трафику из подсетей.

Пишите ./netw <namefile>
и он выдает откуда исходит данный файл на сервер (отправка файла)

вот спойлер самого скрпита : 1688321525503

C:
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <netinet/ip.h>
#include <netinet/udp.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <time.h>

#define SNAP_LEN 65535
#define TIMESTAMP_SIZE 20

void packet_handler(u_char *user_data, const struct pcap_pkthdr *pkthdr, const u_char *packet) {
    struct ip *ip_header;
    struct udphdr *udp_header;
    struct tcphdr *tcp_header;
    u_int ip_len;
    time_t current_time;
    char timestamp[TIMESTAMP_SIZE];
    ip_header = (struct ip *)(packet + 14);
    ip_len = ip_header->ip_hl * 4;
    if (ip_header->ip_p == IPPROTO_UDP) {
        udp_header = (struct udphdr *)(packet + 14 + ip_len);
        printf("%s > %s > ", inet_ntoa(ip_header->ip_src), user_data);
        time(&current_time);
        strftime(timestamp, TIMESTAMP_SIZE, "%Y-%m-%d %H:%M:%S", localtime(&current_time));
        printf("%s\n", timestamp);
    } else if (ip_header->ip_p == IPPROTO_TCP) {
        tcp_header = (struct tcphdr *)(packet + 14 + ip_len);
        printf("%s > %s > ", inet_ntoa(ip_header->ip_src), user_data);
        time(&current_time);
        strftime(timestamp, TIMESTAMP_SIZE, "%Y-%m-%d %H:%M:%S", localtime(&current_time));
        printf("%s\n", timestamp);
    }
}

int main(int argc, char *argv[]) {
    char errbuf[PCAP_ERRBUF_SIZE];
    pcap_if_t *alldevs;
    pcap_if_t *dev;
    pcap_t *handle;
    struct pcap_pkthdr header;
    const u_char *packet;
    char *filename;
    if (argc != 2) {
        printf("Usage: %s <filename>\n", argv[0]);
        return 1;
    }

    filename = argv[1];

    if (pcap_findalldevs(&alldevs, errbuf) == -1) {
        printf("Error finding devices: %s\n", errbuf);
        return 1;
    }
    dev = alldevs;
    handle = pcap_open_live(dev->name, SNAP_LEN, 1, 1000, errbuf);
    if (handle == NULL) {
        printf("Error opening device %s: %s\n", dev->name, errbuf);
        pcap_freealldevs(alldevs);
        return 1;
    }
    printf("Listening on device: %s\n", dev->name);
    pcap_loop(handle, -1, packet_handler, filename);
    pcap_freealldevs(alldevs);
    pcap_close(handle);
    return 0;
}
 
Последнее редактирование:

TexasSCAM

Сеньор
Автор темы
DEVELOPER
29 Июн 2023
191
40
28
1688322005611


Скрипт для перехвата всех пакетов и сохранением их в файлы лога (которые потом можно открыть в вайршарке и подобных утилитах, ну или самому вручную)
C:
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <netinet/ip.h>
#include <netinet/udp.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <time.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>

#define SNAP_LEN 65535

void packet_handler(u_char *user_data, const struct pcap_pkthdr *pkthdr, const u_char *packet) {
    char *folder_path = (char *)user_data;
    time_t current_time;
    char filename[64];
    struct tm *timeinfo;
    FILE *file;
    
    time(&current_time);
    timeinfo = localtime(&current_time);
    strftime(filename, sizeof(filename), "%Y-%m-%d_%H-%M-%S.pcap", timeinfo);
    char filepath[256];
    snprintf(filepath, sizeof(filepath), "%s/%s", folder_path, filename);

    file = fopen(filepath, "w");
    if (file == NULL) {
        printf("Error opening file: %s\n", filepath);
        return;
    }

    fwrite(packet, pkthdr->len, 1, file);
    fclose(file);

    printf("Packet captured and saved: %s\n", filepath);
}

int main(int argc, char *argv[]) {
    char errbuf[PCAP_ERRBUF_SIZE];
    pcap_if_t *alldevs;
    pcap_if_t *dev;
    pcap_t *handle;
    char folder_path[256];
    
    if (readlink("/proc/self/exe", folder_path, sizeof(folder_path)) != -1) {
        char *last_slash = strrchr(folder_path, '/');
        if (last_slash != NULL) {
            *last_slash = '\0';  
        }
    } else {
        printf("Error getting script folder path\n");
        return 1;
    }

    if (argc != 1) {
        printf("Usage: %s\n", argv[0]);
        return 1;
    }

    if (pcap_findalldevs(&alldevs, errbuf) == -1) {
        printf("Error finding devices: %s\n", errbuf);
        return 1;
    }

    dev = alldevs;
    handle = pcap_open_live(dev->name, SNAP_LEN, 1, 1000, errbuf);
    if (handle == NULL) {
        printf("Error opening device %s: %s\n", dev->name, errbuf);
        pcap_freealldevs(alldevs);
        return 1;
    }

    printf("Listening on device: %s\n", dev->name);

    if (access(folder_path, F_OK) != 0) {
        if (mkdir(folder_path, 0777) != 0) {
            printf("Error creating folder: %s\n", folder_path);
            pcap_freealldevs(alldevs);
            pcap_close(handle);
            return 1;
        }
        printf("Folder created: %s\n", folder_path);
    }

    pcap_loop(handle, -1, packet_handler, (u_char *)folder_path);

    pcap_freealldevs(alldevs);
    pcap_close(handle);

    return 0;
}
 
Like
  • 2
Реакции: 1 users

Kesio

Джун
8 Янв 2023
39
8
0
у меня все файлы pcap не открываются в wireshark-e, скачал какой то плагин для вскода чтобы открыть, они все пустые. мб я тупой, не шарю в С.
Собрал код через
gcc -o netw netw.c -lpcap
запускал sudo ./netw
:1000-7:
 

TexasSCAM

Сеньор
Автор темы
DEVELOPER
29 Июн 2023
191
40
28
Kesio, понял, проверю позже и переделаю, мейби добавлю что-то крутое туда, и выложу новый пост.
 
Активность:
Пока что здесь никого нет