Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- /*
- * The number of bytes in an ethernet (MAC) address.
- */
- #define ETHER_ADDR_LEN 6
- /*
- * The number of bytes in the type field.
- */
- #define ETHER_TYPE_LEN 2
- /*
- * The number of bytes in the trailing CRC field.
- */
- #define ETHER_CRC_LEN 4
- // Define CONST destination mac address
- const u_char DEST_MAC[6]={ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
- /*
- * Structure of Ethernet header.
- */
- struct ether_header {
- u_char ether_dhost[ETHER_ADDR_LEN];
- u_char ether_shost[ETHER_ADDR_LEN];
- //u_int ether_optional;
- u_short ether_len_packet;
- };
- size_t bin_find(u_char pattern, short size_pattern, FILE *stream);
- int main () {
- FILE * pFile;
- long lSize;
- size_t result;
- pFile = fopen ( "test.part2" , "rb" );
- if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
- // ищем DEST_MAC addess
- result = bin_find(DEST_MAC, sizeof(DEST_MAC), pFile);
- printf("начало пакета = %d байт\n", result);
- fclose (pFile);
- return 0;
- }
- size_t bin_find(u_char pattern, short size_pattern, FILE *stream)
- {
- /* Поиск в динарном файле pattern
- * На ВХОД: поступает дескриптор или файл или указатель на файл ! я сам не разобрался что тут должно быть
- * Возвращается: число указывающее местоположение первого вхождения pattern*/
- unsigned char buffer;
- int i, count;
- for (count = 0, i = 1; count < size_pattern; i++) {
- fread(&buffer, 1, 1, stream);
- if (buffer == DEST_MAC[count]) {
- count++;
- }
- else count = 0;
- }
- return i-size_pattern;
- }
Add Comment
Please, Sign In to add comment