跳到主要內容

發表文章

目前顯示的是 2月, 2018的文章

使用 Node.js、Telebot 從無到有開發比特幣 (Bitcoin)、加密貨幣查價報價機器人 (Telegram Bot)

Telegram Bot 可以說是 Telegram 的一大特色,它本身提供了很好的 API 供開發者製作自己的機器人,功能也不侷限於聊天、回答問題,能使用不同程式語言 (Python、Javascript...等) 來去跟遠端伺服器互動,抓取訊息給使用者,所以就有人做出了播報新聞的 Bot, 而這次就要做一個非常非常簡單版的比特幣、加密貨幣查價機器人 ,將會用 Node.js 的 Request 套件去和 Coinmarketcap 所提供的 API 互動。 首先要先在 Telegram 這端建立自己的 Bot,到 @BotFather 這個機器人老爸按照指示生成一個機器人, 並將 Token 代碼複製起來供等會對接使用。 再來就要建置開發的環境了, 你可以選擇在本機上 Host 這個機器人,或是使用 GCP 、 AWS 等雲端主機來架設就不必一直開機了。 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs 那這邊以建立在本機為例 (其實都是一樣的啦), Windows 系統直接到官網下載並安裝 Node.js 8.9.4 LTS  ,或在 Linux 就是使用上述指令即可完成安裝 Node.js。 cd 你想要安裝 Telegram Bot 的路徑 npm install telebot --save npm install request 然後在你想要的路徑創建一個 Telegram Bot 的資料夾,CD 到該資料夾後 使用上述指令安裝 Telebot 這個方便你開發 Telegram 機器人的架構以及 Request 套件。 (基本上 6 版後的 Node.js 都內建 NPM,可以直接安裝) 然後在資料夾內新建一個 BOT.js 檔,整個資料夾看起來應該會像上圖一樣。 var TeleBot = require('telebot'); var bot = new TeleBot(' 你的 Bot Token '); var request = require(&#


TurtleCoin Faucet - 免費領……一顆龜龜幣 (TRTL)?淺談 Turtle Coin 這個幽默諷刺又好像有那麼一回事的項目

在先前有做過了  TurtleCoin 的簡介和如何申請錢包、挖礦 ,其實單從 Turtle Coin (龜龜幣) 這個名字你大概就可以想像它並不是一個那麼「認真」的項目,這裡指的認真是認真的 ICO、認真的圈錢、認真的找一堆沒聽過的公司簽約……等,實際上 TRTL 根本沒有 ICO,在開發過程也沒有先偷挖,開發團隊也都非全職參與, 反而比較像秉著輕鬆、有趣的心態想讓人看到區塊鏈的另一面? 這不難讓人聯想到狗狗幣 Dogecoin ,要說惡搞加密貨幣它可是始祖,同樣也是一群工程師使用業餘時間開發的項目,但是這個目的純粹搞笑的狗狗幣卻也一度在一月飆到 0.017 USD,創始團隊明明已經沒在參與了卻靠著後續的社群維護現在仍保有排名 32 的市值。 那龜龜幣比起狗狗幣到底有多惡搞呢?這個就得從  TurtleCoin Faucet 講起了,我原本以為做這種水龍頭網站會是想要藉由類似拉下線 (Referrals) 的制度來推廣龜龜幣,沒想到它就只是單純放這個 Faucet 讓你每天領一顆龜龜幣……, Get Shells 叫你趕快找個殼吧! 再來更有趣的就是 官網 講述龜龜幣起源的故事了 「 大多數 TurtleCoin 的開發者都有濃密又性感的大鬍子,事實上這給了我們 +10xp 的 Chin Stroke 能力,並增強了我們的耐心和 DEBUG 技能。 」 (Classic Chin Stroke) 在開發動機的部分更是…… 「 在一個寒冷的十二月夜晚,RockSteady 和 Bebop 喝著永遠不嫌多的啤酒,討論近日的亂象,瘋狂的發行虛假、結構鬆散而沒有實際成品的 ICO。Bebop 說道,現在幾乎沒辦法推行一個認真的項目,尤其是在沒有一支正經的團隊、做出真正的營銷和引入真正的資金。  而 RockSteady 傾身靠近,專心地撫摸著他的鬍鬚,說道 :  “Hold my bear ( beard) ” 」 官方 Twitter 上更是充斥著很多很ㄎㄧㄤ的貼圖,讓人看了都想問開發團隊到底磕了什麼。 當然如果你想從比較「認真」的面向來了解 TurtleCoin 可以參考 這則由 Block Zero 所做的報導 ,這篇介紹也被盯選在官方 Twitter 上, 基本上講的內容都是圍繞在目


Gekko 交易機器人 - 網頁 UI 也能用 Telegram Bot,一有買賣就會主動提醒還可隨時查價,不用再時不時開網頁關心你的機器人

Telegram Bot 的交易提醒功能本來只有在 CLI (Command-line interface) 的 Gekko 可以使用, 它會在有新的買賣建議 (Trading advise) 時主動提醒你 ,還有提供查價功能,能隨時掌握貨幣的走勢,雖然功能還很陽春但聊勝於無。不過網頁 UI 卻不知道為何把這項功能拔除了?可能是為了避免同時交易多組貨幣導致 Telegram Bot 的錯誤, 所以在使用時記得只能建立一個機器人,否則 Telegram Bot 會不知道要回報哪一個機器人的數據。 那在首先你會需要在 Telegram 建立一個新的 Bot,所以要去找 @BotFather 叫他生個孩子給你,詳細的操作可以看 這篇 。 config.telegrambot = {   enabled: true,   emitUpdates: true,   token: ' 你的 Token ',   botName: ' Bot 的名字 ' } 然後開啟 Gekko 資料夾內 web\routes\baseConfig.js ,將這段程式碼貼入並更改成自己的 Bot Token (跟 BotFather 要到的那個)。 npm install node-telegram-bot-api@0.24.0 然後安裝跑 Telegram Bot 必需的套件。 this.emitPrice(); 這個步驟是可選的,可以修改 Gekko 資料夾內的 plugins\telegrambot.js ,加入上面這一行, 如此一來在它主動通知你有交易時會順便報價 ,比較方便知道機器人的買賣點。 然後就可以開啟 Gekko 且隨便執行一個 Live 的機器人 (Paper trader、Tradebot 皆可),並到你的 Telegram Bot 打 /price 測試看看有沒有反應,如果有的話就恭喜你裝成功了。不過還是要記得它沒辦法處理多筆機器人的數據, 因此一個網頁 UI 只能對應一個 Telegram Bot 和一個 Live 機器人。


SQLite 的 .db 檔案怎麼開?透過 DB Browser 修改、刪除資料庫內的資料表 (修改 Gekko Datasets history)

在使用 Gekko 附屬的 SQLite 資料庫時往往從 UI 寫入資料後就不知道要從哪裡修改,匯入的歷史紀錄也沒辦法從網頁介面刪除,在做 Japonicus 遺傳演算 時可能會錯誤抓取到不想要跑的歷史數據, 那就可以用 DB Browser 來開啟 /history 內的 .db 檔案來進行修改,可以把不要的資料表直接刪除,就不必全部砍掉重抓了。 而從外部下載來的歷史資料也可以藉由同樣的方式整併到一個 .db 內。 DB Browser 官網 :  http://sqlitebrowser.org 下載並安裝完適合自己作業系統的 DB Browser 後就可以從 「打開資料庫」 中瀏覽 Gekko 資料夾中的 history,開啟想要修改的歷史紀錄。 舉例來說我開啟了 binance_0.1.db 就是先前匯入的幣安歷史數據,在這裡已經條列好每個資料表分別代表一種貨幣組合,能把你不要的組合刪除,甚至到 Browse Data 也能修改交易紀錄 (應該是沒必要啦)。


Gekko 策略 - 三種不同版本的 RSI_BULL_BEAR,以及在 Tradingview 看盤也可以將 RSI_BULL_BEAR 加入作為指標

RSI_BULL_BEAR 是由 @ tommiehansen 所撰寫的 Gekko 交易策略,除了最原版的之外,現在最被討論的大概就是加上 ADX 指標調整的 RSI_BULL_BEAR_ADX 了,ADX 可以確認市場是否存在趨勢以及衡量其強度,只要搭配好的參數很容易能超出原版的表現,在對不同幣種的適應性下也更好, 但現在又有由 @ Kohette 再加入了 Ping Pong trading 的概念,簡單的說就是在買入後會馬上掛一個高於原價 % 數的賣單,賺取短線的反彈 ,賣出時反之亦然。 RSI_BULL_BEAR (原版) JS :   https://github.com/tommiehansen/gekko_tools/blob/master/strategies/RSI_BULL_BEAR.js TOML :   https://github.com/tommiehansen/gekko_tools/blob/master/strategies/RSI_BULL_BEAR.toml RSI_BULL_BEAR_ADX  JS : https://github.com/tommiehansen/gekko_tools/blob/master/strategies/RSI_BULL_BEAR_ADX.js TOML :    https://github.com/tommiehansen/gekko_tools/blob/master/strategies/RSI_BULL_BEAR_ADX.toml RSI_BULL_BEAR_PINGPONG JS :   https://github.com/Kohette/gekko_tools/blob/master/strategies/RSI_BULL_BEAR_ADX_PINGPONG.js TOML :   https://github.com/Kohette/gekko_tools/blob/master/strategies/RSI_BULL_BEAR_ADX_PINGPONG.toml 也因為 RSI_BULL_BEAR 幾乎是討論度最高的策略,@ simons.philippe 在 Tradingview 上甚至撰寫了一個 RSI_BULL


幣安 Binance 確定會發放 ONT 的 Airdrop 給 NEO Holder,預計將在 3/1 空投,記得要持有 NEO 倉位才拿的到!

之前就有介紹過 「 NEO 將在區塊高度 1,974,823 空投 (Airdrop) ONT 代幣,在錢包持有 NEO 的人都能免費領到 」,沒想到的是居然 幣安 Binance 也確定會發放這項空投,原本還以為一定得在錢包持有 NEO 才能領的到, 沒想到幣安不但很老實的會發 GAS,連額外空投的 ONT 都一併給你 ,真的可以算是交易所界的模範生了。 幣安宣布將以 NEO 區塊高度 1,974,823 (預計 3/1) 的快照進行 ONT 空投, 每個 NEO 可以領到 0.2 個 ONT。 ( 來源 ) 那如果已經忘了 ONT 在幹嘛或還沒看過的可以參考 這篇 複習一下,裡面有官網、白皮書、社交連結等資訊,當然大家最在乎的還是可以領到免費的 ONT 啦。


Facebook 臉書按「讚」小工具 (讚按鈕),把程式碼置入網站、Blogger 讓人隨時按讚 (一分鐘安裝完成)

Facebook 的按「讚」小工具大概是所有社交外掛程式裡面最受歡迎的了,除了按讚功能外還有結合「分享」,很適合放在網站的文章內讓讀者能把好的東西推薦給別人,而且安裝使用這個小工具並不需要建立獨立的應用程式,只要將程式碼貼進網站內就可以了。同樣是 Facebook 社交小工具的還有 留言板 (Comments) 可以參考 這篇 。 到 Facebook 社交外掛頁面選擇自己想要的按鈕形式, 建議可以把按讚網址留白,這樣它就會自動抓取當下的網址按讚 ,之後點擊取得程式碼。 <div id="fb-root"></div> <script>(function(d, s, id) {   var js, fjs = d.getElementsByTagName(s)[0];   if (d.getElementById(id)) return;   js = d.createElement(s); js.id = id;   js.src = 'https://connect.facebook.net/zh_TW/sdk.js#xfbml=1&version=v2.12';   fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> 之後會得到兩段程式碼, 上方的這種貼進 <body> 的開頭 ,如果網站已經安裝過類似的社交小工具可以不必再安裝這段程式碼,它是可以共用的。 <div class="fb-like" data-layout="standard" data-action="like" data-size="small" data-show-faces="true" data-share="true"></div> 這段則貼到想要讓 按鈕顯示的位置 ,可以自行決定。 如果是使用 B


Gekko 批次回測工具 (Backtest Tool),一次跑多個貨幣組合,達到多線程 (Multithreading) 處理

這個是由 @ xFFFFF 提供的 Gekko 批次回測工具,它能在同一時間回測多個策略或不同的貨幣組合,並將結果直接顯示在 CMD 上並輸出成 .csv 檔。 除了方便一次回測大量數據外,它的重點是能達到多線程 (Multithreading) 執行 ,Gekko 本身並沒有這項功能,所以就算你有 6C12T 它也是只會使用 1C1T,比較直覺的解決辦法就是多開幾個網頁 UI 或 CLI 就好了,但那會需要個別設定很浪費時間,而這個 Backtest Tool 剛好幫你解決了這個麻煩。 GekkoBacktestTool GitHub :  https://github.com/xFFFFF/GekkoBacktestTool 首先先到 GitHub 把它下載回來,或使用 git clone https://github.com/xFFFFF/GekkoBacktestTool.git 指令。並將裡面的 backtest.pl 與 database.csv 複製到 Gekko 資料夾內。 my @strategies = qw(  neuralnet RSI_BULL_BEAR_ADX ); my @pairs = qw( binance:USDT:ETH binance:BTC:NEO ); 再來打開 backtest.pl 並修改 @strategies (選擇的策略) 和 @pairs (交易的組合) ,要填入幾個基本上是沒有上限的,可以一次回測多個節省時間,填寫兩個策略或交易組合間記得要空白。也可以順便修改下方的策略 參數、Candlesize、Historysize ...等, 這些會決定你策略執行的結果。 sudo cpan install Parallel::ForkManager Time::ParseDate Time::Elapsed 然後先使用指令安裝 Parallel。 perl backtest.pl 先 cd 到 Gekko 資料夾後就能開始回測了,結果會直接顯示在終端機上。 和使用 CLI 一樣,所有策略的參數都必須在剛剛的 backtest.pl 內設置 ,這邊只會呈現結果。 database.csv 內也可以比較清楚的看到回測結果, 每次回


實作以 ARP spoofing 在用戶瀏覽的網頁中植入 Coinhive 挖礦程式,三分鐘駭入區網,一連上 Wi-Fi 可能就被植入挖礦程式碼甚至盜取錢包,新型態的殭屍礦工你也中標了嗎?

這篇文章的重點是要強調利用 MITM (中間人) 的網路攻擊有多簡單達成,即便是對於完全不熟悉程式編寫或指令系統的人,也 能很輕易的在三分鐘內駭掉一台 Wi-Fi Router 與使用者間的連線來進行內容竄改 (植入挖礦程式、鍵盤側錄…等),或許這對於資安專家來說只是雕蟲小技不足掛齒,但對一般網路使用者已經可以構成極大的威脅。 也要呼籲所有內容僅供研究與沙箱模擬, 若操作在不知情且未經同意的網路使用者上是違反我國刑法第三十六章「妨害電腦使用罪」 。所有程式內容也並非由我所撰寫,若有非法操作蓄意造成他人財物損失我一概不負責。 MITM 攻擊原理 以 ARP spoofing 達成的 MITM (Man-in-the-middle) 網路攻擊原理其實也非常簡單, 就如上圖所示在用戶 (Client) 向主機端 (Server) 調閱資料時,中間人 (MITM) 從中製造一個假的中繼站偽裝成主機,讓所有資訊都必須經他手才能達到用戶或主機手上 ,而在 Wi-Fi Router 的情境裡只不過把這個過程搬到了區域網路,駭客假裝成 Gateway (閘道) 經手所有資訊傳輸,就能在其中植入有害的程式碼,甚至更嚴重的可能會盜取使用者的加密貨幣錢包。 操作環境 - Kali Linux 那在 MITM 的操作環境我會選擇 Kali Linux,本身就有很齊全的程式庫和相關套件 ,使用一般的 Linux 發行版 (如 Ubuntu、Debian…等) 也是可以的,但要將 MITMF 缺少的依附安裝妥善後才能正確使用。 而 Windows 系統則可以使用 VMware  虛擬機安裝 Kali Linux 成為虛擬系統來操作 ,不論是完整安裝或建置虛擬機的 ISO 都可以在 Kali Linux 官網 下載,安裝過程就不贅述。 前置作業 apt-get update  apt-get install mitmf pip install Twisted==15.5.0 在 Kali Linux 環境下正常來講只需要上述這三個指令 (系統更新、安裝 MITMF、安裝 Twisted) 就可以完整部屬 MITMF 工具。 apt-get install python-dev p


如何在 Blogger 或個人網站上嵌入可以管理的 Facebook 留言板 (FB Comments Social Plugin) 教學

Blogger 原生的留言板其實做得滿爛的,大部分人都會選擇使用像 FB 提供的留言框架來作替代,那如果是自架的 CMS 像 Wordpress 或許有比較好的留言 Plugins 可以選用,而靜態網頁或其他網站甚至得從頭到尾自己搞,光是資訊的回傳、身分驗證等就是個大工程,但 Facebook  Comments 只要加上簡單一段程式碼就能建置功能完善還附帶留言審查的回響功能,可以說是非常方便。 如果要建立附有管理功能的 Facebook 留言板就必須到 Facebook for developers 建立自己的應用程式並且複製這個 應用程式編號 ,供之後留言板需要。 留言板程式碼的部分你可以選擇直接到 官方文件 生成,或複製下方的稍作修改。 <div id="fb-root"></div> <script>(function(d, s, id) {   var js, fjs = d.getElementsByTagName(s)[0];   if (d.getElementById(id)) return;   js = d.createElement(s); js.id = id;   js.src = 'https://connect.facebook.net/zh_TW/sdk.js#xfbml=1&version=v2.12&appId= 剛剛的應用程式編號 &autoLogAppEvents=1';   fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> 上方的程式碼建議是放置在 <body> 標籤的一開始,並且記得修改應用程式編號。 這段是所有 FB Plugins 通用的,如果之後還有要裝按讚小工具就不必再安裝一次這段程式碼。 <div class="fb-comments" data-href="" data-numposts=" 5 "></div


Ubuntu 16.04 LTS 怎麼截圖?使用快捷鍵輕鬆擷取全螢幕、部份區域或單一視窗

就和 Windows 一樣,Ubuntu 也有內建的截圖功能,不過多了純擷取視窗、自訂範圍的功能,而且也未必要存於剪貼簿,可以直接存成圖片檔到電腦裡,可以說是方便不少。 預設的全螢幕截圖是按 PrintScreen (PrtSc) 鍵,一般在鍵盤的功能鍵區上方。 之後就會有視窗跳出來詢問你要將截圖存到哪裡。 那如果你和我一樣是使用筆電配置的鍵盤沒有 PrtSc 鍵的話,可以到 設定 > 鍵盤 > 捷徑鍵 > 螢幕擷圖 更改快捷鍵,也可以看到包括螢幕截圖、視窗截圖、區域截圖或直接存到剪貼簿的快捷鍵,以後要截圖就非常方便了。


Ubuntu 16.04 LTS 的 Chrome 安裝失敗怎麼辦?使用指令安裝 Google Chrome 教學 (Linux 適用)

Ubuntu 16.04 LTS 內建的瀏覽器是 Firefox,但對於和我一樣已經用習慣 Google Chrome 的人第一個直覺應該是馬上去下載 Chrome 回來裝,不過從 Google 官網 下載回來的安裝檔常常都會被人抱怨怎麼點了完全沒反應? 但其實是因為 Ubuntu 剛裝好還沒更新完畢所以缺少相依套件,只要打一打指令就可以解決 ,還能順便把 Chrome 也裝好了。 wget -c https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb 只要打上述兩行指令就可以輕鬆下載並安裝 Chrome 了,如果過程遇到錯誤記得先打上   sudo apt-get install -f    補齊相依套件就能解決。 然後就能在左上角 「尋找你的電腦」 找到 Google Chrome。 當然你仍然可以從 Google 官網 下載 Chrome 的安裝檔,如果像我提到的一樣沒有反應只要打   sudo apt-get install -f    補齊相依套件應該就可以了。


如何在 Linux (Ubuntu / Debian / Fedora...等) 用 XMR-STAK 挖礦 (Monero XMR 或任何其他的 CryptoNight 算法的加密貨幣),AMD / Nvidia 通用、CPU GPU 雙挖

在 Linux (Ubuntu) 系統下也可以挖礦嗎?答案當然是可以的,專門拿來挖門羅幣 Monero (XMR) 的挖礦程式 - XMR-STAK 甚至可以直接拿來在 Linux 系統使用,  安裝和使用過程甚至比 Windows 下還方便,如果也剛好想挖 CryptoNight 算法的貨幣 ( XMR 、 TurtleCoin 、 ETN 、ITNS...等) 不妨可以參考看看,如果想看目前哪個 CryptoNight 貨幣挖礦效益最高也可以看 這篇 。 XMR-STAK GitHub :  https://github.com/fireice-uk/xmr-stak 在安裝 XMR-STAK 前得先安裝符合自己顯卡的部件 ,AMD 的 GPU 需要安裝 APP SDK 3.0 ,Nvidia 的則是  Cuda 8.0+ 。 以我使用的 Nvidia 為例, 必須先到 官網 下載 Cuda 的 deb 檔,記得要選擇對應自己系統且最新版本的 Cuda 以免報錯。 cd 你下載的路徑 sudo dpkg -i cuda-repo-ubuntu1704-9-1-local_9.1.85-1_amd64.deb sudo apt-key add /var/cuda-repo-9-1-local/7fa2af80.pub        (可能需要改版本號) sudo apt-get update sudo apt-get install cuda 打入上述指令安裝 Cuda, 記得先 CD 到 deb 檔下載的路徑,並且安裝時可能需要注意版本號有無相同以免找不到目標檔案。 如果是用 A 卡的也同樣是到 AMD 官網 下載適合自己作業系統的 APP SDK 3.0 回來安裝。 sudo apt install libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev git clone https://github.com/fireice-uk/xmr-stak.git mkdir xmr-stak/build cd xmr-stak/build cmake .. make install 接著用上述指令安裝相關的部件