Açıklama: Merhaba arkadaşlar, ITÜ’de siber güvenlik öğrencisiyim ve bir pentest tool projesi için Python’da ctypes kullanarak Windows API’leriyle (özellikle Winsock) socket programlama öğrenmeye çalışıyorum. Hedefim, reverse TCP bağlantısı kuran bir kod yazmak (mesela, bir IP/port’a bağlanıp veri gönderip almak). Normal Python socket modülünü biliyorum, ama düşük seviyeli kontrol için Winsock API’lerini (socket, connect, send, recv gibi) ctypes ile çağırmam lazım.
Şimdiye kadar şu örneği çalıştırmayı denedim:
from ctypes import windll, c_int, Structure, c_ushort, c_ulong, byref
class SOCKADDR_IN(Structure):
fields = [
(“sin_family”, c_ushort),
(“sin_port”, c_ushort),
(“sin_addr”, c_ulong),
(“sin_zero”, c_char * 8)
]
ws2_32 = windll.ws2_32
wsa_data = (c_char * 400)()
ws2_32.WSAStartup(c_uint16(0x0202), byref(wsa_data))
sock = ws2_32.socket(2, 1, 6) # AF_INET, SOCK_STREAM, IPPROTO_TCP
ama karmaşık geliyor, özellikle pointer’lar (byref) ve argtypes/restype tanımları. Türkçe kaynak bulmakta zorlanıyorum, BTK Akademi’de de ctypes için detaylı bir şey yok. Şu sorularım var:
- ctypes ile Winsock’u kullanırken nelere dikkat etmeliyim?
- Reverse TCP bağlantısı için basit bir örnek verebilir misiniz?
- Hata yakalamak için WSAGetLastError nasıl kullanılır?
- Türkçe kaynak veya basit tutorial öneriniz var mı?