- if data ~= nil and data:len() == 0x2F and -- 40 == length of SHA1 HASH, and 7 other bytes => 47 => 0x2F
- data:sub(1):byte() == 0x05 and -- SOCKS5 has 5 in first byte
- data:sub(2):byte() == 0x01 and -- CMD must be 1
- data:sub(3):byte() == 0x00 and -- RSV must be 0
- data:sub(4):byte() == 0x03 and -- ATYP must be 3
- data:sub(5):byte() == 40 and -- SHA1 HASH length must be 40 (0x28)
- data:sub(-2):byte() == 0x00 and -- PORT must be 0, size 2 byte
- data:sub(-1):byte() == 0x00
+ if data ~= nil and #data == 0x2F and -- 40 == length of SHA1 HASH, and 7 other bytes => 47 => 0x2F
+ data:byte(1) == 0x05 and -- SOCKS5 has 5 in first byte
+ data:byte(2) == 0x01 and -- CMD must be 1
+ data:byte(3) == 0x00 and -- RSV must be 0
+ data:byte(4) == 0x03 and -- ATYP must be 3
+ data:byte(5) == 40 and -- SHA1 HASH length must be 40 (0x28)
+ data:byte(-2) == 0x00 and -- PORT must be 0, size 2 byte
+ data:byte(-1) == 0x00