<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>güvenlik &#8211; CPYNET</title>
	<atom:link href="https://cpynet.com.tr/tag/guvenlik/feed/" rel="self" type="application/rss+xml" />
	<link>https://cpynet.com.tr</link>
	<description>Yeni Nesil Teknoloji Platformu</description>
	<lastBuildDate>Mon, 10 Aug 2026 05:57:29 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.3</generator>

<image>
	<url>https://cpynet.com.tr/wp-content/uploads/2024/11/cropped-favicon-32x32.png</url>
	<title>güvenlik &#8211; CPYNET</title>
	<link>https://cpynet.com.tr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CPYNET nedir? curl ile konuşan, okununca kendini silen bir pano</title>
		<link>https://cpynet.com.tr/cpynet-nedir-curl-ile-konusan-okununca-kendini-silen-bir-pano/</link>
		
		<dc:creator><![CDATA[Emin Buyuk]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 05:57:04 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[cpynet]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[güvenlik]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[terminal]]></category>
		<guid isPermaLink="false">https://cpynet.com.tr/?p=3857</guid>

					<description><![CDATA[Sürekli aynı soruna takılıyordum: SSH ile bağlandığım uzak bir sunucudan küçük bir metin parçasını — bir log satırını,&#8230;]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Sürekli aynı soruna takılıyordum: SSH ile bağlandığım uzak bir sunucudan</p>



<p class="wp-block-paragraph">küçük bir metin parçasını — bir log satırını, bir parolayı, bir container&#8217;ın</p>



<p class="wp-block-paragraph">çıktısını — başka bir makineye taşımam gerekiyor, ama pano (clipboard) diye</p>



<p class="wp-block-paragraph">bir şey yok ortada. Kurumsal politikayla pano erişimi kilitlenmiş bir</p>



<p class="wp-block-paragraph">dizüstü. Ortak panosu olmayan bir container. Slack elimin altında ama bir</p>



<p class="wp-block-paragraph">veritabanı parolasını sonsuza kadar arşivde kalacak bir kanala yapıştırmak</p>



<p class="wp-block-paragraph">hiç de iyi bir fikir değil.</p>



<p class="wp-block-paragraph">Bu yüzden <strong>**<a href="https://cpynet.com" data-type="link" data-id="cpynet.com" target="_blank" rel="noopener">CPYNET</a>**</strong>&#8216;i yaptım — arayüzü tek bir şey olan bir paylaşım aracı:</p>



<p class="wp-block-paragraph">`curl`.</p>



<p class="wp-block-paragraph">&#8220;`bash</p>



<p class="wp-block-paragraph">echo &#8220;merhaba dünya&#8221; | curl &#8211;data-binary @- https://cpynet.com/</p>



<p class="wp-block-paragraph"># https://cpynet.com/482913</p>



<p class="wp-block-paragraph">curl https://cpynet.com/482913</p>



<p class="wp-block-paragraph"># merhaba dünya</p>



<p class="wp-block-paragraph">&#8220;`</p>



<p class="wp-block-paragraph">Hepsi bu kadar. Hesap yok, API anahtarı yok, tıklanacak bir arayüz yok. İki</p>



<p class="wp-block-paragraph">`curl` çağrısı, ve aralarında hiçbir ortak noktası olmayan iki makine</p>



<p class="wp-block-paragraph">arasında metin taşınmış oluyor.</p>



<p class="wp-block-paragraph"><strong>## Gerçekten &#8220;okunduğu an silinir&#8221;</strong></p>



<p class="wp-block-paragraph">Yukarıdaki paste, ikinci `curl` komutu çalıştığı <strong>**an**</strong> yok oluyor. &#8220;24 saat</p>



<p class="wp-block-paragraph">sonra&#8221; değil, &#8220;sen silene kadar&#8221; hiç değil — tam olarak okunduğu anda. Aynı</p>



<p class="wp-block-paragraph">kodu (aynı makineden bile olsa) ikinci kez okumaya çalışırsan düz bir `404`</p>



<p class="wp-block-paragraph">alırsın. Ayrıca bir sayaç da var (varsayılan 2 dakika, ayarlanabilir): hiç</p>



<p class="wp-block-paragraph">kimse okumasa bile süre dolunca otomatik siliniyor.</p>



<p class="wp-block-paragraph">Bunların hiçbiri diske yazılmıyor. Sunucu tarafında bir mutex&#8217;in arkasında</p>



<p class="wp-block-paragraph">duran sade bir Go `map`&#8217;i — process ayakta olduğu sürece bellekte, restart</p>



<p class="wp-block-paragraph">olduğu an henüz okunmamış her şey birlikte yok oluyor. Bu bir sınırlama</p>



<p class="wp-block-paragraph">değil, tam olarak amaç: diskte bir yerlere yazan bir &#8220;okununca silinir&#8221;</p>



<p class="wp-block-paragraph">aracı, aslında hiçbir şeyi gerçekten silmiyor demektir.</p>



<p class="wp-block-paragraph"><strong>## curl komutlarını ezberlemek istemiyorsan: </strong><strong>`cpy`</strong><strong> / </strong><strong>`pst`</strong></p>



<p class="wp-block-paragraph">&#8220;`bash</p>



<p class="wp-block-paragraph">curl -s https://cpynet.com/install.sh -o install.sh &amp;&amp; bash -n install.sh &amp;&amp; . install.sh</p>



<p class="wp-block-paragraph">&#8220;`</p>



<p class="wp-block-paragraph">Bu tek satır, iki shell fonksiyonu kuruyor:</p>



<p class="wp-block-paragraph">&#8220;`bash</p>



<p class="wp-block-paragraph">$ journalctl -u myservice -n 200 | cpy</p>



<p class="wp-block-paragraph">482913</p>



<p class="wp-block-paragraph">curl https://cpynet.com/482913</p>



<p class="wp-block-paragraph"># başka bir makinede</p>



<p class="wp-block-paragraph">$ pst 482913</p>



<p class="wp-block-paragraph">Aug 08 14:02:11 myservice[1823]: connection refused: db.internal:5432</p>



<p class="wp-block-paragraph">&#8230;</p>



<p class="wp-block-paragraph">&#8220;`</p>



<p class="wp-block-paragraph">`pst`, bulabilirse metni otomatik olarak panoya da kopyalıyor</p>



<p class="wp-block-paragraph">(pbcopy/wl-copy/xclip/xsel/clip.exe) — ama bu sadece bir kolaylık, hiçbir</p>



<p class="wp-block-paragraph">zaman zorunlu değil. Her iki fonksiyon da web arayüzünün kullandığı aynı</p>



<p class="wp-block-paragraph">HTTP endpoint&#8217;leriyle konuşuyor; &#8220;gerçek ürün&#8221; web arayüzü, curl pipe&#8217;ı ise</p>



<p class="wp-block-paragraph">onun basitleştirilmiş bir versiyonu değil — ikisi de aynı şey.</p>



<p class="wp-block-paragraph"><strong>## İki farklı şifreleme katmanı, iki farklı tehdit modeli için</strong></p>



<p class="wp-block-paragraph"><strong>**Parola koruması**</strong> (`?p=` ya da `cpy -password=xxx`): AES-256-GCM, anahtar</p>



<p class="wp-block-paragraph">PBKDF2 ile türetiliyor (210.000 iterasyon — OWASP&#8217;ın güncel minimum önerisi).</p>



<p class="wp-block-paragraph">Sunucu, parolayı doğrulamak için metni anlık olarak çözüyor, sonra tekrar</p>



<p class="wp-block-paragraph">şifreleyerek saklıyor. Bu &#8220;sunucuya güveniyorum, sadece diskte düz metin</p>



<p class="wp-block-paragraph">durmasın&#8221; modeli — bir disk sızıntısına ya da yedek dosyasına karşı korur,</p>



<p class="wp-block-paragraph">sunucunun kendisine karşı değil.</p>



<p class="wp-block-paragraph"><strong>**Gerçek uçtan uca şifreleme**</strong> (yaz sekmesindeki kalkan ikonu, ya da</p>



<p class="wp-block-paragraph">terminalde `cpy -e`) tamamen farklı bir şey: anahtar client tarafında</p>



<p class="wp-block-paragraph">üretiliyor ve sunucuya hiç gönderilmiyor. Web tarafında WebCrypto</p>



<p class="wp-block-paragraph">AES-256-GCM kullanılıyor, anahtar linkin `#key=` kısmında taşınıyor —</p>



<p class="wp-block-paragraph">tarayıcılar fragment&#8217;ı sunucuya hiçbir zaman göndermez, yani bu fiziksel</p>



<p class="wp-block-paragraph">olarak sızamaz. CLI tarafında ise `openssl enc -aes-256-cbc -pbkdf2` ile</p>



<p class="wp-block-paragraph">rastgele bir passphrase üretiliyor, bilinçli olarak linke değil ayrı bir</p>



<p class="wp-block-paragraph">satıra basılıyor. İki bağımsız implementasyon, birbiriyle uyumlu olmak</p>



<p class="wp-block-paragraph">zorunda bile değiller — ikisi de aynı garantiye varıyor: sunucu yalnızca</p>



<p class="wp-block-paragraph">şifreli metni görüyor.</p>



<p class="wp-block-paragraph"><strong>## Diğer özellikler, kısaca</strong></p>



<p class="wp-block-paragraph">&#8211; <strong>**QR kod**</strong> — linki telefonla taratınca doğrudan tarayıcıda açılıp</p>



<p class="wp-block-paragraph">&nbsp; çözülüyor. Tamamen client-side, bağımlılıksız bir QR encoder ile</p>



<p class="wp-block-paragraph">&nbsp; üretiliyor; hiçbir şey üçüncü bir servise gitmiyor.</p>



<p class="wp-block-paragraph">&#8211; <strong>**Canlı bildirim**</strong> — paste okunduğu an, onu gönderen sekme SSE ile anında</p>



<p class="wp-block-paragraph">&nbsp; haberdar oluyor, polling yok.</p>



<p class="wp-block-paragraph">&#8211; <strong>**Küçük dosya desteği**</strong> — sadece izin verilen (ve gerçek içeriği de</p>



<p class="wp-block-paragraph">&nbsp; kontrol edilen — bir `.exe`&#8217;yi `.txt` diye yeniden adlandırıp yükleyemezsin)</p>



<p class="wp-block-paragraph">&nbsp; uzantılar, indirirken orijinal dosya adı ve içerik tipiyle geri geliyor.</p>



<p class="wp-block-paragraph">&#8211; <strong>**Netcat fallback**</strong> — curl&#8217;ün bile olmadığı minimal ortamlar için:</p>



<p class="wp-block-paragraph">&nbsp; `nc host port &lt; file` aynı şekilde çalışıyor.</p>



<p class="wp-block-paragraph">&#8211; <strong>**IP başına hız sınırlama**</strong> — 6 haneli kod alanını brute-force&#8217;a karşı</p>



<p class="wp-block-paragraph">&nbsp; gerçekten güvenli kılan da bu.</p>



<p class="wp-block-paragraph">&#8211; Web arayüzü opsiyonel. Orada olması &#8220;bazen terminale hiç girmek</p>



<p class="wp-block-paragraph">&nbsp; istemezsin&#8221; içindir — terminal yolu hiçbir zaman &#8220;yedek plan&#8221; olmadı,</p>



<p class="wp-block-paragraph">&nbsp; asıl yol oydu.</p>



<p class="wp-block-paragraph"><strong>## Denemek istersen</strong></p>



<p class="wp-block-paragraph">&#8220;`bash</p>



<p class="wp-block-paragraph">curl -s https://cpynet.com/install.sh -o install.sh &amp;&amp; bash -n install.sh &amp;&amp; . install.sh</p>



<p class="wp-block-paragraph">echo &#8220;çalışıyor&#8221; | cpy</p>



<p class="wp-block-paragraph">&#8220;`</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
