├── .idea
├── PacketSender.iml
├── codeStyles
│ └── codeStyleConfig.xml
├── encodings.xml
├── misc.xml
├── modules.xml
└── vcs.xml
├── README.md
└── packet_sender
├── main.py
├── sender.py
├── tcp_sender.py
└── udp_sender.py
/.idea/PacketSender.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # PacketSender
2 |
3 | TCP及UDP的发包程序
4 |
5 | 可以使用`python main.py -h`查看使用手册
6 |
--------------------------------------------------------------------------------
/packet_sender/main.py:
--------------------------------------------------------------------------------
1 | from sender import Sender
2 | import argparse
3 | import sys
4 |
5 |
6 | def get_args():
7 |
8 | parser = argparse.ArgumentParser(description='Packet sender.')
9 | parser.add_argument('type', help='type: tcp or udp')
10 | parser.add_argument('dst_ip', help='ip address of destination')
11 | parser.add_argument('--sport', metavar='src_port', type=int, help='port of source')
12 | parser.add_argument('--dport', metavar='dst_port', type=int, help='port of destination')
13 | parser.add_argument('--plen', metavar='length', type=int, help='length of packet (bytes)')
14 |
15 | return parser.parse_args()
16 |
17 |
18 | def main():
19 | args = get_args()
20 | sender = Sender(type=args.type,
21 | dst_ip=args.dst_ip,
22 | dst_port=args.dport,
23 | src_port=args.sport,
24 | length=args.plen or 1)
25 | sender.send_data()
26 |
27 |
28 | if __name__ == '__main__':
29 | sys.exit(main())
30 |
--------------------------------------------------------------------------------
/packet_sender/sender.py:
--------------------------------------------------------------------------------
1 | from tcp_sender import TcpSender
2 | from udp_sender import UdpSender
3 |
4 |
5 | class Sender(object):
6 |
7 | def __init__(self, type, dst_ip, dst_port=None, src_port=None, length=1):
8 | self.type = type
9 | self.dst_ip = dst_ip
10 | self.dst_port =dst_port
11 | self.src_port = src_port
12 | self.len = length
13 |
14 | def send_data(self):
15 | if self.type.lower() == 'tcp':
16 | tcp_sender = TcpSender(dst_ip=self.dst_ip,
17 | dst_port=self.dst_port,
18 | src_port=self.src_port,
19 | length=self.len)
20 | tcp_sender.send_tcp()
21 | elif self.type.lower() == 'udp':
22 | udp_sender = UdpSender(dst_ip=self.dst_ip,
23 | dst_port = self.dst_port,
24 | src_port=self.src_port,
25 | length=self.len)
26 | udp_sender.send_udp()
27 | else:
28 | raise Exception('TYPE ERROR!')
29 |
--------------------------------------------------------------------------------
/packet_sender/tcp_sender.py:
--------------------------------------------------------------------------------
1 | import socket
2 |
3 |
4 | BYTE_SIZE = b'a'
5 |
6 |
7 | class TcpSender(object):
8 |
9 | def __init__(self, dst_ip, dst_port=None, src_port=None, length=1):
10 | # Information of targets
11 |
12 | self.dst_ip = dst_ip
13 | self.dst_port = dst_port
14 | self.src_port = src_port
15 | self.tcp_data = BYTE_SIZE * length
16 |
17 | def send_tcp(self):
18 | # Send tcp message.
19 | if self.dst_port:
20 | while True:
21 | tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
22 | try:
23 | if self.src_port:
24 | tcp_socket.bind(('', self.src_port))
25 | tcp_socket.connect((self.dst_ip, self.dst_port))
26 | except:
27 | pass
28 | else:
29 | tcp_socket.send(self.tcp_data)
30 | tcp_socket.close()
31 |
32 | else:
33 | dst_port = 1
34 | while True:
35 | if dst_port == 65536:
36 | dst_port = 1
37 | tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
38 | try:
39 | if self.src_port:
40 | tcp_socket.bind(('', self.src_port))
41 | tcp_socket.connect((self.dst_ip, dst_port))
42 | dst_port += 1
43 | except:
44 | pass
45 | else:
46 | tcp_socket.send(self.tcp_data)
47 | tcp_socket.close()
48 |
--------------------------------------------------------------------------------
/packet_sender/udp_sender.py:
--------------------------------------------------------------------------------
1 | import socket
2 |
3 |
4 | BYTE_SIZE = b'a'
5 |
6 |
7 | class UdpSender(object):
8 |
9 | def __init__(self, dst_ip, dst_port=None, src_port=None, length=1):
10 | # Information of targets
11 |
12 | self.dst_ip = dst_ip
13 | self.dst_port = dst_port
14 | self.src_port = src_port
15 | self.udp_data = BYTE_SIZE * length
16 |
17 | def send_udp(self):
18 | # Send udp message
19 | udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
20 | if self.src_port:
21 | udp_socket.bind(('', self.src_port))
22 |
23 | if self.dst_port:
24 | while True:
25 | udp_socket.sendto(self.udp_data, (self.dst_ip, self.dst_port))
26 | else:
27 | while True:
28 | dst_port = 1
29 | if dst_port == 65536:
30 | dst_port = 1
31 | udp_socket.sendto(self.udp_data, (self.dst_ip, dst_port))
32 | dst_port += 1
33 |
--------------------------------------------------------------------------------