Guest User

Untitled

a guest
Nov 17th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #include <stdlib.h>
  2.  
  3. /*
  4. * The number of bytes in an ethernet (MAC) address.
  5. */
  6. #define ETHER_ADDR_LEN 6
  7.  
  8. /*
  9. * The number of bytes in the type field.
  10. */
  11. #define ETHER_TYPE_LEN 2
  12.  
  13. /*
  14. * The number of bytes in the trailing CRC field.
  15. */
  16. #define ETHER_CRC_LEN 4
  17.  
  18. // Define CONST destination mac address
  19. const u_char DEST_MAC[6]={ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
  20. /*
  21. * Structure of Ethernet header.
  22. */
  23. struct ether_header {
  24. u_char ether_dhost[ETHER_ADDR_LEN];
  25. u_char ether_shost[ETHER_ADDR_LEN];
  26. //u_int ether_optional;
  27. u_short ether_len_packet;
  28. };
  29.  
  30.  
  31. size_t bin_find(u_char pattern, short size_pattern, FILE *stream);
  32.  
  33.  
  34. int main () {
  35. FILE * pFile;
  36. long lSize;
  37.  
  38. size_t result;
  39.  
  40.  
  41. pFile = fopen ( "test.part2" , "rb" );
  42. if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
  43.  
  44. // ищем DEST_MAC addess
  45. result = bin_find(DEST_MAC, sizeof(DEST_MAC), pFile);
  46. printf("начало пакета = %d байт\n", result);
  47.  
  48. fclose (pFile);
  49. return 0;
  50. }
  51.  
  52.  
  53. size_t bin_find(u_char pattern, short size_pattern, FILE *stream)
  54. {
  55. /* Поиск в динарном файле pattern
  56. * На ВХОД: поступает дескриптор или файл или указатель на файл ! я сам не разобрался что тут должно быть
  57. * Возвращается: число указывающее местоположение первого вхождения pattern*/
  58.  
  59. unsigned char buffer;
  60. int i, count;
  61.  
  62. for (count = 0, i = 1; count < size_pattern; i++) {
  63. fread(&buffer, 1, 1, stream);
  64. if (buffer == DEST_MAC[count]) {
  65. count++;
  66. }
  67. else count = 0;
  68. }
  69. return i-size_pattern;
  70. }
Add Comment
Please, Sign In to add comment