почему я не перехватываю Syn / Ack в моем сетевом анализаторе - PullRequest
0 голосов
/ 19 апреля 2020

Я не могу на всю жизнь понять, почему я не вижу ни одного syn / ack в моем сетевом анализаторе. Я хочу регистрировать новые соединения и их направления, поэтому я подумал, что id capture traffi c и поиск Syn / ack, но он не работает. Это на windows, не знаю, работает ли он лучше на linux, но важно, чтобы я включил его на windows.

, это в основном тестовый код:

Основной код:

import socket
import struct
import binascii
import os
import logger


s = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_IP)
  s.bind(("192.168.1.12",0))
  s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
  s.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)

while True:
  pkt=s.recvfrom(65535)
  unpack=logger.unpack()

  IPhead = unpack.ip_header(pkt[0][0:20])
  if IPhead["Protocol"] == 6:
    #TCP Protocol
    TCPhead = unpack.tcp_header(pkt[0][20:40])
    print (TCPhead["Tcp Flag"])
    #this is what i want to do so i can continue the program but it never enters this if.
    if TCPhead["Tcp Flag"] == 18:

logger.py

import socket
import struct
import binascii
import os

class unpack:
  def __cinit__(self):
    self.data=None

  # Tcp Header Extraction
  def tcp_header(self, data):
    storeobj=struct.unpack('!HHLLBBHHH',data)
    _source_port =storeobj[0] 
    _destination_port =storeobj[1]
    _sequence_number =storeobj[2]
    _acknowledge_number =storeobj[3]
    _offset_reserved =storeobj[4]
    _tcp_flag =storeobj[5]
    _window =storeobj[6]
    _checksum =storeobj[7]
    _urgent_pointer =storeobj[8]
    data={"Source Port":_source_port,"Destination Port":_destination_port,"Sequence Number":_sequence_number,"Acknowledge Number":_acknowledge_number,"Offset & Reserved":_offset_reserved,"Tcp Flag":_tcp_flag,"Window":_window,"CheckSum":_checksum,"Urgent Pointer":_urgent_pointer}
    return data

Все показывает правильно, (Исходный порт, Порт назначения, Срочный указатель и т. Д. c. В TCP-флагах я получаю Syns ( 2 или 0x02) Acks (16 или 0x10) fin, Acks (17 или 0x11) и pu sh, acks (24 или 0x18), но никогда не syn, ack (18 или 0x12)

Почему?

Редактировать: Запуск на windows 10 с python 3.8.2

1 Ответ

0 голосов
/ 20 апреля 2020

после дальнейшего исследования кажется, что входящие пакеты не отображаются. продолжая поиски, я наткнулся на другой сайт, который пытался найти что-то похожее на меня, и нашел решение. Это windows брандмауэр, который блокирует входящие пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...