Ejemplo n.º 1
0
Archivo: tcp.py Proyecto: jeamland/PCS
 def cksum(self, ip, data = ""):
     """Calculate the TCP segment checksum outside of a chain."""
     from pcs.packets.ipv4 import ipv4
     from pcs.packets.ipv4 import pseudoipv4
     from socket import IPPROTO_TCP
     tmpip = pseudoipv4()
     tmpip.src = ip.src
     tmpip.dst = ip.dst
     tmpip.protocol = IPPROTO_TCP
     tmpip.length = len(self.getbytes()) + len(data)
     pkt = tmpip.getbytes() + self.getbytes() + data
     return ipv4.ipv4_cksum(pkt)
Ejemplo n.º 2
0
 def cksum(self, ip, data=""):
     """Calculate the TCP segment checksum outside of a chain."""
     from pcs.packets.ipv4 import ipv4
     from pcs.packets.ipv4 import pseudoipv4
     from socket import IPPROTO_TCP
     tmpip = pseudoipv4()
     tmpip.src = ip.src
     tmpip.dst = ip.dst
     tmpip.protocol = IPPROTO_TCP
     tmpip.length = len(self.getbytes()) + len(data)
     pkt = tmpip.getbytes() + self.getbytes() + data
     return ipv4.ipv4_cksum(pkt)
Ejemplo n.º 3
0
 def cksum(self, ip, data = ""):
     """Calculate the checksum for this UDPv4 header,
        outside of a chain."""
     from socket import IPPROTO_UDP
     from pcs.packets.ipv4 import ipv4
     from pcs.packets.ipv4 import pseudoipv4
     tmpip = pseudoipv4()
     tmpip.src = ip.src
     tmpip.dst = ip.dst
     tmpip.protocol = IPPROTO_UDP
     tmpip.length = len(self.getbytes()) + len(data)
     tmpbytes = tmpip.getbytes() + self.getbytes() + data
     return ipv4.ipv4_cksum(tmpbytes)
Ejemplo n.º 4
0
 def calc_checksum_v4(self, ip):
     """Calculate and store the checksum for the UDP datagram
        when encapsulated as an IPv4 payload with the given header."""
     #print "udp.calc_checksum_v4()"
     from pcs.packets.ipv4 import ipv4
     from pcs.packets.ipv4 import pseudoipv4
     self.checksum = 0
     payload = self._head.collate_following(self)
     pip = pseudoipv4()
     pip.src = ip.src
     pip.dst = ip.dst
     pip.protocol = socket.IPPROTO_UDP
     pip.length = len(self.getbytes()) + len(payload)
     tmpbytes = pip.getbytes() + self.getbytes() + payload
     self.checksum = ipv4.ipv4_cksum(tmpbytes)
Ejemplo n.º 5
0
Archivo: tcp.py Proyecto: jeamland/PCS
 def calc_checksum_v4(self, ip):
     """Calculate and store the checksum for the TCP segment
        when encapsulated as an IPv4 payload with the given header."""
     from pcs.packets.ipv4 import ipv4
     from pcs.packets.ipv4 import pseudoipv4
     from socket import IPPROTO_TCP
     self.checksum = 0
     payload = self._head.collate_following(self)
     pip = pseudoipv4()
     pip.src = ip.src
     pip.dst = ip.dst
     pip.protocol = IPPROTO_TCP
     pip.length = len(self.getbytes()) + len(payload)
     tmpbytes = pip.getbytes() + self.getbytes() + payload
     self.checksum = ipv4.ipv4_cksum(tmpbytes)
Ejemplo n.º 6
0
def tcp_cksum(self, ip, data=""):  #TODO: add this method to pcs tcp.py
    """return tcpv4 checksum"""
    import struct
    total = 0

    tmpip = ipv4.pseudoipv4()
    tmpip.src = ip.src
    tmpip.dst = ip.dst
    tmpip.reserved = 0
    tmpip.protocol = pcs.IPPROTO_TCP
    tmpip.length = len(self.getbytes()) + len(data)
    pkt = tmpip.getbytes() + self.getbytes() + data
    if len(pkt) % 2 == 1:
        pkt += "\0"
    for i in range(len(pkt) / 2):
        total += (struct.unpack("!H", pkt[2 * i:2 * i + 2])[0])
    total = (total >> 16) + (total & 0xffff)
    total += total >> 16
    return ~total & 0xffff