From d97214b1b4d7b021e4235bb4e53692101acfdd68 Mon Sep 17 00:00:00 2001 From: caret Date: Tue, 27 Jun 2023 22:39:41 -0500 Subject: [PATCH] made --- Cargo.toml | 24 - certs/more.sh | 18 - certs/nesica1.crt | 23 - certs/nesica1.key | 28 - certs/nesica1.pfx | Bin 2463 -> 0 bytes certs/nesys.crt | 21 - certs/nesys.key | 28 - certs/nesys.pfx | Bin 2359 -> 0 bytes certs/root.crt | 21 - certs/root.key | 28 - certs/root.pfx | Bin 2377 -> 0 bytes certs/test/nesica1.crt | 27 - certs/test/nesica1.key | 31 -- certs/test/nesica1.pfx | Bin 2463 -> 0 bytes certs/test/nesys.crt | 25 - certs/test/nesys.key | 31 -- certs/test/nesys.pfx | Bin 2359 -> 0 bytes certs/test/root.crt | 25 - certs/test/root.key | 31 -- certs/test/root.pfx | Bin 2377 -> 0 bytes docs/LLSIFAC.postman_collection.json | 740 --------------------------- priv.pem | 28 - src/main.rs | 226 -------- utils/install.bat | 9 - utils/nesys.bat | 1 - utils/reg.reg | Bin 3778 -> 0 bytes 26 files changed, 1365 deletions(-) delete mode 100644 Cargo.toml delete mode 100644 certs/more.sh delete mode 100644 certs/nesica1.crt delete mode 100644 certs/nesica1.key delete mode 100644 certs/nesica1.pfx delete mode 100644 certs/nesys.crt delete mode 100644 certs/nesys.key delete mode 100644 certs/nesys.pfx delete mode 100644 certs/root.crt delete mode 100644 certs/root.key delete mode 100644 certs/root.pfx delete mode 100644 certs/test/nesica1.crt delete mode 100644 certs/test/nesica1.key delete mode 100644 certs/test/nesica1.pfx delete mode 100644 certs/test/nesys.crt delete mode 100644 certs/test/nesys.key delete mode 100644 certs/test/nesys.pfx delete mode 100644 certs/test/root.crt delete mode 100644 certs/test/root.key delete mode 100644 certs/test/root.pfx delete mode 100644 docs/LLSIFAC.postman_collection.json delete mode 100644 priv.pem delete mode 100755 src/main.rs delete mode 100755 utils/install.bat delete mode 100755 utils/nesys.bat delete mode 100755 utils/reg.reg diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 87e4645..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "harasho" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -actix-tls = "3.0.3" -actix-web = {version = "4.3.0", features = ["rustls","openssl"]} -env_logger = "0.10.0" -log = "0.4.17" -mime = "0.3.16" -openssl = "0.10.52" -rustls = "0.20.8" -rustls-pemfile = "1.0.2" -aes = "0.8.2" -cfb-mode = "0.8.2" -serde = {version="1.0.163",features = ['derive']} -serde_json = {version = "1.0.96", features = ['std']} -#rsa = "0.9.2" -rand = "0.8.5" -md-5 = "0.10.5" -hex-literal = "0.4.1" diff --git a/certs/more.sh b/certs/more.sh deleted file mode 100644 index c4b6db0..0000000 --- a/certs/more.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -echo "Don't run this unless you want new certs. Just use the ones already generated!" -exit -echo "This script removes all cert files in the directory." -echo "Continue? Press enter!" -read -rm *.srl *.key *.csr *.crt *.pem *.ext *.pfx > /dev/null -# Generate Root Certificate and Key -openssl req -newkey rsa:2048 -nodes -keyout root.key -x509 -days 3650 -out root.crt -subj "/C=JP/ST=A/L=A/CN=Taito Arcade Machine CA" -# Generate Second Certificate and Key -openssl req -newkey rsa:2048 -nodes -keyout nesys.key -out nesys.crt -CA root.crt -CAkey root.key -subj "/C=JP/ST=A/L=A/CN=nesys" -days 3650 -# Generate Last Certificate and Key -openssl req -newkey rsa:2048 -nodes -keyout nesica1.key -out nesica1.crt -CA nesys.crt -CAkey nesys.key -subj "/C=JP/ST=A/L=A/CN=nesica1" -addext "subjectAltName = DNS:cert.nesys.jp,DNS:cert3.nesys.jp,DNS:data.nesys.jp,DNS:proxy.nesys.jp,DNS:nesys.taito.co.jp,DNS:fjm170920zero.nesica.net" -days 3650 -# Convert them to PFX for windows importing! -# Make sure to import them only to Local Machine Personal and Trusted Root authorities -openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -inkey root.key -in root.crt -out root.pfx -openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -inkey nesys.key -in nesys.crt -out nesys.pfx -openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -inkey nesica1.key -in nesica1.crt -out nesica1.pfx diff --git a/certs/nesica1.crt b/certs/nesica1.crt deleted file mode 100644 index 6ddf3d2..0000000 --- a/certs/nesica1.crt +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUfH7CYtnS909tjCJmn3h+9oqsLzUwDQYJKoZIhvcNAQEL -BQAwNTELMAkGA1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcMAUExDjAMBgNV -BAMMBW5lc3lzMB4XDTIzMDYwNTAwMDc1OVoXDTMzMDYwMjAwMDc1OVowNzELMAkG -A1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcMAUExEDAOBgNVBAMMB25lc2lj -YTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCX+/yIAFz9TpeyQxw -b3YYL+9Ngfedmxil7U3HZcpDR+2ysNtmdMTIVzQhz+ql7y3BJ+CSriEvDotuhRp1 -5RFANcqf5JoolZ9m3a6BZZkQrjBZqCD7UOTExf11WKLq05N0Nr0EKoGRn4PQF04m -W/3zjpx3M53EbOAVq5bstGyClrTWItvHpzuJ3doCLotTUOKW+b6B5WPnjkPBuR9B -kMa9Ru1ZlQqxkEVxAqLdNSOLVisTASZ91ZmLhQM7klOSfMbO/6tWV2ZKgQ02Cdjt -7tEYKakGfmT21YT3q2f/2FF9TyarX9nma4RLnoNwt+GlH8bZFukr/Nkk2sf1jRZk -YecdAgMBAAGjgcowgccwHQYDVR0OBBYEFCMsf1N9KUmlPlwvFw4CBIXAuxo1MB8G -A1UdIwQYMBaAFNIBY5H/aDapjbeUecKlfXXV6ouRMA8GA1UdEwEB/wQFMAMBAf8w -dAYDVR0RBG0wa4INY2VydC5uZXN5cy5qcIIOY2VydDMubmVzeXMuanCCDWRhdGEu -bmVzeXMuanCCDnByb3h5Lm5lc3lzLmpwghFuZXN5cy50YWl0by5jby5qcIIYZmpt -MTcwOTIwemVyby5uZXNpY2EubmV0MA0GCSqGSIb3DQEBCwUAA4IBAQAXSf9Tk/i2 -/Sq2mE5TiFSbhnLQB8GAn1UbiVZb6MSlrNDDuvVCk7MkYT2OnLamlbE1sdblU7/J -TIESBo4hjlwBaN61KpGRnf4NVrBh7gyCmcOHmlSAxL0+Irc0ZzwFk6Dz47MSGwYJ -QCeGWvryQdTxKpqzf04u5kOzWezoyTzxnxqw4VyxNZRXaYGfdLnzzm31jLl0Wd8d -oVyCwDmDN2lb71S5XJ47ugR+bRD3YDm0ZS+42qLvvA8FaIV/lOV1xK6So29yEz0P -HvLi/sJs0Mck7ZlG56MzwSCYHNcFTBGVVIZM2tcxWsXS/+VxtHJtbysY64eHnYog -G/7ah4CXcWtI ------END CERTIFICATE----- diff --git a/certs/nesica1.key b/certs/nesica1.key deleted file mode 100644 index 051bb59..0000000 --- a/certs/nesica1.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCX+/yIAFz9Tpe -yQxwb3YYL+9Ngfedmxil7U3HZcpDR+2ysNtmdMTIVzQhz+ql7y3BJ+CSriEvDotu -hRp15RFANcqf5JoolZ9m3a6BZZkQrjBZqCD7UOTExf11WKLq05N0Nr0EKoGRn4PQ -F04mW/3zjpx3M53EbOAVq5bstGyClrTWItvHpzuJ3doCLotTUOKW+b6B5WPnjkPB -uR9BkMa9Ru1ZlQqxkEVxAqLdNSOLVisTASZ91ZmLhQM7klOSfMbO/6tWV2ZKgQ02 -Cdjt7tEYKakGfmT21YT3q2f/2FF9TyarX9nma4RLnoNwt+GlH8bZFukr/Nkk2sf1 -jRZkYecdAgMBAAECggEAFW7Tu/yYfGtVgN8lbn5z5K3gcsj6f1f7S0yT74FDYNDd -Hn+O6cjFbBvlhTbydlKd1ncptbLauOAfMtQde1ODZ/OmgKQJ9aCt/39BP0ZvLt4u -Oaym2l9sol/8l0RrTn5++2kPxZZUTDTtKXRwax1orsMScLhx1Jd2zBzsGvS4JFv9 -anPRESNQK1c8I1ZBZH4372KjkKH4lsKURrX/Uf4Vxz7jz60zw0NEVNefewfmmz1f -fEd7F1He3Hb82r/n7diieUmrDiQnE4GwV8lsrtu8lss++89G2RtVOMlJ51uD+qOm -ToOCsRylFO8cLQ+0BsLHNKQsRXz7AtYMk+jn/W/L4QKBgQD2nfmu9P6ghaeP70YJ -HdFiUDDNzxDAs81Uj5Pty66pR05NIf1BSXwqZh8dmXI3kYOZohwaFMQOBWUwlXvi -vbpblnh8hiMvXxTgb1xPx+kEGSnkCLbiEjOEgMc7/s2iKXX/qH0Nw2NPTf44bKsr -juxxNthzSqGKulO8uyrrJ97NTQKBgQDJxSCH2XbpLThYQlQfRn+J/z29IKpC2u/R -e0nf9xmU0HDtfqxM0UXEtSBDZ2K4SRrT1w/mWmdkObw7O7JXMSnrevsL5A1qkFpO -6LrNtDRVZk4DjNo1z+KNc88WUZVu79IazTAWfWzX0dn/Khm+oB4ds0UkJhKUFhJf -xY1EZNDZEQKBgCSICjBsgjttEQE1RH6dOCMEFfamsaiZ+dSI4DTdcyYINgUe/9Dn -/ciaEAnmbRDmMURUyyzh3pjlG7QysINJ740ZoQdxJ00hHIqSdG4tAstkntv0noKm -h5MdMGYmvHdFBQG2B7A+PTvGJd5d2o09QrESmsWZTIysRTMz1ou3AD4RAoGBAJQH -7m/82kMFDDuknjc778J84vzpBEF8g0o7m92XWstViiSUNTE+sGM7R+pr5X+zEt2t -AVtNpGFiAnmquJND3K+JULpOnJE8SyVtle/pcCPfpQjxw/6LAHorJxoGzQ3RIWLM -e6VkbACDU97jMnQq4S2FIwr8a9D9yIk/VP+Cv78hAoGBAOGJ1LJhj9pMZeY4kmAA -L4qujX55bzs9Lk/+zKwE5RlwDpFzXzSXXHnWZeEyOb6ENyOnUpwT5gRyJFKidD1h -gtEx0PWclBbrf84Tz1GRurVmb+FuRe5la+aLb5Otdudnc+mggNGFoAOZMU8mQtoQ -s/bVTFKdN0+vYR18OTu3nGQg ------END PRIVATE KEY----- diff --git a/certs/nesica1.pfx b/certs/nesica1.pfx deleted file mode 100644 index 7f1294b91a1a281bdc11b094587929eafc6133db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2463 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 R>=>VJaB$Zb&io&j=-;wU26zAf diff --git a/certs/test/nesica1.crt b/certs/test/nesica1.crt deleted file mode 100644 index 2a2bb9d..0000000 --- a/certs/test/nesica1.crt +++ /dev/null @@ -1,27 +0,0 @@ -Bag Attributes - localKeyID: 31 77 24 59 11 3A 84 C4 65 93 75 DE B7 EE 5A 89 6A B3 41 DA -subject=C = JP, ST = A, L = A, CN = nesica1 -issuer=C = JP, ST = A, L = A, CN = nesys ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIUfH7CYtnS909tjCJmn3h+9oqsLzUwDQYJKoZIhvcNAQEL -BQAwNTELMAkGA1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcMAUExDjAMBgNV -BAMMBW5lc3lzMB4XDTIzMDYwNTAwMDc1OVoXDTMzMDYwMjAwMDc1OVowNzELMAkG -A1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcMAUExEDAOBgNVBAMMB25lc2lj -YTEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCX+/yIAFz9TpeyQxw -b3YYL+9Ngfedmxil7U3HZcpDR+2ysNtmdMTIVzQhz+ql7y3BJ+CSriEvDotuhRp1 -5RFANcqf5JoolZ9m3a6BZZkQrjBZqCD7UOTExf11WKLq05N0Nr0EKoGRn4PQF04m -W/3zjpx3M53EbOAVq5bstGyClrTWItvHpzuJ3doCLotTUOKW+b6B5WPnjkPBuR9B -kMa9Ru1ZlQqxkEVxAqLdNSOLVisTASZ91ZmLhQM7klOSfMbO/6tWV2ZKgQ02Cdjt -7tEYKakGfmT21YT3q2f/2FF9TyarX9nma4RLnoNwt+GlH8bZFukr/Nkk2sf1jRZk -YecdAgMBAAGjgcowgccwHQYDVR0OBBYEFCMsf1N9KUmlPlwvFw4CBIXAuxo1MB8G -A1UdIwQYMBaAFNIBY5H/aDapjbeUecKlfXXV6ouRMA8GA1UdEwEB/wQFMAMBAf8w -dAYDVR0RBG0wa4INY2VydC5uZXN5cy5qcIIOY2VydDMubmVzeXMuanCCDWRhdGEu -bmVzeXMuanCCDnByb3h5Lm5lc3lzLmpwghFuZXN5cy50YWl0by5jby5qcIIYZmpt -MTcwOTIwemVyby5uZXNpY2EubmV0MA0GCSqGSIb3DQEBCwUAA4IBAQAXSf9Tk/i2 -/Sq2mE5TiFSbhnLQB8GAn1UbiVZb6MSlrNDDuvVCk7MkYT2OnLamlbE1sdblU7/J -TIESBo4hjlwBaN61KpGRnf4NVrBh7gyCmcOHmlSAxL0+Irc0ZzwFk6Dz47MSGwYJ -QCeGWvryQdTxKpqzf04u5kOzWezoyTzxnxqw4VyxNZRXaYGfdLnzzm31jLl0Wd8d -oVyCwDmDN2lb71S5XJ47ugR+bRD3YDm0ZS+42qLvvA8FaIV/lOV1xK6So29yEz0P -HvLi/sJs0Mck7ZlG56MzwSCYHNcFTBGVVIZM2tcxWsXS/+VxtHJtbysY64eHnYog -G/7ah4CXcWtI ------END CERTIFICATE----- diff --git a/certs/test/nesica1.key b/certs/test/nesica1.key deleted file mode 100644 index 962bbc0..0000000 --- a/certs/test/nesica1.key +++ /dev/null @@ -1,31 +0,0 @@ -Bag Attributes - localKeyID: 31 77 24 59 11 3A 84 C4 65 93 75 DE B7 EE 5A 89 6A B3 41 DA -Key Attributes: ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCX+/yIAFz9Tpe -yQxwb3YYL+9Ngfedmxil7U3HZcpDR+2ysNtmdMTIVzQhz+ql7y3BJ+CSriEvDotu -hRp15RFANcqf5JoolZ9m3a6BZZkQrjBZqCD7UOTExf11WKLq05N0Nr0EKoGRn4PQ -F04mW/3zjpx3M53EbOAVq5bstGyClrTWItvHpzuJ3doCLotTUOKW+b6B5WPnjkPB -uR9BkMa9Ru1ZlQqxkEVxAqLdNSOLVisTASZ91ZmLhQM7klOSfMbO/6tWV2ZKgQ02 -Cdjt7tEYKakGfmT21YT3q2f/2FF9TyarX9nma4RLnoNwt+GlH8bZFukr/Nkk2sf1 -jRZkYecdAgMBAAECggEAFW7Tu/yYfGtVgN8lbn5z5K3gcsj6f1f7S0yT74FDYNDd -Hn+O6cjFbBvlhTbydlKd1ncptbLauOAfMtQde1ODZ/OmgKQJ9aCt/39BP0ZvLt4u -Oaym2l9sol/8l0RrTn5++2kPxZZUTDTtKXRwax1orsMScLhx1Jd2zBzsGvS4JFv9 -anPRESNQK1c8I1ZBZH4372KjkKH4lsKURrX/Uf4Vxz7jz60zw0NEVNefewfmmz1f -fEd7F1He3Hb82r/n7diieUmrDiQnE4GwV8lsrtu8lss++89G2RtVOMlJ51uD+qOm -ToOCsRylFO8cLQ+0BsLHNKQsRXz7AtYMk+jn/W/L4QKBgQD2nfmu9P6ghaeP70YJ -HdFiUDDNzxDAs81Uj5Pty66pR05NIf1BSXwqZh8dmXI3kYOZohwaFMQOBWUwlXvi -vbpblnh8hiMvXxTgb1xPx+kEGSnkCLbiEjOEgMc7/s2iKXX/qH0Nw2NPTf44bKsr -juxxNthzSqGKulO8uyrrJ97NTQKBgQDJxSCH2XbpLThYQlQfRn+J/z29IKpC2u/R -e0nf9xmU0HDtfqxM0UXEtSBDZ2K4SRrT1w/mWmdkObw7O7JXMSnrevsL5A1qkFpO -6LrNtDRVZk4DjNo1z+KNc88WUZVu79IazTAWfWzX0dn/Khm+oB4ds0UkJhKUFhJf -xY1EZNDZEQKBgCSICjBsgjttEQE1RH6dOCMEFfamsaiZ+dSI4DTdcyYINgUe/9Dn -/ciaEAnmbRDmMURUyyzh3pjlG7QysINJ740ZoQdxJ00hHIqSdG4tAstkntv0noKm -h5MdMGYmvHdFBQG2B7A+PTvGJd5d2o09QrESmsWZTIysRTMz1ou3AD4RAoGBAJQH -7m/82kMFDDuknjc778J84vzpBEF8g0o7m92XWstViiSUNTE+sGM7R+pr5X+zEt2t -AVtNpGFiAnmquJND3K+JULpOnJE8SyVtle/pcCPfpQjxw/6LAHorJxoGzQ3RIWLM -e6VkbACDU97jMnQq4S2FIwr8a9D9yIk/VP+Cv78hAoGBAOGJ1LJhj9pMZeY4kmAA -L4qujX55bzs9Lk/+zKwE5RlwDpFzXzSXXHnWZeEyOb6ENyOnUpwT5gRyJFKidD1h -gtEx0PWclBbrf84Tz1GRurVmb+FuRe5la+aLb5Otdudnc+mggNGFoAOZMU8mQtoQ -s/bVTFKdN0+vYR18OTu3nGQg ------END PRIVATE KEY----- diff --git a/certs/test/nesica1.pfx b/certs/test/nesica1.pfx deleted file mode 100644 index 7f1294b91a1a281bdc11b094587929eafc6133db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2463 zcma)6c|6oxAD*4Dj9n99ELkspgCR>ry28sOYl9YKjV#SXvdzz0mdKK^WV_QXB8*G4 z*=j=8QkJ*LF2)jFkuKix-rnl{@BVQ<=RD8(p68s;dCqwN5SEAUYlaqNyA@5&#i8|2Ku$j{p&}99oLg_M&*dt>WW>!iz!pH~_-mp?JQLXmO4f zyc+?+J2?C^0EAT*!(mVuOf({@)qQwi{dho%oL5m;)aPsWGzkFz_l=;uNC-f{^8#oT z+yQ|Sfmzz%c>wNRz|99W`QMmpcZ>n}c6m4-@`C5Z%NGIZJ^WhQfG$7)06>qR@4Sa! zdlzbbgMi*YlNAIof6H=lWPLr{@Bj#v`}v4aBm@pZ1t1)r2L?i+kk&KHt2pSzHG|U~ zd_jSiu$s%()b+xAEPc_M>Dg&|Y_Ya_)QjBy!bwNAcb>ki-l8;iqe@m2lYAjwf-)^+ zOz13{%2UoR@_JWA^`r?_0i-*)uQpTd&$cKhOXpu@l64;=RH+$7v3+}piY{B9(h5Sg z3)}t2#42(Y>iof+x;Jv8%-;>Kz8isQB-`0c^*ldxM%~O;9 zYcQrm5rpQ6^s-w$?cKW@(wx+csnG6NDgJ}izx3g;qHE*Wvo_1JK zg;8m;X|7No)*q@F8HL;Yj@52Ud?2kYG0#4x{qZ5W1|4rBWM=WFNrtc_3T>>E;JmqN z@_I!zj}cAOm@#FL7Cv+strSUAkGs|ovYdRWMdZd$JppSejbze$sS;PPSwB|K*Jath z(e;*L6Cx@=aQ&=)ou}r5k<#Ty0!W|u=&WfqtbMT_A% z7UM$|NJ0j2?VgzwR>P9>RX>Kw2mm5YzL)Jr3Q`LJA~iU)DyJ#_oExxW5V6DwlX+m@ z_vGN?gc1h9eZV~z!h=B_fWf#SoY;9WGt)XA^tFIV!@Om~t#R-BgzH?GN1x2f zz88zAwsMw=VhT}h9J>boeDLbiR6IATQuBpv>m#_+v4}8{WWR2L5BoRu9DwQ3eJ#;n zyml&KyWjUVyJe<5ebdR8h^9PBVN+pe2W&eXmG~z1sj6QTTqvdIda?O&~_w7fGz$ZD!XPtGviXOq9KF)YR=#H3)F(P|!J`^m& z--W#3vaPxoQkhqxZI&ss9l90S>3plD`7ZJNAE=CF@=ey``EivESZ2N2QvREiNdE2l z=CQ8*Des3ZQ$uN)bH!7sBvB0{iPmL~wlN6~-&i&88H$d+Q#~Bi8@8zLEquwH=YhqZ zlatcCNtb$N+e+3MBTSc*vn>QFEyv`#zcr=$V!%9!^*(s0M5YhZZT57P+j&Rt z;70w&#<|qREUpj7g8CQA>h;j4V_F5u1wD*&_F8x^c?I%Ynh|_r)}=ZT9=3CoBQ&m( z6SadSlC{4g3f55P=<|~f`4!a3&lW*OpZ6xs(0T`_J7i)_#&cf!3Kus}xM*XgH6L5) zgNeD=H3jQ<-MwtA62{>3&IoJkh2(4Tk6sx6h$qSB(_Kb~A6E?YbZ93KW^BQT9ir=` zT5E62DDTb=C9cN-YEuWZ5!g?3k{19U8CkoF$~_+x zST=eMR9qJ!jGFy2SGo{Q>xBHvAIQ&3S>z3P^_~0%~z+D zn+n-Rxht5Ohm)eDTN Jg?|{L{{c> ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDI9bkQwsjR/GGS -Bbk2AvfsL+mobUOrmVRH+9l6oDM7KLpaRl+rgJgh1BqmesEn9DRqCcFYdlz3E5Gg -sjRsYLAveKlNzmuKY7rrbo4LK0a7JMk7m8CYMNsQ00pq8CXLibNU0IMd1jc+30a4 -XvIzwiGW45ZYRupPL+b5fhYjo26ldBZPDpn5IBjLAHNs5+qrCJ7FvtHsMNOQ/3Te -00tr5M00D03XcWODSOpL1z4vQRw1WHZbC2QYhwMV8jrnqwgy7XqZSadms6icCOvI -MOuOYwhiMCWGkjhcSWidnG6irQhFBUytY4ElWS3sszPZf/Dk02b7U9/HPoxcu/l1 -DbdSjyOlAgMBAAECggEAA1FvV1QBndn72gqtjRmnP03OBVs2GVPxFmkvPsn8+CnL -F4KyJ+V59y3TeZ+gQQkhGzkcnKadQ763RYuu6uhjyfAR/fgxDvo1LWSVBG3+Za7Z -tcBaGzxlrMiLiFCwk95EfEHr6ebnrZ2UXNn24ZzmEhUHt/hslcpVykiaYMdDiruX -worBxz6P0ajk9lxWhj1yuauLqoJtV9AYdplDk9NJa2BA74YMpkH2Gim1iDNDKfTw -Tq075hBAGeVMY2y8dYvX84wLvp9b/rUZOyM4TCvZgRsiNY6qXuIczHmh9IyASBlc -TI9oxfEpJa0h+ySa/Cnb3+OwRqdYjugbGhRiGloegQKBgQDwCZ60u3KstNw3eIcC -1D/G1ZbzegzPtfJCzDIM+JQ5pIHBLiqi+OfPkOzKCD1oFxSeXg+p/2giPBiGfUyD -cWBiB3r3mGvB+khpXJG02dM8JuQ5egSZHOguIaKRzQVDN49TjED9SNSAleXbFPo0 -kOag3tAgd4LA+iE1JL5f54dRQQKBgQDWUtjWE3ZtPZlz8HmVif+GUJFZnlW7K3R3 -lJlM9ISWz4ebzrrk5pgwZRVAbzgXGPcPLZEDS7BtyuwpWZ0e4+C5/QBGdywZVpHA -s9xKIWBAZsU8NBdZwNzF8wmutNo5cszqaNDRL7DTLsEgNTUOZ1xz789vvZhB/hFc -Y4wTLlHVZQKBgQCAyQiHe1LJargEYvw8/lfBfHNi6obZIot6X0gzQWN1kde0J+rk -SZtF+EGzG7ymjkuXtGu/D7N1Or0F21Aj7b6CmfTVxsd56ajULsBWQdBdo5grZlX1 -OFcx+QXaKB+8sqCJeOSdgGfTHZmXc6fScDPs996+rKBQnWMXukER/4zQgQKBgDsI -7vlouwI0KYSqBJOQQ3Y30xGgb3Ty703Q/LkZ0TvJRk1AkHJkoh8SeNwaxpR2J/di -UcNaoepcLtjk+kZ79nbEncLLKLaCBfvSjydMMjsLE+EVaCks2qMb4trgrguM96zJ -2lsEi+xfwIqinU6uYeT9dWIOE1Z6KUYNlZPi+l+RAoGBAL+0ATjUn3qV4Buo8frN -RuXqwIpYBPOHLVQHoEhDLdOiTvM0vElFnLq0Hq7wmuVSiiVbKSlsEZbQHRZlaChp -32YDqVxUYGEj5XnpBiCq3DTLru7Wr8r0njvKiBMNLOPPbtHukHnJFZL3gDTo96Ey -js/euYOMeKilOMkIURCKhw4P ------END PRIVATE KEY----- diff --git a/certs/test/nesys.pfx b/certs/test/nesys.pfx deleted file mode 100644 index affeea6b4389798d5ca5ded1c4845c3829249d77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2359 zcma)6c{tQ<7oOdWG1kdGmd3o2?Z;Re#(adKBnsJOrxLwL$krs;_hc@+7L}b!mKIyK z!r01dYm!}}!mBCsj_d2|>ih5g<6O@<_c`Y|&vjqVeE=GY2mwO@8cGR)Iv8gfw~YaF zfs1J<9E^q%8uZowrJzq?G-x9Se#Eg_1o~$e4>uTEOoN7Tz>5g(pCC$@a~IT$ z)8NLzodFuexEKlnLm*i1P2T?~XBxdIhBl(LKlaY&e$z7pFuw+Y(Qpu8qJ{=g2&fGV zAp|*Usm2W;_W~pj*x-LY*Pbr}NbTWJ9uaG|Gr<8e27w-Ko?bHMZXUj8{Jmrh4FD+- zj5-m}0yF^t(AGTUAc7(8h3Y>;K=a=X;stpAI|%OY6%-Z((7^kDe=-;jg3`czAP&wA zp@G4m?#)L2wr<9Ew@i4W7G!%>b?M%D!*aT{32QvOn5cW8$$@&hJSJCmMEq`etNd4u zv#3_P5T|XSjN&>CKi3-7(EH~7=Mp`dR{T@ZiqvMg9^JebxxfVf@X@pDguaA&>%ptI zF>T5W^@+=8Vw-HvY>pju*+O-GCrTK9%l}TWumvxDM@F;{6y&$CT#hX4e8yM>hSS-> z)5B)xKD^f8Gk^1^$5qp1vo{n~14&K05J$A9=ymA6&pHd`NcE55^dn{7_4o3TE8W0K zst3{?AjD-JaysH$kndkwi8O{EtMs@+uvcEKCyqz2e;D>=SG#8PXxKznKc=K}Yh?l8+ba+PgV``R0OcIN)6V%R9NNL4LZfJ}$S)W~suzE)uV6%Q zm%hDCb4=OD2?L)kc>&0P%-ive*c$#(-yhB^5rYeJ4_2^vJ5b{P`}~S^H>}{tdsTivn-FIf+91uxO7*JUyHl@ee6xS zLFlqPK`xUWJ$$#IW3a{IY85lj2%qXoX6cPt#?PKe0)eeR50D5k>)t|w@TJX?GvSxj zNaVjGr0lB}XJ$j4u7%L#sK^P->2jw>!Vfo!qS+@L5I=_FFV^KZ48+~#dTo`Mwx*AK z*mt!)8u8b2@>oa7HuJ`~W5QYSbiCD)F1hEgqdCuLjvBEK-6O{o7vrsI8l%*f%!5q)vh+h&W!byw@y(t5B&ndL3%=S;&s7<(J>|dk z38aKd%Zda>Orq<#sp7AD$U$b0y}r5Q+A|-1$;jru{;{_wF$w{9#CZlhYIzew z4lA6=xqxN_3Njm0jiX4Jhm39BDTU&mM`u52VaW`%5^UQ7tOEjgU-D?`4-GLQ>fNkn zu}n}$RC4rM$??L$aK#Z_{}jfjO7aR-4x7L9vh-kF+@jbLx#5v=BDL=$n0~ zjb5cOuo-@Eq!rd@f1TsVnepQSf}-NrK<#mo(a{nknl?X@ol8~+FFDl4K9tzf#vIt( z^s#Y&CG8+GrPsf?xF$!-XTZ7A7_A2!_$%MAIK184SP{Af!r9APQ z$E#prLcs?&-X{kS4+kwjzLmY-v|ZXJc@kxYYin-FmJ9^J)J0Qp4keNFPKCsnB)r## zj*jH@sXQYWAs_p{!5aNs*&8yqso#Mixb~$bhS%I^r>$<{iFJyFs? ------BEGIN PRIVATE KEY----- -MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQChS+TMg7hYuSdB -RYDbPv9mqufCNHEqjDbs8eZ7orqNMNyATMpWWNcIlXpM1Z2WFT+NajGpiatBkkDx -gatRbfH3JRkHxZK6w18hTibmwu1MNNbuK8lts6lIN6ucUGZ6ZWef0oZa6CCnouUf -xD5HNgQ9ZGzMo3ELaVg0MrCctVFQivxsqpW/NEN/6qTiUBXtYAlBbhJjOW469/1+ -1I/ngzAJ7FEgiacv0P/c4GLirEmutq9ol0FamF3av1YtSA7BMs3Z/qn02lMhsb6g -4ezL+bJbVxDDeL2ZAz2N0rWtLOWBuo/kSYroQ3loyETLnfV3vNkETVYMTHnx2oCt -yFVOaOjVAgMBAAECggEABjDnDdCKfWFR9+fmi8PNws+RiLtBkrwCCbM5QQqcdXno -JMaNx6WuT0aJhLR4UX/sSg3G7TZ7C8/EzWBIRp5dOLrETK+RM7j3CEy7IoVd3Vxz -2X11xE+ukjaM0DmnzU/iG9jVTlz1j+mpOMBsEYipvf+CS5KEbscy2wINFF7DSb+U -Q8oMGDne7AoXyh3SvPCuPJK4gZq5usjG7XL8nYACaVmCotbrjmG633yBArMjQMet -Wtjq5jpVvGHa5AvOlxeh1eaQnDQVzvirURIZo9K/rmgKDMV7muUiq0K8KKmTld80 -/6CelYikwg7jI0IRy6AP2kL0/e3KfBrL5HEx4ErzgQKBgQDh+57z1St4rAW4RW2H -IWxofPeNrgBC8cFUm8GrIFw5T6xh/q0DLxU1IczUxWAOP0NnQG7qdMW84RGM3aSw -kh9msi8wiYaHMecvFflz3vsTWEhjY/ocdhIcWfFCpreRo/+fpAUJzpEU4VTiW/Wh -6+E30Mmb/FcW1zWlPk/X+h9MlQKBgQC2uKi5jDTx6olMdTwHD5Xhd3qhx9/VMDqB -YKpezOO0FUpD3spVM/H1P4qTB44U345WtRR4KVKbaCPPh3A3EF6rIkYv0BwTrZe/ -p6qTSq8woKzUrNX1uA9ZPLGGOBj/dDeEV4KC0Jp/hzt+TlujUDxdCLBtskBZS0LN -khAx3mfbQQKBgQCgQ6Cw8EcKJ4VO7/4DTZLib23pDrOkxmsDpAqvYB3Hj1eDj+gH -UAbMTZJEe03qDLeyrCF9KR9rGnsl2bKIfrjCTi/lTkMX8i4wWHc207ZgO8Xqpuaj -9KBXdvoA+NdK9HG/N8VS9SozErLubaVAFlb9DJdOhqEE0895xz08wGgeGQKBgAX/ -Q5JrdqVmBEGdK24z5cBzsnOy4rbVkWYDrTPVV7fmZvyZSFzJiqx4/Gxc+B3ZRIu1 -/8j92jc9kMdT86vq/qBxTIpvMyy2Kt/geenBrsRS0bldPtyEwQQ1yMHV/4QK5XOT -h7YRcLC02JAJtFpE3OZUza2cBx6nKLckjyGD4jbBAoGBANQDkmYFJ4m54rxdaRms -vjORG6ncxxucQbX+A5vgFUUXzRhB0qQre0pmLBJb2TZWyldN5botq9LEWVLS4NLg -y3l0SY1Sl7Ax0ZH+uZVb9E/BSIytkcp6AbcGgIRvAISHO7bGiUORO8BBFkHmxuYG -xbK01G+eU/ZsrBbpjeDrehHY ------END PRIVATE KEY----- diff --git a/certs/test/root.pfx b/certs/test/root.pfx deleted file mode 100644 index 73ed66d188966b4a76a9db70af65b872afd24dda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2377 zcmb_cX*ksF8aJCU82b_>gGfYwyU`g;$(FV3Qe+z%lq``je==nauO(ErNDSHcrSRGd z)seAJWX&-mvb^4LU7fDZb)66A!})Mu&wc;y?RxI#`P~4Bx&Vd101&0gjFO4ckJ>^* zkdSN;bp{TiWEt>D0EA8chYR)&4#N5va2G?`nc043v9m&8*&r;20g{%cW^KX=I$;7Iz(7)WxZHNQL!;N~aY(`j8f{i{tN#)my^HeB$Sd357rjv@z zz35w#LdedfhW2Y>CQ@JCd^J-3=c;UvS7njDT5*<{Td=G9v*9Sa1x#V?oM?xpo+=#Y zLhR4G#pYq7toSOc+T1L9kN7gBRr!3_Qa;U$|EnVk@6F?k_14(h5B-oZ9|53N%rOrO z&kP=nPhY2%7?jqO5z_E>=?>IZD>;3R*NOw9e-&*|FN>A8WY4Vh{iv|F=4!vw{1}Fd z8?L6Do+C9R%o;>5oDU*&>-0U@3~U;O8(Xm(1<|SDlx|BC!oo)=48jD-y9}5EB8(>! z;eZRk`2wtWmBRJ+&dssG$CBTob2`5-&jX@|ZVC7iKp_0T2XGz+@IoL5a0CEj9KVm9 z@pl+whcKxIVU0%vw=1!y5|Q;SmC>BEIa6}l2-Mp!p(oVWWsJ367qfp-bAEBML6Gjr zwt%?|cxV35AjS#I_SUMBx;CwP9np^OLYtraS0o6&9DFJQmX4m1nYThfJMr&L zi=_S!m>%fOGxKhjj>czbELxcASSY8ompHVf>r0$$q~lNcHtT#fcM7<;ypLK;zbBd< zwR>ZdOZt1ISE{y;{jv`WdJb2sa=ERi4Hk7?w>9xgWH3r|b2M2uB3*eh|Aeq(#2gsk zFF;g~1SEbj3dOI$7;yp9UlomOyoFdF(chD)nUYi=U<{;@3 zQjrN_)5DN}m3Y~c5MW>V(RhxbMbWECGSY15Nr8Ko!jCj;t#mkd3 z@;3XmRY;b*N?#wUF|%s7It^MdV{*SKHbICp)}3^nWasIZWWB+2uq^eyi+katd2bmn z=wPZWC4FsD)jvbJ?-F$8$G#|1x6ifYnmT)kN+%adK@7Pjkb;m*pOC6D3kepSSG_g| zPM^h;ikUyp=dce>_+~jrio=Ra1kjuZFO4s0N6~IYIYg(_6nP$%I9qnAP2zleMjR{e zLj?zS&N>8(MZH=^Kel78%3pV457$M}c%V@_eOd^XXUfH2Anm>vaxQmMWZj3&pAE9AJYe)-);ADO z;!vl2YiV0n!+zQr?qaXb@K!X=S<?WOi z#v9x*B14oZ!-XWXJ2kVcx5-pTTPdqn99y`XvZx_GTriXPbi-ga$M#j3enm6+=$-OA`Khhc0^R$-vlWfz^Ly}IUkWqF zfDvbcM}XI7rDI)`^?vj&o-|GuyXp#gCq|=7>gS7yQ)Xhf*QT|+Ew@@HN7r3_ro@|t zn|!tR%l#(SX-3?cVR=lkEv-BF9^~X}(}BUJXtBA89bJ9G_Eco2?uT1dvd2vN7X6#@ zY2GILpB5yLTBrimALno*6SeotFI8Gb(HhXna_|7At63**TbCLn;SLf+?_L)D=+5Wq zeUJM=`zPVlB(uA(LoF)QHJ5{0`KUAY(+KRoFZN`v&w7mCMU_EN+OTc4(k4L>zdncs z*<))K9zl7lGbieckL764bJzZ%&oMShpp2GiS4e+}?hc)*B6L3XTh5xEe9%j5V&P0H R>=>VJaB$Zb&io&j=-;wU26zAf diff --git a/docs/LLSIFAC.postman_collection.json b/docs/LLSIFAC.postman_collection.json deleted file mode 100644 index e5b887e..0000000 --- a/docs/LLSIFAC.postman_collection.json +++ /dev/null @@ -1,740 +0,0 @@ -{ - "info": { - "_postman_id": "acd9bca4-31b7-41d9-9959-0f941c62e903", - "name": "LLSIFAC", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "alive", - "item": [ - { - "name": "Alive.txt", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/alive/303801/Alive.txt", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "alive", - "303801", - "Alive.txt" - ] - } - }, - "response": [ - { - "name": "Alive.txt", - "originalRequest": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/alive/303801/Alive.txt", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "alive", - "303801", - "Alive.txt" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:14:10 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - } - ], - "cookie": [], - "body": null - } - ] - }, - { - "name": "i.php", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/alive/i.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "alive", - "i.php" - ] - } - }, - "response": [ - { - "name": "i.php", - "originalRequest": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/alive/i.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "alive", - "i.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:14:14 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "REMOTE ADDRESS:127.0.0.1\nSERVER NAME:LLSIFAC\nSERVER ADDR:127.0.0.1" - } - ] - } - ] - }, - { - "name": "server", - "item": [ - { - "name": "certify.php", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/certify.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "certify.php" - ] - } - }, - "response": [ - { - "name": "certify.php", - "originalRequest": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/certify.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "certify.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:01:47 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "host=http://127.0.0.1\nno=1337\nname=LLServer\npref=nesys\naddr=Local\nx-next-time=15\nx-img=https://static.wikia.nocookie.net/houkai-star-rail/images/1/18/Character_March_7th_Splash_Art.png\nx-ranking=http://127.0.0.1/ranking/ranking.php\nticket=9251859b560b33b031516d05c2ef3c28" - } - ] - }, - { - "name": "FireAlert.php", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/FireAlert.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "FireAlert.php" - ] - } - }, - "response": [ - { - "name": "FireAlert.php", - "originalRequest": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/FireAlert.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "FireAlert.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:14:21 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "Success" - } - ] - }, - { - "name": "cursel.php", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/cursel.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "cursel.php" - ] - } - }, - "response": [ - { - "name": "cursel.php", - "originalRequest": { - "method": "GET", - "header": [], - "url": { - "raw": "https://127.0.0.1/server/cursel.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "server", - "cursel.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:20:30 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "1\n" - } - ] - } - ] - }, - { - "name": "service", - "item": [ - { - "name": "incom", - "item": [ - { - "name": "incom.php", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/incom/incom.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "incom", - "incom.php" - ] - } - }, - "response": [ - { - "name": "incom.php", - "originalRequest": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/incom/incom.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "incom", - "incom.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 04:19:15 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "1+1" - } - ] - }, - { - "name": "incomALL.php", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/incom/incomALL.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "incom", - "incomALL.php" - ] - } - }, - "response": [ - { - "name": "New Request", - "originalRequest": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/incom/incomALL.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "incom", - "incomALL.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 04:19:38 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "1+1" - } - ] - } - ] - }, - { - "name": "respone", - "item": [ - { - "name": "respone.php", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/respone/respone.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "respone", - "respone.php" - ] - } - }, - "response": [ - { - "name": "respone.php", - "originalRequest": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/respone/respone.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "respone", - "respone.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "Content-Type", - "value": "text/plain; charset=utf-8" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:18:25 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "1" - } - ] - } - ] - }, - { - "name": "card", - "item": [ - { - "name": "incomALL.php", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/card/incomALL.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "card", - "incomALL.php" - ] - } - }, - "response": [ - { - "name": "incomALL.php", - "originalRequest": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/service/card/incomALL.php", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "service", - "card", - "incomALL.php" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "plain", - "header": [ - { - "key": "content-length", - "value": "3" - }, - { - "key": "content-type", - "value": "text/plain" - }, - { - "key": "date", - "value": "Sun, 28 May 2023 15:18:55 GMT" - } - ], - "cookie": [], - "body": "1+1" - } - ] - } - ] - } - ] - }, - { - "name": "game", - "item": [ - { - "name": "info", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/game/info", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "game", - "info" - ] - } - }, - "response": [] - } - ] - }, - { - "name": "basicinfo", - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/basicinfo", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "basicinfo" - ] - } - }, - "response": [ - { - "name": "basicinfo", - "originalRequest": { - "method": "POST", - "header": [], - "url": { - "raw": "https://127.0.0.1/basicinfo", - "protocol": "https", - "host": [ - "127", - "0", - "0", - "1" - ], - "path": [ - "basicinfo" - ] - } - }, - "status": "OK", - "code": 200, - "_postman_previewlanguage": "raw", - "header": [ - { - "key": "Content-Type", - "value": "application/octet-stream" - }, - { - "key": "Date", - "value": "Sat, 27 May 2023 02:24:15 GMT" - }, - { - "key": "Server", - "value": "Kestrel" - }, - { - "key": "Transfer-Encoding", - "value": "chunked" - } - ], - "cookie": [], - "body": "\t�a�:\u0013\\J\u000eM�B��\u0010��\f���J�yc��\u001b�+,)�\\\u0012H��R�;d�ڈ�+\u0002������O�c�����\u001c\\V� ���\u0002\u0001��E�O; - -// Certify -use hex_literal::hex; -use md5::{Digest, Md5}; - -#[post("/basicinfo")] -async fn basicinfo() -> HttpResponse { - println!("/basicinfo\nNot fully implemented!"); - /* - let pem = "-----BEGIN PUBLIC KEY----- - MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy63nybDg2d0l5Em5RTsx - 0QJ4WhuT4DwrzJD/SdPDbOotXE5BiVycfNxcfXVSa74SvqThyQs4KasZyK/NWJN6 - Xyi7NQgh2xKYc3eVj8b8MSkhz5Y7631dscLQRR9sDiTf2+jR8umd6U9op/ZucaOU - zaEcyHalryeeRwD8q7mtlBccL+5dSVVWuPaJ/Oh4Oivk4qNunYHygQ/iw2vBgN3f - 6tB1yiKlUe0T51FS1yJcavWilp2JA6XGEhh0OmFJX6wf5vPu9heTXGqnriClinXn - XV1zUPDaa0udD8n2OV9NphozqD7TT4pE68G65Xz/iLAaEudSg7f1Shu+VFtt/cF4 - NwIDAQAB - -----END PUBLIC KEY-----"; - */ - let mut key_file = File::open("priv.pem").unwrap(); - - let mut key_buffer = Vec::new(); - key_file.read_to_end(&mut key_buffer).unwrap(); - - // Load the private key from the PEM data - let rsa = Rsa::private_key_from_pem(&key_buffer).unwrap(); - - let plaintext = r#" - {'result':200,'response':{'base_url':'http://10.3.0.53/game/info','download_url':'http://10.3.0.53/download','key':'01234567890123456789012345678901','iv':'0123456789012345','tenpo_index':1337}} - "#; - let mut ciphertext = vec![0; rsa.size() as usize]; - rsa.public_encrypt(plaintext.as_bytes(), &mut ciphertext, Padding::PKCS1).unwrap(); - - println!("{:?}", String::from_utf8_lossy(&ciphertext)); - - //let mut rng = rand::thread_rng(); - //let pub_key = RsaPublicKey::from_public_key_pem(pem).unwrap(); - //let ciphertext = pub_key.encrypt(&mut rng, Pkcs1v15Encrypt, &plaintext.as_bytes()).expect("failed to encrypt"); - HttpResponse::Ok().append_header(ContentType::octet_stream()).body(ciphertext) -} - -#[macro_export] -macro_rules! resp { - ($str:expr) => { - //HttpResponse::Ok().append_header(ContentType(mime::TEXT_HTML)).body($str) - HttpResponse::Ok().append_header(ContentType::octet_stream()).body($str) - }; -} - -#[get("/alive/{id}/Alive.txt")] -async fn alive(id: web::Path, req: actix_web::HttpRequest) -> HttpResponse { - println!("/alive/{}/Alive.txt", id); - resp!("") -} - -#[get("/alive/i.php")] -async fn alive_i() -> HttpResponse { - println!("/alive/i.php"); - resp!("REMOTE ADDRESS:10.3.0.53\nSERVER NAME:LLSIFAC\nSERVER ADDR:10.3.0.53") -} - -#[post("/service/card/incomALL.php")] -async fn incomALL() -> HttpResponse { - println!("/service/card/incomALL.php"); - resp!("1+1") -} - -#[post("/service/respone/respone.php")] -async fn respone() -> HttpResponse { - println!("____________________________"); - println!("/service/respone/respone.php"); - resp!("1") -} - -#[get("/server/FireAlert.php")] -async fn fire_alert() -> HttpResponse { - println!("/server/FireAlert.php"); - resp!("OK") -} - -#[get("/server/cursel.php")] -async fn cursel() -> HttpResponse { - println!("/server/cursel.php"); - resp!("1\n") -} - -#[get("/server/gameinfo.php")] -async fn gameinfo() -> HttpResponse { - println!("/server/gameinfo.php"); - resp!("0\n3\n301000,test1\n302000,test2\n303000,test3\n") -} -#[post("/game/info")] -async fn game_info() -> HttpResponse { - // JSON type that is AES encrypted - let plaintext = r#"{"result":200,"response":{"base_url":"http://10.3.0.53/game/next","information":[],"event_information":[],"encore_expiration_date":"2033-05-27"}}"#; - - // Crypto constants - let key: &[u8] = "0123456789012345".as_bytes(); - let iv: &[u8] = "0123456789012345".as_bytes(); - - // Encrypt - let mut ciphertext = plaintext.as_bytes().to_vec(); - Aes128CfbEnc::new(key.into(), iv.into()).encrypt(&mut ciphertext); - - //println!("{:?}", String::from_utf8_lossy(&ciphertext)); - println!("/game/info"); - HttpResponse::Ok().append_header(ContentType::octet_stream()).body(ciphertext) -} - -#[derive(Serialize, Deserialize, Debug)] -pub struct Certify { - pub gid: u32, - pub mac: String, - pub r: u32, - pub md: String, - pub cn: String, -} - -#[get("/server/certify.php")] -async fn certify(data: web::Query, req: HttpRequest) -> HttpResponse { - println!("/server/certify.php"); - dbg!(&data); - let mut hasher = Md5::new(); - let gid_bytes = "303801".as_bytes(); // LL game nesys id - hasher.update(gid_bytes); - let hash_result = hasher.finalize(); - let mut ticket = String::new(); - for byte in hash_result { - ticket.push_str(&format!("{:x?}", &byte)); - } - let res = format!( - "host=http://10.3.0.53 -no=1337 -name=LLServer -pref=nesys -addr=Local -x-next-time=15 -x-img=http://10.3.0.53/test.png -x-ranking=http://10.3.0.53/ranking/ranking.php -ticket=9251859b560b33b031516d05c2ef3c28" - ); - println!("Response:\n{}", &res); - resp!(res) -} - -#[get("/server/data.php")] -async fn server_data() -> HttpResponse { - resp!("count=0\nnexttime=0\n") -} - -async fn index(req: actix_web::HttpRequest) -> HttpResponse { - println!("---"); - println!("Method: {:?}", req.method()); - println!("Host: {:?}", req.head().uri.host()); - println!("Path: {:?}", req.path()); - //dbg!(&req); - HttpResponse::Ok().append_header(ContentType(mime::TEXT_PLAIN)).body("shit") -} - -fn load_rustls_config() -> rustls::ServerConfig { - // init server config builder with safe defaults - let config = ServerConfig::builder().with_safe_defaults().with_no_client_auth(); - - // load TLS key/cert files - let cert_file = &mut BufReader::new(File::open("./certs/test/nesica1.crt").expect("Certificate not found!")); - let key_file = &mut BufReader::new(File::open("./certs/test/nesica1.key").expect("Key not found!")); - - // convert files to key/cert objects - let cert_chain = certs(cert_file).unwrap().into_iter().map(Certificate).collect(); - let mut keys: Vec = pkcs8_private_keys(key_file).unwrap().into_iter().map(PrivateKey).collect(); - - // exit if no keys could be parsed - if keys.is_empty() { - eprintln!("Could not locate PKCS 8 private keys."); - std::process::exit(1); - } - - config.with_single_cert(cert_chain, keys.remove(0)).unwrap() -} - -#[actix_web::main] -async fn main() -> std::io::Result<()> { - //env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); - let config = load_rustls_config(); - info!("Certificates loaded."); - println!("Started!"); - HttpServer::new(|| { - App::new() - .service(alive) - .service(alive_i) - .service(incomALL) - .service(respone) - .service(fire_alert) - .service(cursel) - .service(gameinfo) - .service(game_info) - .service(certify) - .service(server_data) - .service(basicinfo) - .route("{path:.*}", web::get().to(index)) - }) - .bind("0.0.0.0:80")? - .bind("0.0.0.0:5107")? - .bind_rustls("0.0.0.0:443", config)? - .run() - .await -} diff --git a/utils/install.bat b/utils/install.bat deleted file mode 100755 index 647b9a8..0000000 --- a/utils/install.bat +++ /dev/null @@ -1,9 +0,0 @@ -echo "Run as admin!" -pause -certutil.exe -addstore root C:\Users\aoeu\Downloads\certtest\root.crt - -certutil.exe -addstore root C:\Users\aoeu\Downloads\certtest\nesys.crt - -certutil.exe -addstore root C:\Users\aoeu\Downloads\certtest\nesica1.crt - -pause \ No newline at end of file diff --git a/utils/nesys.bat b/utils/nesys.bat deleted file mode 100755 index fbf64cc..0000000 --- a/utils/nesys.bat +++ /dev/null @@ -1 +0,0 @@ -sc.exe create nesys BinPath="D:\system\Service\NesysService.exe" \ No newline at end of file diff --git a/utils/reg.reg b/utils/reg.reg deleted file mode 100755 index bb26dc606a968c1c235765231bcfa5fa69b15417..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3778 zcmeHJYcB&)5IvtI{)6lf5LyI@53Hi0C0a_XNOg-%YDpi;pU0WGJL*w=#3K=#O?&t5 z-I+Oa?zuDj^jJZJ7$I)ZMGI5dM;(`Z)rJjkoX4EcV;VEO zCNZJE6Kr9dHpe)_4tC*VmE#!-9DT0kQRHfX64y3RMupG!^+}m`c|O_2se1CTt~jbV zM}tv!7_o*b?@Nl|PX9fu5MNi(g;-WBg2!F6--;_x>?NX-tnP^@f}k+G!d;6<8t9NO z$IvMFJZ4lQt94#+!m!x8YzKRA%zI=|ki?8zAcBzhInIo`(R}!{6gBvY#qIiFOUJK= z1LiHdke!jesu9Qd@i&S0n%0iT4n4K;KK=z>Utyw@JXMop{HE%_@_27+s<2Ts>rr!W zZDk)u$=#Sgz%Ade5^J6L%m3{M)E3c37g-d2Nfp&~?;1m_vPrIGW?5AhL?M!ENB4bj zwwc6Q-k0+(C)z2r%u!hX+YIxEuVo?eFAXR(O6#NOq+r+i&$OgZPvtOx-$ z^uV7mc&&4vW5_BIsix$OhBD?Qz660(tClwH%{!#PcNr&J-MBeQ)j+R!`nnH zJojgHjz}_C!;)qq%zj7R47eA^WFv>8mztESbC|mSlRC%mP*&yA4kf+9PWPY=Wi{T$ z{$0j(+WytSERFlGb|^#rdo`)To?5{ItA3VsuE?q_UnEkW>>DqwRlTm0cG7_Au