Ka soo saar IP-yada proxy iyo dekedaha hex ee JSON-ka lagu daray
Dekoodh payload-yada JSON ee la yaqaan ee ka imanaya wicitaannada script-ka liisaska proxy oo fasir dekedda hex kaliya marka qaabka isha uu taas sheego.
Shaxda HTML ee madhan macnaheedu maaha had iyo jeer in jawaabtu aanay lahayn diiwaanno proxy. Liisas qaar waxay geliyaan walxaha JSON gudaha wicitaannada JavaScript oo ay safafka dambe buuxiyaan.
Isha hore loo helay oo isticmaasha duubista gaarka ah gp.insertPrx oo ay ku xigto shay JSON:
import ipaddress
import json
import re
decoder = json.JSONDecoder()
endpoints = set()
for marker in re.finditer(r"gp[.]insertPrx\(\s*", html):
try:
row, end = decoder.raw_decode(html, marker.end())
if not isinstance(row, dict):
continue
address = ipaddress.ip_address(row["PROXY_IP"])
port = int(row["PROXY_PORT"], 16)
except (ValueError, KeyError, TypeError):
continue
if 1 <= port <= 65535 and html[end:].lstrip().startswith(");"):
endpoints.add((str(address), port))
html waa qoraalka isha, ma aha shay browser. Odhaahda caadiga ah waxay heshaa duubis la yaqaan; JSONDecoder ayaa go'aamiya halka qiimaha JSON uu ku dhammaado. Tan waxay ka fogaataa isku dayga in JSON gudaha ah lagu falanqeeyo odhaah caadi ah oo keliya.
Goobta dekedda ee tusaalaha si cad waa hexadecimal: C38 waxay ka dhigan tahay 3128 tobanle. Ha ku dabaqin saldhigga 16 goobta tobanle ee bixiye kale kaliya sababtoo ah labadaba waxaa loo yaqaan deked.
Kani waa falanqeeye qaabka la sheegay, ma aha turjumaanka JavaScript. Qoraallada shayga ee hal xigasho, qiimayaasha la xisaabiyay iyo odhaahyada kale ee JavaScript waxay u baahan yihiin interface xog oo kale oo la diiwaangeliyay. Ha fulin koodh bog aan loo fasixin si aad u hesho liiska endpoint-yada.
Xaqiiji qandaraaska isha oo hay goobaha protocol si gooni ah. Haddii ishu ay leedahay safafka HTML oo buuxa, isticmaal soo saarista endpoint-yada saf ahaan halkii falanqeeyahan duubista JavaScript. Cinwaan iyo deked soo saarista ma caddeyso in endpoint-ku hadda bixiyo adeeg proxy la isticmaali karo.