Sunday, May 20, 2018

用 RTL-SDR 聽 FM 是一種生活態度

請按照手冊 ( https://github.com/cjcliffe/CubicSDR/wiki/CubicSDR-Manual )
支援模組不是一定要安裝. 安裝過程很順利, 沒有什麼需要注意的地方.

啟動後, 一開始建議還是先聽 FM. 順便練習操作. FM 90.9 訊號強雜訊少拿來測試收聽.


這台筆電 x220 是第二代 i7, 平常 CPU 涼涼的. SDR 一上果真負載就上去惹.


以下是測試不同的取樣率. 從 3.2M ~ 1.5 M


當然不是只有 CubicSDR 可以玩. 
有名的 SDR# 也要玩玩.


再加碼 Gqrx


同場加映 SDR touch, 也可以將 SDR 接上手機.


接下來再將 RTL-SDR 硬體接到 Raspberry Pi zero w 上.

Saturday, April 28, 2018

用 cowsay 讓終端機充滿智慧

0. 準備工作
apt-get install fortune cowsay cconv

1. 程式碼 Cowsay.sh
#!/usr/bin/env bash

PATH=$PATH

SLEEP=6

declare -A CS

MAXEM=0
for e in `ls /usr/share/cowsay/cows/*.cow | sed 's/\.cow//' | awk 'BEGIN{FS="/"};{print $NF}'`
do
        CS[$MAXEM]="$e"
        MAXEM=$((MAXEM+1))
done

while [ 1 ];
do
        clear
        S=$(( RANDOM % 52 ))
        S=$((S+SLEEP))
        F="$S"
        FACE=""
        if [ $F -gt $MAXEM ]; then
                F=$(( F % MAXEM ))
                FACE=${CS[$F]}
        else
                FACE=${CS[$F]}
        fi
        date +"%Y/%m/%d %H:%M:%S"
        /usr/games/fortune | cconv -f UTF8-CN -t UTF8-TW | sed -r "s/\x1B\[[0-9;]*[mK]//g" | /usr/games/cowsay -f $FACE
        sleep $S
done

2. 執行
chmod a+x Cowsay.sh
./Cowsay.sh
bash Cowsay.sh

阿宅桌面時鐘 ASCII 版

請先安裝 toilet
# apt-get install toilet

然後執行
watch -n 1 "date +\"%Y-%m-%d %H:%M:%S\" | toilet"


Ubuntu 12 升級 16 意外直達 18 感想

話說之前將一台迷你筆電從 12 經過 14 升級 16 一切順利.
就來將自己的一號機筆電從好多年的 12 升級 16. 這台唯一的升級難度是有使用加密使用者目錄, 如果不小心就會毀掉使用者目錄, 這也是之前猶豫不升級版本的主因.

首先使用外接磁碟備份重要資料.

接著就使用 do-release-upgrade 從 12 升級 14. 一切順利登入而且正確輸入密碼解開使用者目錄. 一鼓作氣繼續升級到 16.

沒想到災難開始, 一路開始抱怨一堆套件不能安裝. 硬著頭皮繼續下去, 到最後還出現完成升級但是無法安裝一堆套件. 直接結束後重新開機就直接 kernel panic.

這時發揮堅持的精神, 放棄新安裝的核心改用舊版開機, 很好, 可以看到終端機登入畫面.
登入後發現無法自動連接網路, 這難不了我, 使用 ifconfig 大法手動來.
網路終於通了, 繼續堅持再執行 do-release-upgrade 還是一樣慘兮兮. 甚至想到之前將雲端VM從 14 升級 16 只改了 apt source 的方法, 然後 apt-get update; apt-get upgrade 後重新開機還是一樣.
這下傻了, 不會要重新安裝系統吧?!

還好此時靈光乍現, 不給升級就改用 update-manager -d. 可是現在是終端機界面哪來的 GUI WM. 死馬當活馬醫, 使用 startx 上場, 雖然 menu bar 通通失蹤, 可是有桌面啊! 立馬按下右鍵開個 GUI 下的終端機執行 update-manager -d. 看到有新版可以更新, 太讚了. 直上 18.04 LTS.
一切順利完成. 重新開機後看到登入畫面一整個感動. 而且大部分安裝的套件都沒消失, 只有 VirtualBox 等已在二號機安裝完成的套件不見蹤影. 更重要的是加密使用者目錄沒消失.

就這樣消耗兩個晚上, 最後想起來之前順利完成是使用更新管理員.
請愛用 update-manager -d

安裝簡易的電報送訊息機器人 Telegram bot

0. 安裝 telegram 設定帳號 UACCT

1. 加入 @BotFather
BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.

About Telegram bots:
https://core.telegram.org/bots
Bot API manual:
https://core.telegram.org/bots/api

Contact @BotSupport if you have questions about the Bot API.


UACCT:
/start

BotFather:
I can help you create and manage Telegram bots. If you're new to the Bot API, please see the manual.

You can control me by sending these commands:

/newbot - create a new bot
/mybots - edit your bots [beta]
/mygames - edit your games [beta]
...

2. 新增 bot
UACCT:
/newbot

BotFather:
Alright, a new bot. How are we going to call it? Please choose a name for your bot.

UACCT:
p****y

BotFather:
Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.

UACCT:
botusername_bot

BotFather:
Done! Congratulations on your new bot. You will find it at t.me/pipboy88_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
5*******2:A*********************************w

For a description of the Bot API, see this page: https://core.telegram.org/bots/api

3. 測試 API
3.1. 查詢我是誰
https://api.telegram.org/bot5*******2:A*********************************w/getMe
回應
{"ok":true,"result":{"id":5*******2,"is_bot":true,"first_name":"p****y","username":"botusername_bot"}}

3.2. 加入 bot 聊天並取得聊天室編號
https://api.telegram.org/bot5*******2:A*********************************w/getUpdates
{
  "ok": true,
  "result": [
    {
      "update_id": 5*******0,
      "message": {
        "message_id": 41,
        "from": {
          "id": CHAT_ID,
          "is_bot": false,
          "first_name": "UACCT_DESCRIPTION",
          "username": "UACCT",
          "language_code": "zh-TW"
        },
        "chat": {
          "id": CHAT_ID,
          "first_name": "UACCT_DESCRIPTION",
          "username": "UACCT",
          "type": "private"
        },
        "date": 1524858545,
        "text": "hbbvoebbvebwber"
      }
    }
  ]
}

3.3. 送出第一則訊息
https://api.telegram.org/bot5*******2:A*********************************w/sendMessage?chat_id=CHAT_ID&text=Hello+World

3.4. 送訊息 script
3.4.1. 先安裝 packages
apt-get install jq cconv fortune fortune-zh

3.4.2. 送訊息程式 tgsendmsg.sh
#!/usr/bin/env bash

PATH=$PATH

TS=`date +"%s.%N"`
LOGPATH="/PATH/to/tglog"
LOG="$LOGPATH/LogFilename.log"

BOTTK="5*******2:A*********************************w"
CHATID="CHAT_ID"

mkdir -p $LOGPATH
touch $LOG
chown -R 0755 $LOGPATH

if [ -n "$1" ]; then
        MSG="$1"
        shift
else
        echo "Usage: $0 \"Message\""
        exit 1
fi

TM=`curl --progress-bar --data-urlencode "chat_id=$CHATID" --data-urlencode "text=$MSG" "https://api.telegram.org/bot$BOTTK/sendMessage"`
echo "$TM" | jq
echo "$TS $TM" >> $LOG

3.4.3. 呼叫送出訊息 MyMSG.sh
#!/usr/bin/env bash

PATH=$PATH

Z="Asia/Taipei"

HR=`TZ=":$Z" date +"%H"`
HR=`echo "$HR" | sed 's/^0//'`
echo $HR

if [ $HR -eq 6 ]; then
        /root/tgsendmsg.sh "Good Morning 早安"
        FTZH=`/usr/games/fortune-zh | cconv -f UTF8-CN -t UTF8-TW`
        MSG=""
        for d in $FTZH
        do
                MSG="$MSG $d"
        done
        MSG=`echo "$MSG" | sed -r "s/\x1B\[[0-9;]*[mK]//g"`
        /root/tgsendmsg.sh "$MSG"
fi

if [ $HR -eq 12 ]; then
        /root/tgsendmsg.sh "Good Afternoon 午安"
        FT=`/usr/games/fortune | cconv -f UTF8-CN -t UTF8-TW`
        FT=`echo "$FT" | sed -r "s/\x1B\[[0-9;]*[mK]//g"`
        /root/tgsendmsg.sh "$FT"
fi

if [ $HR -eq 18 ]; then
        /root/tgsendmsg.sh "Good Night 晚安"
        FT=`/usr/games/fortune | cconv -f UTF8-CN -t UTF8-TW`
        FT=`echo "$FT" | sed -r "s/\x1B\[[0-9;]*[mK]//g"`
        /root/tgsendmsg.sh "$FT"
fi

接下來就發揮想像力把能串接的掛上去, 也能多開幾隻 bot 送不同類型的訊息.

Monday, December 04, 2017

IBM X200s 改裝 Intel 5300 無線網卡

無線網路卡買的是 Intel Wifi link 5300
由於有鎖網卡, 請選擇支援自己筆電型號的網卡
直接將原無線網卡取代. 使用旁邊的卡槽無法正常找到網路卡.

在 /boot/loader.conf 加上下列設定在開機時載入核心模組
if_iwn_load="YES"

在 /etc/rc.conf 加入下列設定啟動無線網卡
wlans_iwn0="wlan0"
ifconfig_wlan0="WPA DHCP"


Sunday, December 03, 2017

FreeBSD 11.1 local_unbound 設定

為何想要用 local_unbound? 主要是為了 DNSSEC 檢驗能從本機開始檢查,
既然各軟體要外掛實在是有難度. 所以就安裝本機快取並使用已經啟動
DNSSEC 檢查的 cache DNS.

以下就是簡單的啟動步驟:
設定檔 /etc/rc.conf
local_unbound_enable="YES"

local_unbound 設定檔目錄 /var/unbound
root@bsd11x200s:/var/unbound # ls -la
total 36
drwxr-xr-x   3 unbound  unbound     8 Dec  3 23:08 .
drwxr-xr-x  26 root     wheel      26 Dec  3 21:27 ..
drwxr-xr-x   2 unbound  unbound     3 Dec  3 23:07 conf.d
-rw-r--r--   1 root     unbound   193 Oct 11 09:54 control.conf
-rw-r--r--   1 root     unbound   104 Dec  3 22:56 forward.conf
-rw-r--r--   1 root     unbound   189 Oct 11 09:54 lan-zones.conf
-rw-r--r--   1 unbound  unbound  1252 Dec  3 23:08 root.key
-rw-r--r--   1 root     unbound   389 Oct 11 09:54 unbound.conf

設定轉送查詢的 cache DNS
root@bsd11x200s:/var/unbound # cat forward.conf
# Generated by resolvconf

forward-zone:
name: "."
forward-addr: 8.8.8.8
forward-addr: 192.168.xxx.xxx

設定一些 unbound 參數
root@bsd11x200s:/var/unbound # cat conf.d/options.conf 
server:
    num-threads: 3
    interface: 0.0.0.0
    access-control: 127.0.0.0/8 allow
    harden-glue: yes
    harden-dnssec-stripped: yes
    harden-below-nxdomain: yes
    harden-referral-path: yes


啟動服務
root@bsd11x200s:/var/unbound # service local_unbound  start

root@bsd11x200s:/var/unbound # cat /etc/resolv.conf

nameserver 127.0.0.1
options edns0


測試
(1) host
root@bsd11x200s:/var/unbound # host www.google.com 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

www.google.com has address 216.58.200.36
www.google.com has IPv6 address 2404:6800:4008:801::2004

(2) nslookup 
root@bsd11x200s:/var/unbound # nslookup www.google.com 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53

Non-authoritative answer:
Name: www.google.com
Address: 172.217.160.100
Name: www.google.com
Address: 2404:6800:4008:801::2004

(3) Dig 測試 DNSSEC
root@bsd11x200s:/var/unbound # dig +dnssec @127.0.0.1 www.icann.org A

; <<>> DiG 9.11.2 <<>> +dnssec @127.0.0.1 www.icann.org A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65414
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;www.icann.org. IN A

;; ANSWER SECTION:
www.icann.org. 3566 IN CNAME www.vip.icann.org.
www.icann.org. 3566 IN RRSIG CNAME 7 3 3600 20171214150526 20171123111933 7500 icann.org. i5KCfOv/+c/xIaRxmQrqTItEtlGkTe9RWoh2gKh5Rh/a431n2CLLNiZ2 8xpuDXoqb2KQlAz4JBhyydFb2ilPCJIPXFbiQbUksuDV6zHdYu+PzlUC hbxRkBhRD2CIPOc227igVbp3io4oTqlzaja4P0gq268yoVEOPb2/2sSs DzFDV80=
www.vip.icann.org. 29 IN A 192.0.32.7
www.vip.icann.org. 29 IN RRSIG A 7 4 30 20171208095813 20171201095813 6887 vip.icann.org. k4FaKFgAcblg0yRPMyP1TvNcXmgI9d1GXM4YQ9jelGeCro2I+OQW+BFg OKQgmjcnh3M7NiZBW2vQQF000iKWS938B/YeiODQuun+kv9ANaiCEipD /0FFkjecpgwuMCCy2ommmRsWSlv4484Sdw7KRW8S28SZj8jonCqzIDct rVQ=
www.vip.icann.org. 29 IN RRSIG A 7 4 30 20171208095813 20171201095813 4532 vip.icann.org. FoSTut3HaWz1SEHtxReWh7IuOHOv4kCAEIuz1zPQPQVvNDU6WHenVF4h YSJOSLgyLwZ9P1MsH8PGPJEpCJr6jOR1Gl7QF24UezSj5PXnoinPLyjG Zm8/3DcM6UcrZhwmm9wRTSOuGv+LAmiU9Ab0WUfKEKR/vMnj4qn5HR+Y QOI=

;; Query time: 315 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Dec 03 23:24:36 CST 2017
;; MSG SIZE  rcvd: 598

至於想要了解什麼是 DNSSEC 請先看 

以下是 TLD 支援 DNSSEC 的現況

Sunday, August 27, 2017

用 R 分析 log

有時間再來慢慢講用 R 分析 log 的學習過程. 以下是分析經過 Z-Score normalization 的結果.





在 VirtualBox 使用 crochet 製作 Pine64 可用的 FreeBSD 12.0-CURRENT 影像檔

安裝 VM 請注意硬碟記憶體給大一點, 可以製作大一點的影像檔.
硬碟建議使用 32 GB 記憶體 4GB. 

安裝VM完成後請參考 https://github.com/freebsd/crochet 安裝
請編輯 board/Pine64/setup.sh 調整 IMAGE_SIZE 到 3000 以上避免問題
製作出開機影像檔後, 請使用 dd if=IMG of=/dev/SDCARD_DEVICE bs=10240 寫入記憶卡

開機後請安裝 gpart 參考 https://www.freebsd.org/doc/handbook/disks-growing.html
使用 gpart 調整 mmcsd0 後再使用 service growfs onestart 調整大小.

root@pine64:~ # df -h
Filesystem        Size    Used   Avail Capacity  Mounted on
/dev/mmcsd0s2a     29G    2.7G     24G    10%    /
devfs             1.0K    1.0K      0B   100%    /dev
/dev/mmcsd0s1      64M    128K     64M     0%    /boot/efi
/dev/md0           29M     24K     26M     0%    /tmp
/dev/md1           14M     64K     13M     0%    /var/log
/dev/md2           11M    8.0K     10M     0%    /var/tmp





Monday, December 12, 2016

[非教學文] 在 android 手機上 linux deploy 執行 Linux

前題: 一隻已經 root 過的閒置手機及較大的儲存空間.
硬體: Ramos mos1(買到已經完成 root 及安裝 xposed)
軟體: linux deploy + piggy helper

其實安裝設定都不難, 網路上文章看看就能完成. 
一開始玩得蠻開心的. 但是為了寶可夢, 開始尋找能暫時關閉 root 的軟體, 找到了 root switch. 結果關掉 root 時忘記勾選還原狀態, 直接重啟動. 杯具就發生了. root 消失了. 更慘的是寶可夢還是不能玩.

於是開始踏上尋找 root 的旅程, 一直想要直接 app 一鍵 root, 但這隻有點冷門, 找了半天找上 kingo root, 還是無法直接用 app root. 只好動用 windows 版 adb root. 總算將 root 找回來. 如果有使用冷門手機想要 root 可以參考一下這個一鍵 root 軟體. 確定可以 root ramos mos1 及 紅米.

目前已經解決 linux deploy SSH 連線及 VNC 連線問題. 接下來要尋找如何製作自己的 container, 目標看能不能安裝 FreeBSD 上去??? 另外也安裝了 kalitop10 可以學習使用 kali 套件.

參考資料:
1. http://nitroxenon.com/android-linux
2. https://www.kali.org/tutorials/kali-linux-android-linux-deploy/
3. https://github.com/meefik/linuxdeploy

Wednesday, February 17, 2016

GMail IPv6 收信開始檢查正反解及 SPF

股狗啊! 真是搞不懂你. 為啥前天靜悄悄的將 GMail IPv6 的正反解檢查還有 SPF 開起來. 被用戶通知怎麼郵件轉送都會收不到. 只好先跳回用 IPv4 送信. 又要再加一個偵測項目了.