Socket Programlama!

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won

Merhaba, ben Bunjo, bu sefer "Ruby" dışında "Python" ile "socket"
kütüphanesini çalışacağız - daha sonra Ruby için de bu anlatımı yapacağım -
uzatmadan konuya girişimizi yapalım.



Nedir Bu Socket Kavramı?

Socket, bilgisayar ağlarında ve iletişim protokollerinde kullanılan bir kavramdır. Programlamada ise genellikle "socket" kelimesi, ağ üzerinden veri iletimi için kullanılan bir arayüzü ifade eder. Socket programlaması, bilgisayarlar arasında veri iletimi sağlamak için kullanılan bir API (Application Programming Interface) setini içerir.

Socket programlaması genellikle iki türde gerçekleşir: TCP (Transmission Control Protocol) ve UDP (User Datagram Protocol).


TCP (Transmission Control Protocol): Güvenilir, bağlantı odaklı bir iletişim protokolüdür.
Veri paketleri, gönderici ve alıcı arasında güvenli bir bağlantı kurularak iletilir.
TCP, veri paketlerinin sırasını korur ve paket kaybını önlemek için tekrar iletim sağlar.


UDP (User Datagram Protocol): Bağlantısız, güvenilirlik garantisi olmayan bir iletişim protokolüdür.
Veri paketleri, alıcıya doğrudan gönderilir, ancak paket kaybı veya sıralama garantisi yoktur.
UDP, özellikle hızlı veri iletimi gerektiren durumlarda tercih edilir.

Arasındaki farkı daha rahat anlamanız için:


Biraz da espriye kaçalım :)


Socket Programlaması İçerdiği Adımlar

Socket Oluşturma: İki taraftaki iletişim için birer socket oluşturulur.
Bağlantı Kurma (Opsiyonel): TCP tabanlı bir iletişimde, bağlantı kurma adımı gerçekleştirilebilir.
Veri Gönderme ve Alım: Oluşturulan socket aracılığıyla veri gönderme ve alma işlemleri gerçekleştirilir.
Bağlantı Sonlandırma (Opsiyonel): İletişim tamamlandığında, bağlantı kapatılabilir.
Genel olarak görsel yardımları ile de "
socket" kavramını anladığımıza göre şimdi işin uygulama kısmına geçelim;



Python Socket Programlama

Python'da socket kütüphanesi, ağ programlaması için kullanılan bir modüldür. Bu modül, bilgisayarlar arasında veri iletimi ve iletişimi sağlamak için kullanılır.
Socket programlaması genellikle TCP/IP protokolünü temel alır ve bir bilgisayarın belirli bir IP adresi ve port numarası üzerinden başka bir bilgisayarla iletişim kurmasına olanak tanır.


Socket Türleri:


socket.AF_INET: IPv4 adres türü.
socket.AF_INET6: IPv6 adres türü.
socket.SOCK_STREAM: TCP bağlantıları için.
socket.SOCK_DGRAM: UDP bağlantıları için.
Diğer türler: socket.SOCK_RAW, socket.SOCK_RDM, socket.SOCK_SEQPACKET, vb.


Metodlar:
socket.bind(address): Bir adresi sokete bağlar.
socket.listen(backlog): Bağlantıları bekler ve kuyruğa ekler.
socket.accept(): Bağlantıyı kabul eder.
socket.connect(address): Bir adrese bağlanır.
socket.send(data): Veriyi gönderir.
socket.recv(bufsize): Belirtilen miktarda veri alır.
socket.close(): Soketi kapatır.

Diğer Özellikler:

socket.setsockopt(level, optname, value): Soket seçeneklerini ayarlar.
socket.getsockopt(level, optname[, buflen]): Soket seçeneklerini alır.
socket.settimeout(timeout): Soket zaman aşımını belirler.
socket.gettimeout(): Soket zaman aşımını alır.
socket.setblocking(flag): Bloklayıcı modu ayarlar.
socket.makefile(mode[, buffering]): Bir soket nesnesini dosya benzeri bir nesneye dönüştürür.

IPv6 Desteği:

IPv6 adres türü (socket.AF_INET6) ile IPv6 ağlarına bağlanma ve hizmet verme.

Broadcast ve Multicast Desteği:

Broadcast iletişim için kullanılabilir.
Multicast gruplarına katılma ve onlardan ayrılma.

Secured Socket Layer (SSL) Desteği:

ssl modülü ile birlikte kullanarak şifreli iletişim sağlar.

Asenkron İşlemler:

asyncio kütüphanesi ile birlikte kullanılarak asenkron (non-blocking) soket işlemleri yapabilirsiniz.

Raw Soketler:

socket.SOCK_RAW kullanarak ağ katmanında direkt kontrol sağlayabilirsiniz.


Temel İşlemler

Server (Sunucu) Oluşturma:


Sunucu oluşturmak için bir soket (socket) nesnesi yaratılır ve bir IP adresi ve port numarası atanır. Ardından bind ve listen metodları kullanılarak bağlantıları dinlemeye başlar.

Not: her kodda "import" ile "socket" kütüphanesini "import socket" ile içeriye aktarmanız gerekecektir.

Python:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)

server_socket.bind(server_address)
server_socket.listen(5)  # En fazla 5 bekleyen bağlantıyı kabul et

print("Server listening on {}:{}".format(*server_address))

Client (İstemci) Bağlantısı:
İstemci, sunucuyla bağlantı kurmak için connect metodunu kullanır.
Python:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)

client_socket.connect(server_address)

Veri Gönderme ve Alımı:

"send" ve "recv" metodları kullanılarak veri gönderilebilir ve alınabilir.
Python:
# Sunucu tarafında
connection, client_address = server_socket.accept()
data = connection.recv(1024)  # 1024 byte'lık veri al

# İstemci tarafında
client_socket.send(b"Hello, server! How are you?")
Bağlantı Kapatma:
close metodunu kullanarak bağlantıları kapatabilirsiniz.
Python:
# Sunucu ve istemci tarafında
connection.close()
server_socket.close()
client_socket.close()

Socket Serveri:
Python:
import socket
import threading

# Sunucu ayarları
SERVER_HOST = 'localhost'
SERVER_PORT = 12345

def handle_client(client_socket):
    try:
        # İstemciden gelen veriyi al
        data = client_socket.recv(1024)
        print("Received from {}: {}".format(client_socket.getpeername(), data.decode()))

        # İstemciye hoşgeldin mesajını gönder
        welcome_message = "Welcome to the server!"
        client_socket.send(welcome_message.encode())
    finally:
        # Bağlantıyı kapat
        client_socket.close()

def start_server():
    # IPv4 ve TCP kullanarak bir soket oluştur
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
    try:
        # Soketi belirtilen IP ve port numarasına bağla
        server_socket.bind((SERVER_HOST, SERVER_PORT))
        # Bağlantıları dinlemeye başla
        server_socket.listen(5)
        print("Server listening on {}:{}".format(SERVER_HOST, SERVER_PORT))

        while True:
            # Bağlantıyı kabul et
            client_socket, client_address = server_socket.accept()
            print("Accepted connection from {}:{}".format(*client_address))

            # İstemci için yeni bir iş parçacığı oluştur
            client_handler = threading.Thread(target=handle_client, args=(client_socket,))
            client_handler.start()

    except KeyboardInterrupt:
        print("Server shutting down.")
    finally:
        # Soketi kapat
        server_socket.close()

if __name__ == "__main__":
    start_server()
Socket İstemcisi:
Python:
import socket

# Sunucu ayarları
SERVER_HOST = 'localhost'
SERVER_PORT = 12345

# İstemci soketi oluştur
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Sunucuya bağlan
    client_socket.connect((SERVER_HOST, SERVER_PORT))
 
    # Sunucudan hoşgeldin mesajını al
    welcome_message = client_socket.recv(1024)
    print("Received from server: {}".format(welcome_message.decode()))

    # İstemci olarak sunucuya bir mesaj gönder
    message_to_send = "Hello, server! I'm the client."
    client_socket.send(message_to_send.encode())
finally:
    # İstemci soketini kapat
    client_socket.close()

Python gibi birçok programlama dilinde socket programlaması için hazır kütüphaneler bulunmaktadır.
Örneğin, Python'da socket modülü, bu tür iletişim işlemlerini gerçekleştirmek için kullanılır fakat alternatif kütüphaneler ve örnek kodlara da
bakmak isterseniz onlardan da bahsedeyim.


Twisted

Twisted, asenkron ağ programlaması için kapsamlı bir kütüphanedir.
TCP, UDP, SSL gibi protokollerle çalışabilir.
Hem server hem de client uygulamaları oluşturmak için kullanılabilir.

Python:
from twisted.internet import reactor, protocol

class MyProtocol(protocol.Protocol):
    def connectionMade(self):
        self.transport.write(b"Merhaba, dünya!")

class MyFactory(protocol.Factory):
    def buildProtocol(self, addr):
        return MyProtocol()

reactor.listenTCP(12345, MyFactory())
reactor.run()

Tornado



Tornado, web uygulamaları için geliştirilmiş bir framework olmasına rağmen,
aynı zamanda asenkron ağ programlaması için kullanılabilir. WebSocket desteği bulunur.
Tornado genellikle web uygulamalarında kullanılsa da, genel ağ programlama ihtiyaçları için de kullanılabilir.


Python:
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Merhaba, dünya!")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(12345)
    tornado.ioloop.IOLoop.current().start()
ZeroMQ


ZeroMQ, hafif ve yüksek performanslı bir mesajlaşma kütüphanesidir.
Çoklu dil desteği sunar ve birçok farklı iletişim modelini destekler.
Sisteminizde ZeroMQ yüklü değilse, önce pip install pyzmq ile kütüphaneyi yükleyebilirsiniz.



Python:
import zmq

context = zmq.Context()

# PUB-SUB örneği
publisher = context.socket(zmq.PUB)
publisher.bind("tcp://127.0.0.1:12345")

# Veri gönderme
publisher.send(b"Merhaba, dünya!")

Uzun bir vaktimi aldı hazırlamak bunun karşılığında konuyu beğenmeyi ve
güzel bir mesaj atmayı unutmayalım :)

okuyan herekese teşekkürlerimi sunuyourum 🌹 💘

sorulara açığım ve gözümden kaçan bir şey olduysa söyleyebilirsiniz :)


bu günlük de benden bu kadar olsun :)
 
Son düzenleme:

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
Yanlış anlamayın python dilini hiç bilmiyorum sadece merakımdan soruyorum neden 1024 byte? 2048 alırsa ne değişir?
Herhangi bir yanlış anlama olmaz, dilediğiniz soruyu sorabilirsiniz.

1024 byte yerine 2048 alırsanız, daha büyük bir veri boyutu (clientten alım ve geri aktarım) elde etmiş olursunuz. Kısacası, ben ufak bir sunucu örneği yaptığım için 1024 byte kullandım. Daha fazla byte değeri kullanmak ağınızı zorlayabilir; diğer büyük sunucular, örneğin "Google," gibi daha fazla veri kullanır.
 

invisible blood

Uzman üye
15 Eyl 2023
1,177
443

Merhaba, ben Bunjo, bu sefer "Ruby" dışında "Python" ile "socket"
kütüphanesini çalışacağız - daha sonra Ruby için de bu anlatımı yapacağım -
uzatmadan konuya girişimizi yapalım.



Nedir Bu Socket Kavramı?

Socket, bilgisayar ağlarında ve iletişim protokollerinde kullanılan bir kavramdır. Programlamada ise genellikle "socket" kelimesi, ağ üzerinden veri iletimi için kullanılan bir arayüzü ifade eder. Socket programlaması, bilgisayarlar arasında veri iletimi sağlamak için kullanılan bir API (Application Programming Interface) setini içerir.

Socket programlaması genellikle iki türde gerçekleşir: TCP (Transmission Control Protocol) ve UDP (User Datagram Protocol).


TCP (Transmission Control Protocol): Güvenilir, bağlantı odaklı bir iletişim protokolüdür.
Veri paketleri, gönderici ve alıcı arasında güvenli bir bağlantı kurularak iletilir.
TCP, veri paketlerinin sırasını korur ve paket kaybını önlemek için tekrar iletim sağlar.


UDP (User Datagram Protocol): Bağlantısız, güvenilirlik garantisi olmayan bir iletişim protokolüdür.
Veri paketleri, alıcıya doğrudan gönderilir, ancak paket kaybı veya sıralama garantisi yoktur.
UDP, özellikle hızlı veri iletimi gerektiren durumlarda tercih edilir.

Arasındaki farkı daha rahat anlamanız için:


Biraz da espriye kaçalım :)


Socket Programlaması İçerdiği Adımlar

Socket Oluşturma: İki taraftaki iletişim için birer socket oluşturulur.
Bağlantı Kurma (Opsiyonel): TCP tabanlı bir iletişimde, bağlantı kurma adımı gerçekleştirilebilir.
Veri Gönderme ve Alım: Oluşturulan socket aracılığıyla veri gönderme ve alma işlemleri gerçekleştirilir.
Bağlantı Sonlandırma (Opsiyonel): İletişim tamamlandığında, bağlantı kapatılabilir.
Genel olarak görsel yardımları ile de "
socket" kavramını anladığımıza göre şimdi işin uygulama kısmına geçelim;



Python Socket Programlama

Python'da socket kütüphanesi, ağ programlaması için kullanılan bir modüldür. Bu modül, bilgisayarlar arasında veri iletimi ve iletişimi sağlamak için kullanılır.
Socket programlaması genellikle TCP/IP protokolünü temel alır ve bir bilgisayarın belirli bir IP adresi ve port numarası üzerinden başka bir bilgisayarla iletişim kurmasına olanak tanır.


Socket Türleri:


socket.AF_INET: IPv4 adres türü.
socket.AF_INET6: IPv6 adres türü.
socket.SOCK_STREAM: TCP bağlantıları için.
socket.SOCK_DGRAM: UDP bağlantıları için.
Diğer türler: socket.SOCK_RAW, socket.SOCK_RDM, socket.SOCK_SEQPACKET, vb.


Metodlar:
socket.bind(address): Bir adresi sokete bağlar.
socket.listen(backlog): Bağlantıları bekler ve kuyruğa ekler.
socket.accept(): Bağlantıyı kabul eder.
socket.connect(address): Bir adrese bağlanır.
socket.send(data): Veriyi gönderir.
socket.recv(bufsize): Belirtilen miktarda veri alır.
socket.close(): Soketi kapatır.

Diğer Özellikler:

socket.setsockopt(level, optname, value): Soket seçeneklerini ayarlar.
socket.getsockopt(level, optname[, buflen]): Soket seçeneklerini alır.
socket.settimeout(timeout): Soket zaman aşımını belirler.
socket.gettimeout(): Soket zaman aşımını alır.
socket.setblocking(flag): Bloklayıcı modu ayarlar.
socket.makefile(mode[, buffering]): Bir soket nesnesini dosya benzeri bir nesneye dönüştürür.

IPv6 Desteği:

IPv6 adres türü (socket.AF_INET6) ile IPv6 ağlarına bağlanma ve hizmet verme.

Broadcast ve Multicast Desteği:

Broadcast iletişim için kullanılabilir.
Multicast gruplarına katılma ve onlardan ayrılma.

Secured Socket Layer (SSL) Desteği:

ssl modülü ile birlikte kullanarak şifreli iletişim sağlar.

Asenkron İşlemler:

asyncio kütüphanesi ile birlikte kullanılarak asenkron (non-blocking) soket işlemleri yapabilirsiniz.

Raw Soketler:

socket.SOCK_RAW kullanarak ağ katmanında direkt kontrol sağlayabilirsiniz.


Temel İşlemler

Server (Sunucu) Oluşturma:


Sunucu oluşturmak için bir soket (socket) nesnesi yaratılır ve bir IP adresi ve port numarası atanır. Ardından bind ve listen metodları kullanılarak bağlantıları dinlemeye başlar.

Not: her kodda "import" ile "socket" kütüphanesini "import socket" ile içeriye aktarmanız gerekecektir.

Python:
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)

server_socket.bind(server_address)
server_socket.listen(5)  # En fazla 5 bekleyen bağlantıyı kabul et

print("Server listening on {}:{}".format(*server_address))

Client (İstemci) Bağlantısı:
İstemci, sunucuyla bağlantı kurmak için connect metodunu kullanır.
Python:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)

client_socket.connect(server_address)

Veri Gönderme ve Alımı:

"send" ve "recv" metodları kullanılarak veri gönderilebilir ve alınabilir.
Python:
# Sunucu tarafında
connection, client_address = server_socket.accept()
data = connection.recv(1024)  # 1024 byte'lık veri al

# İstemci tarafında
client_socket.send(b"Hello, server! How are you?")
Bağlantı Kapatma:
close metodunu kullanarak bağlantıları kapatabilirsiniz.
Python:
# Sunucu ve istemci tarafında
connection.close()
server_socket.close()
client_socket.close()

Socket Serveri:
Python:
import socket
import threading

# Sunucu ayarları
SERVER_HOST = 'localhost'
SERVER_PORT = 12345

def handle_client(client_socket):
    try:
        # İstemciden gelen veriyi al
        data = client_socket.recv(1024)
        print("Received from {}: {}".format(client_socket.getpeername(), data.decode()))

        # İstemciye hoşgeldin mesajını gönder
        welcome_message = "Welcome to the server!"
        client_socket.send(welcome_message.encode())
    finally:
        # Bağlantıyı kapat
        client_socket.close()

def start_server():
    # IPv4 ve TCP kullanarak bir soket oluştur
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
    try:
        # Soketi belirtilen IP ve port numarasına bağla
        server_socket.bind((SERVER_HOST, SERVER_PORT))
        # Bağlantıları dinlemeye başla
        server_socket.listen(5)
        print("Server listening on {}:{}".format(SERVER_HOST, SERVER_PORT))

        while True:
            # Bağlantıyı kabul et
            client_socket, client_address = server_socket.accept()
            print("Accepted connection from {}:{}".format(*client_address))

            # İstemci için yeni bir iş parçacığı oluştur
            client_handler = threading.Thread(target=handle_client, args=(client_socket,))
            client_handler.start()

    except KeyboardInterrupt:
        print("Server shutting down.")
    finally:
        # Soketi kapat
        server_socket.close()

if __name__ == "__main__":
    start_server()
Socket İstemcisi:
Python:
import socket

# Sunucu ayarları
SERVER_HOST = 'localhost'
SERVER_PORT = 12345

# İstemci soketi oluştur
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    # Sunucuya bağlan
    client_socket.connect((SERVER_HOST, SERVER_PORT))
 
    # Sunucudan hoşgeldin mesajını al
    welcome_message = client_socket.recv(1024)
    print("Received from server: {}".format(welcome_message.decode()))

    # İstemci olarak sunucuya bir mesaj gönder
    message_to_send = "Hello, server! I'm the client."
    client_socket.send(message_to_send.encode())
finally:
    # İstemci soketini kapat
    client_socket.close()

Python gibi birçok programlama dilinde socket programlaması için hazır kütüphaneler bulunmaktadır.
Örneğin, Python'da socket modülü, bu tür iletişim işlemlerini gerçekleştirmek için kullanılır fakat alternatif kütüphaneler ve örnek kodlara da
bakmak isterseniz onlardan da bahsedeyim.


Twisted

Twisted, asenkron ağ programlaması için kapsamlı bir kütüphanedir.
TCP, UDP, SSL gibi protokollerle çalışabilir.
Hem server hem de client uygulamaları oluşturmak için kullanılabilir.

Python:
from twisted.internet import reactor, protocol

class MyProtocol(protocol.Protocol):
    def connectionMade(self):
        self.transport.write(b"Merhaba, dünya!")

class MyFactory(protocol.Factory):
    def buildProtocol(self, addr):
        return MyProtocol()

reactor.listenTCP(12345, MyFactory())
reactor.run()

Tornado



Tornado, web uygulamaları için geliştirilmiş bir framework olmasına rağmen,
aynı zamanda asenkron ağ programlaması için kullanılabilir. WebSocket desteği bulunur.
Tornado genellikle web uygulamalarında kullanılsa da, genel ağ programlama ihtiyaçları için de kullanılabilir.


Python:
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Merhaba, dünya!")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(12345)
    tornado.ioloop.IOLoop.current().start()
ZeroMQ


ZeroMQ, hafif ve yüksek performanslı bir mesajlaşma kütüphanesidir.
Çoklu dil desteği sunar ve birçok farklı iletişim modelini destekler.
Sisteminizde ZeroMQ yüklü değilse, önce pip install pyzmq ile kütüphaneyi yükleyebilirsiniz.



Python:
import zmq

context = zmq.Context()

# PUB-SUB örneği
publisher = context.socket(zmq.PUB)
publisher.bind("tcp://127.0.0.1:12345")

# Veri gönderme
publisher.send(b"Merhaba, dünya!")

Uzun bir vaktimi aldı hazırlamak bunun karşılığında konuyu beğenmeyi ve
güzel bir mesaj atmayı unutmayalım :)

okuyan herekese teşekkürlerimi sunuyourum 🌹 💘

sorulara açığım ve gözümden kaçan bir şey olduysa söyleyebilirsiniz :)


bu günlük de benden bu kadar olsun :)
Elinize sağlık bunjo hocam👍👍👍
 

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
soket mantığını bilen bir çok şeyi bilmiş olur mu?
Ben tüm internet âleminin socketler üzerine döndüğünü düşünüyorum. Soketleri bilen birisinin araç kullanmadan direk olarak pentest yapabileceği görüşündeyim.
Maalesef hayır, eğer burada anlatılanlar doğrultusunda kalırsam; socket işlemlerinin düşük seviye doğrultusunda sistem tcp/udp protokolleriyle sistemlerin haberleşmeleri için vardır ayrıca "networking" kavramı sadece socket bağlantılarından ibaret değildir, elbette bir düzeye kadar işinize çok yarayacaktır şahsen ben çoğu aracımda ve exploitlerimde kullanıyorum, benim şahsi fikrim bu.
 

kurononyanko

Katılımcı Üye
6 Şub 2022
534
397
Maalesef hayır, eğer burada anlatılanlar doğrultusunda kalırsam; socket işlemlerinin düşük seviye doğrultusunda sistem tcp/udp protokolleriyle sistemlerin haberleşmeleri için vardır ayrıca "networking" kavramı sadece socket bağlantılarından ibaret değildir, elbette bir düzeye kadar işinize çok yarayacaktır şahsen ben çoğu aracımda ve exploitlerimde kullanıyorum, benim şahsi fikrim bu.
tabii ki sadece socket değil.
Ancak ben bi ara bir fileste bir uzak sunucuda tesadüfen bulduğum bir açıktan sonra socket olayında döndüğünü düşünüyorum. İyi de hocam zaten her şey haberleşme ile ilgili değil mi? Hatırla web 2.0 döneminde tüm haberleşmeler minimum düzeyde şifrelendiği için harici birinin ağ üzerinden verileri okuyabilme durumları çok idi. Airgeddon tarzı yazımların şuan ki gelişmişliğinin web 2.0 zamanında olduğunu bir hayal etsene? Bankaları bile indirirdin.
Benim tesadüfen bulduğum açık ise:
sunucudaki tüm veriler akış esnasında benim üzerimden şifresiz olarak akışını sağlayan bir açık.
Ya da şöyle düşün hocam, ben otelciyim ve genelde şahit de oluyorum.
Gurbetci vatandaşlarımız geliyor önce Türkçe konuşuyorlar ama aralarında hemen almancaya geçiyorlar şayet ben almanca bilseydim hakkımda ne dediklerini anlar ve bunu çaktırmadan planlama/bir sonraki adımı mı buna göre yapmaz mıydım?

İnan bana her şey bağlantı ve soketlerde yatıyor.
 

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
tabii ki sadece socket değil.
Ancak ben bi ara bir fileste bir uzak sunucuda tesadüfen bulduğum bir açıktan sonra socket olayında döndüğünü düşünüyorum. İyi de hocam zaten her şey haberleşme ile ilgili değil mi? Hatırla web 2.0 döneminde tüm haberleşmeler minimum düzeyde şifrelendiği için harici birinin ağ üzerinden verileri okuyabilme durumları çok idi. Airgeddon tarzı yazımların şuan ki gelişmişliğinin web 2.0 zamanında olduğunu bir hayal etsene? Bankaları bile indirirdin.
Benim tesadüfen bulduğum açık ise:
sunucudaki tüm veriler akış esnasında benim üzerimden şifresiz olarak akışını sağlayan bir açık.
Ya da şöyle düşün hocam, ben otelciyim ve genelde şahit de oluyorum.
Gurbetci vatandaşlarımız geliyor önce Türkçe konuşuyorlar ama aralarında hemen almancaya geçiyorlar şayet ben almanca bilseydim hakkımda ne dediklerini anlar ve bunu çaktırmadan planlama/bir sonraki adımı mı buna göre yapmaz mıydım?

İnan bana her şey bağlantı ve soketlerde yatıyor.
Bir yere kadar haklısınız, soket programlaması ve ağ iletişimi konularına hakim olmak, bir kişinin bilgi düzeyini genişletebilir ancak genel bir bilgi yelpazesine sahip olmayı sağlamaz. Örneğin, soketlerin düşük seviyeli ağ iletişimini yönetmek için kullanıldığını bilmek önemlidir, ancak bu bilgi, bir kişinin sistem güvenliği, veri tabanı yönetimi veya web uygulaması geliştirme konularında bilgi sahibi olup olmadığını belirlemez. Pentest yapabilmek için sadece soketlerin mantığını bilmek yeterli değildir. Bu tür bir faaliyet, bilgi güvenliği, ağ güvenliği, sistem yönetimi ve genel olarak bilişim güvenliği konularında geniş bir bilgi ve deneyim gerektirir. Soket programlaması, bir kişiye ağlar ve iletişim hakkında temel bilgiler kazandırabilir, ancak geniş bir konu yelpazesinde derinleşmek ve uzmanlaşmak, farklı alanlarda bilgi edinmeyi gerektirebilir. İnternet üzerindeki tüm haberleşmenin soketler üzerine döndüğünü söylemek doğru olmayabilir; çünkü farklı protokoller ve teknolojiler de kullanılmaktadır. Son olarak, herkesin bilgi seviyesi ve becerileri farklıdır. Soket programlamasını bilmek, bir kişinin bilişim güvenliği alanında yetkinlik kazanmasına yardımcı olabilir, ancak bu tek başına yeterli değildir. Her konuda uzmanlık ve sürekli öğrenme önemlidir, çoğu platform ve internet ortamlarında da evet socket kullanılır.
 

kurononyanko

Katılımcı Üye
6 Şub 2022
534
397
Bir yere kadar haklısınız, soket programlaması ve ağ iletişimi konularına hakim olmak, bir kişinin bilgi düzeyini genişletebilir ancak genel bir bilgi yelpazesine sahip olmayı sağlamaz. Örneğin, soketlerin düşük seviyeli ağ iletişimini yönetmek için kullanıldığını bilmek önemlidir, ancak bu bilgi, bir kişinin sistem güvenliği, veri tabanı yönetimi veya web uygulaması geliştirme konularında bilgi sahibi olup olmadığını belirlemez. Pentest yapabilmek için sadece soketlerin mantığını bilmek yeterli değildir. Bu tür bir faaliyet, bilgi güvenliği, ağ güvenliği, sistem yönetimi ve genel olarak bilişim güvenliği konularında geniş bir bilgi ve deneyim gerektirir. Soket programlaması, bir kişiye ağlar ve iletişim hakkında temel bilgiler kazandırabilir, ancak geniş bir konu yelpazesinde derinleşmek ve uzmanlaşmak, farklı alanlarda bilgi edinmeyi gerektirebilir. İnternet üzerindeki tüm haberleşmenin soketler üzerine döndüğünü söylemek doğru olmayabilir; çünkü farklı protokoller ve teknolojiler de kullanılmaktadır. Son olarak, herkesin bilgi seviyesi ve becerileri farklıdır. Soket programlamasını bilmek, bir kişinin bilişim güvenliği alanında yetkinlik kazanmasına yardımcı olabilir, ancak bu tek başına yeterli değildir. Her konuda uzmanlık ve sürekli öğrenme önemlidir, çoğu platform ve internet ortamlarında da evet socket kullanılır.
Tamam hocam seni daha fazla kızdırmayayım ama aynı şeyi ifade ediyoruz da farkında değilsin.
Almancayı tcp
japoncayı syn
ingilizceyi socket
Fransızcayı bağlantı tiplerindeki kriptografi vs farz et.

Yani demem şu hocam, bağlantı & iletişim & protokol ve protokoldeki kriptografilere hakim birisi masaüstü yazılımcılık, yada yazılımsal(masaüstü) hacking ile uğraşanları deler geçer. Bağlantı işlerini bilmek demek baya önde olmak demek diyorum hocam.
Kızma emi :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.