2
0
mirror of https://github.com/softScheck/tplink-smartplug synced 2026-01-11 23:38:46 +01:00

Refactored code for py3 while keeping py2 support (not using future)

This commit is contained in:
Samuel Tseng
2020-02-19 23:56:55 -08:00
parent 395c352100
commit 2ab78544ae

View File

@@ -19,6 +19,7 @@
# limitations under the License. # limitations under the License.
# #
import sys
import socket import socket
import argparse import argparse
from struct import pack from struct import pack
@@ -51,6 +52,26 @@ commands = {'info' : '{"system":{"get_sysinfo":{}}}',
# Encryption and Decryption of TP-Link Smart Home Protocol # Encryption and Decryption of TP-Link Smart Home Protocol
# XOR Autokey Cipher with starting key = 171 # XOR Autokey Cipher with starting key = 171
if sys.version_info[0] > 2:
def encrypt(string):
key = 171
result = pack('>I', len(string))
for i in string:
a = key ^ ord(i)
key = a
result += bytes([a])
return result
def decrypt(string):
key = 171
result = ""
for i in string:
a = key ^ i
key = i
result += chr(a)
return result
else:
def encrypt(string): def encrypt(string):
key = 171 key = 171
result = pack('>I', len(string)) result = pack('>I', len(string))
@@ -96,8 +117,7 @@ try:
data = sock_tcp.recv(2048) data = sock_tcp.recv(2048)
sock_tcp.close() sock_tcp.close()
print "Sent: ", cmd print("Sent: ", cmd)
print "Received: ", decrypt(data[4:]) print("Received: ", decrypt(data[4:]))
except socket.error: except socket.error:
quit("Cound not connect to host " + ip + ":" + str(port)) quit("Cound not connect to host " + ip + ":" + str(port))