Arpchat - Yalnızca ARP ile aynı ağdaki arkadaşına mesaj gönderen sohbet uygulaması
(github.com/kognise)- arpchat, bilgisayarların aynı ağdaki diğer bilgisayarların MAC adreslerini bulmak için kullandığı ARP'yi bir sohbet uygulamasına dönüştüren bir araçtır
- İstemci izolasyonlu bir ağda arkadaşlarla sohbet etme kullanım senaryosu, projeye motivasyon olarak sunuluyor
- ARP üzerinde basit, genel amaçlı bir aktarım protokolü uygulanarak on binlerce karakter uzunluğunda mesajlar gönderilebiliyor ve bir miktar sıkıştırma da kullanılıyor
- Çevrimiçi kullanıcı listesini giriş ve çıkış bildirimleriyle birlikte güncellemek için presence discovery ve heartbeat sistemi bulunuyor
- Kurulum için ikili dosyalar releases page üzerinden indirilebilir
- Windows'ta npcap gerekebilir; kurulum sırasında
Install Npcap in WinPcap API-compatible Modeseçeneğinin işaretlenmesi gerekir - Linux'ta
sudo setcap CAP_NET_RAW+ep /path/to/arpchatkomutuyla ağ yetkisi verilmesi gerekebilir
- Windows'ta npcap gerekebilir; kurulum sırasında
- İkili dosya terminalden çalıştırılır; gönderdiğiniz mesaj kendi ekranınızda görünüyorsa düzgün çalıştığı anlaşılabilir
- Derleme, en güncel unstable Rust sürümünde test edilmiştir; Windows derlemesi için WinPcap Developer's Pack ve
LIBortam değişkenininWpdPack/Lib/x64/klasörüne ayarlanması gerekir
1 yorum
Hacker News yorumları
Bunu yapan kişiyim. Bugün HN’ye koyduğum başka bir şeyi de ben yaptım (https://news.ycombinator.com/item?id=37062422); ArpChat’in de birlikte gündeme gelmesini görmek oldukça ilginç. Muhtemelen biri profilime bakmış
Gerçekten eğlenceli bir projeydi ve ağ iletişimi hakkında çok şey öğrendim
Kısa süre önce tamamen çevrimdışı bir ortamda gerçekten deneme fırsatım oldu; eğlenceliydi. Ancak sonrasında büyük bir hata keşfettim ve bu hata muazzam gecikmeye yol açıyordu. Düzelttim ama henüz yeni build çıktısını yükleyemedim; gerçek ortamda test etmeyi düşünüyorsanız kaynaktan kendiniz derlemeniz daha iyi olur. Eğlencesine kullanıcı adı renkleri ve mesaj zamanı da ekledim. Yakında yeni bir sürüm yayımlayacağıma söz veriyorum
İlgilenirseniz yaklaşık 1 yıl önce ArpChat’in nasıl çalıştığını yazdığım bir yazı da var: https://kognise.dev/writing/arp
Kodla oynamaya devam etmeni dilerim. justine tunney’nin https://justine.lol/ape.html gibi işlerde gösterdiği şeye de biraz benziyor. Az kişinin gerçekten anladığı bir alana, örneğin derleyici ikili dosya biçimlerinin ayrıntılarına derinlemesine dalıp sonra “tüm ikili biçimleri tek bir meta biçimde birleştirip gerçekten hepsinde çalıştırabilir miyiz?” gibi çılgın bir soru sormak ve gerçekten çalışan bir şey ortaya çıkarmak gibi
# sudo getcap ./arpchat./arpchat cap_net_raw=ep“error getting channel, might be missing permissions” alıyorum
Ek: Bu hata
setcapayarından değil, arpchat’ten geliyorTam da böyle bir şey istiyordum. Veri bağlantı katmanı muzipliği ha
Address Resolution Protocol’ün (ARP) ne olduğunu bilmeyenler için çok kabaca söylemek gerekirse, MAC adresleri (Ethernet’in kullandığı) ile IP adresleri (internetin kullandığı) arasındaki eksik halkadır.
routeile görebildiğiniz IP yönlendirme tablosu paketin bir sonraki hangi IP adresine gönderileceğini belirlediğinde,arpile görebildiğiniz ARP önbelleği de o IP’ye karşılık gelen MAC adresini belirler. Bu genellikle yönlendiricinin yerel IP adresidirBugünlerde ARP’nin var olduğunu bilmek bile biraz uzmanlık dışı gizemli bilgi gibi görülüyor; IPv6 tarafındaki kardeşi Neighbor Discovery Protocol için bu daha da geçerli. Modern bulut tabanlı dağıtımlarda sık sık doğrudan uğraşmasanız bile, varlığını bilmek tüm ağ yığınına kuşbakışı bakışı çok daha eksiksiz hâle getirir
arping, aynı ağ segmentindeki bir cihazın açık olup ICMP ping’e yanıt vermediğini kontrol ederken çok kullanışlıdırtcpdumpveya Wireshark dump’larına bakarsanız er ya da geç mutlaka karşınıza çıkar. Yine de yazılım mühendisleri için bulut ile geleneksel ağlar oldukça farklı olduğundan, bunu uygulamalardan önce ev ağını debug ederken görmeleri mümkünARP’nin keyfi payload taşıyabilmesini kötüye kullanmak eğlenceli, ama ağ iletişimine giriş açısından yeniden söylemek gerekirse yazarın dayandığı temel nokta, switch’in
ff:ff:ff:ff:ff:ffadresine giden paketleri tüm broadcast domain içine flood etmesi gibi basit bir gerçekSüper kullanıcı yetkileri veya raw packet yetkileri olmadan da L3 broadcast adresine paket gönderirseniz bu genellikle L2’de flood edilir; dolayısıyla benzer bir mesaj yayılımı oluşturabilirsiniz. Yani broadcast adresine ping atmak eğlencelidir
ARP kullanmanın özel bir avantajı yok. Ayrıca modern switch’lerin çoğunda ARP paketlerini izleme özellikleri bulunduğundan, büyük miktarda sahte ARP trafiği akıtmak gerçekten kötü etkilere yol açabilir. Yine de eğlenceli bir çalışma ve öğrenirken yaptığım şakaları hatırlatıyor. Ben şahsen bu amaç için ICMP’yi kötüye kullanırdım; bu gelecekteki geliştirme yönü de olabilir. Eğlenceli proje için alkışlar
ARP, DNS, HTTP, TLS bir yandan aklımıza gelen o protokollerin ta kendisi, ama aynı zamanda hepsi yalnızca sayılardan ibaret. ARP de HTTP ile aynı sayı uzayına erişir. UDP’nin 11 bitlik bayt kullandığı falan yok, DNS’in kullanabildiği özel bir CPU komutu da yok. Sonuçta hepsi sayı. En sonunda istediğiniz sayıları hatta itebilirsiniz; dünyanın geri kalanı da o sayıları alıp kendi yaptığı şeyi yapar
Bugün çalışmaması gerekir, ama o zamanlar saf TCP/IP uygulamaları, yani epey çoğu, memnuniyetle katılıyordu
Çoğu işletim sisteminde varsayılan olarak yerleşik gelen protokolleri kötüye kullanmayı seviyorum. Ayrı istemci yazılımı kurmayı gerektirmeyen, platformlar arası bir GUI/CLI mesajlaşma sistemi bulamadığım için, Finder.app/Explorer.exe/Gnome/KDE içinden mesajların görülebildiği aptalca bir sahte Samba paylaşımı yapmıştım
Yerel ağda netcat çağrıları da pek iyi çalışmıyordu; broadcast yapmak içinse işletim sistemine göre bayrak farklılıkları vardı. Dosya gezgininde Samba paylaşımındaki mesajı görüp tıkladıktan sonra, dosya adını değiştirerek 3 satırlık bir “ilan panosunu” güncelleme yöntemiydi
https://github.com/jedahan/samba-haiku/blob/master/index.js
Bu da aslında Wi-Fi SSID kullanarak captive portal haiku’su yapan şeyi yeniden uygulamaktı
https://github.com/jedahan/haiku-wifi
Beklenenden daha da eğlenceli olabilir. Büyük üreticilerin donanımıyla VLAN kullanarak ağı ayırıyorduk; çoğu durumda VLAN çalışıyordu ama ARP trafiğinin sızdığını fark ettik
Makinelerin tüm trafiği yönlendirici üzerinden göndermesi gerekiyordu, ama arada görmemeleri gereken ARP yanıtlarını görüp diğer makinelere doğrudan ulaşabileceklerine karar veriyorlardı. Sonuçta ARP önbelleği girdisi süresi dolana kadar trafik gönderemiyorduk ve bu baş ağrıttı. Üretici çok büyüktü, umursamadı ve hatayı düzeltmeye de ilgi göstermedi
Belirli durumlarda bu sohbet uygulaması VLAN’ı delebilir
Eşim, çocuklarım ve ben çoğunlukla evden çalıştığımız ya da okuduğumuz için sık sık ayrı odalarda oluyoruz. Gerektiğinde birbirimize mesaj atmak için BeeBEEP kullanıyoruz. Sunucu gerektirmemesi ve hem Linux hem de Windows istemcilerinin olması belirleyiciydi
Gayet iyi çalışıyor ama dizüstü bilgisayar uykudan uyandıktan sonra LAN’daki diğer kişileri tekrar görebilmesi için bazen yeniden başlatmak gerekiyor. Ayrıca sistem tepsisi simgesinden doğrudan belirli bir kişiye mesaj penceresi açılamaması neredeyse tek şikâyetim. Komik kedi fotoğraflarını kopyalayıp yapıştırabiliyorsunuz; dosya aktarımı gibi benim kullanmadığım özellikleri de var. Ücretli reklam değil, sadece uzun uzun anlatmış oldum
https://www.beebeep.net/
Lisede bunu
net sendile yapıp azar işitmiştimBu yüzden sistem yöneticisinin kullanıcı adını spoof ettim (Win9x’te zor değildi) ve sert bir uyarı mesajı gönderdim. Mesajların birden kesilmesine bakılırsa epey şaşırmış olmalılar
writeselam söylüyorhttps://en.wikipedia.org/wiki/Write_(Unix)
net sendin domaine bağlı olmayı gerektirdiğini hatırlıyorum; bu yüzden ARP kullanmış olacağını sanmıyorumÇok havalı. Ancak TCP/IP, OSI modelini izlemediği için OSI’nin ince ayrımlarını aynen uygulamak zor
ARP pratikte Stevens’ın TCP/IP modeline göre 2.5. katman olarak tanımlanabilir; bu yüzden 2.5 demek en mantıklısı gibi görünüyor. Ayrıca ARP frame’leri yönlendirilmez, dolayısıyla açıkça L3 değildir
IPv4 NAT’ın fiilen standart olduğu dönemde —bugün de öyle sayılır ama artık IPv6 ve CGNAT da var— NATChat diye bir şey yapmıştım
Temel olarak genel IPv4 adresine göre sohbet odası oluşturuyor ve aynı ağdaki herkesle sohbet etmenizi sağlıyordu. Ofiste başkalarıyla kullanmak için oldukça iyiydi. Ofis denen şey de o zamanlar vardı tabii
C++ ile yazılmış benzer bir şey de var: https://github.com/gbonacini/arpchatcpp