рдЖрдИрдУрдПрд╕ рдРрдк рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдкрд┐рдирд┐рдВрдЧ рдмрд╛рдИрдкрд╛рд╕



рдирдорд╕реНрддреЗ, рдореЗрд░рд╛ рдирд╛рдо рдПрдВрдбреНрд░реА рдмрддреБрдЯрд┐рди рд╣реИ, рдореИрдВ рдбреЗрдЯрд╛рдЖрд░реНрдЯ рдореЗрдВ рд╡рд░рд┐рд╖реНрда рдЖрдИрдУрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдмрд╛рдд рдХреА рдХрд┐ рдЖрдк HTTPS рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдХреИрд╕реЗ рд╕реВрдБрдШ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрд╕рдПрд╕рдПрд▓ рдкрд┐рдирд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрдврд╝ рдкрд╛рдпрд╛ рд╣реВрдВ, рддреЛ рдмрд╕ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ: рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрдЧреАред

рджрд░рдЕрд╕рд▓, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ SSL рдкрд┐рдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрд┐рд╕реА рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдмреБрд░реЗ рд▓реЛрдЧреЛрдВ рдпрд╛ рдЙрддреНрд╕реБрдХ рдорд╣рд╛рд░рд╛рдЬ рддрдХ рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рди рд╣реЛред

SSL рдкрд┐рдирд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЪрд╛рд░реНрд▓реНрд╕ рд░реВрдЯ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ, рд╣рдореЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рджрд┐рдЦрд╛рдиреЗ, рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдФрд░ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдкрд░ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдпрджрд┐ рдореИрдВ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдХреЛрдИ рдирд╣реАрдВ, рднрд▓реЗ рд╣реА рдЗрд╕ рджреВрд╕рд░реЗ рдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реЛ, рдореИрдВ рдПрд╕рдПрд╕рдПрд▓ рдкрд┐рдирд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдмрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдПрд╕рдПрд▓ рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рджреМрд░рд╛рди , рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдЖрд▓реЗрдЦ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╢реНрд╡реЗрддрд╕реВрдЪреА) рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рдЕрдзрд┐рдХреГрдд рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдПрд╕рдПрд╕рдПрд▓ рдкрд┐рдирд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред

SSL рдкрд┐рдирд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред

FoodSniffer рдореЗрдВ SSL рдкрд┐рдирд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рджреЛ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдбреАрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджреЛ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • www.dropbox.com ;
  • uc9b17f7c7fce374f5e5efd0a422.dl.dropboxusercontent.comред

рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рд╣рдорд╛рд░реА рдЦрд░реАрдж рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╣реА JSON рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред

рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ dropbox.com рдЦреЛрд▓реЗрдВред

рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ рд▓реЙрдХ рд╕рд┐рдВрдмрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред





рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдЪреБрдиреЗрдВ -> рдкреНрд░рдорд╛рдгрдкрддреНрд░ рджреЗрдЦреЗрдВред



рдлрд┐рд░ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдЕрдВрддрд┐рдо рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдвреВрдВрдвреЗрдВред



рдирд┐рд░реНрдпрд╛рдд рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдбреАрдИрдЖрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред



Uc9b17f7c7fce374f5e5efd0a422.dl.dropboxusercontent.com рдХреЗ рд▓рд┐рдП рдпрд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрд╣рд░рд╛рдПрдВред

рдЯрд┐рдкреНрдкрдгреА
рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡рд░ (* .dl.dropboxusercontent.com) рдПрдХ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ uc9b17f7c7f7374f5e5efd0a422 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ * .dl.dropboxusercontent.com рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред

рдирддреАрдЬрддрди, рдореБрдЭреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓реАрдВ:

dropboxcom.crt ,
dldropboxusercontentcom.crt ,

рдЬреЛ рдореИрдВрдиреЗ FoodSniffer iOS рдРрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ред



рдлрд┐рд░ рдореИрдВрдиреЗ FoodListAPIConsumer рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рдЬреЛрдбрд╝рд╛, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдЕрдиреБрдордд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рдЬреЛ NSURLSessionDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЪреИрд▓реЗрдВрдЬ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ:

extension FoodListAPIConsumer { func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { guard let trust = challenge.protectionSpace.serverTrust else { completionHandler(.cancelAuthenticationChallenge, nil) return } let credential = URLCredential(trust: trust) if (validateTrustCertificateList(trust)) { completionHandler(.useCredential, credential) } else { completionHandler(.cancelAuthenticationChallenge, nil) } } func validateTrustCertificateList(_ trust:SecTrust) -> Bool{ for index in 0..<SecTrustGetCertificateCount(trust) { if let certificate = SecTrustGetCertificateAtIndex(trust, index){ let serverCertificateData = SecCertificateCopyData(certificate) as Data if ( certificates.contains(serverCertificateData) ){ return true } } } return false } } 

рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╕рд░рдгреА рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдЕрдиреБрдордд рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред

рдЕрдм, рдЬрдм рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░реЛрдХреНрд╕реА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрдиреБрдорддрд┐ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



рд╣реИрдХрд░реНрд╕ рдХреА рд╣рд╛рд░!

рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рдЫреЛрдЯреА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдореИрдВ, рдбреЗрд╡рд▓рдкрд░, рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ HTTPS рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдлреНрд░реАрдбрд╛


рдПрдХ рд╡рд┐рдХрд▓реНрдк рдлреНрд░рд┐рдбрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде SSL рдкрд┐рдирд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реИрджреНрдпреБрддрдХреНрд░реАрдбрд╝рд╛рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдЖрд╡реЗрджрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╕рд╣реА рд╣реЛрддреА рд╣реИред

рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧрддрд┐рд╢реАрд▓ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ SSL рдкрд┐рдирд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #if targetEnvironment (рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░) рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдлреНрд░рд┐рдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЪрддреБрд░рд╛рдИ рд╕реЗ, рд╕рд╣реА?) рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдХреЗ рд╕рд╛рде validateTrustCertificateList рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реЛрддрд╛ рд╣реИред
рдФрд░ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдЪрд░рдг рдореЗрдВ рдЖрд╡реЗрджрди рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдлреНрд░реАрдбрд╛ рдЖрдИрдУрдПрд╕ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдлреНрд░рд┐рдбрд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди ( рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ )ред



sudo pip рд╕реНрдерд╛рдкрд┐рдд рдлреНрд░рд┐рдбрд╛-рдЯреВрд▓реНрд╕

рдлреНрд░рд┐рдбрд╛ рд▓рд┐рдкрд┐


рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдХреНрд╖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:

 // Are we debugging it? DEBUG = true; function main() { // 1 var ValidateTrustCertificateList_prt = Module.findExportByName(null, "_T016FoodSnifferFrida0A15ListAPIConsumerC024validateTrustCertificateD0SbSo03SecG0CF"); if (ValidateTrustCertificateList_prt == null) { console.log("[!] FoodSniffer!validateTrustCertificateList(...) not found!"); return; } // 2 var ValidateTrustCertificateList = new NativeFunction(ValidateTrustCertificateList_prt, "int", ["pointer"]); // 3 Interceptor.replace(ValidateTrustCertificateList_prt, new NativeCallback(function(trust) { if (DEBUG) console.log("[*] ValidateTrustCertificateList(...) hit!"); return 1; }, "int", ["pointer"])); console.log("[*] ValidateTrustCertificateList(...) hooked. SSL pinnig is disabled."); } // Run the script main(); 

  1. рд╣рдо рд╕реВрдЪрдХ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреВрд░реНрдг рдирд╛рдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ ред
  2. рд╣рдо рд╕реВрдЪрдХ рдХреЛ рдПрдХ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдЖрд╡рд░рдг рдореЗрдВ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
  3. рдорд╛рдиреНрдпрдЯреЗреНрд░рд╕реНрдЯрдЯреНрд░реИрдХреНрд╢рди рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдПрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ 1 (рдпрд╛рдиреА рд╕рд╣реА) рд░рд┐рдЯрд░реНрди рдХрд░рддрд╛ рд╣реИред

рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ {source_root} /fridascrpts/killCertPinnig.js рдореЗрдВ рд╣реИ ред

рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдХреИрд╕реЗ рд╣реИ _T016FoodSnifferFrida0A15ListAPIConsumerC024validateTrustCertificateD0SbSo03SecG3CF

рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

  • рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдХреНрд╖реНрдп FoodSnifferFrida рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред
  • рдореИрдВрдиреЗ рдлреНрд░рд┐рдбреЗрдЧреИрдбрдЧреЗрдЯ.рдбрд╛рдпрд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЗрд╕рд╕реЗ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдореИрдВ рдпрд╣рд╛рдБ рд▓реЗ рдЧрдпрд╛ред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдиреЗрдХреНрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  • рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ FoodSniffer рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред
  • рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
    рдлреНрд░рд┐рдЬ-рдЯреНрд░реЗрд╕ -R -f re.frida.Gadget -i "* validateTrust *"
  • рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ KillCertPinnig.js рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдРрд╕рд╛ "рдЕрдЬреАрдм" рдирд╛рдо рдЖрдЦрд┐рд░ рдореЗрдВ рдХреНрдпреЛрдВ рдЖрдпрд╛ рдФрд░ рдЗрди рд╕рднреА T016 рдФрд░ 0A15 рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдПрд╕рдПрд╕рдПрд▓ рдХрд┐рд▓рд┐рдВрдЧ рдкрд┐рдирд┐рдВрдЧ


рдЕрдм рдЕрдВрдд рдореЗрдВ SSL Pinnig рдЕрдХреНрд╖рдо рдХреЗ рд╕рд╛рде FoodSniffer рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ!

рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░реЛрдХреНрд╕реА рд▓реЙрдиреНрдЪред

рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ Xcode рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рдХреНрд╖реНрдп FoodSnifferFrida рдЪрд▓рд╛рдПрдВред рд╣рдореЗрдВ рдмрд╕ рдПрдХ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдПред рдЖрд╡реЗрджрди рдЗрд╕рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реАрдбрд╛ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред


рд╣рддреНрдпрд╛рд░реЗ рдХреЛ рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░рд╛рдЗрдбрд╛ рдЪрд▓рд╛рдПрдВ редPinnig.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
frida -R -f re.frida.Gadget -l/fridascrpts/killCertPinnig.js

рдЖрдЗрдП iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ:



% рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬрд╛рд░реА рд░рдЦреЗрдВ:



рдЕрдм рд╣рдореЗрдВ рдЖрд╡реЗрджрди рдореЗрдВ рднреЛрдЬрди рдХреА рд╕реВрдЪреА рджреЗрдЦрдиреА рдЪрд╛рд╣рд┐рдП:



рдФрд░ рдЪрд╛рд░реНрд▓реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ JSON:



рд▓рд╛рдн!

рдирд┐рд╖реНрдХрд░реНрд╖


рдлреНрд░рд┐рдбрд╛ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбрд╢рд╛рд░реНрдХ рдХреА рддрд░рд╣ рд╣реИред рдпрд╣ iOS, рдПрдВрдбреНрд░реЙрдЗрдб, рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдврд╛рдВрдЪрд╛ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЛрдиреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХреЙрд▓ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ, рд░рд┐рдЯрд░реНрди рдорд╛рди рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рднреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдлреНрд░рд┐рдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдПрд╕рдПрд╕рдПрд▓ рдкрд┐рдирд┐рдВрдЧ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдореБрдЭреЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд░реНрдХ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рддрд░реНрдХ рдХреЛрдб рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдореИрдХреНрд░реЛрд╕, рд╣реЗрд▓реНрд▓реЛ рдЯреВ рдпреВ!)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреНрд░реАрдбрд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реИред рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреА рдкреВрд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдЙрддреНрдкрд╛рдж рд▓рд╛рдЗрди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдПрдХ рд╕реБрдЪрд╛рд░реВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдлреНрд░рд┐рдбрд╛ рдЦреБрдж рдХреЛ рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдкреНрд░реЛрд╕реЗрд╕ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрд╢рди рдЯреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛, рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдЬрдЯрд┐рд▓ рдФрд░ рджреБрд░реНрд▓рдн рдмрдЧ рдХреЛ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi424485/


All Articles