發表文章

目前顯示的是 2018的文章

[ Tor ] 架設暗網

圖片
沒事不要逛暗網,更別說是在暗網上架站了。 如果真的有什麼不可告人的秘密想要在暗網上架站分享,請務必遵守以下規則: 不要在這台服務器上運行或做其它事情。 在新服務器或VPS上進行全新安裝。 不要保留或運行來自VPS提供商任何服務。 用Paypal支付你的VPS服務,不過最好使用Bitcoin。 不要向VPS提供關於你的任何身份信息。 不要在這台服務器上運行Tor中繼,因為Tor中繼在真實世界的公開IP是公開的。 不要從這台服務器發送電子郵件。 不要運行討厭或卑鄙Web軟件。如果你的Web軟件有管理員登陸或管理員賬號,把密碼改成複雜的26個字符組成的密碼。很多Tor網站被攻破只是某人猜到了管理員登陸密碼。 避免使用任何JavaScript之類腳本的Web軟件。 確保你的Web應用不會洩露任何錯誤信息或身份信息,比如在錯誤信息中的真實公開IP。 審查Web前端代碼,確保它不會從jquery.com、Google Fonts或任何外部服務拉取資源。 及時做好VPS的安全更新。 以下只分享如何快速架站,安全的部分請自行拿捏。 首先先安裝 tor。 $ brew install tor # mac $ $ sudo apt-get install tor # ubuntu $ sudo update-rc.d -f tor disable # 關閉自動啟動 安裝 Tor後,找個位置建立一個 tor_server資料夾和一個 config檔,如下。 . tor_server └── torrc.in 接著編輯 torrc.in。 # torrc.in HiddenServiceDir /path/to/tor_server/hidden_service/ HiddenServicePort 80 127.0.0.1:8000 執行 tor,並等待 tor連接至洋蔥網路。 $ tor -f torrc.in Tor將會針對 HiddenServicePort上指定的網址( 127.0.0.1:8000)轉址為洋蔥網路的 port 80( http專屬的 port),官方說法是不需要特別用 SSL加密,tor有自己的加密機制。 Tor會在指定的路徑( HiddenServiceDir)建立 hidden_service資料夾

[ Selenium ] 偽造身份進行網路爬蟲

圖片
網路爬蟲做到這步,通常是在要大量訪問同一個網站,從事某些行為。這真的超不乖的,好孩子千萬別學。 訪問某些網站時,網站其實能因應不同的瀏覽器、作業系統等,提供不同的回應。例如下載軟體時會自動導向到適合的下載連結。這些訊息都藏在 header中的 user-agent中。 當大量訪問同一個網站,若 server端的警覺心比較強的情況下只依賴 Tor進行爬蟲,會發現每個訪問的用戶都來自一樣的瀏覽器和作業系統。 server端可能會使大量訪問的目的失效。 因此除了串改 ip外,最好也修改 user-agent,使 server端無法有效辨識。 Tor的部分可以參考之前分享的 " 使用 Tor進行網路爬蟲 " 和 " 多開 Tor client "。 >>> from selenium import webdriver >>> from selenium.webdriver.chrome.options import Options >>> >>> opts = Options() >>> >>> opts.add_argument("--incognito") # 使用無痕模式。用 selenium開瀏覽器已經很乾淨了,但疑心病重的可以用一下 >>> >>> proxy = "socks5://localhost:9050" >>> opts.add_argument('--proxy-server={}'.format(proxy)) # 讓 selenium透過 tor訪問 internet >>> >>> ua = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" >>> opts.add_argument("user-agent={}".format(ua)) # 使用偽造的 use

[ Arduino ] 使用 PyBluez對 Arduino發送訊息

圖片
第一次學寫 Arduino,先試個水溫使用 Pybluez對 Arduino發送訊息。 Arduino的部分 #include <liquidcrystal.h> #include <softwareserial.h> LiquidCrystal lcd(12,11,5,4,3,2); SoftwareSerial BT(9, 10); void setup() { lcd.begin(16,2); BT.begin(9600); BT.setTimeout(10); lcd.print("Hello, world!"); } void loop() { if (BT.available()) // if text arrived in from BT serial... { String cod=(BT.readString()); lcd.setCursor(0,0); // choose first line of LCD lcd.print(cod); } } 安裝 PyBluez 安裝前請先參閱各平台的 Requirement 。 Windows或 Linux應該是可以直接安裝 $ pip install pybluez 我使用的是 MacOS,但 Python的 Bluetooth packages中似乎對 MacOS沒有很好的支援,甚至無法直接使用 pip安裝。 不過 GitHub上都沒有提出這類 issues,有可能我是個案 :P $ pip install git+https://github.com/pybluez/pybluez.git 安裝後會在 packages中找到 lightblue資料夾,當中會有一個檔案 _bluetoothsockets.py。 class _BluetoothSocket(object): ... def send(self, data, flags=0): # if not isinstance(data, str): # raise TypeError("data must be string

[ Tor ] 多開 Tor client

圖片
之前 " 使用 Tor更新 IP位置 " 文中提到 Python要透過 Tor爬蟲前,須透過 Tor提供的 Socket port來連接 Tor。 最近因為朋友有需求,稍微花了一點時間研究了一下如何多開 Tor client和獨立更新 IP位置。 當要使用大量 IP同時訪問同一個網站,就有必要讓 Tor提供兩個以上的 Socket port來提供不同的 IP位置。 首先,我在桌面上建立了一個 tor_confs資料夾,內容大概是長下面這樣。 . tor_confs ├── torrc1.in └── torrc2.in 要多開 Tor需要為各個 Socket port建立各自的 conf檔。 # torrc1.in SocksPort 9050 ControlPort 9051 DataDirectory /Users/XXXXXXXX/Desktop/tor_confs/tor1 ExitNodes {tw},{jp},{kr},{hk},{sg} # torrc2.in SocksPort 9060 ControlPort 9061 DataDirectory /Users/XXXXXXXX/Desktop/tor_confs/tor2 ExitNodes {tw},{jp},{kr},{hk},{sg} DataDirectory需設定絕對路徑,設定相對路徑在更新 IP時會報錯。 ExitNodes則可有可無,因為個人需求需限制 Exit node的國家。各國的代碼可以點擊 這裡 查詢。 完成後只需要在 tor_confs資料夾內使用 terminal執行 $ tor -f torrc1.in & tor -f torrc2.in 兩個 Socket port會各自連上不同的 IP位置,這樣就算完成了。 執行後 Tor就會自動在 DataDirectory設定的路徑建立所需的檔案,資料夾結構如下。 . tor_confs ├── tor1 │   ├── cached-certs │   ├── cached-microdesc-consensus │   ├── cached-microdescs.new │   ├── lock │   └── state ├── tor2 │   ├── ca