Design

Design
asp.net mvc

2020年11月24日 星期二

K8S

 



2020年4月29日 星期三

[紀錄]HOTP TOTP計算邏輯

 
namespace OTP
{
    class Program
    {
        static void Main(string[] args)
        {
            //密鑰
            byte[] key = Encoding.ASCII.GetBytes("lnh_key");

            for (var i = 0; i < 100; i++)
            {
                //每十秒更變一次密碼
                var otp = TOTP(key, 10, 6);
                Console.WriteLine(otp);
                Thread.Sleep(1000);
            }
        }
        


        public static string HOTP(byte[] key, byte[] counter, int length = 6)
        {
          
            var hmac = ToHMACSHA1(counter, key);

            var offset = hmac[hmac.Length - 1] & 0xF;
           
            var b1 = (hmac[offset] & 0x7F) << 24;
            var b2 = (hmac[offset + 1] & 0xFF) << 16;
            var b3 = (hmac[offset + 2] & 0xFF) << 8;
            var b4 = (hmac[offset + 3] & 0xFF);

            var code = b1 | b2 | b3 | b4;

            var value = code % (int)Math.Pow(10, length);

            return value.ToString().PadLeft(length, '0');
        }


        public static string TOTP(byte[] key, int step = 60, int length = 6)
        {
            var unixTime = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
            var counter = ((int)unixTime) / step;
            var counterBytes = BitConverter.GetBytes(counter);
            return HOTP(key, counterBytes, length);
        }


        public static byte[] ToHMACSHA1(byte[] value, byte[] key)
        {
            if (value == null || value.Length == 0)
            {
                throw new ArgumentNullException(nameof(value));
            }
            if (key == null || key.Length == 0)
            {
                throw new ArgumentNullException(nameof(key));
            }
            using (var macAlgorithm = new HMACSHA1())
            {
                macAlgorithm.Key = key;
                return macAlgorithm.ComputeHash(value);
            }
        }

    }

}

2020年3月19日 星期四

[TOOL] clumsy 模擬弱網路環境工作(windows環境)


一般我們使用fiddler或是其他工具想要模擬弱網路的狀況,卻都沒有丟包的功能這邊我稍微找了一下推薦一個簡單操作實用的工具詳細功能如下,用的語法可以參考官網.
https://jagt.github.io/clumsy/manual.html



1.延遲(Lag),把資料包快取一段時間後再發出,這樣能夠模擬網路延遲的狀況。

2.掉包(Drop),隨機丟棄一些資料。

3.節流(Throttle),把一小段時間內的資料攔截下來後再在之後的同一時間一同發出去。

4.重發(Duplicate),隨機複製一些資料並與其本身一同傳送。

5.亂序(Outof order),打亂資料包傳送的順序。 6.篡改(Tamper),隨機修改小部分的包裹內容。


這邊做個簡單的模擬
例如今天我們想針對IP *.*.*.* 的進行環境的弱化我們直接看圖,可以看到我們ping這IP時已經有延遲跟丟包的狀況,相對比較進階其他功能大家可以研究看看