د RDP غونډې لپاره کلاینټ پته ته اړتیا ده، او ښکاره سرچینې سره موافق نه دي۔ CLIENTNAME د کمپیوټر نوم درکوي، راجستر د نورو غونډو ارزښتونه ساتي، او د سوکیټ بل لوری کېدای شي د ګیټوې یا NAT پته وي نه کلاینټ۔ Windows د هرې غونډې لپاره راپور شوې کلاینټ پته برابروي، خو تاسو باید سمه غونډه وپوښتئ او ځواب په سمه توګه ډیکوډ کړئ۔

لټون یوې غونډې ته وتړئ

له کس نه نه، له غونډې پیل کړئ۔ د Windows RDP کوربه کولای شي د یو حساب لپاره څو غونډې ولري، او هغه پته چې د بیا نښلېدو دمخه لیدل شوې وه کېدای شي نورې فعالې اړیکې سره سمون ونه خوري۔ د غونډې ID، کاروونکی او د کتنې وخت یوځای ولیکئ۔ د غونډې ID هغه کیلي ده چې API یې تمه لري، او همدا ارزښت دی چې دوه غونډې له ګډوډېدو ساتي۔

پر کوربه، نصب شوي غونډې وسایل ښيي چې څه شته؛ اداري لید یوازې هغه وخت وکاروئ چې پرې حق لرئ۔ ټاکل شوې ID د پوښتنې دمخه سمه تایید کړئ، ځکه بیا کارول شوې ID د بلې غونډې معلومات بېرته راګرځوي۔

qwinsta

د هماغې ID لپاره WTSQuerySessionInformationW وبلئ

د Terminal Services API پوښتنې ته د معلوماتي طبقې 14 سره ځواب وایي، WTSClientAddress۔ پر Windows یو کوچنی ctypes پوښ کافي دی، او د بل کاروونکي hive لوستلو مخه نیسي۔ لاندې کوډ څرګنده غونډې ID اخلي او له محلي کوربه پوښتنه کوي۔

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)

هغه بشپړ عدد غونډې ID وسپارئ چې همدا اوس تایید کړې وه، او د محلي ماشین لپاره صفر سرور لاسوند وساتئ۔ ناکامه بلنه د نه شته پتې په توګه نه، بلکې د تېروتنې په توګه وګڼئ، ځکه دواړه بېلې پایلې ته رسوي۔ د بل کاروونکي غونډې پوښتنه اړوند Query Information اجازه غواړي، نو وسیله د هغه حساب لاندې چلوئ چې دا اجازه ورکړل شوې ده، نه دا چې په سملاسي ډول واکونه لوړ کړئ۔ بېرته شوی بفر د API دی او باید خوشې شي حتی کله چې ډیکوډ کول ناکام شي۔

کورنۍ ډیکوډ کړئ، بیا بفر خوشې کړئ

جوړښت IP تار نه دی۔ د هغې کورنۍ ساحه پرېکړه کوي چې شلې پتې بایټ څنګه ولول شي: IPv4 له دوو افسیټ پیلېږي، او IPv6 له صفر افسیټ پیلېږي۔ ناټاکلې پته معنا دا ده چې کلاینټ هېڅ پته راپور نه کړه، چې دا له خالي تار سره یو شان نه دی۔ د Remote Desktop Gateway اړیکې د هغه حالت په توګه مستند شوې دي چې پته پکې نه وي، نو د ګیټوې له لارې غونډه د کلاینټ د ریښتیني پتې په اړه ګټور څه نه راپور کوي۔ بیا باید اړیکه د ګیټوې خپلو ثبتونو ته ولاړه شي۔

د نیمګړتیاوو د سمولو پر مهال کورنۍ د پتې ترڅنګ چاپ کړئ، ځکه د دواړو ترمنځ ناسمون د باور وړ خو غلط ارزښت عادي لامل دی۔ بفر په finally بلاک کې د WTSFreeMemory سره خوشې کړئ، تر څو استثنا یې له ځانه ونه تېروي۔

راپور شوې پته له ثبوت څخه بېله کړئ

راپور شوې کلاینټ پته هغه بیان دی چې کلاینټ یې وړاندې کوي، نه باوري کتنه۔ دا د TCP بل لوری نه دی، د VPN ګیټوې د کرایې جدول نه دی، او د کلاینټ عامه پته هم نه ده۔ کله چې ریښتینې پوښتنه دا وي چې کومه VPN کرایه د یو کس ده، هماغه وخت د VPN سرور تصدیق شوې غونډې ثبت سره اړیکه ورکړئ۔ کله چې پوښتنه دا وي چې کومه سرچینه اورېدونکي ته ورسېده، د اړیکو جدول یا اجازه شوي سرور اړخ لاګونه ولولئ۔

دا ارزښتونه په هر ملاتړ وسیله کې جلا نښه شوي وساتئ۔ ورکه شوې WTS پایله باید ورکه پاتې شي، نه دا چې د بلې غونډې خپل سري راجستر ارزښت ته واوړي۔ د پتې ترڅنګ غونډې ID ولیکئ، ځکه هماغه کاروونکی کولای شي بیا ونښلي او نوی ارزښت ترلاسه کړي۔ نه د کلاینټ نوم او نه راپور شوې پته د لاسرسي ورکولو لپاره کافي ثبوت دی۔

اړوندې مقالې