Gigabyte IoT Gateway BIOS Güncelleme

Gigabyte BXBT-3825 IoT Gateway cihazında Wind River 7 işletim sistemini çalıştıramıyordum. WR Linux yüklü USB diskten boot etmek istediğimde “reboot and select proper boot device or insert boot media in selected boot device and press a key” hatası alıyordum.

Denemelerden sonra bu cihaz üzerinde Windows 7 ve Debian çalıştırabildiğimi gördüm ve cihazda donanım sıkıntısı olmadığından emin oldum. Üstelik, Gigabyte’da boot etmeyen WR Linux imajı Advantech UTX-3115 cihazında çalışıyordu.

BIOS versiyonu F1 görünüyordu. Gigabyte’ın destek sitesinde F1’in 32bit; F3’ün 64bit işletim sistemlerini desteklediğini öğrendim. F3 BIOS yazılımını indirdim ve Windows içinden çalıştırmaya çalıştım. Bu sefer de “bu program DOS modunda çalıştırılabilir” hatası aldım.

Bunun üzerine Rufus‘u kullanarak boot edilebilir bir FreeDOS USB disk hazırladım. İçine Gigabyte’ın sitesinden indirdiğim BIOS yazılımını kopyaladım. Cihazı bu diskten çalıştırdım ve Flash.bat komutunu çalıştırdım.

 

Güncelleme:

Şurada da farklı bir BIOS güncelleme tekniği buldum:

https://software.intel.com/en-us/node/629035

https://software.intel.com/en-us/node/674961

The LightBlue Bean

Bugün bir Kickstarter projesi olarak başlayan “The LightBlue Bean” cihazını test etme fırsatı buldum. 2 bozuk para büyüklüğündeki cihazın üzerinde hem Atmega328 hem de bir sürü sensör var. Arduino uyumlu olduğu için programlaması da çok kolay. Fiyatı biraz yüksek (30$) olsa da bu özelliklerdeki bir cihaz için makul. Saat piliyle çalışıyor. Ve en ilginç özelliği hiçbir kabloya ihtiyaç duymuyor. Tamamen Bluetooth bağlantısı üzerinden programlanıyor! Hatta Android ve iPhone uygulamaları kullanılarak mobil cihazlardan da programlamak mümkün.

Özellikleri şöyle:

  • Atmega 328p (328 MHz)
  • Bluetooth Low Energy (BLE)
  • 3-eksenli ivme-ölçer
  • Sıcaklık sensörü
  • RGB LED
  • 6 dijital I/O, 2 analog output
  • Mac, Windows, iOS, Android uyumlu

LightBlue Bean

LightBlue Bean

 

 

MAC’te dosya ve klasörlerin gelişmiş yetkileri (ACL)

MAC OS X işletim sistemi de Linux gibi Unix temellidir ve Linux’la pek çok benzerliği bulunur. Dosya izinleri de bunlardan birisidir. Mac ve Linux’ta dosyaların sahipleri, aynı gruptaki kullanıcılar ve diğer kullanıcılar için izinleri ayrı ayrı belirlenebilir.

Dosyanın özelliklerini ve izinlerini görmek için `ls -l` komutu kullanılabilir. Örneğin:

ls -l
total 59
drwxrwxr-x+ 97 root  admin  3298  8 Ara 15:43 Applications
drwxr-xr-x+ 63 root  wheel  2142  9 Kas 12:57 Library
[email protected]  3 root  wheel   102  8 Ara 12:19 Network
[email protected]  4 root  wheel   136  9 Kas 12:59 System
lrwxr-xr-x   1 root  wheel    49  8 Eyl  2014 User Information -> /Library/Documentation/User Information.localized
drwxr-xr-x   7 root  admin   238  8 Ara 10:58 Users
[email protected]  3 root  admin   102  8 Ara 12:19 Volumes
[email protected] 39 root  wheel  1326  9 Kas 12:59 bin
[email protected]  2 root  admin    68  2 Eki 12:35 cores
dr-xr-xr-x   3 root  wheel  7634  8 Ara 12:19 dev
[email protected]  1 root  wheel    11  2 Eki 12:34 etc -> private/etc
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 home
[email protected]  1 root  wheel   313 23 Ağu 05:35 installer.failurerequests
dr-xr-xr-x   2 root  wheel     1  8 Ara 15:52 net
[email protected]  6 root  wheel   204  2 Eki 12:35 private
[email protected] 59 root  wheel  2006  9 Kas 12:59 sbin
[email protected]  1 root  wheel    11  2 Eki 12:34 tmp -> private/tmp
[email protected] 12 root  wheel   408  2 Eki 12:39 usr
[email protected]  1 root  wheel    11  2 Eki 12:34 var -> private/var

İlk sütun dosya veya klasörün (kullanıcı, aynı gruptaki kullanıcılar ve diğer kullanıcılar için) izinlerini belirtir.

d/l => directory (klasör) / file (dosya)
r => read (okuma)
w => write (yazma)
x => execute (çalıştırma)

Bazı dosyalarda ilk sütunun sonunda + veya @ işareti olduğunu görüyoruz. Bu dosyalar için klasik POSIX izinlerine ek olarak ACL (access control list) yetkileri tanımlanmıştır. `ls -le` veya `ls [email protected]` komutlarıyla ayrıntılarını görebilirsiniz:

ls [email protected]
drwxr-xrwx   28 mustafa  staff   952  8 Ara 17:45 Desktop
drwxr-xrwx   18 mustafa  staff   612  7 Ara 09:35 Documents
drwxr-xrwx  103 mustafa  staff  3502  7 Ara 21:33 Downloads
[email protected]  37 mustafa  staff  1258  8 Ara 22:39 Dropbox
	com.apple.FinderInfo	  32 
[email protected]  19 mustafa  staff   646 30 Kas 14:25 Google Drive
	com.apple.FinderInfo	  32 

 

Şimdi gelelim, durup dururken bu ACL’den neden bahsettiğime. Sisteminizdeki pek çok hatanın kaynağı dosyalarınızın izinlerini bozmanız olabilir. Benim örneğimde, bilgisayarımı şirket ağına bağlaması için götürdüğüm IT görevlisi bana bir şey sormadan kullanıcı klasörümdeki tüm dosyaların yetkilerini değiştirmişti. Bunun üzerine bana ait olan dosyaları silmek veya değiştirmek istediğimde her seferinde şifre sormaya başladı. Word, Excel her açılışta “kaydedilmemiş dökümanlarını kurtarmaya çalışıyoruz” şeklinde uyarı vermeye başladı. Evernote her açılışta “notunu kaydedemiyorum” hatası vermeye başladı. Hatta, Android Studio projemi derlememeye başladı.

Benim bulduğum çözüme gelirsek, ACL tanımlarını kaldırmak için `chmod -RN DOSYA_ADI` komutunu kullandım. Sonra da tüm dosyalarımın izinlerini 644, tüm klasörlerimin izinlerini 755 yaptım.

chmod -RN DOSYA_ADI
find ./ -type d -exec chmod 755 {} \;
find ./ -type f -exec chmod 644 {} \;

Not: bu komutlar benim sorunumu çözdü, ama sizin sisteminizde başka yazılımların çalışmasında hataya neden olabilir.

Not 2: (çok hızlı gelen edit) benim sistemimde de kullanıcı dizinimin altında çalıştırmam gereken dosyalar varmış. pek doğru bir iş olmasa da Android SDK’sını kullanıcı klasörümün altına koymuşum. bu dosyalar için kendime `chmod u+x DOSYA_ADI` komutuyla çalıştırma izni vermem gerekti.

Videoları FFMPEG ile Youtube’a yüklemek için kodlamak

ffmpeg -i <input file> -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart <output_name>.mp4

kaynak: https://www.virag.si/2012/01/web-video-encoding-tutorial-with-ffmpeg-0-9/

CMake ile basit bir OpenCV örneği derlemek

Öncelikle OpenCV’yi yüklemeniz gerekiyor. Eğer Mac kullanıyorsanız Homebrew kullanarak nasıl yükleyeceğinizi görmek için şu yazıma göz atabilirsiniz: http://mustafa.aldemir.net/mac-os-x-el-capitan-uzerinde-opencv3-yuklemek/

 

CMakeLists:

cmake_minimum_required(VERSION 2.8)
project(Project1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_PREFIX_PATH "/usr/local/opt/opencv3/share/OpenCV")

set(SOURCE_FILES main.cpp)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(cv_project1 main.cpp)

target_link_libraries(cv_project1 ${OpenCV_LIBS})

 

 

main.cpp:

#include <opencv2/core/utility.hpp>
#include <iostream>

using namespace std;


const char* keys =
        {
                        "{ b build | | print complete build info }"
                        "{ h help  | | print this help           }"
        };

int main(int argc, const char* argv[])
{
    cv::CommandLineParser parser(argc, argv, keys);

    if (parser.has("help"))
    {
        parser.printMessage();
    }
    else if (!parser.check())
    {
        parser.printErrors();
    }
    else if (parser.has("build"))
    {
        std::cout << cv::getBuildInformation() << std::endl;
    }
    else
    {
        std::cout << "Welcome to OpenCV " << CV_VERSION << std::endl;
    }

    return 0;
}

Mac OS X El Capitan üzerinde OpenCV3 Yüklemek

Linux’tan Mac’e geçenler aptitude’un eksikliğini hep hissetmişlerdir. Homebrew ve Macports Apple’ın bu açığını kapatmak üzere geliştirilen projeler. Ben birkaç denemeden sonra Homebrew’i tercih ettim. Kullanımı oldukça kolay ve açık kodlu olduğu için ne yaptığını anlamak da oldukça kolay.

https://github.com/Homebrew adresinde Homebrew’in kendi kodunu ve pek çok tarif bulmak mümkün. Örneğin homebrew-science reposunda bilimsel işler için kullanılan programları yüklemek için hazırlanmış tarifler var, OpenCV de burada.

opencv3.rb tarifine göz atarsak önce Github’dan opencv ve opencv_contrib projelerini indirileceği linkleri belirttiğini sonra da vereceğiniz argümanlara göre hangi özelliklerin derlemeye dahil edileceğini ayarladığını görebiliriz.

Bu kadar temel bilgiden sonra, şimdi Mac üzerinde OpenCV3 yüklemek için yapmamız gerekenlere gelelim.

Öncelikle Homebrew’in kendisi yüklenmeli:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

Düzgün yüklenip yüklenmediğini kontrol edelim:

brew update

 

Sonra da OpenCV yükleyelim:

brew install opencv3

 

Sisteminizde bulunmayan bazı başka bileşenlerin de yüklenmesi gerekebilir. Bu yüzden bu komutun biraz zaman almasına şaşırmayın.

Eğer OpenCV’yi Ffmpeg desteğiyle derlemek isterseniz yükleme komutunu şöyle değiştirmeniz gerekecek:

brew install opencv --with-ffmpeg

Contrib paketini de yüklemek isterseniz şu komutu kullanmanız gerekecek:

brew install opencv --with-ffmpeg --with-contrib

Homebrew bazı programları, bir güvenlik önlemi olarak, keg-only yüklüyor, yani derlediği programları /usr/local/Cellar klasörüne koyuyor, ve /usr/local/bin, /usr/local/lib klasörlerine linklemiyor. OpenCV de bu şekilde yükleniyor. Bu yüzden geliştirdiğiniz kodu derleyebilmeniz için şu iki satıra ihtiyacınız olabilir:

LDFLAGS: -L/usr/local/opt/opencv3/lib
CPPFLAGS: -I/usr/local/opt/opencv3/include

 

BMW F650 GS Kullanım Kılavuzu

Bulmakta zorlandığım kullanım kılavuzu:

BMW F650 GS Kullanım Kılavuzu

Cloudflare API’ına Konsoldan Erişmek

Cloudflare neredeyse bütün fonksiyonlarını kontrol edebileceğiniz bir API sunuyor. Bunu PHP, Perl, Java, Python vs. çeşitli dillerde yazdığınız programlarda kullanabilirsiniz. Ayrıntılı döküman şurada: https://www.cloudflare.com/docs/client-api.html

Daha önce Apache loglarını inceleyip XMLRPC saldırısı yapan IP’leri belirleyen bir betik yazmıştım. Tespit ettiği IP’leri bana eposta ile bana gönderiyordu. Şimdi bunu güncelleyip, otomatik olarak Cloudflare Firewall’undan engelleyen bir hale çevirdim. Son hali şöyle oldu:

 

#!/bin/bash
if [ "$#" -ne 1 ];
then
  LIMIT=100
else
  LIMIT=$1
fi
 
MY_EMAIL=""
CLOUDFLARE_API_KEY=""
DATE=`date`
LIST="\nMore than $LIMIT:"
WARNING="\nMore than $LIMIT:\n"
IPTABLES="\niptables command:"
TOTAL=0
 
echo -e "### xmlrpc Attack Detection ###\n$DATE\n"
 
for IP in $(grep "POST /xmlrpc.php" /var/log/apache2/access*log | awk '{print $1}' | awk -F ':' '{print $2}' | sort | uniq)
do
  COUNT=`grep $IP /var/log/apache2/*.log | grep xmlrpc.php | wc -l`
 
  if [[ "$COUNT" -gt $LIMIT ]];
  then
    CLOUDFLARE=`curl -s https://www.cloudflare.com/api_json.html \
      -d 'a=ban' \
      -d 'key='$IP \
      -d 'tkn='$CLOUDFLARE_API_KEY \
      -d 'email='$MY_EMAIL`
 
    echo "IP: $IP count: $COUNT"
    LIST="$LIST\n$IP"
    WARNING="$WARNING\n$IP     => count: $COUNT\n$CLOUDFLARE\n"
    IPTABLES="$IPTABLES\niptables -I INPUT 1 -s $IP -j DROP"
    ((TOTAL=$TOTAL+1))
  fi
done
echo "Total: $TOTAL IP addresses"
 
echo -e $LIST
echo -e $IPTABLES
 
if [[ "$TOTAL" -gt 0 ]];
  then
  echo -e $WARNING |mail -s "xmlrpc attack warning" $MY_EMAIL
fi

WordPress gizli anahtarlar

WordPress’te güvenlik için yüklemeden sonra wp-config.php dosyasındaki gizli anatarlar rastgele karakter dizileriyle değiştirilmeli. Bu rastgele dizileri üretmek için şu araç kullanılabilir:

WordPress Secret Key Generator

Not: bu anahtarlar değiştirildikten sonra giriş yapmış kullanıcıların tekrar giriş yapmaları gerekecektir.

iptables’da Belirli Bir Satırı Silmek

iptables kurallarını satır numaralarıyla görmek için:

iptables -vnL --line-numbers

 

Daha sonra 14 numaralı satırı silmek için:

iptables -D INPUT 14