Cén seoladh a thuairiscíonn Windows do sheisiún RDP?
Filleann API WTS seoladh cliaint tuairiscithe do sheisiún RDP amháin, agus ní fhilleann an chlárlann é. Fiafraigh den ID seisiúin cheart agus díchódaigh IPv4 nó IPv6 i gceart.
Teastaíonn seoladh cliaint ó sheisiún RDP, agus ní thagann na foinsí soiléire le chéile. Tugann CLIENTNAME ainm ríomhaire, coimeádann an chlárlann luachanna ó sheisiúin eile, agus féadfaidh comhghleacaithe an soicéid a bheith ina sheoladh geata nó NAT seachas an cliaint. Nochtann Windows seoladh cliaint tuairiscithe in aghaidh an tseisiúin, ach caithfidh tú an seisiún ceart a fhiafraí agus an freagra a dhíchódú i gceart.
Ainmhnigh an cuardach do sheisiún amháin
Tosaigh leis an seisiún, ní leis an duine. Is féidir le hóstach RDP Windows roinnt seisiún a iompar do chuntas amháin, agus b’fhéidir nach dtagann seoladh a chonacthas roimh athnascadh leis an nasc beo a thuilleadh. Taifead ID an tseisiúin, an t-úsáideoir agus am an bhreathnaithe le chéile. Is é ID an tseisiúin an eochair a bhfuil an API ag súil léi, agus is é an luach sin a choisceann dhá sheisiún a chur trí chéile.
Ar an óstach, liostaíonn na huirlisí seisiúin suiteáilte an méid atá ann; ná húsáid an radharc riaracháin ach amháin nuair a bhfuil tú i dteideal. Deimhnigh an ID roghnaithe díreach roimh an bhfiosrúchán, mar go bhfilleann ID athchúrsáilte sonraí seisiúin eile.
qwinsta
Glaoigh ar WTSQuerySessionInformationW don ID sin
Freagraíonn API na Seirbhísí Teirminéil an cheist le haicme faisnéise 14, WTSClientAddress. Is leor fillteán beag ctypes ar Windows, agus seachnaíonn sé hive úsáideora eile a léamh. Glacann an cód thíos le ID seisiúin follasach agus fiafraíonn sé den óstach áitiúil.
import ctypes
import ipaddress
import socket
from ctypes import wintypes
class WTS_CLIENT_ADDRESS(ctypes.Structure):
_fields_ = [("AddressFamily", wintypes.DWORD),
("Address", ctypes.c_ubyte * 20)]
wts = ctypes.WinDLL("Wtsapi32", use_last_error=True)
query = wts.WTSQuerySessionInformationW
query.argtypes = [wintypes.HANDLE, wintypes.DWORD, ctypes.c_int,
ctypes.POINTER(ctypes.c_void_p), ctypes.POINTER(wintypes.DWORD)]
query.restype = wintypes.BOOL
free = wts.WTSFreeMemory
free.argtypes = [ctypes.c_void_p]
def client_address(session_id):
buf = ctypes.c_void_p()
size = wintypes.DWORD()
if not query(None, session_id, 14, ctypes.byref(buf), ctypes.byref(size)):
raise ctypes.WinError(ctypes.get_last_error())
try:
if size.value < ctypes.sizeof(WTS_CLIENT_ADDRESS):
raise RuntimeError("short WTS buffer")
value = ctypes.cast(buf, ctypes.POINTER(WTS_CLIENT_ADDRESS)).contents
raw = bytes(value.Address)
if value.AddressFamily == socket.AF_INET:
addr = ipaddress.ip_address(raw[2:6])
elif value.AddressFamily == socket.AF_INET6:
addr = ipaddress.ip_address(raw[:16])
else:
return None
return None if addr.is_unspecified else str(addr)
finally:
free(buf)
Cuir an ID seisiúin slánuimhir a dheimhnigh tú díreach ar aghaidh, agus coinnigh an láimhseáil freastalaí nialasach don mheaisín áitiúil. Caith le glao ar theip air mar earráid seachas mar sheoladh easnamhach, mar go dtagann an dá rud ar chonclúidí éagsúla. Teastaíonn an cead Query Information cuí chun seisiún úsáideora eile a fhiosrú, mar sin rith an uirlis faoi chuntas a bhfuair é seachas pribhléidí a ardú go had hoc. Baineann an maolán a fhilltear leis an API agus caithfear é a scaoileadh fiú nuair a theipeann an díchódú.
Díchódaigh an teaghlach, ansin scaoil an maolán
Ní teaghrán IP é an struchtúr. Socraíonn a réimse teaghlaigh conas a léitear an fiche beart seoladh: tosaíonn IPv4 ag an bhfritháireamh a dó, agus tosaíonn IPv6 ag an bhfritháireamh nialas. Ciallaíonn an seoladh neamhshonraithe nach dtug an cliant ceann ar bith, rud nach ionann agus teaghrán folamh. Tá naisc Remote Desktop Gateway doiciméadaithe mar chás nach bhfuil an seoladh ar fáil, mar sin ní thuairiscíonn seisiún trí gheata aon rud úsáideach faoi fhíor-sheoladh an chliaint. Ansin caithfidh an chomhghaolú bogadh chuig taifid an gheata féin.
Priontáil an teaghlach in aice leis an seoladh agus tú ag dífhabhtú, mar is é an mhífhoirfeacht idir an dá rud an ghnáthchúis le luach inchreidte ach mícheart. Scaoil an maolán le WTSFreeMemory i mbloc finally ionas nach sceitheann eisceacht é.
Deighil an seoladh tuairiscithe ón bhfianaise
Is ráiteas a sholáthraíonn an cliant é seoladh cliaint tuairiscithe, ní breathnóireacht iontaofa. Ní hé an comhghleacaí TCP é, ní hé tábla léasa an gheata VPN é, agus ní hé seoladh poiblí an chliaint é. Nuair is í an fhíorcheist cé acu léas VPN a bhaineann le duine, déan comhghaolú ar thaifead seisiúin fhíordheimhnithe an fhreastalaí VPN ag an am céanna. Nuair is í an cheist cén fhoinse a shroich an t-éisteoir, léigh an tábla naisc nó na logaí ceadaithe ar thaobh an fhreastalaí.
Coinnigh na luachanna seo lipéadaithe ar leithligh in aon uirlis tacaíochta. Ba chóir do thoradh WTS atá ar iarraidh fanacht ar iarraidh seachas titim siar ar luach clárlainne treallach ó sheisiún eile. Líon isteach ID an tseisiúin in aice leis an seoladh, mar is féidir leis an úsáideoir céanna athnascadh agus luach nua a fháil. Ní fianaise leordhóthanach chun rochtain a dheonú ceachtar d’ainm an chliaint ná an seoladh tuairiscithe.