E-Bülten’e kayıt olun

E-Posta:



Yazıcını Tanı

3 boyutlu yazıcı

Yazıcını Tanı

3 boyutlu yazıcı. Şimdiye kadar hakkında hiçbir şey duyup görmemiş olunsa bile ismini okuyunca ne yaptığına dair bir fikir oluşuyor. Benim üç boyutlu yazıcılara dair duyduğum ilk haberler genelde askeri alanlarda olduğu için günlük hayatımıza bu kadar hızlı gireceğini düşünmemiştim. Hatta benim hayatımda herhangi bir yeri olmayacağından emindim. Gün geçmiyor ki, hayat bize düşüncelerimizi bir kez daha yedirmesin. İşyerimde tam arkamda çalışan bir 3 boyutlu yazıcı var!

Artistanbul üç boyutlu yazıcısını kendi ihtiyaçları haricinde, Print4Purpose sosyal sorumluluk projesi kapsamında ücretsiz bir şekilde dışarıdan kullanıma da açıyor. Yazılımcı olarak benim kişisel bir ihtiyacımı (ufak şımarıklıklar haricinde) karşılamasa da, aldıkları çıktı sonucundan çok memnun ve minnettar kalan, özellikle mimarlık öğrencileri başta olmak üzere birçok kişiyle tanışma fırsatım oldu. Yakın gelecekte modelleme dünyasına gireceğinizi düşünüyorsanız, Print4Purpose sitesini incelemenizi tavsiye ederim.

Yazının “Madem yazılımcısın, konuyla alakan yok, neden bunları yazdın?” sorusunun cevaplandığı kısmına geçiyorum. Yazıcıdan baskı almak için normal koşullarda USB veya microSD aracılığıyla modelinizi makineye aktarmanız gerekiyor. Onun haricinde yeni nesil yazıcılarda bulut desteği de bulunmakta. Tabi bu özelliklerden yararlanmak için uygun ara yazılıma da ihtiyacınız var. Artistanbul’da halihazırda yazıcıyla olan münasebetinden dolayı, bu ara yazılımı sunacak bir projede yer alma şansını yakaladı. Proje henüz tamamlanmadığı için detaylarına girmiyorum lakin yakın zamanda tamamlanmış halini konu alan bir yazıyı da paylaşacağımızı düşünüyorum :).

Şimdi Artistanbul olarak üzerinde çalıştığımız yazıcıyla fiziksel bir etkileşime geçmeden baskı alabilmek için izlenmesi gereken adımların üzerinden geçelim. Bu adımlar bizim üzerinde çalıştığımız yazıcıya özel olsa da, internete bağlanan neredeyse bütün kişisel cihazlar üzerinde benzer protokoller uygulanıyor. Kendi yazıcınızla benzer bir işlem yapmak istiyorsanız, öncelikle yazıcının ilgili belgelendirmesini incelemelisiniz. Hatta iletişime geçerseniz kişisel olarak elimden geldiğince yardımcı olmaya çalışırım.

 

3 boyutlu yazıcı yapılandırma

Öncelikle yazıcıya ne üzerinden iletişim kuracağınızı söylemeniz gerekli. Buna status server diyelim. Status server aynı zamanda yazıcıya komutlar gönderebileceğiniz uygulamayla da iletişim halinde olmalı. Bu uygulamaya da client diyelim. Status server adresi bazı yazıcılarda gömülü olarak tanımlanmış olsa da bazı yazıcılar farklı server’lara bağlanmanız için size bir girdi ekranı sunabiliyor.

 

Yazıcı tanımlaması

Uygulama içerisinde iletişim kurulacak yazıcıyı belirlemek için kullanıcı adı ve parola gerekli. Söz konusu tanımlama yazıcı için yapıldığından kullanıcı adı yerine ID ve parola yerine PIN kullanılıyor. Kullanıcı olarak yarattığınız ID ve PIN’inizi yazıcıya girdiğinizde yazıcı otomatik olarak status server ile socket bağlantısı kuracaktır.

 

3 boyutlu yazıcı kaydı

Yazıcı soket bağlantısı kurulduktan sonra status server’a bir kayıt (register) isteği gönderecektir. İstek içerisinde ID ve PIN’in yanında her yazıcıda eşsiz olan paremetreler de gönderiyor. Bu parametreler içerisinde bizim ilgilendiklerimiz şu an için seri numarası ve şifreleme anahtarı (public key). Parametreleri istemci (client) tarafında ID ve PIN ile ilişkilendirmeliyiz ki, yazıcı bir daha bağlantı kurmak istediğinde yazıcının gerçekten bizim bağlanmasını istediğimiz yazıcı olduğunu anlayabilelim. Bu cümleyi yazının devamında detaylandıracağım. Kayıt sonrası status server’dan yazıcıya kaydın başarılı olduğunu dair bir dönüş yapılır ve yazıcı açılmış soket bağlantısı sonlandırır.

 

Yazıcı giriş

Başarılı bir kayıt sonrasında yazıcı otomatik olarak tekrar soket bağlantısı açmaya çalışacaktır ki hem kendi durumunu status server’a iletebilsin hem de client yazıcıya isteklerde bulanabilsin. Peki status server giriş yapılan yazıcının gerçekten güvenilir bir yazıcı olduğunu nasıl anlayacak? PIN ve ID bunu bir noktaya kadar sağlasa da bu değerler nispeten ulaşılabilir konumda. Sonuçta yazıcınıza giriş yaparken başkaları tarafından görülebilir. Bu değerlere güvenmek yerine yazıcıdan aldığımız public key ve sadece yazıcı içinde gömülü olan private key çiftini kullanarak çok daha güvenli bir iletişim kanalı sağlayabiliriz.

 

Peki, bu key çifti nasıl kullanılıyor?

Kayıt sonrası yazıcı status server ile soket bağlantısı açmaya çalışacaktır demiştik. Bağlantı açıldığında status server yazıcıya şifrelemesi için rastgele bir string gönderir. Yazıcı stringi private key’i ile şifreler ve status server’a geri gönderir. Private key ile şifrelenmiş metnin kayıt sonrası yazıcının göndermiş olduğu public key ile çözümlediğinde ilk aşamada gönderilmiş olan rastgele string’in tekrar elde edilmesi beklenir. Çözümleme çıktısı ile ilk aşamada gönderilen string’in farklı olduğu noktada ise status server yazıcının beklenen kayıtlı yazıcıdan farklı olduğunu anlar ve soket bağlantısını keser. Beklenildiği gibi çıkarsa bağlantı devam eder ve yazıcı status server’dan baskı isteği almaya hazır şekilde bekler.

Şifreleme ve çözme işlemlerini yapmak için Python’ın pycrypto kütüphanesinin belgelendirmesine bir göz atmak yeterli. İşlemler içerisine çok dahil olamadığınızdan, içeride nasıl bir işlem yapıldığına dair fikir oluşması adına ufak bir key oluşturma ve şifreleme örneği vereceğim.

Key oluşturmak için öncelikle iki asal sayı seçelim. (Seçilen sayılar kurallara uygun olduğu sürece işlem doğru gerçekleşiyor fakat işlemleri kolay yapabilmek için tam sonuçlar veren sayılar seçtim.)

P = 2
Q = 7

Public key’in ilk parçası olacak N
N = P * Q = 14

Public key’in ikinci parçası E

  • Tam sayı olmalı
  • N ile ortak böleni olmamalı
  • 1 < E < Φ(N) olmalı

Φ (N) = (P-1) * (Q-1) = 6

E’yi burdan 5 seçebiliriz.
E = 5

Public Key (5,14)

Private Key’in de ilk parçası N olacak yani 14.

İkinci parçayı hesaplamak için yardımcı bir tam sayı seçmemiz gerekli.
K = 9
Private Key’in ikinci parçası D
D = (K * Φ(N) + 1) / E = 11

Private Key (11, 14)

Şifreleyeceğimiz değişken: X = 4

Şifrelenmiş hali: C = X^E mod N = 1024 mod 14 = 2

Çözümlenmiş hali: Y = C^D mod N = 2048 mod 14 = 4

İlk aşamada gönderilmek istenen değişken X (4) iken, public key kullanılarak şifrelendiğindeki hali C (2)’nin ne ifade ettiğini sadece private key (D) sahibi kişi anlayabilir. Bu sayede üçüncü şahıslar gönderilmiş olan C (2) sahip olsa bile private key’e sahip olmadıkları için anlamlı bir bilgi elde etmiş olmayacaklar.

Benim üç boyutlu yazıcılarla tanışmam ve tanıştığım yazıcıların kimliğinden emin olma hikâyem böyleydi. Gelecek boyutlarda görüşmek üzere.

Furkan Kapukaya
Yorum Yok

Yorum Yaz

Yorum
İsim
E-Posta
Website