2018年7月3日 星期二

用python接收udp資訊

為了檢查是否有漏封包,寫了一支python程式接收UDP證券行情資訊,並拆解行情封包,監控並記錄接收到的資料

# -*- coding: utf-8 -*-
# 若要在程式中加入中文,需要加入上行
import sys
from socket import *
from datetime import *

multicast_group = sys.argv[1]
multicast_port  = int(sys.argv[2])
interface_ip    = '10.168.100.233'
f = open('tse001.txt', 'a')

s = socket(AF_INET, SOCK_DGRAM )
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)  #要讓程式可以重複使用位址及port,必須設定此行`
s.bind((multicast_group, multicast_port ))
mreq = inet_aton(multicast_group) + inet_aton(interface_ip)
s.setsockopt(IPPROTO_IP, IP_ADD_MEMBERSHIP, str(mreq))

while 1:
    now = datetime.today()
    str1 = s.recv(1500)
    msg = now.strftime('%Y%m%d%H%M%S')
    m_2_1_1 = bin(ord(str1[1]))[2:].zfill(8)
    m_2_1_1a = chr(int("0b0011" + m_2_1_1[1:4].zfill(4),2))
    m_2_1_1b = chr(int("0b0011" + m_2_1_1[5:8].zfill(4),2))
    m_2_1_2 = bin(ord(str1[2]))[2:].zfill(8)
    m_2_1_2a = chr(int("0b0011" + m_2_1_2[1:4].zfill(4),2))
    m_2_1_2b = chr(int("0b0011" + m_2_1_2[5:8].zfill(4),2))
    m_2_2_1 = bin(ord(str1[3]))[2:].zfill(8)
    m_2_2_1a = chr(int("0b0011" + m_2_2_1[1:4].zfill(4),2))
    m_2_2_1b = chr(int("0b0011" + m_2_2_1[5:8].zfill(4),2))
    m_2_3_1 = bin(ord(str1[4]))[2:].zfill(8)
    m_2_3_1a = chr(int("0b0011" + m_2_3_1[1:4].zfill(4),2))
    m_2_3_1b = chr(int("0b0011" + m_2_3_1[5:8].zfill(4),2))
    m_2_4_1 = bin(ord(str1[5]))[2:].zfill(8)
    m_2_4_1a = chr(int("0b0011" + m_2_4_1[1:4].zfill(4),2))
    m_2_4_1b = chr(int("0b0011" + m_2_4_1[5:8].zfill(4),2))
    m_2_5_1 = bin(ord(str1[6]))[2:].zfill(8)
    m_2_5_1a = chr(int("0b0011" + m_2_5_1[1:4].zfill(4),2))
    m_2_5_1b = chr(int("0b0011" + m_2_5_1[5:8].zfill(4),2))
    m_2_5_2 = bin(ord(str1[7]))[2:].zfill(8)
    m_2_5_2a = chr(int("0b0011" + m_2_5_2[1:4].zfill(4),2))
    m_2_5_2b = chr(int("0b0011" + m_2_5_2[5:8].zfill(4),2))
    m_2_5_3 = bin(ord(str1[8]))[2:].zfill(8)
    m_2_5_3a = chr(int("0b0011" + m_2_5_3[1:4].zfill(4),2))
    m_2_5_3b = chr(int("0b0011" + m_2_5_3[5:8].zfill(4),2))
    m_2_5_4 = bin(ord(str1[9]))[2:].zfill(8)
    m_2_5_4a = chr(int("0b0011" + m_2_5_4[1:4].zfill(4),2))
    m_2_5_4b = chr(int("0b0011" + m_2_5_4[5:8].zfill(4),2))
    m_2_5 = m_2_5_1a + m_2_5_1b + m_2_5_2a + m_2_5_2b + m_2_5_3a + m_2_5_3b + m_2_5_4a + m_2_5_4b
    msg = msg + m_2_1_1a + m_2_1_1b + m_2_1_2a + m_2_1_2b + m_2_2_1a + m_2_2_1b + m_2_3_1a + m_2_3_1b + m_2_4_1a + m_2_4_1b + m_2_5
    print "msg     =", msg
    f.write(msg)
    f.write('\n')


其中加了一行
s.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) 

這是因為socket 預設不得重複占用位址,若要重複使用需調整程式中增加socket參數設定
socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)


若有大量重複使用位址的需求,須直接調整系統網路參數設定,否則會有大量timeout或waitting狀況

系統網路參數調整方式:

vi  /etc/sysctl.conf

加入
net.ipv4.tcp_syncookies = 1    #這一行配置文件里如果有就不用添加了
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 5

然後執行以下命令,讓設定生效
/sbin/sysctl -p



2018年6月6日 星期三

監控目錄中檔案的異動

為符合資安要求,程式更版必須控管,並留存上線紀錄,同時為避免未經核可的程式更版發生,必須監控程式的異動。

監控的部分,這次規劃用Directort Monitor免費版,搭配自己寫的script達到監控發現程式異動時,立即用email及Line notify進行通報
Directory Monotor 專業版有mail功能但沒有Line Notify功能,費用說評估如下
Directory Monotor 專業版 每台主機USD149(以主機生命週期計算)
Directory Monotor 專業版 每台主機USD79(以每年計算)

若一台主機使用5年,有10台主機,5年費用為
以主機生命週期計算:149*10=1490USD
以每年計算:79*10*5=3950USD

安裝說明如下:

1.mkdir c:\dm
2.copy sendmail.bat sendmail.ps1 is_ready.wsf inc.js c:\dm
sendmail.bat  通報主程式
sendmail.ps1 寄信主程式
is_ready.wsf  Line notify主程式

inc.js              Line notify 副程式

3.到Directory Monitor網站下載並安裝 Directory Monitor
 會自動安裝.net framework 4.0,若電腦無法上網,需要先下載安裝

執行Directory Monitor
Add設定要監控的目錄
設定Main
指定要監控的目錄、EventsOptionsTypesFilter
Filter過濾掉*.tmp~*.*,因為Office文件異動會產生暫存檔,造成監控不斷發出通報。

設定Text Log
啟用log
設定log存放路徑及檔名c:\dm\dirmon.txt
設定Timestamp,選擇Daily,可將log每天存成1各檔,檔名加上日期
設定紀錄內容


設定Execute
設定發現異動時要執行的程式,應指定到c:\dm\sendmail.bat (圖片上目錄有誤)
參數和程式有關,不可變更,否則會造成程式執行異常。

其他頁簽功能無法使用,因為是免費版。


系統其他設定
選擇Options…

Monitoring兩個方框都不要選取,否則發現異動螢幕會跳出警告,干擾作業。

當要進行程式大量更新時(如廠商換版),請先將監控停止或暫停,以免突然收到大量通報。

若要啟用email通知功能,需告知網管部要收到email通知的人員的email,網管人員在程式中設定。
若要啟用Line通知功能,要收到通知的人必須先到Line Notify網站上註冊申請Token,然後將Token告知網管人員,網管人員於程式中加入Token,同時要收到通知的人必須在Line中將Line Notify加入好友,才能收到Line Notify



2018年5月16日 星期三

npm 學習筆記

NPM 是 Node Package Manager 的簡稱,它是一個線上套件庫,可以下載各式各樣的 Javascript 套件來使用。


建立一個新專案 
https://medium.com/html-test/%E5%BE%9E%E9%9B%B6%E9%96%8B%E5%A7%8B-%E4%BD%BF%E7%94%A8npm%E5%A5%97%E4%BB%B6-317beefdf182


切換到DOS mode,建立一個新目錄
D:\npm-project>mkdir p001
D:\npm-project>cd p001
D:\npm-project\p001


初始化專案資料夾並產生package.json (package.json 是掌管 專案資訊的重要檔案)

執行npm init,詢問都用預設值。

name: 就是該專案的名字,它預設就是該目錄名。
description: 專案描述。
entry point: 專案切入點,這有點複雜,之後再說。
test command: 專案測試指令,之後說。
git repository: 專案原始碼的版本控管位置。
keywoard: 專案關鍵字
author: 專案作者,以 author-name 寫之。
license: 專案版權。

用編輯器檢視package.json內容


再來安裝javascript套件,這次示範安裝 jquery套件

發現有2個警告訊息,可直接編輯package.json加入內容後載重新安裝套件,也可不用理會。
repository 裡的 url 要先去 github 建立一個空白的專案

安裝套件,也可以加入--save  參數。
會將安裝的套件版本寫入package.json

檢查package.json會發現多了iquery版本資訊

每個用 npm 安裝的套件,一律放在 node_modules 資料夾裡,以剛剛安裝的 jquery 來說,我們可以在 node_modules/jquery/dist/jquery.min.js 找到 最小化的 jquery 的版本。


編輯index.html測試 jquery是否可用

用瀏覽器開啟index.html

測試成功













2018年5月8日 星期二

install lubuntu-18.04-desktop-amd64

1.download lubuntu-18.04-desktop-amd64 from https://lubuntu.net/ 2.install lubuntu-18.04-desktop-amd64 3.安裝完後有幾個問題 無線網路無法使用 解決方式: 1.先用有線網路上網 2.開啟終端機執行 sudo apt-get install firmware-b43-installer reboot 中文輸入法無法使用 lubuntu 預設會安裝 fcitx 輸入法管理工具,但沒安裝輸入法 開啟Synaptic Package Manager 套件管理工具 搜尋fcitx 勾選及安裝 fcitx-chewing (注音輸入法) 重新啟動 fcitx 螢幕右下角狀態列會出現小鍵盤圖示 在圖示上點選滑鼠左鍵,出現選單,選擇Input Method -> 新酷音 螢幕右下角狀態列會出現紅色(酷)圖示,表示已切換至新酷音輸入法 按Shift鍵(或Ctrl+空白)可切換中英輸入模式

2017年6月20日 星期二

趨勢防毒軟體Officescan發現行為違規

某個使用者自己寫了WORD巨集,執行時被防毒軟體Officescan判定為行為違規(弱點攻擊),跳出警告視窗並終止巨集的執行。
使用者反映此問題,要求協助排除~~

檢查Officescan主機log,發現該台電腦有以下行為紀錄

若要排除此問題,必須將違規執行的程式加入例外清單

出現行為監控設定畫面,將違規程式(含路徑)加入例外清單並儲存。
然後請使用者開啟Officescan用戶端主控台,點選更新按鈕,更新主機的設定

再請使用者執行所設計的WORD巨集程式,就部會再被阻擋了。


但此設定等於關閉WORD巨集檢查,該台電腦將部會阻擋巨集病毒,使用者必須注意。

2017年6月19日 星期一

windows 2008 校時服務

今天發現一台QNAP網路校時失敗,檢查發見校時主機windows 2008的windows time service不見了,
 


再檢查register發現
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags 值設為a


其意義為:此設定會強制 PDC 主機宣告本身為可靠的時間來源,並使用內建的 CMOS 時間而不使用外部時間來源。亦即表示不會與其他主機校時。

用以下方式讓校時服務重新恢復運作。

  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate and then click the following registry entry:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\
  3. In the right pane, right-click AnnounceFlags, and then click Modify.
  4. In the Edit DWORD Value dialog box, under Value data, type 5, and then click OK.
  5. Enable NTPServer.
    1. Locate and then click the following registry subkey:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ 
                                                      Services\W32Time\TimeProviders\NtpServer\
    2. In the right pane, right-click Enabled, and then click Modify.
    3. In the Edit DWORD Value dialog box, type 1 under Value data, and then click OK.
  6. Exit Registry Editor.
  7. At the command prompt, type the following command to restart the Windows Time service, and then press ENTER:
    net stop w32time && net start w32time
  8. 設定上層校時伺服器  c:>w32tm /config /manualpeerlist:"time.stdtime.gov.tw clock.stdtime.gov.tw tick.stdtime.gov.tw watch.stdtime.gov.tw" /syncfromflags:manual /reliable:yes /update
  9. 再檢查regedit可以看到NTPServer設定已變成國家時間與頻率標準實驗室的校時主機了。







參考來源:
https://support.microsoft.com/zh-tw/help/816042/how-to-configure-an-authoritative-time-server-in-windows-server
http://blog.miniasp.com/post/2009/06/16/Configure-the-Windows-Time-service-on-the-Domain-Controller.aspx


2017年5月5日 星期五

移除第2台有問題的Active directory server

參考:
https://community.spiceworks.com/how_to/9942-complete-force-removal-of-a-domain-controller-from-active-directory-guide


1.先在一台正常的AD Server上執行ntdsutil 確認以下資訊

參考:
https://community.spiceworks.com/how_to/9942-complete-force-removal-of-a-domain-controller-from-active-directory-guide

ubuntu 安裝完kubernetes後做apt-get update會出現錯誤

root@k8s02:~# sudo apt-get update 已有:1 http://tw.archive.ubuntu.com/ubuntu xenial InRelease 已有:2 http://tw.archive.ubuntu.com/ubuntu xenia...