3月 28

mosh 1.3.0をDropbear sshdで利用してみる

moshの1.3.0がリリースされました.

moshはsshを置き換えようとしているソフトウェアで,ネットワークが遅いときにローカルエコーを表示したり,ネットワークが切り替わってもローミングしたりと便利なソフトウェアです.(NotePCで接続してサスペンドして別のネットワークでレジュームしてもすぐに使っていた端末にアクセスできる)

1.3.0でなにかおもしろい機能が増えたりしていないかなと眺めていると

  * Add --no-ssh-pty option for Dropbear compatibility and other issues.

Dropbearで使えるようになるオプションが増えているようです.
DropbearはOpenSSHに比べて大分小さなsshdです.組み込みとかで使われているのを見ます.でも機能が物足りないなと思うことも.

mosh + Dropbearの組み合わせを試してみました.

試したのはこんな感じの環境です.

Host : Raspbian jessie(Raspberry Pi 2B)
Client : Debian sid amd64

dropbearの準備

HostにDropbearをパッケージで導入します

$ sudo apt install dropbear

dropbearのhost鍵を用意

$ mkdir /tmp/dropbear
$ dropbearkey -t ecdsa -s 521 -f /tmp/dropbear/dropbear_ecdsa_host_key
  • -t 鍵種類
  • -s 鍵長
  • -f 鍵ファイル

接続時に解りやすいようにバナーファイル作成

$ banner dropbear > /tmp/dropbear/banner

Dropbearを2222番ポートで起動

$ dropbear -r /tmp/dropbear/dropbear_ecdsa_host_key -p 2222 -b /tmp/dropbear/banner -E
  • -r host鍵を指定
  • -p sshポート番号
  • -b バナーファイル
  • -E 標準エラー出力にメッセージ出力

Dropbearにssh接続できるか確認

$ ssh pi@192.168.2.200 -i ~/.ssh/id_ecdsa -p 2222
Host key fingerprint is SHA256:G3u9pP4ZrkZ2kWs9e+ly9MkEtnO0f4ebvkBS0ObGJQQ
+---[ECDSA 521]---+
|          E+.    |
|           .+ .  |
|           +.+   |
|           .*o . |
|        S ..o++ .|
|         +o++oo= |
|        oo.o= *+=|
|         ..+ *o**|
|         o+o=.O=o|
+----[SHA256]-----+

 #####   #####    ####   #####   #####   ######    ##    #####
 #    #  #    #  #    #  #    #  #    #  #        #  #   #    #
 #    #  #    #  #    #  #    #  #####   #####   #    #  #    #
 #    #  #####   #    #  #####   #    #  #       ######  #####
 #    #  #   #   #    #  #       #    #  #       #    #  #   #
 #####   #    #   ####   #       #####   ######  #    #  #    #

Authenticated to 192.168.2.200 ([192.168.2.200]:2222).

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi:~ $ 

mosh 1.3.0の準備

server側はsourceからbuild

$ sudo apt-get build-dep mosh
$ wget https://mosh.org/mosh-1.3.0.tar.gz
$ sha256sum mosh-1.3.0.tar.gz
320e12f461e55d71566597976bd9440ba6c5265fa68fbf614c6f1c8401f93376  mosh-1.3.0.tar.gz

※hashとgpg署名は以下のメールに,鍵は https://mosh.org/ の一番下にある.

sourceを展開してbuild

$ tar tvf mosh-1.3.0.tar.gz
$ tar xf mosh-1.3.0.tar.gz
$ ./configure --prefix=${HOME}/usr/local
$ make
$ install

host側はDebian sid amd64のパッケージを利用した

$ sudo apt install mosh
$ dpkg-query -W mosh
mosh    1.3.0-1

ということでホスト側はこんな状態に

  • OpenSSH : 22番ポート
  • Dropbear : 2222番ポート
  • mosh 1.2.4a-1+b2(pkg) : /usr/bin/mosh-server
  • mosh 1.3.0 : ${HOME}/usr/local/bin/mosh-server

この状態でDropbearとmosh 1.3.0を利用するにはこんな感じ

$ mosh pi@192.168.2.200 --ssh="ssh -p 2222" --server='${HOME}'/usr/local/bin/mosh-server

でも実際に繋ごうとするとエラーになってしまう.

接続元のmoshではこんなエラー

/usr/bin/mosh: Did not find mosh server startup message. (Have you installed mosh on your server?)

接続先のDropbearではこんなエラー

[20390] Mar 28 06:37:20 Child connection from 192.168.2.205:32888
[20390] Mar 28 06:37:21 Pubkey auth attempt with unknown algo for 'pi' from 192.168.2.205:32888
[20390] Mar 28 06:37:21 Pubkey auth succeeded for 'pi' with key md5 0b:fb:21:45:d6:a0:7d:57:02:24:9b:d3:ed:c7:c6:23 from 192.168.2.205:32888
[20391] Mar 28 06:37:21 ioctl(TIOCSCTTY): Input/output error
[20391] Mar 28 06:37:21 /dev/pts/1: No such file or directory
[20391] Mar 28 06:37:21 open /dev/tty failed - could not set controlling tty: No such device or address
[20390] Mar 28 06:37:21 Exit (pi): Disconnect received

ということで,mosh 1.3.0で入った--no-ssh-ptyを付けてみます.

$ mosh pi@192.168.2.200 --ssh="ssh -p 2222" --server='${HOME}'/usr/local/bin/mosh-server --no-ssh-pty

asciicast

うまく繋がりました.
試しに回線を切断して再接続すると自動的に繋がるのも確認 ☺

--no-ssh-ptyを~/.ssh/configとかに書いとけるといいんですけどね.今のところ毎回指定するしかなさそう?

3月 21

JOSM向け JA:Naming sampleを導入

ということで導入方法を確認しました.

プリセットメニューの「プリセット設定」を選択.

menu-priset

「利用可能なプリセット」の中から「JA:Naming sample」を選択して左矢印ボタンを押して有効にします.OKボタンを押して,

priset_menu

JOSMを再起動することで反映されます.

reboot

これでプリセットやプリセットの検索で利用できるようになります.

shutter_17-03-21_06:16:59_001

インクリメンタル検索の例.

shutter_17-03-21_06:18:25_001

とても便利です :)

既に導入している人はJOSM起動時に更新されるはずです.
不安な人は一旦消して再導入したり,実際のファイルの中のバージョンを確認することも出来ます.

$ grep JaNamigSample ~/.josm/preferences.xml
  <list key='mirror.https://josm.openstreetmap.de/josmfile?page_Presets/JaNamigSample&amp;zip_1'>
    <entry value='/home/mk/.josm/cache/mirror_https___josm.openstreetmap.de_josmfile_page_Presets_JaNamigSample_zip_1'/>
      <tag key='url' value='https://josm.openstreetmap.de/josmfile?page=Presets/JaNamigSample&amp;zip=1'/>
$ zgrep version /home/mk/.josm/cache/mirror_https___josm.openstreetmap.de_josmfile_page_Presets_JaNamigSample_zip_1
    version="2.0b7_24_2017-03-04"
3月 19

Joypadで簡易操作を試みる

LinuxBoxで文章を読むのにJoypadで操作できないかなと思ってちょっと試してみました.

はじめはxevコマンドでJoypadのKeyCodeを調べてxmodmadコマンドで書き換えればいいだろうと思っていたのですが,xevコマンドでJoypadは反応しないようでした.他に方法はないかと検索するとjoy2keyというものを見つけたのでこれを試してみました.

$ apt show joy2key
Package: joy2key
Version: 1.6.3-2
Priority: optional
Section: x11
Maintainer: Debian QA Group <packages@qa.debian.org>
Installed-Size: 52.2 kB
Depends: libc6 (>= 2.15), libx11-6
Homepage: http://joy2key.sourceforge.net
Tag: hardware::input:joystick, hardware::input:keyboard, implemented-in::c,
 role::program, use::configuring
Download-Size: 21.8 kB
APT-Sources: http://dennou-q.gfd-dennou.org/debian sid/main amd64 Packages
Description: ジョイスティックの動きを同等のキーストロークに変換
 joy2key により、ジョイスティックの軸とボタンの動きに対してキーボードイベント
 を選択できますので、ネーティブでジョイスティックをサポートしていないアプリケーション
 でジョイスティックやゲームパッドを利用できます。

DebianだとWheezy以降,Ubuntuだとprecise(12.04LTS)以降にパッケージがあるようです.

今回はDebian sidやjessieなので導入はパッケージを入れるだけでした.

$ sudo apt install joy2key

設定はよく解らなかったけどこの辺を参考に

こんな感じで動きました.キーマップは未だ詰めるつもりだけどとりあえず.

$ DISPLAY=:0 joy2key -X -buttons A B X Y L Tab Escape Return KP_9 -axis Left Right Up Down -thresh -16383 16383 -16383 16383

キーコードについてはxevや/usr/include/X11/keysymdef.hで確認できます.とりあえずここにも貼っておきます.

しかしShift + Tabも使いたいのだけどShift/Tabそれぞれ単体は入力できるけど同時入力が効かないようです.通常のKBDでは動作するのでjoy2keyの問題だと思います.

試した環境はDebian sidのjoy2key 1.6.3-2とDebian lennyのjoy2key 1.6.3-2でJoypadはハードオフで\200くらいだったBUFFALOのスーパーファミコンみたいな見た目のBSGP801シリーズと書かれているもの.

[ 5239.625574] usb 2-1.2: authorized to connect
[ 5263.982357] usb 1-1.2: new low-speed USB device number 6 using ehci-pci
[ 5264.095408] usb 1-1.2: New USB device found, idVendor=0583, idProduct=2060
[ 5264.095410] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5264.095411] usb 1-1.2: Product: USB,2-axis 8-button gamepad  
[ 5264.095545] usb 1-1.2: Device is not authorized for usage
[ 5266.168066] usb 1-1.2: authorized to connect
[ 5266.176105] hidraw: raw HID events driver (C) Jiri Kosina
[ 5266.184205] usbcore: registered new interface driver usbhid
[ 5266.184207] usbhid: USB HID core driver
[ 5266.188173] input: USB,2-axis 8-button gamepad   as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/0003:0583:2060.0001/input/input19
[ 5266.188377] hid-generic 0003:0583:2060.0001: input,hidraw0: USB HID v1.10 Joystick [USB,2-axis 8-button gamepad  ] on usb-0000:00:1a.0-1.2/input0

3月 14

minicomでステータスラインを非表示に

というのを見て気になって確認してみた.manを見てみると-Fというのがそれぽい

$ minicim -D /dev/ttyACM1 -F ''

としてみるとステータスラインの内容は消えるけどステータスライン自体は残っているのでちょっと違う感じ.

minicim起動中に設定画面(Ctrl+A o)の「画面とキーボード」内にそれらしい「C – ステータスライン表示 : 許可」というものがある.これをCを押して「禁止」にして「”dfl” に設定を保存」で設定ファイルに書き出してみる.

$ cat ~/.minirc.dfl 
# Machine-generated file - use setup menu in minicom to change parameters.
pu statusline       disabled

この状態でminicomを起動するとステータスラインは消えていて,この行をコメントアウトしてminicomを起動するとステータスラインがでてくるのを確認.

試した環境はDebian sid amd64のminicom 2.7-1+b2

3月 12

PQI Air PenのGPIOを触ってみる

ID/PASSWORDがわかってtelnetで中に入れるようになったので中を覗いているとgpioが見えてました.

# ls -lA /proc/gpio/
ls -lA /proc/gpio/
-r--r--r--    1 root     root            0 Jan  1 07:22 gpio12_in
-r--r--r--    1 root     root            0 Jan  1 07:22 gpio22_in
-rw-r--r--    1 root     root            0 Jan  1 07:22 gpio23_out
-rw-r--r--    1 root     root            0 Jan  1 07:22 gpio27_out
-r--r--r--    1 root     root            0 Jan  1 07:22 gpio6_in
-rw-r--r--    1 root     root            0 Jan  1 07:22 gpio7_out
-r--r--r--    1 root     root            0 Jan  1 07:22 gpio8_in

てことでちょっと叩いてみました.

  • 赤LED : /proc/gpio/gpio7_out
    • 0 : On
    • 1 : Off
/proc/gpio # echo 1 > gpio7_out
echo 1 > gpio7_out
/proc/gpio # echo 0 > gpio7_out
echo 0 > gpio7_out
  • 黄緑LED : /proc/gpio/gpio23_out
    • 0 : Off
    • 1 : On
/proc/gpio # echo 0 > gpio23_out
echo 0 > gpio23_out
/proc/gpio # echo 1 > gpio23_out
echo 1 > gpio23_out
  • 横面同期ボタン : /proc/gpio/gpio22_in
  • 0 : On
  • 1 : Off
/proc/gpio # cat gpio22_in
cat gpio22_in
0
/proc/gpio # cat gpio22_in
cat gpio22_in
1

という感じで2つのLEDと1つのボタンは簡単に利用できました.他はちょっと叩いただけでは解らなかったです.
とりあえずこんな感じで横の同期ボタンを押すとLEDx2を光らせるということが出来ます.

~ # while :
> do
> if [ `cat /proc/gpio/gpio22_in` = '0' ]; then
> echo on
> echo 0 > /proc/gpio/gpio7_out
> echo 1 > /proc/gpio/gpio23_out
> break
> fi
> sleep 1
> done

3月 08

パケットキャプチャしてPQI Air PenのID/PASSを調べる

送料込み500円だったのでポチってしまいました.X200のジャンク以来のコの手の買い物.

ちょっと古いものですがftp/telnetなどが開いてて色々遊べるようです.PQI Air Card(初代)も持っていますが,これはバッテリー内蔵でAP機能などもあります.

ちょっと叩いてみる

dhcpの提供されているネットワークケーブルを繋いで電源をれてちょっと叩いてみます.

まずはdhcp poolのipから探してみます.

$ sudo nmap -sP 192.168.2.200-
Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-08 11:33 JST
  :
Nmap scan report for 192.168.2.214
Host is up (0.0012s latency).
MAC Address: 80:DB:31:01:A4:B8 (Power Quotient International)
  :

192.168.2.214でした.ポートスキャンしてみます.

$ nmap -A 192.168.2.214

Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-08 11:45 JST
Nmap scan report for 192.168.2.214
Host is up (0.037s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 2.0.7
23/tcp   open  telnet  BusyBox telnetd 1.0
53/tcp   open  domain  dnsmasq 2.52
| dns-nsid:
|_  bind.version: dnsmasq-2.52
80/tcp   open  http    Brivo EdgeReader access control http interface
|_http-title: PQI Air Pen
8080/tcp open  http    Mongoose httpd 3.7 (directory listing)
|_http-title: Index of /
Service Info: OS: Unix; Device: security-misc

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 37.14 seconds
$ nmap -P 0-65536 192.168.2.214

Starting Nmap 7.40 ( https://nmap.org ) at 2017-03-08 11:37 JST
Nmap scan report for 192.168.2.214
Host is up (0.035s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
23/tcp   open  telnet
53/tcp   open  domain
80/tcp   open  http
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.61 seconds

80番ポートにアクセスすると認証無しで設定画面にアクセスできました.8080番はファイルのアクセスが出来ます.こちらも認証なし.

ftp/telnetは流石に未認証では駄目のようです.

$ nc 192.168.2.214 21
220 (vsFTPd 2.0.7)
USER anonimouse
331 Please specify the password.
PASS matoken@gmail.com
530 Login incorrect.
$ nc 192.168.2.214 23
������!����          (none) login: 

(none) login: 

パッケージの中に入っていたマニュアルには特にID/PASSぽいものの情報はありません.
でもスマートフォン用アプリでファイルのやり取りが可能なようなのでそのパケットを覗けばわかりそうです.
#ネットワークで検索するとID/PASSは見つかるのですが,せっかくなので?
##そういえばPENTAX KPのアプリのパケットも覗いてみたい.

パケットキャプチャしてみる

適当なWi-Fiの使えるPCを用意してネットワークカードをmonitor modeにしてパケットキャプチャをします.
今回はこんな感じ.

  • PC : LENOVO Thinkpad X200
  • NIC : Intel Corporation PRO/Wireless 5100 AGN
  • OS : Ubuntu 17.04 amd64
  • Driver : iwldvm, iwlwifi

AQI Air Penの無線チャンネルを確認しておく

  • ここでは11
$ nmcli d wifi | egrep 'SSID|PQI'
*  SSID                モード    CHAN  レート     信号  バー  セキュリティ 
   PQI Air Pen         インフラ  11    54 Mbit/s  100   ▂▄▆█  --           
$ sudo /sbin/iwlist wls1 scanning | grep -B 5 "PQI Air Pen"
          Cell 09 - Address: 80:DB:31:01:A4:B7
                    Channel:11
                    Frequency:2.462 GHz (Channel 11)
                    Quality=70/70  Signal level=-28 dBm  
                    Encryption key:off
                    ESSID:"PQI Air Pen"

phyとネットワークインターフェイスの確認

$ /sbin/iw dev
phy#0
        Interface wls1
                ifindex 8
                wdev 0x3
                addr 00:22:fa:33:45:6a
                type managed
                channel 8 (2447 MHz), width: 20 MHz, center1: 2447 MHz
                txpower 15.00 dBm

デバイスがmonitor modeになれるか確認する

monitorになれない場合はドライバを変更すると対応できる場合もあります.

$ /sbin/iw phy phy0 info | lv
  :
        Supported interface modes:
                 * IBSS
                 * managed
                 * monitor
  :
        software interface modes (can always be added):
                 * monitor

monitor modeのインターフェイスを作る

$ sudo iw phy phy0 interface add mon0 type monitor

managed modeのインターフェイスを削除する

$ sudo iw dev wls1 del

monitor modeのインターフェイス(mon0)をUpする

$ sudo ifconfig mon0 up

monitor modeのインターフェイスの無線チャンネルを設定する

上の方で11チャンネルだったので2462に設定します.

$ sudo iw dev mon0 set freq 2462

他のチャンネルはこんな感じ

ch1 : 2412
ch2 : 2417
ch3 : 2422
ch4 : 2427
ch5 : 2432
ch6 : 2437
ch7 : 2442
ch8 : 2447
ch9 : 2452
ch10 : 2457
ch11 : 2462
ch12 : 2467
ch13 : 2472
ch14 : 2484

確認

$ /sbin/iwconfig mon0

パケットキャプチャをしながらスマートフォン公式アプリを使ってみる

※パケットがたくさん飛んでいるような場合はフィルタを書いたりWiresharkなどを使うと便利です.

パケットをキャプチャしながらスマートフォンでPQi Air Penのネットワークに繋いだ状態で公式アプリを起動して更新などを行います.

$ sudo tcpdump -i mon0 -n -A -s0
    :
01:26:05.670158 1.0 Mb/s 2462 MHz 11b -34dBm signal antenna 3 IP 192.168.200.1.21 > 192.168.200.102.50504: Flags [P.], seq 1:21, ack 0, win 2896, options [nop,nop,TS val 194874 ecr 35416851], length 20: FTP: 220 (vsFTPd 2.0.7)
E..Hv.@.@..-.......f...H.[.....;...P.P.....
...:..k.220 (vsFTPd 2.0.7)
...e
    :
01:26:05.791087 2462 MHz 11n -39dBm signal antenna 3 72.2 Mb/s MCS 7 20 MHz s
hort GI mixed IP 192.168.200.102.50396 > 192.168.200.1.21: Flags [P.], seq 1:
12, ack 20, win 115, options [nop,nop,TS val 35410347 ecr 178581], length 11:
 FTP: USER root
E..?O.@.@..z...f.............wu....s    ......
..Q.....USER root
...2
    :
01:26:05.792197 2462 MHz 11n -41dBm signal antenna 3 72.2 Mb/s MCS 7 20 MHz s
hort GI mixed IP 192.168.200.1.21 > 192.168.200.102.50396: Flags [P.], seq 20
:54, ack 12, win 2896, options [nop,nop,TS val 178613 ecr 35410347], length 34: FTP: 331 Please specify the password.
E..V.b@.@.\........f.....wu........P`......
......Q.331 Please specify the password.
u`a.
    :
01:27:11.238673 2462 MHz 11n -40dBm signal antenna 3 72.2 Mb/s MCS 7 20 MHz short GI mixed IP 192.168.200.102.50504 > 192.168.200.1.21: Flags [P.], seq 11:23, ack 55, win 115, options [nop,nop,TS val 35416878 ecr 194908], length 12: FTP: PASS pqiap
E..@.@@.@./....f.....H.....F.[.&...s.......
..k....\PASS pqiap
.5.Z

FTP接続でroot:pqiapのようです.

インターフェイスを戻す

sudo iw dev mon0 del
sudo iw phy phy0 interface add wls1 type managed

ftp接続を試してみる

$ nc 192.168.200.1 21
220 (vsFTPd 2.0.7)
user root
331 Please specify the password.
pass pqiap
230 Login successful.

telnetを試してみる

$ nc 192.168.200.1 23
������!����(none) login: 

(none) login: root
root
Password: pqiap



BusyBox v1.01 (2013.01.03-08:27+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ # uname -a
uname -a
Linux (none) 2.6.31.AirPen_V0.1.22-g5eca71a #319 Thu Jan 3 16:27:02 CST 2013 mips unknown

ということで中に入れるようになりました :)

3月 01

mikutterからGooglePhotosにアップロードするやつを試す

Google Photosってことは容量気にせず画像投げられる & Google+との連携もできそう?ってことで試してみました.

#mikutterについてはこちらを.

関連パッケージ導入

$ sudo apt install ruby-oauth2

mikutter-google-photos-uploader plugin導入

$ cd ~/.mikutter/plugin
$ git clone https://github.com/slimymars/mikutter-google-photos-uploader
$ cd mikutter-google-photos-uploader
$ bundle install

mikutter起動

……認識されない.mikutterが古い所為のようです.

$ grep mikutter: ~/.mikutter/plugin/mikutter-google-photos-uploader/.mikutter.yml 
  mikutter: 3.5.2
$ dpkg-query -W mikutter
mikutter        3.5.0+dfsg-1

Debianではjessie-backportsからsidまで3.5.0+dfsg-1experimentalだけ3.5.2+dfsg-1でした.

てことで,experimentalから借りてきます.

sources.listexperimentalがある状態で

$ grep experimental /etc/apt/sources.list
deb http://dennou-q.gfd-dennou.org/debian/ experimental main non-free contrib
deb-src http://dennou-q.gfd-dennou.org/debian/ experimental main non-free contrib

/etc/apt/preferences.d/mikutterを以下のような感じで用意して,

$ cat /etc/apt/preferences.d/mikutter
Package: mikutter
Pin: release a=experimental
Pin-Priority: 800

パッケージを更新して導入.

$ sudo apt upgrade

mikutterでの設定

mikutterが3.5.2になったので認識しました.設定画面を見ると,GooglePhotosというタブが増えているのでそのタブのAuthrise code 取得URLをブラウザで開いて認証し,出てきたコードをAuthrization_codeに貼り付けます.
更にmikutterからアップロードする保存先のアルバムを追加しておきます.GooglePhotosに存在しないアルバムは前もって

から登録しておきましょう.アルバムは複数登録できるので例えば

  • ミク
  • フレンズ

のようにアルバムを登録しておくと画像整理がはかどります?

20170228_19:02:23-16584

実際の画像保存方法は,mikutterの保存したい画像の上で右クリックしてGoogle Photosに画像をアップロードを選び,

shutter_17-03-01_08:33:12_001

その後表示されるアルバムを選択するだけです.

menu_018

Google Photosに見に行くとアップロードされているのが確認できます.

Google+へのクロスポストにも使えるかなと思ったのですが,Google+の投稿画面はタイムラグがあるようで少し待たないと表示されませんでした.これはGoogle側の問題ですね.Google Photosから投稿するようにすれば良さそうです.

関連?Tweet

環境

$ screenfetch
         _,met$$$$$gg.           mk@x220
      ,g$$$$$$$$$$$$$$$P.        OS: Debian 9.0 stretch
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 4.9.0-2-amd64
   ,$$P'              `$$$.      Uptime: 4d 18h 51m
  ',$$P       ,ggs.     `$$b:    Packages: 5147
  `d$$'     ,$P"'   .    $$$     Shell: bash 4.4.11
   $$P      d$'     ,    $$P     Resolution: 1366x768
   $$:      $$.   -    ,d$$'     WM: Awesome
   $$\;      Y$b._   _,d$P'      WM Theme: default
   Y$$.    `.`"Y$$$$P"'          CPU: Intel Core i5-2540M CPU @ 3.3GHz
   `$$b      "-.__               GPU: Mesa DRI Intel(R) Sandybridge Mobile 
    `Y$$                         RAM: 13040MiB / 15934MiB
     `Y$$.                      
       `$$b.                    
         `Y$$b.                 
            `"Y$b._             
                `""""