Tag Archives: bash

Youtogg

Kendi işlerimi kolaylaştırmak için bir script (betik) yazdım. Bunu da sizlerle paylaşmadan olmazdı. Genelde saçma isimler bulmakta üzerime yoktur. Bu betik için de aynısı oldu diyebilirim.

Ne işe yarıyor?
Youtogg, hemen hemen birçok video sitesinden (Youtube, Vimeo, Dailymotion vd.) video indirip bunları ses formatına (*.ogg) dönüştürmenize olanak sağlayan basit bir betiktir. Bunun dışında, Tor ağı üzerinden indirme seçeneği hariç hiçbir özelliği yoktur.

Nasıl çalışıyor?
İlk olarak, kullanıcı dizini altında “youtogg” dizini oluşturuyor. İndirdiği videolar ve dönüştürdüğü ses dosyalarına buradan erişebileceksiniz. Ardından, indirmek istediğiniz video linkini girerek istediğiniz formatı (mp4, flv, webwm vd.) ve çözünürlüğü seçeceğiniz bir ekran çıkmaktadır. Burada 18, 22, 143 vd. gibi seçimler yapıyorsunuz. Bu noktada bağlantı hızınıza göre hareket edebilirsiniz. Bununla birlikte, video indikten sonra sizlere dönüştürülecek çıktının adını sormaktadır. Örneğin, burada şarkının ve sanatçının adını veya ikisini birden (ya da ne yazarsanız) yazabilirsiniz.

Kurmanız gereken birkaç uygulama/kütüphane var. Bunlar, youtube-dl, ffmpeg ve libvorbis. Dağıtımınızın paket yöneticisinden aratarak kurabilirsiniz. Tor ağı seçeneği opsiyoneldir. Eğer, Tor ağı üzerinden indirmek isterseniz tor ve polipo paketlerini de kurmanız, polipo’yu tor için ayarlamanız gerekmektedir. Kısaca bir polipo ayarı (/etc/polipo/config) göstermem gerekirse:

daemonise=false
diskCacheRoot=/var/cache/polipo/
proxyAddress=127.0.0.1
proxyName=localhost
serverSlots=4
serverMaxSlots=8
cacheIsShared=true
allowedClients=127.0.0.1
socksParentProxy = localhost:9050
socksProxyType = socks5

Neden?
Öncelikle, bu betik benim için gerekli. Flash  ve HTML5 kullanmıyorum. Genelde bir video izleyeceksem bunu youtube-dl ve mplayer ile birlikte yapmaktayım. Fakat, dinlediğim şarkıları telefonda veya mp3 çalarda da bulunmaları ve tekrar tekrar indirmemek için böyle bir şey yaptım. Benim işimi fazlasıyla görüyor. Diğer yandan, belki ilgisini çeken birileri betiği geliştirmek isteyebilirler. Ek olarak, bir yazılımcı değilim. Kod yazmayı bilmiyorum.

Kod

#!/bin/bash
#
# Youtogg is a basic video to ogg conversion script.
#
# Dependencies: youtube-dl, ffmpeg, libvorbis
# Optional: tor, polipo
# Contact: kusburnu@riseup.net
###
# Welcome screen
_welcome () {
	echo $@ | sed -e 's/^/../' -e 's/$/../' -e 's/./*/g'
	echo $@ | sed -e 's/^/* /' -e 's/$/ */'
	echo $@ | sed -e 's/^/../' -e 's/$/../' -e 's/./*/g'
	}
_welcome "WELCOME TO YOUTOGG"
echo
###
# Folder check
_folder_check () {
	if [ -d ~/youtogg ]
	then
		read -p "Video Link: " video
		echo
	else
	        echo "Creating youtogg folder"
		mkdir ~/youtogg
		read -p "Video Link: " video
		echo
	fi
}
_folder_check "$@"
###
# Video download
_video_download () {
	while true
	do
		echo
		read -p "Do you want to torify? (Y/N) " answer1
		echo
		case $answer1 in
			[yY]* ) cd ~/youtogg && filename=source && 
				youtube-dl -F --proxy "127.0.0.1:8123" $video &&
				echo && read -p "Choose your video format: " format &&
				echo && youtube-dl -f $format -o $filename --proxy "127.0.0.1:8123"  $video
				break;;

			[nN]* ) cd ~/youtogg && filename=source &&
				youtube-dl -F $video && echo && read -p "Choose your video format: " format &&
				echo && youtube-dl -f $format -o $filename $video
				break;;

   		* )     echo "Y or N, please!";;
  	esac
done
}
_video_download "$@"
###
# Name for the output file
_filename () {
	echo
	read -p "Output filename: " name
	echo
}
_filename "$@"
###
# Converting video to ogg
_convert () {
		while true
		do
			ffmpeg -i $filename -vn -acodec libvorbis "$name.ogg"
			echo
			read -p "Do you want to keep video file? (Y/N) " answer2
			echo
			case $answer2 in
				[yY]* ) mv $filename $filename.$(date +%m%d%Y_%H%M%S)
					break;;

				[nN]* ) rm $filename
					break;;

   		* )     echo "Y or N, please!";;
  	esac
done
}
_convert "$@"
###
# Log
_log () {
	echo "$video = $name.ogg" > youtogg.log.$(date +%m%d%Y_%H%M%S)
}
_log "$@"
###
# Loop
_loop () {
	while true
	do
		echo
		read -p "Do you want to convert again? (Y/N) " answer3
		echo
		case $answer3 in
			[yY]* ) _folder_check "$@" && _video_download "$@" && _filename "$@" && _convert "$@" && _log "$@"
				break;;

			[nN]* ) echo "Goodbye!" 
				exit;;

   		* )     echo "Y or N, please!";;
  	esac
done
}
_loop "$@"

Son olarak…
Bu kodu aynen bir metin düzenleyicisine kopyalayıp kaydedin. chmod +x dosyadı ile çalıştırılabilir hale getirin. Son olarak, terminalden çalıştırın. Hepsi bu kadar. Kullanır ve yorum yaparsanız memnun olurum. Önerilerinizi ve geliştirmelerinizi de eklerseniz mükemmel olur.

Ekleme (01.02.2014): Log eklendi.

Tagged , , , , , , , , , , , , ,

Büyük Birader’le Mücadele Etmek

Çocukluğumda yaptığım yaramazlıklar için en çok duyduğum öğüt, “karda yürü ama izini belli etme” idi. Her anımızın gözetlendiği, bir şekilde kaydı tutulduğu ya da bir şekilde bize ait özel dediğimiz verilerin okunduğu şu günlerde Büyük Birader’le mücadeleye nereden başlamalı, bir giriş olarak anlatmak istedim.

  • Biraz paranoya iyidir

Anonimlikte, bence, motivasyon çok önemli. Her adımınızı gözetleyen Büyük Birader’e karşı zihnen de bir mücadele vermektesiniz ve bu konuda motive, sizlere çok büyük bir destek kaynağı olacaktır. Motivasyonun yanına biraz da paranoya eklersek, bence harika olur. Paranoya’nın kısa bir tanımına bakalım:

Paranoya, bireyin herhangi bir olay karşısında olayın oluşumundan farklı olarak gelişebileceğini kendi içerisinde canlandırma yolu ile öne sürdüğü ve sınırsız sayıda çeşitlendirebileceği hayal ürünlerinin tümüdür.

Sizlere yazılarımda devamlı “tehlike modeli“‘nden bahsetmekteyim. Tehlike modeli oluşturmak (kişisel görüşüm) biraz da paranoyaya dayanıyor (ayrıca hesapları ayrıbilmekte örnek bir model var). Çünkü her olay karşısında, bu olayın gelişimi için farklı canlandırmalar oluşturuyor ve buna karşı güvenliğinizi sağlamak üzerine yeni yöntemler geliştiriyorsunuz. Elbette bunu hastalık boyutuna taşımak kişise zarar verecektir. Fakat, paranoyanın model geliştirmedeki etkisini gözardı etmemek gerekli. Anonimlikle ilgili ısrarla söylediğim şeylerden birisi de; “kimsiniz ve kimden saklanıyorsunuz, neden ve ne tür bir risk almayı hedefliyorsunuz?”. Yani, anonimlik düzeyiniz hesaplanabilir, biraz paranoyak olun, iyi bir model oluşturun ve kendinizi koruyun!

  • Kriptografiye önem vermek

Türkiye’deki üniversitelerde kriptografi ile ilgili ne kadar eğitim veriliyor ya da ne kadar insan bu konuda bilgilendiriliyor, bunun üzerine pek bilgi sahibi değilim. Kriptografi çok çok önemli bir konu ve üzerine ciddi olarak düşülmesi, ayrıca bu konuda yerel literatüre çok şey katılması gerekli olduğu düşünüyorum. Kısa bir tanım yapacak olursak:

Kriptografi, gizlilik, kimlik denetimi, bütünlük gibi bilgi güvenliği kavramlarını sağlamak için çalışan matematiksel yöntemler bütünüdür. Bu yöntemler, bir bilginin iletimi esnasında karşılaşılabilecek aktif ya da pasif ataklardan bilgiyi -dolayısıyla bilgi ile beraber bilginin göndericisi ve alıcısını da- koruma amacı güderler.

Sizin için önemli olan tüm verileri şifrelemelisiniz. Bunun daha başka bir açıklaması yok. Eğer mümkünse tüm verilerinizi şifreleyin. Bu, sizi güvende tutmanın temel ve başlıca yollarından biridir. Bu konuda ne tür araçlar kullanabilirsiniz, kısaca bir göz atacak olursak:

* E-postalarınız için GnuPG kullanabilirsiniz.
* Dosyalar için ccrypt ya da encfs kullanabilirsiniz.
* Disk için TrueCrypt ya da dm-crypt + LUKS kullanabilirsiniz.
* Anlık mesajlaşmalarda OTR eklentisini kullanabilirsiniz.
* Ağ için SSH kullanabilirsiniz.

Örnekler elbette çoğaltılabilir. Burada iş sadece şifrelemekle bitmiyor. Temel bir örnek ve tavsiye olarak, kullanacağınız şifre ya da şifreler sizinle ilgili ya da size ait herhangi bir bilgi içermemeli. Güvenli bir şifrenin yolu akılda kalması (inanın kalıyor) zor da olsa, rastgele şifrelerden geçiyor. Bu, sözlük saldırılarında ya da brute force saldırılarında sizlere ciddi bir avantaj sağlamakta. Dikkati çekmek istediğim bir diğer nokta ise kanun uygulayıcılarının yoktan delil var etme ya da herhangi bir şeyi delil olarak kullanma konusundaki tutumları. Bu nedenle, şifrelediğiniz herhangi bir şey yazılı/basılı olarak elinizde bulunmamalı. Elinizdeki basılı dökümanlarla işiniz bittiyse, yakın gitsin. Yedek alacaksanız, aldığınız bu önemli ve şifreleri verilerin yedeğini ailenize, eşinize, dostunuza ait bilgisayarlarda saklamamanız tavsiyedir.

  • Hesapları ayırabilmek

Hesapları ayırmaktan kastettiğim, anonim kimliğiniz ile gerçek kimliğinizi içeren hesapların ayrımını yapmak çok önemli. Anonim hesabınız üzerinden gerçek hesaplarınıza bir bağlantı kurulmamalı. Eğer bu bağlantı kurulursa, artık anonim de değilsinizdir. Anonimlik, tanımı gereği içinde anonim özneleri aşmaya çalışan saldırganları da içerir. Yani, eğer bir anonimlik varsa bu anonimliği ortadan kaldırabilmek için çalışanlar da olacaktır. Bu, kanun uygulayıcı olur, gizli servisler olur, başka bir anonim özne olur. Önemli olan bir saldırgan varlığını asla unutmamak.

Bir diğer nokta da anonim hesabınız üzerinden gerçekte tanıdığınız ve sizin bu kimliğinizi bilen insanlarla pek iletişime geçmemeniz (özellikle telefonla) gerekliliği. Bu konuda kararınız net olmalı ya da en azından ne kadar bilgiye sahip ya da ne zaman bilgiye sahip olacaklarını iyi kararlaştırmak gerekli. Bu, bence çeşitli riskleri de beraberinde getiriyor. Saldırgan ne kadar dar bir çevre oluşturabilirse, sizin kimliğinizi tespit etmesi de o kadar çabuk olabilir. Şimdi bunu basitçe örneklendirelim (şema eklendi):

model

Ben anonim kimliği “X“, gerçek kimliği “A” olan bir bireyim. “X” kimliğini gerçekte kim olduğunu (A’yı) bilen “W“, “Y” ve “Z” gerçek kimlikleri var. Ayrıca, “X” kimliğini aşıp “A” kimliğine ulaşmak isteyen saldırgan “S” var. Eğer, saldırgan “S“, benim “W“, “Y” veya “Z” gerçek kimlikleri ile iletişimde olduğumu bir şekilde farkederse saldırı kapsamını daha karmaşık ve kapsamlı bir halden daha spesifik ve daha dar bir hale getirir. Gerekirse, “W“, “Y” ya da “Z“‘ye doğrudan veya dolaylı olarak baskı/saldırı düzenleyerek benim gerçek kimliğime ulaşabilir. Bu saldırı, örneğin, bir man-in-the-middle saldırısı olabilir. Siz “X” anonim kimliği üzerinden “W” gerçek kimliği ile iletişime geçerken, saldırgan araya girip mesaj içerikleri ile oynayarak sizin “A” gerçek kimliğinizi elde edebilir. Bu bahsettiğim örnek, ayrıca bir tehlike modelidir. Bu yüzden ısrarla diyorum ki, bir tehlike modelinizin olması şart!

  • Kayıtlar

Özellikle /tmp, /var/log ve kullanıcı dizininde (/home/kullanıcı) kalan geçmiş ya da yedek dosyaları sizin için bir risk teşkil etmekte. Kullandığınız program, araç vs. her ne ise bunun nerede kayıt tuttuğunu bilmeniz sizin faydanıza olacaktır. Bir diğer noktada terminal üzerinde gerçekleştirdiğiniz şeylerin (kabuktan kabuğa değişmekte) de ayrı ayrı kaydı tutulmakta. Örneğin:

bash: .bash_history
zsh: .zsh_history
vim: .viminfo
.
.

Yedekler için:
*.swp
*.bak
*~
.
.

Bu sizin kullandığınız ortama göre değişim göstereceği için temel olarak sıralayabileceğim belli başlı şeyleri örnek olarak gösterdim. Sistemden çıkış yaparken bunları silerseniz ya da en azından nelerin kaydını tuttuklarını incelerseniz sizin yararınıza olur. Uygulama olarak Bleachbit, temizleme konusunda tercih edilebilir (Emre’ye teşekkürler.).

  • Karda yürü ama izini belli etme

Ceza hukukunun ciddi bir eleştirisini hukukçu olmadığım için yapamam. Fakat, kanun uygulayıcılarının hukuk dışı deliller elde ederek bireyi hapse atıp, daha sonra mahkemede tutuklu olarak yargılamaya başlaması ne vahim bir durumda olduğunun göstergesidir. Sonuca gelirsek, iyi bir motivasyon, biraz paranoya, önemli verileri şifreleyip anonim kimliğimizle gerçek kimliğimizin ayrımı tam olarak yapabilmek, kendimize uygun tehlike modelleri geliştirip bunlara karşı savunma yöntemleri hazırlamak, ve son olarak karda yürüyüp izimizi belli etmemek! Ayrıca, bu yöntemler sadece burada yazanlarla sınırlı değildir. Herkesin ayrı bir modeli olacak ve yöntemler de ona göre şekillenecektir.

Büyük Birader’i artık her zamankinden daha soğuk bir kış bekliyor.

Tagged , , , , , , , , , , , , , , , , , , , , , , , , ,