Beispiel #1
0
def send_ack(sp,acknum):
    logger.debug("SEND_ACK")
    pkt = IP(version=4L,ihl=5L,tos=0x0,len=52,id=sp[IP].id,flags="DF", frag=0L,ttl=sp[IP].ttl,
             proto="tcp",src=sp[IP].src,dst=sp[IP].dst,options=[]) /\
             TCP(sport=sp[TCP].sport,dport=sp[TCP].dport,seq=sp[TCP].seq,ack=acknum,dataofs=8L,
             reserved=0L,flags="A",window=0,urgptr=0,options=[('NOP', None), ('NOP', None),
             sp[TCP].options[2]])
  
    del sp[TCP].chksum
    del sp[IP].chksum
    # this will re-generate the checksums for IP/TCP
    pkt = pkt.__class__(str(pkt))
    # FIXME
    sendp(Ether(dst="00:00:00:00:00:01")/pkt[IP], iface="eth1",verbose=0)
    logger.debug("sent ACK: %s" % acknum)
Beispiel #2
0
srcPort = 1200
seq = 900001
ack = 0
ttl = 64
flagsIP = "DF"
id = 32711
chksum = 0 # để 0 rồi del đi để scapy tự tính
# TCP
flagsTCP = "S"
# msg ="0123456789"
pak = IP(dst=dst, src = src, ttl=ttl, flags=flagsIP,len=40, chksum = 0)/TCP(flags=flagsTCP, sport=srcPort, dport=int(dstPort), chksum = 0, seq=seq, ack=ack, window=65535)
del pak[IP].chksum
del pak[TCP].chksum
print("Packet 1 SYN: " + src + " --> " + dst)
# pak[TCP].flags |= 0x10  # set the ACK flag
pak = pak.__class__(bytes(pak)) # Tự động tính chksum | show2() chỉ tính và in ra, không lưu lại vào packet
pak = pak
pak.show()

# "VMware Network Adapter VMnet8"
iface = "Ethernet"
scapy.send(pak, iface=iface)
filterd = "tcp && port " + str(dstPort)

syn_ack = scapy.sniff(filter=filterd, count=1, iface=iface)[0]
# ACK reply in handshake
ack = IP(dst=dst, src = src, ttl=ttl, flags=flagsIP,len=40, chksum = 0)/TCP(flags="A", sport=srcPort, dport=dstPort, chksum = 0, seq=syn_ack.ack, ack=syn_ack.seq + 1, window=65535)
del ack[IP].chksum
del ack[TCP].chksum
print("Packet 1 ACK: " + src + " --> " + dst)
ack = ack.__class__(bytes(ack)) # Tự động tính chksum | show2() chỉ tính và in ra, không lưu lại vào packet