-
Notifications
You must be signed in to change notification settings - Fork 0
/
cyno.go
110 lines (102 loc) · 4.97 KB
/
cyno.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package cyno
import (
"crypto/sha1"
"encoding/hex"
"net/http"
"strconv"
"time"
"github.com/gin-gonic/gin"
)
/*
' '' _/?; ' '''
.!-' ' ' `[[$?. '''
,*@?, ^{*##*, '
.o#$*, ' :[{$$%*&-'
'' _?#%$&, .([%$$$o*%{, '' ''
' .[%%$%$$: '^/?#%$$*oo&&^' '''
-??&$%%%#- '-%&$%%$$*o*o*${` '''
.[&o%$%%%%@~ `?$%%%%%$&/**oo&?; ''
;?&/%$%%%%%@~ ;#%%%%%%%$o/ooo/?%: '
'' '' ;&?[&$&%%%&%#_ ;@%&%%%%%$?[{////*&, '
''' ,?o(o$&&&&&&$%; `?#&&%%%%%$/([{{/{?{ '
'' `*o|[%%&&&&&&@o` _$$&&&%%%$&(([[[{/?;
'''''' ''''''' ' |?||/$&?&&?&$@(,:_--(@#%&&&&&$/|(({([*(. '
''''',;,,,,;_` ' .&((|{$&???%$$$&?%%&%&%%$$%%%%%?(([[~~_!(` '
'''''';;-;;_,,' '|?[{||*&&$$???|{/^|%?????$%&&%$$o(|{**o((.
'''' ',_:;;:,,` :[|_~/[{o&$%?&?[(//[~*$????%#$?&&&%%&[^[&o;'
'''''::,_~.-;;_.'''' _{-{/{[{&#&&?{{o/(|{o~[&?*&$$$&&&&&&%$o--{,
'' ',,;`;,:.,;`'' ' ~?@*|{%#$%[(o/(^[{!/{;o%&#$$$&?&&&&&&$%o!
''' `,;',:;,` '''' '' (o|?&%#%!|/(?[|o{[o^:&#$%$$&?&&&&&&%$(&%_ '
' '`_,;;_;;,;' ''''' -/|&??#@|://|[////[:-?#$%$$&????&%%%o!{#@%!.
' ._;._.-:;,::`'''' :*[??*&$#?~_{/[{/|_-{##%$$%????&&*{|!(?$&##$*. `:,'''
'''',:;,;_;,.:;' '' `/(o&???$$$${_^/|_-o$#$%$$?*????%|:^/%$&&%$&&$*.._!{{{*. '
''' ,:,::__:, '' '' ^/;^&???%$$%(~|(^_!%#$$$%**????&*-_{#&?&&%$%$?#%*??&?|&:
'''' '-__;::::.' ./|:[%???%$$%?%##%?&$$%$&*??&&&&%*^~_!&%&*%%$%&@%%&&%[*-`
' '' ;:,.-_,,-;'''``-o__?&&&?%$%$$$$$$$$%%$$&%##$#*o?%%*!~([/?&%$$?#$*??&&?o([`
''''.:^:,;___`'`o/{?/^*$&[|*##$$$$$$$$$#####$o(|{o.'`;^{??%@#@%%##&%#%????&|{{' '
'''' ;_:,,.;-_;''*(o&##$[,;'`!#@@#########@#?(!||~{/''`''._^{#@*{$#$$%*%&?&{[*` '
'''' ,-,;__::_;' -*&*|, ^~'''-?$#@@@@@@#?&/!({o?&?#{`'`',~;',({{$#$@$**&$*(o.
'''`,;-,;__;:`;[&[;''`^^'```''._----__:-o!*%?&$$%?[[_'''`-~, ',_~[@#??????[-.
'' .;,,--~;,:' ~?|%%*o_'```''`:`'.,'' ,*[{*-|??%o**-|(;``'._~^-^/*&%$&??&?!?_
''',,::::;:;:;''|//#@$^'``'`.:(-'`[-''.{(;_'.*{(%^^o_'[*|_;.`;*?(#&o{^#%?*|*|'
''''':;,~~:--.;` .o?%o;''`.;_^(:`-/o` :{~.;;.'~{~^-~!,:-;!/{|-;;({o#/&,-%&|o^'
' '`';:;_:;:''o*!-..;:_--!^_^/{o:,!(_,;;;:,.:^~-_,;:;:.|#&?*[/[&%// ,(*~' '
':;,_-,` '_?(---~^^|[{{o{-|{!(-_:;;;;;:::;;;:::::,;&%o*&&?!;*@oo- '` '
' '::^,;. '' .!?&&&|??((~:,;^~:,;;;;;;;;:::::,,:::;;(#?**??{:-%#$//, ''
'_;:;' ' :&?$$:{{,;;;:;;;;;;;;;,;;;;;;;:;;:;;_|&&****&*~^/$@?/o; '
''_-: ''' -%&*%@!!*.;:;;;;;;;;;,_|_,;;;;;;;,,:^{o|/*?*???(o-[@$o/&~ '
''.;.'' `!*&**%@/,{/;,;;;;;;;;;,:~:;;;;,,,;_^{/(,_*o?*?*&[^/:[@%{{$|'
' '' '-*&?o**&$[:_!/(-:,,,,,,,;,,,,,;:-^|({o|;' ~**?o?o&*_^[|?#&[/@{`
'''' ;/$$%o***?%^_---^([(!!|^~~_:_-~~|/!~-^~,'''`^?*?o?**&{-|(~$%&([&*`
''' `|%#?o/**o*$/:_^[,;---||^!|(???&%$%%%{_,''`.__-&*?o?**o((-_o$&*|/?/' ' ''
'' :*#$/[***o%%^^|*-.;`::{o!^|({??***o&[,'`;_^^_`_%*?****|_^-!%?%{-^*[' ''
~%$$o*[{&o*o%$(|^{_.^,''_/{(&/^o|-?/-|-[|:-:;;-[(?***o?**[o~~~-o*?&!||?^ ''
|#%%o{/(?*o*o$(:-!(/|!-`' [@/~-?&;-&([/__o&?/{/?|[&o?o?/{|-(_~-{**&{^([*, '
!$&%*(*(/&o***$^;/o:{[|({|:;#o([/[({[/|,.(%o^:,.,^{*&o?/[([[.^(^-|*o??!||o(' '
_%&%&{/~{o/***$^(/^~(~,/|[{~.;-~~~:,![/*((/,.;;,;^[%/((!^~-~~&[|{/[??[^([o; '
' {$&?{([{|[[[{{/?/*|(*[|/%(!{{;__:::::;/$?&{|{*_:--_!|o?~|(((^:.` ',(*&%?|[|*~ ''
;-,`' `!{{/o//[/&ooo//*[//{[[(|!!!!^||||!^~^(([(|!^~/[^:` '.,_~!|[?- '
*/
// 大风机关赛诺 专打喜欢CC攻击和越权的小朋友
func Default() gin.HandlerFunc {
return func(c *gin.Context) {
cp := sha1.New()
// 生成请求sha1 requestid并传递下去
host := c.Request.Host
uri := c.Request.RequestURI
ip := c.RemoteIP()
ua := c.Request.Header.Get("User-Agent")
t := time.Now().UTC().UnixMicro()
// 根据这个内容生产request id
// 请求URL
cp.Write([]byte(uri))
cp.Write([]byte(ip))
cp.Write([]byte(ua))
cp.Write([]byte(strconv.FormatInt(t, 18)))
c.Writer.Header().Add("Cyno-RequestID", hex.EncodeToString(cp.Sum(nil)))
// userid
cp.Reset()
cp.Write([]byte(host))
cp.Write([]byte(ip))
cp.Write([]byte(ua))
c.Writer.Header().Add("Cyno-ClientID", hex.EncodeToString(cp.Sum(nil)))
// 你被大风机关盯上了!
var locked bool = false
// 威胁分数判断 查看是否有UA和referer
currentTime := time.Now()
if c.HandlerName() != "routes.HandleNotFound" && locked {
reqid := c.Writer.Header().Get("Cyno-Requestid")
clid := c.Writer.Header().Get("Cyno-Clientid")
c.JSON(http.StatusForbidden, gin.H{
"code": -1,
"stable": false,
"message": "大风机关赛诺盯上你了(您的网络环境存在安全风险 我们无法提供服务)[Errno -1]",
"time": currentTime,
"requestID": reqid,
"clientID": clid,
})
c.Abort()
}
c.Next()
}
}