class IpSocket(object):
    def __init__(self, src_addr='', dest_addr=''):
        self.sock = DataLinkSocket()
        self.src_addr = src_addr
        self.dest_addr = dest_addr

    def send(self, src_addr, dest_addr, data):
        self.src_addr = src_addr
        self.dest_addr = dest_addr
        ip_packet_for_send = IpPacket(self.src_addr, self.dest_addr, data)
        try:
            self.sock.send(ip_packet_for_send.wrap())
        except Exception as e:
            raise

    def recv(self, packet_type=socket.IPPROTO_TCP):
        while True:
            ip_packet_received = IpPacket()
            packet_raw = self.sock.receive()
            # packet_raw = self.s_recv.recvfrom(self.buffer)
            try:
                ip_packet_received.unwrap(packet_raw)
            except:
                continue
            if ip_packet_received.ip_proto == packet_type and \
               ip_packet_received.ip_saddr == self.dest_addr and \
               ip_packet_received.ip_daddr == self.src_addr:
                return ip_packet_received.data
Exemplo n.º 2
0
class IpSocket:
    def __init__(self, saddr_="", daddr_=""):
        self.sock = DataLinkSocket()
        # self.buffer = 6000 # buffer size
        self.src_addr = saddr_  # soure ip address
        self.dest_addr = daddr_  # destination ip address
        # self.s_send = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
        # self.s_recv = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
        ##############################################################
        # send : source ip address, destintation ip address, data -> None
        # This method is used to send data to destintaion ip address
        # it will create an ip packet object and wrap it into an encoded
        # packet and send it to dest ip address machine
        # if the sending process makes some errors, it will raise an exception
        ##############################################################

    def send(self, saddr_, daddr_, data):
        self.src_addr = saddr_
        self.dest_addr = daddr_
        ip_packet_for_send = IpPacket(self.src_addr, self.dest_addr, data)
        try:
            self.sock.send(ip_packet_for_send.wrap())
        except:
            raise ValueError
            # self.s_send.sendto(ip_packet_for_send.wrap(), (self.dest_addr, 0))
            ##############################################################
            # recv : the type of the packet expected to receive -> data
            # This method uses the socket provided by the datalink layer
            # to receive the packet. It will filter the packet by the
            # ip address and packet type.
            ##############################################################

    def recv(self, packet_type=socket.IPPROTO_TCP):
        while True:
            ip_packet_received = IpPacket()
            packet_raw = self.sock.receive()
            # packet_raw = self.s_recv.recvfrom(self.buffer)
            try:
                ip_packet_received.unwrap(packet_raw)
            except:
                # print "IP checksum errors"
                # drop the ip_packet_received
                continue
                # filter the ip ip_packet_received by validing their source
                # addresses and destintation addresses.
            if (
                ip_packet_received.ip_proto == packet_type
                and ip_packet_received.ip_saddr == self.dest_addr
                and ip_packet_received.ip_daddr == self.src_addr
            ):
                return ip_packet_received.data
Exemplo n.º 3
0
class IpSocket:
    def __init__(self, saddr_='', daddr_=''):
        self.sock = DataLinkSocket()
        # self.buffer = 6000 # buffer size
        self.src_addr = saddr_  # soure ip address
        self.dest_addr = daddr_  # destination ip address
        # self.s_send = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
        # self.s_recv = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)

    ##############################################################
    # send : source ip address, destintation ip address, data -> None
    # This method is used to send data to destintaion ip address
    # it will create an ip packet object and wrap it into an encoded
    # packet and send it to dest ip address machine
    # if the sending process makes some errors, it will raise an exception
    ##############################################################
    def send(self, saddr_, daddr_, data):
        self.src_addr = saddr_
        self.dest_addr = daddr_
        ip_packet_for_send = IpPacket(self.src_addr, self.dest_addr, data)
        try:
            self.sock.send(ip_packet_for_send.wrap())
        except:
            raise ValueError
        #self.s_send.sendto(ip_packet_for_send.wrap(), (self.dest_addr, 0))

    ##############################################################
    # recv : the type of the packet expected to receive -> data
    # This method uses the socket provided by the datalink layer
    # to receive the packet. It will filter the packet by the
    # ip address and packet type.
    ##############################################################
    def recv(self, packet_type=socket.IPPROTO_TCP):
        while True:
            ip_packet_received = IpPacket()
            packet_raw = self.sock.receive()
            # packet_raw = self.s_recv.recvfrom(self.buffer)
            try:
                ip_packet_received.unwrap(packet_raw)
            except:
                # print "IP checksum errors"
                # drop the ip_packet_received
                continue
            # filter the ip ip_packet_received by validing their source
            # addresses and destintation addresses.
            if ip_packet_received.ip_proto == packet_type and \
                        ip_packet_received.ip_saddr == self.dest_addr and \
                        ip_packet_received.ip_daddr == self.src_addr:
                return ip_packet_received.data
Exemplo n.º 4
0
 def __init__(self, saddr_='', daddr_=''):
     self.sock = DataLinkSocket()
     # self.buffer = 6000 # buffer size
     self.src_addr = saddr_  # soure ip address
     self.dest_addr = daddr_  # destination ip address
Exemplo n.º 5
0
 def __init__(self, saddr_="", daddr_=""):
     self.sock = DataLinkSocket()
     # self.buffer = 6000 # buffer size
     self.src_addr = saddr_  # soure ip address
     self.dest_addr = daddr_  # destination ip address
 def __init__(self, src_addr='', dest_addr=''):
     self.sock = DataLinkSocket()
     self.src_addr = src_addr
     self.dest_addr = dest_addr