diff options
Diffstat (limited to 'scripts/external_libs/scapy-2.3.1/scapy/modules/voip.py')
-rw-r--r-- | scripts/external_libs/scapy-2.3.1/scapy/modules/voip.py | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/scripts/external_libs/scapy-2.3.1/scapy/modules/voip.py b/scripts/external_libs/scapy-2.3.1/scapy/modules/voip.py deleted file mode 100644 index 70000a54..00000000 --- a/scripts/external_libs/scapy-2.3.1/scapy/modules/voip.py +++ /dev/null @@ -1,149 +0,0 @@ -## This file is part of Scapy -## See http://www.secdev.org/projects/scapy for more informations -## Copyright (C) Philippe Biondi <phil@secdev.org> -## This program is published under a GPLv2 license - -""" -VoIP (Voice over IP) related functions -""" - -import os -################### -## Testing stuff ## -################### - -from fcntl import fcntl -from scapy.sendrecv import sniff -from scapy.layers.inet import IP,UDP -from scapy.layers.rtp import RTP -from scapy.utils import get_temp_file - - -def merge(x,y,sample_size=2): - if len(x) > len(y): - y += "\x00"*(len(x)-len(y)) - elif len(x) < len(y): - x += "\x00"*(len(y)-len(x)) - m = "" - ss=sample_size - for i in range(len(x)/ss): - m += x[ss*i:ss*(i+1)]+y[ss*i:ss*(i+1)] - return m -# return "".join(map(str.__add__, x, y)) - - -def voip_play(s1,list=None,**kargs): - FIFO=get_temp_file() - FIFO1=FIFO % 1 - FIFO2=FIFO % 2 - - os.mkfifo(FIFO1) - os.mkfifo(FIFO2) - try: - os.system("soxmix -t .ul %s -t .ul %s -t ossdsp /dev/dsp &" % (FIFO1,FIFO2)) - - c1=open(FIFO1,"w", 4096) - c2=open(FIFO2,"w", 4096) - fcntl.fcntl(c1.fileno(),fcntl.F_SETFL, os.O_NONBLOCK) - fcntl.fcntl(c2.fileno(),fcntl.F_SETFL, os.O_NONBLOCK) - - # dsp,rd = os.popen2("sox -t .ul -c 2 - -t ossdsp /dev/dsp") - def play(pkt,last=[]): - if not pkt: - return - if not pkt.haslayer(UDP): - return - ip=pkt.getlayer(IP) - if s1 in [ip.src, ip.dst]: - if not last: - last.append(pkt) - return - load=last.pop() - # x1 = load.load[12:] - c1.write(load.load[12:]) - if load.getlayer(IP).src == ip.src: - # x2 = "" - c2.write("\x00"*len(load.load[12:])) - last.append(pkt) - else: - # x2 = pkt.load[:12] - c2.write(pkt.load[12:]) - # dsp.write(merge(x1,x2)) - - if list is None: - sniff(store=0, prn=play, **kargs) - else: - for p in list: - play(p) - finally: - os.unlink(FIFO1) - os.unlink(FIFO2) - - - -def voip_play1(s1,list=None,**kargs): - - - dsp,rd = os.popen2("sox -t .ul - -t ossdsp /dev/dsp") - def play(pkt): - if not pkt: - return - if not pkt.haslayer(UDP): - return - ip=pkt.getlayer(IP) - if s1 in [ip.src, ip.dst]: - dsp.write(pkt.getlayer(conf.raw_layer).load[12:]) - try: - if list is None: - sniff(store=0, prn=play, **kargs) - else: - for p in list: - play(p) - finally: - dsp.close() - rd.close() - -def voip_play2(s1,**kargs): - dsp,rd = os.popen2("sox -t .ul -c 2 - -t ossdsp /dev/dsp") - def play(pkt,last=[]): - if not pkt: - return - if not pkt.haslayer(UDP): - return - ip=pkt.getlayer(IP) - if s1 in [ip.src, ip.dst]: - if not last: - last.append(pkt) - return - load=last.pop() - x1 = load.load[12:] -# c1.write(load.load[12:]) - if load.getlayer(IP).src == ip.src: - x2 = "" -# c2.write("\x00"*len(load.load[12:])) - last.append(pkt) - else: - x2 = pkt.load[:12] -# c2.write(pkt.load[12:]) - dsp.write(merge(x1,x2)) - - sniff(store=0, prn=play, **kargs) - -def voip_play3(lst=None,**kargs): - dsp,rd = os.popen2("sox -t .ul - -t ossdsp /dev/dsp") - try: - def play(pkt, dsp=dsp): - if pkt and pkt.haslayer(UDP) and pkt.haslayer(conf.raw_layer): - dsp.write(pkt.getlayer(RTP).load) - if lst is None: - sniff(store=0, prn=play, **kargs) - else: - for p in lst: - play(p) - finally: - try: - dsp.close() - rd.close() - except: - pass - |