本文整理匯總了Python中socket.IPPROTO_RAW屬性的典型用法代碼示例。如果您正苦於以下問題:Python socket.IPPROTO_RAW屬性的具體用法?Python socket.IPPROTO_RAW怎麽用?Python socket.IPPROTO_RAW使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類socket
的用法示例。
在下文中一共展示了socket.IPPROTO_RAW屬性的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, type=ETH_P_IP, filter=None, iface=None, promisc=None, nofilter=0): # noqa: E501
self.outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW) # noqa: E501
self.outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) # noqa: E501
self.iface = iface
if iface is not None:
self.ins.bind((self.iface, type))
if not six.PY2:
try:
# Receive Auxiliary Data (VLAN tags)
self.ins.setsockopt(SOL_PACKET, PACKET_AUXDATA, 1)
self.ins.setsockopt(
socket.SOL_SOCKET,
SO_TIMESTAMPNS,
1
)
self.auxdata_available = True
except OSError:
# Note: Auxiliary Data is only supported since
# Linux 2.6.21
msg = "Your Linux Kernel does not support Auxiliary Data!"
log_runtime.info(msg)
示例2: send
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def send(ip, tcp, payload="", retry=1, timeout=1):
if timeout <= 0:
# Avoid entering an infinite waiting loop
timeout = 0.1
response = []
event = threading.Event()
sock = socket.socket(socket.AF_INET,
socket.SOCK_RAW,
socket.IPPROTO_RAW)
# Extracting identifiers
# ip
src = ip.source
dst = ip.destination
# port
srcp = struct.pack("!H", tcp.srcp)
dstp = struct.pack("!H", tcp.dstp)
tcp.payload = payload
packet = ip.pack() + tcp.pack(ip.source, ip.destination) + payload
for i in range(retry):
t = threading.Thread(target=recv,
args=(event, src, dst, srcp,
dstp, response, timeout)
)
t.start()
try:
sock.sendto(packet, (socket.inet_ntoa(dst), 0))
except Exception as e:
print e
event.set()
t.join()
if not event.isSet():
break
if event.isSet():
return None
else:
return response[0]
示例3: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, type = ETH_P_IP, filter=None, iface=None, promisc=None, nofilter=0):
self.outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
self.outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
if iface is not None:
self.ins.bind((iface, type))
示例4: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, type = ETH_P_IPV6, filter=None, iface=None, promisc=None, nofilter=0):
L3RawSocket.__init__(self, type, filter, iface, promisc)
# NOTE: if fragmentation is needed, it will be done by the kernel (RFC 2292)
self.outs = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW)
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
示例5: send
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def send(self, hosts, srcp, gen):
if 'ppp' in self.ifname:
family = socket.AF_INET
proto = socket.IPPROTO_RAW
eth = ''
else:
family = socket.AF_PACKET
proto = ETH_P_IP
eth = ethernet.ETHER(mac2byte(self.smac), mac2byte(self.dmac), ETH_P_IP).pack()
sock = socket.socket(family, socket.SOCK_RAW, proto)
transport = self.__Transport(srcp, 0)
npacket = 0
self.events['send'].wait()
target = hosts[0]
while self.events['send'].isSet():
try:
target = hosts[0] + gen.next()
iph = ip.IP(self.diface, dec2dot(target), self.stype)
except StopIteration:
break
for port_list in self.ports:
for port in range(port_list[0], port_list[1]):
if self.events['send'].isSet():
transport.dstp = port
packet = eth + iph.pack() + self.__Pack(transport, iph.src, iph.dst) #tcph.pack(iph.src, iph.dst)
sock.sendto(packet, (dec2dot(target), 0)) # self.ifname
npacket+=1
if not npacket%self.cooldown[0]:
time.sleep(self.cooldown[1])
else:
break
logging.info('[SEND] Sent: {} packets'.format(npacket))
sock.close()
示例6: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, daddr):
try:
self.raw_sock = socket.socket(
socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW
)
except PermissionError as e:
print(e)
print("Please run as root!")
exit(1)
self.ip_daddr = daddr
os_release = platform.system()
if os_release == "Darwin":
# Boned. TODO: Work on fixing this.
print("Detected Mac OS - Cannot support writing of raw IP packets, exiting")
exit(1)
if os_release.endswith("BSD"):
# BSD - Need to explicit set IP_HDRINCL.
# BSD - Need to explicitly calculate IP total length
self.raw_sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
logging.debug("Detected a BSD")
if os_release == "Linux":
# Linux - No need to set IP_HDRINCL,as setting SOCK_RAW auto sets this. However should be explicit in settings.
self.raw_sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
logging.debug("Detected Linux")
if os_release == "Windows":
# No idea - No ability to test. Maybe abort?
# TODO: Find testers?
logging.debug("Detected NT")
print("Untested on Windows - Exiting")
exit(1)
示例7: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, type = ETH_P_IP, filter=None, iface=None, promisc=None, nofilter=0):
self.outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
self.outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
示例8: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def __init__(self, type=ETH_P_IPV6, filter=None, iface=None, promisc=None, nofilter=0): # noqa: E501
L3RawSocket.__init__(self, type, filter, iface, promisc)
# NOTE: if fragmentation is needed, it will be done by the kernel (RFC 2292) # noqa: E501
self.outs = socket.socket(socket.AF_INET6, socket.SOCK_RAW, socket.IPPROTO_RAW) # noqa: E501
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) # noqa: E501
示例9: test_getprotobyname
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def test_getprotobyname(self):
'''Tests _socket.getprotobyname'''
#IP and CPython
proto_map = {
"icmp": _socket.IPPROTO_ICMP,
"ip": _socket.IPPROTO_IP,
"tcp": _socket.IPPROTO_TCP,
"udp": _socket.IPPROTO_UDP,
}
#supported only by IP
if is_cli:
proto_map.update(
{"dstopts": _socket.IPPROTO_DSTOPTS,
"none": _socket.IPPROTO_NONE,
"raw": _socket.IPPROTO_RAW,
"ipv4": _socket.IPPROTO_IPV4,
"ipv6": _socket.IPPROTO_IPV6,
"esp": _socket.IPPROTO_ESP,
"fragment": _socket.IPPROTO_FRAGMENT,
"nd": _socket.IPPROTO_ND,
"icmpv6": _socket.IPPROTO_ICMPV6,
"routing": _socket.IPPROTO_ROUTING,
"pup": _socket.IPPROTO_PUP, #http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=21918
"ggp": _socket.IPPROTO_GGP, #http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=21918
})
for proto_name, good_val in proto_map.items():
temp_val = _socket.getprotobyname(proto_name)
self.assertEqual(temp_val, good_val)
#negative cases
bad_list = ["", "blah", "i"]
for name in bad_list:
self.assertRaises(_socket.error, _socket.getprotobyname, name)
示例10: connect
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def connect(self):
if self._socket is not None:
# Close out old socket first
self._socket.close()
# Include IP headers
self._socket = socket.socket(socket.AF_INET,
socket.SOCK_RAW,
socket.IPPROTO_RAW)
self._socket.bind((self._interface, 0))
self._socket.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
示例11: udp_spoof_start
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import IPPROTO_RAW [as 別名]
def udp_spoof_start(target_ip, target_port, spoofed_ip, spoofed_port, payload):
"""Spoof a packet and send it to target_ip, target_port.
Keyword argument(s):
target_ip -- the desired destination ip
target_port -- the desired destination port
spoofed_ip -- the desired source ip
spoofed_port -- the desired source port
"""
spoofed_packet = udp_spoof_pck(target_ip, target_port, spoofed_ip,
spoofed_port, payload)
sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)
while True:
sock.sendto(spoofed_packet, (target_ip, target_port))
sleep(0.01)