gitignore
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
*.pem
|
||||
*.log
|
||||
*.json
|
||||
+28
-4
@@ -11,10 +11,11 @@ func NewFTPHandler(log LoggerFunc) Handler {
|
||||
return func(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
remote := conn.RemoteAddr().String()
|
||||
_, _ = conn.Write([]byte("220 Welcome to FTP Server\r\n"))
|
||||
_, _ = conn.Write([]byte("220 (vsFTPd 3.0.3)\r\n"))
|
||||
conn.SetDeadline(time.Now().Add(5 * time.Minute))
|
||||
scanner := bufio.NewScanner(conn)
|
||||
var username string
|
||||
var cwd = "/"
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" {
|
||||
@@ -24,16 +25,39 @@ func NewFTPHandler(log LoggerFunc) Handler {
|
||||
cmd := strings.ToUpper(parts[0])
|
||||
arg := ""
|
||||
if len(parts) > 1 { arg = parts[1] }
|
||||
// log every command minimally
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "ftp", Details: map[string]string{"event":"cmd","cmd":cmd,"arg":arg}})
|
||||
switch cmd {
|
||||
case "USER":
|
||||
username = arg
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "ftp", Details: map[string]string{"event":"username_attempt","username":username}})
|
||||
_, _ = conn.Write([]byte("331 Password required for "+username+"\r\n"))
|
||||
_, _ = conn.Write([]byte("331 Please specify the password.\r\n"))
|
||||
case "PASS":
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "ftp", Details: map[string]string{"event":"password_attempt","username":username,"password":arg}})
|
||||
_, _ = conn.Write([]byte("530 Login incorrect\r\n"))
|
||||
// stay unauthenticated but pretend success to keep them interacting
|
||||
_, _ = conn.Write([]byte("230 Login successful.\r\n"))
|
||||
case "SYST":
|
||||
_, _ = conn.Write([]byte("215 UNIX Type: L8\r\n"))
|
||||
case "FEAT":
|
||||
_, _ = conn.Write([]byte("211-Features:\r\n MLSD\r\n SIZE\r\n211 End\r\n"))
|
||||
case "PWD":
|
||||
_, _ = conn.Write([]byte("257 \"" + cwd + "\" is the current directory\r\n"))
|
||||
case "TYPE":
|
||||
_, _ = conn.Write([]byte("200 Switching to Binary mode.\r\n"))
|
||||
case "CWD":
|
||||
if arg == "" { arg = "/" }
|
||||
cwd = arg
|
||||
_, _ = conn.Write([]byte("250 Directory successfully changed.\r\n"))
|
||||
case "PASV":
|
||||
// Emulate passive mode without real data channel
|
||||
_, _ = conn.Write([]byte("227 Entering Passive Mode (127,0,0,1,195,80)\r\n"))
|
||||
case "LIST":
|
||||
// Fake transfer over control channel (not RFC-correct, but many bots accept the banner)
|
||||
_, _ = conn.Write([]byte("150 Here comes the directory listing.\r\n"))
|
||||
_, _ = conn.Write([]byte("-rw-r--r-- 1 root root 4096 Jan 01 00:00 README\r\n"))
|
||||
_, _ = conn.Write([]byte("226 Directory send OK.\r\n"))
|
||||
case "QUIT":
|
||||
_, _ = conn.Write([]byte("221 Goodbye\r\n")); return
|
||||
_, _ = conn.Write([]byte("221 Goodbye.\r\n")); return
|
||||
default:
|
||||
_, _ = conn.Write([]byte("502 Command not implemented\r\n"))
|
||||
}
|
||||
|
||||
+20
-2
@@ -14,6 +14,9 @@ func NewIMAPHandler(log LoggerFunc) Handler {
|
||||
_, _ = conn.Write([]byte("* OK IMAP4rev1 Service Ready\r\n"))
|
||||
conn.SetDeadline(time.Now().Add(2 * time.Minute))
|
||||
scanner := bufio.NewScanner(conn)
|
||||
authed := false
|
||||
selected := false
|
||||
mailbox := "INBOX"
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" { continue }
|
||||
@@ -28,10 +31,25 @@ func NewIMAPHandler(log LoggerFunc) Handler {
|
||||
pass := strings.Trim(parts[3], "\"")
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "imap", Details: map[string]string{"event":"login_attempt","username":user,"password":pass}})
|
||||
}
|
||||
_, _ = conn.Write([]byte(tag + " NO LOGIN failed\r\n"))
|
||||
authed = true // pretend success to keep interaction
|
||||
_, _ = conn.Write([]byte(tag + " OK LOGIN completed\r\n"))
|
||||
case "CAPABILITY":
|
||||
_, _ = conn.Write([]byte("* CAPABILITY IMAP4rev1 AUTH=PLAIN\r\n"))
|
||||
_, _ = conn.Write([]byte("* CAPABILITY IMAP4rev1 AUTH=PLAIN IDLE\r\n"))
|
||||
_, _ = conn.Write([]byte(tag + " OK CAPABILITY completed\r\n"))
|
||||
case "NOOP":
|
||||
_, _ = conn.Write([]byte(tag + " OK NOOP completed\r\n"))
|
||||
case "SELECT", "EXAMINE":
|
||||
if len(parts) >= 3 { mailbox = strings.Trim(parts[2], "\"") }
|
||||
selected = true
|
||||
// fake mailbox with 2 messages
|
||||
_, _ = conn.Write([]byte("* 2 EXISTS\r\n"))
|
||||
_, _ = conn.Write([]byte("* OK [UIDVALIDITY 1] UIDs valid\r\n"))
|
||||
_, _ = conn.Write([]byte(tag + " OK [READ-WRITE] SELECT completed\r\n"))
|
||||
case "FETCH":
|
||||
if !selected { _, _ = conn.Write([]byte(tag + " BAD No mailbox selected\r\n")); continue }
|
||||
// minimal fake fetch
|
||||
_, _ = conn.Write([]byte("* 1 FETCH (FLAGS (\\Seen) RFC822.SIZE 1234)\r\n"))
|
||||
_, _ = conn.Write([]byte(tag + " OK FETCH completed\r\n"))
|
||||
case "LOGOUT":
|
||||
_, _ = conn.Write([]byte("* BYE IMAP4rev1 Server logging out\r\n"))
|
||||
_, _ = conn.Write([]byte(tag + " OK LOGOUT completed\r\n"))
|
||||
|
||||
+31
-3
@@ -13,8 +13,36 @@ func NewSIPHandler(log LoggerFunc) Handler {
|
||||
remote := conn.RemoteAddr().String()
|
||||
conn.SetDeadline(time.Now().Add(8 * time.Second))
|
||||
r := bufio.NewReader(conn)
|
||||
line, _ := r.ReadString('\n')
|
||||
if strings.TrimSpace(line) == "" { return }
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "sip", Details: map[string]string{"event":"first_line","first_line":strings.TrimSpace(line)}, RawPayload: line})
|
||||
// Read request line
|
||||
reqLine, _ := r.ReadString('\n')
|
||||
reqLine = strings.TrimSpace(reqLine)
|
||||
if reqLine == "" { return }
|
||||
// Read headers until blank line
|
||||
headers := map[string]string{}
|
||||
for {
|
||||
h, _ := r.ReadString('\n')
|
||||
h = strings.TrimRight(h, "\r\n")
|
||||
if h == "" { break }
|
||||
if i := strings.Index(h, ":"); i > 0 {
|
||||
k := strings.TrimSpace(h[:i])
|
||||
v := strings.TrimSpace(h[i+1:])
|
||||
headers[strings.ToLower(k)] = v
|
||||
}
|
||||
}
|
||||
det := map[string]string{"event":"request","first_line":reqLine}
|
||||
for _, k := range []string{"from","to","call-id","user-agent"} {
|
||||
if v, ok := headers[k]; ok { det[k] = v }
|
||||
}
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "sip", Details: det})
|
||||
// Respond with 401 to solicit credentials
|
||||
resp := "SIP/2.0 401 Unauthorized\r\n" +
|
||||
"Via: " + headers["via"] + "\r\n" +
|
||||
"From: " + headers["from"] + "\r\n" +
|
||||
"To: " + headers["to"] + ";tag=123456\r\n" +
|
||||
"Call-ID: " + headers["call-id"] + "\r\n" +
|
||||
"CSeq: 1 REGISTER\r\n" +
|
||||
"WWW-Authenticate: Digest realm=\"example.com\", nonce=\"abc123\", qop=\"auth\"\r\n" +
|
||||
"Content-Length: 0\r\n\r\n"
|
||||
_, _ = conn.Write([]byte(resp))
|
||||
}
|
||||
}
|
||||
|
||||
+96
-44
@@ -1,51 +1,103 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/base64"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
"bufio"
|
||||
"encoding/base64"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func NewSMTPHandler(log LoggerFunc) Handler {
|
||||
return func(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
remote := conn.RemoteAddr().String()
|
||||
_, _ = conn.Write([]byte("220 mail.example.com ESMTP Postfix\r\n"))
|
||||
conn.SetDeadline(time.Now().Add(5 * time.Minute))
|
||||
scanner := bufio.NewScanner(conn)
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" { continue }
|
||||
parts := strings.SplitN(line, " ", 2)
|
||||
cmd := strings.ToUpper(parts[0])
|
||||
arg := ""; if len(parts)>1 { arg = parts[1] }
|
||||
switch cmd {
|
||||
case "HELO":
|
||||
_, _ = conn.Write([]byte("250 mail.example.com\r\n"))
|
||||
case "EHLO":
|
||||
_, _ = conn.Write([]byte("250-mail.example.com\r\n250-AUTH PLAIN LOGIN\r\n250 OK\r\n"))
|
||||
case "AUTH":
|
||||
fields := strings.Fields(arg)
|
||||
if len(fields)>0 && strings.ToUpper(fields[0])=="PLAIN" && len(fields)>1 {
|
||||
if b, err := base64.StdEncoding.DecodeString(fields[1]); err==nil {
|
||||
parts := strings.Split(string(b), "\x00")
|
||||
if len(parts)>=3 {
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "smtp", Details: map[string]string{"event":"auth_attempt","method":"PLAIN","username":parts[1],"password":parts[2]}})
|
||||
}
|
||||
}
|
||||
}
|
||||
_, _ = conn.Write([]byte("535 Authentication failed\r\n"))
|
||||
case "MAIL","RCPT":
|
||||
_, _ = conn.Write([]byte("250 OK\r\n"))
|
||||
case "DATA":
|
||||
_, _ = conn.Write([]byte("354 End data with <CR><LF>.<CR><LF>\r\n"))
|
||||
case "QUIT":
|
||||
_, _ = conn.Write([]byte("221 Bye\r\n")); return
|
||||
default:
|
||||
_, _ = conn.Write([]byte("502 Command not implemented\r\n"))
|
||||
}
|
||||
}
|
||||
}
|
||||
return func(conn net.Conn) {
|
||||
defer conn.Close()
|
||||
remote := conn.RemoteAddr().String()
|
||||
_, _ = conn.Write([]byte("220 mail.example.com ESMTP Postfix\r\n"))
|
||||
conn.SetDeadline(time.Now().Add(5 * time.Minute))
|
||||
scanner := bufio.NewScanner(conn)
|
||||
var mailFrom, rcptTo string
|
||||
authLoginStage := 0 // 0=none,1=expect username,2=expect password (both base64)
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" { continue }
|
||||
parts := strings.SplitN(line, " ", 2)
|
||||
cmd := strings.ToUpper(parts[0])
|
||||
arg := ""; if len(parts)>1 { arg = parts[1] }
|
||||
|
||||
if authLoginStage == 1 { // expecting base64 username
|
||||
userBytes, _ := base64.StdEncoding.DecodeString(line)
|
||||
user := string(userBytes)
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "smtp", Details: map[string]string{"event":"auth_login_username","username":user}})
|
||||
_, _ = conn.Write([]byte("334 UGFzc3dvcmQ6\r\n")) // "Password:" base64
|
||||
authLoginStage = 2
|
||||
continue
|
||||
}
|
||||
if authLoginStage == 2 { // expecting base64 password
|
||||
passBytes, _ := base64.StdEncoding.DecodeString(line)
|
||||
pass := string(passBytes)
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "smtp", Details: map[string]string{"event":"auth_login_password","password":pass}})
|
||||
_, _ = conn.Write([]byte("535 Authentication failed\r\n"))
|
||||
authLoginStage = 0
|
||||
continue
|
||||
}
|
||||
|
||||
switch cmd {
|
||||
case "HELO":
|
||||
_, _ = conn.Write([]byte("250 mail.example.com\r\n"))
|
||||
case "EHLO":
|
||||
_, _ = conn.Write([]byte("250-mail.example.com\r\n250-AUTH PLAIN LOGIN\r\n250 OK\r\n"))
|
||||
case "AUTH":
|
||||
fields := strings.Fields(arg)
|
||||
if len(fields) > 0 {
|
||||
method := strings.ToUpper(fields[0])
|
||||
switch method {
|
||||
case "PLAIN":
|
||||
if len(fields) > 1 {
|
||||
if b, err := base64.StdEncoding.DecodeString(fields[1]); err == nil {
|
||||
p := strings.Split(string(b), "\x00")
|
||||
if len(p) >= 3 {
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "smtp", Details: map[string]string{"event":"auth_attempt","method":"PLAIN","username":p[1],"password":p[2]}})
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// prompt for base64 blob
|
||||
_, _ = conn.Write([]byte("334 \r\n"))
|
||||
continue
|
||||
}
|
||||
_, _ = conn.Write([]byte("535 Authentication failed\r\n"))
|
||||
case "LOGIN":
|
||||
// 334 Username:
|
||||
_, _ = conn.Write([]byte("334 VXNlcm5hbWU6\r\n"))
|
||||
authLoginStage = 1
|
||||
default:
|
||||
_, _ = conn.Write([]byte("504 Authentication method not supported\r\n"))
|
||||
}
|
||||
}
|
||||
case "MAIL":
|
||||
mailFrom = arg
|
||||
_, _ = conn.Write([]byte("250 OK\r\n"))
|
||||
case "RCPT":
|
||||
rcptTo = arg
|
||||
_, _ = conn.Write([]byte("250 OK\r\n"))
|
||||
case "DATA":
|
||||
_, _ = conn.Write([]byte("354 End data with <CR><LF>.<CR><LF>\r\n"))
|
||||
// read until single '.' on a line
|
||||
var bodyLines []string
|
||||
for scanner.Scan() {
|
||||
l := scanner.Text()
|
||||
if l == "." { break }
|
||||
bodyLines = append(bodyLines, l)
|
||||
}
|
||||
// log summary
|
||||
snippet := strings.Join(bodyLines, "\n")
|
||||
if len(snippet) > 500 { snippet = snippet[:500] }
|
||||
log(Record{Timestamp: Now(), RemoteAddr: remoteIP(remote), RemotePort: remotePort(remote), Service: "smtp", Details: map[string]string{"event":"message","mail_from":mailFrom,"rcpt_to":rcptTo}, RawPayload: snippet})
|
||||
_, _ = conn.Write([]byte("250 OK queued as 12345\r\n"))
|
||||
case "QUIT":
|
||||
_, _ = conn.Write([]byte("221 Bye\r\n")); return
|
||||
default:
|
||||
_, _ = conn.Write([]byte("502 Command not implemented\r\n"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-57
@@ -1,57 +0,0 @@
|
||||
{
|
||||
"log_mode": "file",
|
||||
"log_path": "honeypot.log",
|
||||
"web": {
|
||||
"enabled": true,
|
||||
"bind": "127.0.0.1",
|
||||
"port": 6333
|
||||
},
|
||||
"services": {
|
||||
"http": true,
|
||||
"https": true,
|
||||
"ssh": true,
|
||||
"ftp": true,
|
||||
"smtp": true,
|
||||
"pop3": true,
|
||||
"imap": true,
|
||||
"telnet": true,
|
||||
"mysql": true,
|
||||
"postgresql": true,
|
||||
"redis": true,
|
||||
"mongodb": true,
|
||||
"rdp": true,
|
||||
"smb": true,
|
||||
"sip": true,
|
||||
"vnc": true,
|
||||
"dns": true,
|
||||
"snmp": true,
|
||||
"ldap": true,
|
||||
"generic": []
|
||||
},
|
||||
"ports": {
|
||||
"http": 8080,
|
||||
"https": 8443,
|
||||
"ssh": 2222,
|
||||
"ftp": 2121,
|
||||
"smtp": 2525,
|
||||
"pop3": 1110,
|
||||
"imap": 1143,
|
||||
"telnet": 2323,
|
||||
"mysql": 3306,
|
||||
"postgresql": 5432,
|
||||
"redis": 6379,
|
||||
"mongodb": 27017,
|
||||
"rdp": 3389,
|
||||
"smb": 4450,
|
||||
"sip": 5060,
|
||||
"vnc": 5900,
|
||||
"dns": 5353,
|
||||
"snmp": 1161,
|
||||
"ldap": 3890
|
||||
},
|
||||
"certificates": {
|
||||
"ssh_host_key_path": "",
|
||||
"tls_cert_path": "",
|
||||
"tls_key_path": ""
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{"timestamp":"2025-09-28T06:47:07.900746418Z","remote_addr":"127.0.0.1","remote_port":"44382","service":"ssh","details":{"auth_attempts":"0","duration_sec":"0.06","error":"read tcp 127.0.0.1:2222-\u003e127.0.0.1:44382: read: connection reset by peer","event":"session_end","last_password":"","last_username":"","session_id":"18695f678e2752f9"}}
|
||||
{"timestamp":"2025-09-28T07:04:09.262727385Z","remote_addr":"127.0.0.1","remote_port":"38042","service":"ssh","details":{"auth_attempts":"0","duration_sec":"0.22","error":"read tcp 127.0.0.1:2222-\u003e127.0.0.1:38042: read: connection reset by peer","event":"session_end","last_password":"","last_username":"","session_id":"1869605552ec2e17"}}
|
||||
{"timestamp":"2025-09-28T07:04:22.008795861Z","remote_addr":"127.0.0.1","remote_port":"60472","service":"ssh","details":{"attempt":"1","client":"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.14","event":"auth_attempt","password":"ascasc","username":"root"}}
|
||||
{"timestamp":"2025-09-28T07:04:25.850146625Z","remote_addr":"127.0.0.1","remote_port":"60472","service":"ssh","details":{"auth_attempts":"1","duration_sec":"6.60","error":"read tcp 127.0.0.1:2222-\u003e127.0.0.1:60472: use of closed network connection","event":"session_end","last_password":"ascasc","last_username":"root","session_id":"18696057b35a4405"}}
|
||||
{"timestamp":"2025-09-28T07:04:34.552887861Z","remote_addr":"127.0.0.1","remote_port":"47432","service":"ssh","details":{"attempt":"1","client":"SSH-2.0-OpenSSH_9.6p1 Ubuntu-3ubuntu13.14","event":"auth_attempt","password":"dhfgh567","username":"root"}}
|
||||
{"timestamp":"2025-09-28T07:05:10.090265232Z","remote_addr":"127.0.0.1","remote_port":"47432","service":"ssh","details":{"auth_attempts":"1","duration_sec":"37.47","error":"read tcp 127.0.0.1:2222-\u003e127.0.0.1:47432: use of closed network connection","event":"session_end","last_password":"dhfgh567","last_username":"root","session_id":"1869605ad02adcea"}}
|
||||
{"timestamp":"2025-09-28T07:05:35.135530797Z","remote_addr":"::1","remote_port":"34470","service":"http","details":{"method":"GET","proto":"HTTP/1.1","url":"/","user_agent":"curl/8.5.0"}}
|
||||
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAu9r5vDFVrDMeAbM4sL5Gs612YJ/GXy3f2x1KokqGLqcD5FHf
|
||||
fFoi/0CIbIFIKfx/Fw1M9mgBGz8GrDjk5VkALIlBuC0qYX5z1+akNUO8VYK9YgUr
|
||||
DinDOBhZP7V+Q4rEcjwT4XOtMmX0+aIpkPXpmyqsE8Ol5Lw6OWr8QWi67/xodO08
|
||||
vVN1pKzewdsidrqtcf2P+xJTC8LB0OVNRfL9+y7UxlCJvEnE7voEMmn3jFxBdUYu
|
||||
3nSwIhd/rolx2G45nyS1rP18z/dt7c2F28i6/ULNpBY8O40u+IfxpV7uSqKCsGdQ
|
||||
nuB6K6/t3OSmY//ELtSIRtF3h0DJLz9OVUmWLQIDAQABAoIBAAKdbarbeSxUFg3m
|
||||
j0UvA4xh+GBgusV2hNkLQ0iI8ZgA/Ue2hgxjCQuRkTuzp+TlSIIOsfOfeKwG7BJb
|
||||
UtWzIb1STVwsIo6A+4JkCeiTPNy9av7oldeRdnp+svCuJc74jNDyfbM+jM/t8/VQ
|
||||
hUl+PJ1nuUWZYcaggiMzeeI8UXq87dw59W7C18acsQdFqQ/lXxHMh51+KxjbjxkX
|
||||
gHqA4Mf+4I1A1A5DfpUt9Vv9EKwWU/snWYOCktCo8eYCWPYOPrm4GxGbaQcPTEKx
|
||||
V9Q5SQmzb6QvXmboafjiVZE1cxxz3Uf8RH4CJjn+MMoxMENZiO5bGgwSJ+BrqPi5
|
||||
G0CRKOcCgYEA+b/NpuA0XJDzJCE5Sfv80IStQLiVci5AgDHjxSQUt3c/Zb+e8YIZ
|
||||
cQ+VJnNdhS8YQWiz8ngvQgy8Dak1jVMRIN5Kwjw/5WQ8Cg5fuVGgK+1Lasxj0gER
|
||||
RI5EDGcHAGlairsM1rEKtQ32yt446cgDs3bNFTdnTY9MSpiwFmiB0JcCgYEAwI6a
|
||||
4yCgO8LqzCUfp67kgRIn3NME57+oRtUjC7FtmygZH4NGNBF4QVmTRB+uBWFNpY4z
|
||||
eyAbtsqD/l9+DkgxnaaZSBh6ILqCacC0GlRfbIDv8n/sbmwkdZxU4uyV+vjAKaNy
|
||||
UcExYzwRj4Rf/559Kd1bgXKqLLzcBIGNvo50o9sCgYEAuNQGqSoh9iNbnXBtCmDP
|
||||
b63Q3iX8i5zJJVZGn14das14gJ94THkgxPhoRCV6n5cD11xaV+Yz6yirf1yrgiRo
|
||||
d6+rGeYmz2gHutV6aBaNeBTMDISolwEtO1Qh7h/NIbPWSvc1ACnTp7xm2Snuaq0Y
|
||||
eBdCnSH8dHzJVCd9oYfEEo8CgYB86YWMpZOMcQuD1ulMC+Zr3G1DkRhzhh8RpB4R
|
||||
7c2eg0qY6L3X9SU/r24bGTn4f4CxTygSTWftEj7B+wx5E1gsXvC8ljRTmuoS1FGB
|
||||
aw5kAtilRVsI3tpf+UQP2U4J+ugdmswEQQFa0JLLuSHVXujvCYvc05eVYgaQXcKn
|
||||
xR3hVQKBgH75U8abmbbH7v6osTmWJBSqRbHtAjjcuJ70ApF11QY3sMdllmWl9zXS
|
||||
WYlUXLOFbbwlR8KfXPFaCIBas+N5l4eT6jYbSdcnWTdbqqc1EPf3oj92m1uxImxE
|
||||
Xwyn/O1MdhLudeP3qpRhR10hXKdsuq/+7k3nR2SZd8CwYCDczDu2
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,18 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC6TCCAdGgAwIBAgIIMQyP/0c+PXUwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UE
|
||||
AxMOaG9uZXlwb3QubG9jYWwwHhcNMjUwOTI4MDYwMzQzWhcNMzAwOTI4MDcwMzQz
|
||||
WjAZMRcwFQYDVQQDEw5ob25leXBvdC5sb2NhbDCCASIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggEPADCCAQoCggEBAMSsYJKMn5rdvzMZYRUsuAeC9t9bgID4Q2O+GbOdNtBCSsTq
|
||||
SGQTWyjzaudq3ODpZGJhft4ZzaqeRo9Ms9JOdmwAhG21Gfkv0Xk1J1od16/NBx89
|
||||
0F4Sba5pclamYxxhcx57sLYm4bUFGztbNYUbCMripBStKG9tRXExn6TMGi5kdanN
|
||||
kg+CPPrFs+a/qfhancLRPHEh1oCFirYZRTrt9n8N/EbppYcBKBuQ+STIT1XFYGrX
|
||||
ZN3RsrN7hEwR+qvWWYSf/ukpW8L7Od2fI0LoFHn9jhu7Z/qNutgLqs6f0+8BGlSC
|
||||
5vp4kKTAO2crg6lgAzc3EUh7pWyaZfpz5zpsVKMCAwEAAaM1MDMwDgYDVR0PAQH/
|
||||
BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwDQYJKoZI
|
||||
hvcNAQELBQADggEBADNLWYnULwfAGqYcWF0h32APoOIzm+py/GTEcsW279oZ++09
|
||||
hvkf9xdhXKxs4NXCdUsMC2h//l5P/rlVM5OWTB2RFDDPMtAW/dpNK7YL0Q7HMUI8
|
||||
zrVQW4Gi+hLuQ4XohN/YijKbJQSvle5nU02AU6dqHNUFs5J4AhQIVlIHCFz/sDuh
|
||||
46WvY9dqv/3mvOuXDmXIvuv2vFD3KTGApHQ+SnRQGveczdleTQizEWzd/GmZsVOH
|
||||
Igk9ZJEiRhWLZCWa3taTcW/ZOn9QbGAHO8FP8O8p/j6hrqcReW4LgN0BKnVbdMbY
|
||||
gK+EpjI18uF98J8ZDwD4+CQsGt+x2Sm53Ot8z8g=
|
||||
-----END CERTIFICATE-----
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEAxKxgkoyfmt2/MxlhFSy4B4L231uAgPhDY74Zs5020EJKxOpI
|
||||
ZBNbKPNq52rc4OlkYmF+3hnNqp5Gj0yz0k52bACEbbUZ+S/ReTUnWh3Xr80HHz3Q
|
||||
XhJtrmlyVqZjHGFzHnuwtibhtQUbO1s1hRsIyuKkFK0ob21FcTGfpMwaLmR1qc2S
|
||||
D4I8+sWz5r+p+FqdwtE8cSHWgIWKthlFOu32fw38RumlhwEoG5D5JMhPVcVgatdk
|
||||
3dGys3uETBH6q9ZZhJ/+6Slbwvs53Z8jQugUef2OG7tn+o262Auqzp/T7wEaVILm
|
||||
+niQpMA7ZyuDqWADNzcRSHulbJpl+nPnOmxUowIDAQABAoIBAERBsw6JgYcE+Kuq
|
||||
Xjg0GfZ5bGaeYh3gi7rdKhxdLr3elAZ9bPxWf2fZ+zsvqlLgjXdbcOVyPR++6Kwp
|
||||
KauOkajwEQXmOYpzHxca7HppKwcXeCZOlLdhW/GRJR6Phow+Ae8NbIn7OpBRol7a
|
||||
S9vTQxzuxZVrd0IcwWIEn+xY7ak1lnNTzWhjyIyN5HybGEU3lFjPMXRmj5X0P7GS
|
||||
8HcBsl4jFlpDwstucqDxmrm7Fr7EVo3tIPEcGdNPqKvnZ44Ravb5/jVW0C/KvjsM
|
||||
5lZmIGEKIQjyCpa4Dd2fkLvb4b9n9+hxdVRDNOYW7AnCBWZZwlJj8zwzufVXSTjx
|
||||
Av3uA7kCgYEA682lXPNR9Om3mxz76mj1+7JYkykDQ1sE6CwHxTAQjBNS6QUAEW+n
|
||||
meurM+3LmNldWixhLcJgH7c9tANyN1b6I1KWouK6gFdSuINvYIVDHvNtKtrne+vX
|
||||
LUuX1pfQvz5Oq9mqJXU/+WD5yqv+1rxsleNJF6TzXp40caUQpJGmSbcCgYEA1YS/
|
||||
BObe1uQ+OUPdsWXF4hGDEcHbEO3WBV+YZL/Hjclee/jafu3iA1aaA+QvQTJp4L0W
|
||||
Kik4NP/k2j/d3Tl0PFBY66kX3u/F1gzW1xB6Ql/aAdxoat9sNKLSrxbwPj3DCm11
|
||||
ypWAV1IMfc1UGcsMYjHbYr/lWv9Sa5df3LAIfHUCgYEAxJaoXLwHAfawOkOJyr5D
|
||||
BdqEefvhWpBRoPbEa6NMyFt77gVbLy41Pt/51ctUyFO/vmPtiObamNZ+PMv6tyRu
|
||||
WnCKYbZA4qrqriX1/zRa5zzvMKFcCDZxKLQzHJdpU2ew0xke/yendFNjLZMDXSeu
|
||||
J7Bbybidpa6j7nM9UtaTGjUCgYBJCm8Z6yxh0JRknI2zCMCntBvlMC6TXPjwv6Hv
|
||||
HRfTrgYPXLLJ5vCA+dgX6rArmmZTxftWEuGyZ7NO4bgw3F2h4E56105eKiHANoYr
|
||||
7ewU1ptKNa7WmHV4kBaIZM1sTU5yO72mvnu34054novdgvNKiAmnf0OjXGJCgfb+
|
||||
FI3inQKBgQDAQ/rTu7acMZAXGMlRHI/rJaXDnS705WFmXTYYgpY+62pi/aPZ1W8w
|
||||
9FtMuFoHtiwlV6jwKg+3GkZNnXKsuAc07dYCgpxMxd5uFcP5CHl/AwOZ8xe7kzwl
|
||||
sJuWf3wfRTHBwry+sgPF450iaHrYVzsyKyanafm5L1hNzAseEhAZyg==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
Reference in New Issue
Block a user