Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Screen special characters
#1
Hi,

The code below receives a Submit from an url and extracts the ssid and password names from it.

To screen the special characters, a 'replace' is used, but it makes it rather complex to use it for each special character.

Is there a simpler way to filter/convert them?

TIA

import re

capture = '''POST /configure HTTP/1.1\r\nHost: 192.168.4.1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0)
 Gecko/20100101 Firefox/74.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-
Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3\r\nAccept-Encoding: gzip, deflate\r\nContent-Type: application/x-www-form-
urlencoded\r\nContent-Length: 43\r\nOrigin: http://192.168.4.1\r\nConnection: keep-alive\r\nReferer: http://192.168.4.1
/\r\nUpgrade-Insecure-Requests: 1\r\n\r\nssid=mySSID&password=myPass%40home''' #<--- interested info

''' 
    NOTE: the ssid should be myssid
    and the password should be mypass@home
'''

def send_response(client, payload, status_code=200):
    print("Error 400")
    pass

def handle_configure(client, request):
    match = re.search("ssid=([^&]*)&password=(.*)", request)
    print(match) #prints match='ssid=mySSID&password=myPass%40home' <-- @ is converted into hex %40

    if match is None:
        send_response(client, "Parameters not found", status_code=400)
        return False

    try:
        ssid = match.group(1).replace("%3F", "?").replace("%21", "!").replace("%40", "@")
        #ssid = match.group(1).decode("utf-8").replace("%3F", "?").replace("%21", "!").replace("%40", "@")
        password = match.group(2).replace("%3F", "?").replace("%21", "!").replace("%40", "@")
        #password = match.group(2).decode("utf-8").replace("%3F", "?").replace("%21", "!").replace("%40", "@")
        
        print("ssid={} password={}".format(ssid, password)) # <-- prints ssid=mySSID password=myPass@home which is correct!!
    
    except Exception:
        ssid = match.group(1).decode("utf-8").replace("%3F", "?").replace("%21", "!").replace("%40", "@")
        password = match.group(2).decode("utf-8").replace("%3F", "?").replace("%21", "!").replace("%40", "@")

handle_configure(0, capture)
Reply


Messages In This Thread
Screen special characters - by ebolisa - Apr-14-2020, 05:56 PM
RE: Screen special characters - by snippsat - Apr-14-2020, 07:13 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020