woohoo
This commit is contained in:
parent
d23ad7082a
commit
f2fe4186ef
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
requests
|
||||||
|
protobuf
|
39
server.py
39
server.py
@ -3,37 +3,50 @@ import http.client as cli
|
|||||||
import requests
|
import requests
|
||||||
import device_management_pb2
|
import device_management_pb2
|
||||||
import socket
|
import socket
|
||||||
|
from urllib import parse
|
||||||
class A(BaseHTTPRequestHandler):
|
class A(BaseHTTPRequestHandler):
|
||||||
def do_POST(self):
|
def do_POST(self):
|
||||||
self.send_response(200)
|
|
||||||
self.send_header("Content-Type", "text/html")
|
|
||||||
self.end_headers()
|
|
||||||
|
|
||||||
dat = self.rfile.read(int(self.headers.get('Content-Length')))
|
dat = self.rfile.read(int(self.headers.get('Content-Length')))
|
||||||
dmr = device_management_pb2.DeviceManagementRequest()
|
dmr = device_management_pb2.DeviceManagementRequest()
|
||||||
dmr.ParseFromString(dat)
|
dmr.ParseFromString(dat)
|
||||||
print(dmr)
|
print(dmr)
|
||||||
if (dmr.device_state_retrieval_request):
|
if (dmr.HasField('device_state_retrieval_request')):
|
||||||
# Expecting a device state response
|
# Expecting a device state response
|
||||||
|
print("intercepting")
|
||||||
x = device_management_pb2.DeviceManagementResponse()
|
x = device_management_pb2.DeviceManagementResponse()
|
||||||
rr = device_management_pb2.DeviceStateRetrievalResponse()
|
rr = x.device_state_retrieval_response
|
||||||
dv = device_management_pb2.DeviceInitialEnrollmentStateResponse()
|
dv = device_management_pb2.DeviceInitialEnrollmentStateResponse()
|
||||||
dv.Clear()
|
dv.Clear()
|
||||||
|
dv = rr.initial_state_response
|
||||||
dv.initial_enrollment_mode = 0
|
dv.initial_enrollment_mode = 0
|
||||||
dv.management_domain = ""
|
dv.management_domain = ""
|
||||||
dv.is_license_packaged_with_device = False
|
dv.is_license_packaged_with_device = False
|
||||||
dv.disabled_state = False
|
dv.disabled_state.message = ""
|
||||||
rr.initial_state_response = dv
|
|
||||||
rr.restore_mode = 0
|
rr.restore_mode = 0
|
||||||
rr.management_domain = ""
|
rr.management_domain = ""
|
||||||
self.wfile.write(rr.SerializeToString())
|
self.send_response(200)
|
||||||
|
self.send_header("Content-Type", "application/x-protobuffer")
|
||||||
|
self.send_header("Content-Length", str(len(x.SerializeToString())))
|
||||||
|
self.end_headers()
|
||||||
|
print(x)
|
||||||
|
self.wfile.write(x.SerializeToString())
|
||||||
|
|
||||||
return
|
return
|
||||||
|
print(parse.urlparse(self.path).query)
|
||||||
|
con = requests.request('POST', 'https://m.google.com/devicemanagement/data/api?' + parse.urlparse(self.path).query, data=dat, headers=dict(self.headers))
|
||||||
|
print(f"Status code: {con.status_code}")
|
||||||
|
|
||||||
|
self.send_response(con.status_code)
|
||||||
|
|
||||||
|
self.end_headers()
|
||||||
|
dmr = device_management_pb2.DeviceManagementResponse()
|
||||||
|
dmr.ParseFromString(con.content)
|
||||||
|
print(dmr)
|
||||||
|
self.wfile.write(dmr.SerializeToString())
|
||||||
|
|
||||||
print("data read")
|
|
||||||
print(dat)
|
|
||||||
con = requests.request('POST', 'https://m.google.com/devicemanagement/data/api', data=dat, headers=dict(self.headers))
|
|
||||||
self.wfile.write(bytes(str(con.status_code), 'utf-8'))
|
|
||||||
# self.wfile.close()
|
# self.wfile.close()
|
||||||
hs = HTTPServer(("0.0.0.0", 3040), A)
|
hs = HTTPServer(("0.0.0.0", 3040), A)
|
||||||
hs.serve_forever()
|
hs.serve_forever()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user