Advertisement
Guest User

Huawei E5186s-61a switch LTE mode API script

a guest
Nov 8th, 2016
873
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. import requests
  2. import re
  3. import hashlib
  4. import base64
  5.  
  6.  
  7. def login(baseurl, username, password):
  8.     s = requests.Session()
  9.     r = s.get(baseurl + "html/index.html")
  10.     csrf_tokens = grep_csrf(r.text)
  11.  
  12.     s.headers.update({
  13.     '__RequestVerificationToken': csrf_tokens[1],
  14.     })
  15.  
  16.     # test token on statistics api
  17.     # r = s.get(baseurl + "api/monitoring/statistic-server")
  18.  
  19.     data = login_data(username, password, csrf_tokens[1])
  20.     print("api/user/login")
  21.     r = s.post(baseurl + "api/user/login", data=data)
  22.     print(r.text)
  23.  
  24.     s.headers.update({
  25.     '__RequestVerificationToken': r.headers["__RequestVerificationTokenone"]
  26.     })
  27.  
  28.     return s
  29.  
  30.  
  31. def enable_data(baseurl, session):
  32.     print("api/dialup/mobile-dataswitch")
  33.     s.post(baseurl + "api/dialup/mobile-dataswitch", data='<?xml version:"1.0" encoding="UTF-8"?><request><dataswitch>1</dataswitch></request>')
  34.  
  35.  
  36. # 2100MHz (B1) FDD (0000000000000001) – Telstra (a handful of sites), Optus (Darwin, Tasmania)
  37. # 1800MHz (B3) FDD (0000000000000004) – Telstra, Optus, Vodafone
  38. # 850MHz (B5) FDD (0000000000000010) – Vodafone
  39. # 2600MHz (B7) FDD (0000000000000040) – Optus, Telstra. (TPG have a license but have not announced plans for it.)
  40. # 900MHz (B8) FDD (0000000000000080) – Telstra (a handful of sites, utilises spectrum previously used by 2G)
  41. # 700MHz (B28) FDD (0000000008000000) – Telstra, Optus (switched on early in a couple of cities, will be widespread in 2015)
  42. # 2300MHz (B40) TDD (0000008000000000) – Optus (Vivid wireless spectrum), NBN
  43. # 3500MHz (B42) TDD (0000020000000000) – Optus, NBN (trials at this stage)
  44.  
  45. def change_mode(baseurl, session):
  46.     print("api/net/net-mode")
  47.     default_mode_data='<?xml version="1.0" encoding="UTF-8"?><request><NetworkMode>00</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>8008000044</LTEBand></request>'
  48.     test_mode_data='<?xml version="1.0" encoding="UTF-8"?><request><NetworkMode>03</NetworkMode><NetworkBand>3FFFFFFF</NetworkBand><LTEBand>8000000000</LTEBand></request>'
  49.     s_response = s.post(baseurl + "api/net/net-mode", data=test_mode_data)
  50.     print(s_response.text)
  51.  
  52. def grep_csrf(html):
  53.     pat = re.compile(r".*meta name=\"csrf_token\" content=\"(.*)\"", re.I)
  54.     matches = (pat.match(line) for line in html.splitlines())
  55.     return [m.group(1) for m in matches if m]
  56.  
  57.  
  58. def login_data(username, password, csrf_token):
  59.     def encrypt(text):
  60.         m = hashlib.sha256()
  61.         m.update(text)
  62.         return base64.b64encode(m.hexdigest())
  63.  
  64.     password_hash = encrypt(username + encrypt(password) + csrf_token)
  65.     return '<?xml version:"1.0" encoding="UTF-8"?><request><Username>admin</Username><Password>'+password_hash+'</Password><password_type>4</password_type></request>'
  66.  
  67.  
  68. WEB = "http://192.168.8.1/"
  69. USERNAME = "admin"
  70. PASSWORD = "admin"
  71.  
  72. s = login(WEB, USERNAME, PASSWORD)
  73. change_mode(WEB, s)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement