From de0deb29c386d39b0df0fa4faf702ad6533dde58 Mon Sep 17 00:00:00 2001 From: seres Date: Tue, 7 Jan 2025 10:05:11 +0100 Subject: [PATCH 1/4] changed apple-private-apis to get pulled from OpenBubbles/apple-private-apis --- Cargo.toml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 415a670..db7c909 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,14 +30,16 @@ pretty_env_logger = "0.5.0" async-trait = "0.1.73" flume = "0.11.0" open-absinthe = { path = "/home/tae/Documents/open-absinthe", optional = true, features = ["serde"] } -icloud_auth = { path = "/home/tae/Documents/GitHub/apple-private-apis/icloud-auth" } -omnisette = { path = "/home/tae/Documents/GitHub/apple-private-apis/omnisette" } +omnisette = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } +icloud_auth = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } +apple-dev-apis = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } +apple-codesign-wrapper = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } deku = "0.16.0" zip = { version = "2.1.5", default-features = false, features = ["deflate-zlib"] } rasn = "0.16.0" backon = "0.4.4" futures = "0.3.30" -serde_json = "1.0.133" +serde_json = "1.0.128" [features] default = ["macOS"] @@ -54,3 +56,9 @@ path = "src/test.rs" [lib] name = "rustpush" path = "src/lib.rs" + +[patch."https://github.com/OpenBubbles/apple-private-apis"] +omnisette = { path = "../apple-private-apis/omnisette"} +icloud_auth = { path = "../apple-private-apis/icloud-auth"} +apple-dev-apis = { path = "../apple-private-apis/apple-dev-apis"} +apple-codesign-wrapper = { path = "../apple-private-apis/apple-codesign-wrapper"} From d0da93cfb13fabb6de789b64abc335b17e578be1 Mon Sep 17 00:00:00 2001 From: seres Date: Thu, 9 Jan 2025 14:26:51 +0100 Subject: [PATCH 2/4] added 'dummy-fairplay' feature that enables a dummy fairplay cert to be used instead of real ones --- Cargo.toml | 1 + certs/dummy_fairplay.crt | Bin 0 -> 3866 bytes certs/dummy_fairplay.pem | 3 +++ src/activation.rs | 7 +++++++ 4 files changed, 11 insertions(+) create mode 100644 certs/dummy_fairplay.crt create mode 100644 certs/dummy_fairplay.pem diff --git a/Cargo.toml b/Cargo.toml index db7c909..0bf9623 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,7 @@ serde_json = "1.0.128" [features] default = ["macOS"] macOS = ["dep:open-absinthe"] +dummy-fairplay = [] [build-dependencies] diff --git a/certs/dummy_fairplay.crt b/certs/dummy_fairplay.crt new file mode 100644 index 0000000000000000000000000000000000000000..ec3853db2d3b80e8639a44948065fa5c298476ca GIT binary patch literal 3866 zcmc(ic~sNK7RSlP4iN(ZL?FnbtodbwNJVAe5s@I95ljL^Fo`4(!HtB)A_~=FQL)I@ zLKQ^z9YK8s#R{m13#C=DD4U1~f++9z1L{GKw&$JmUf&EZpnD-9k-lT~Q{WASq*%*V(2$ZCIBg3711Ld; zEJoIv$BSU$oH-0Lf(n3vI^{6(3!QAwFfNBh&;~T2ZUhFqv>Ru~ie@udI9qE#OI3kL zAOHjcfl9U@5&S`uyu<`V@dQ)Ac-{wAk6;eiksPcErnVM#6jQPTm10UIlc}b*6kBVO zEfsV^p?tj8#f?j2;I`I;<-jt?krYP8Hj2lJ6tFqm&mRU2MqvIhk_*QGL}!=A1cs78 zh>l7CqGY&8BvFk#*S;>!pR*$TZ9+*cY#?HrNm;&=?S;ASir?Us98daBldXZ58Wm

UHe8i7|}U>)$mVe-)QV`+gss7?w4x=G*7g zNckfOU!wdk-V;ja_CXgrx5yxszwBOtTdH9G-_TS^0}_BDWT7DoiGZWB0UTuOLpByrmXtP@1l1vhfPHAe!T8F~3x~m! zl!YVVpmsi%5(11@5p05RQLC*WWOVjBkNnn#7tIH@-JUtOb$gBW2Bd~S{u@L-vHrM& z(>|M%_A|GGH#9W%D&)%xMNYK*x#-Bby2nyeyo^5V=vZOvJER`*0G^rA)EVvVI(s~@ z^VSWiV3qwdm2ea@J3U0-t#>=T4JMspFgD^@l3uWCrFLBp6%ZrXpzJp<$Q}m!WQ#z| z#|rwa+6@3bFczTNH5X)U3#loD%?K8-xg4Bzlpu^7$ri+XkS<2=Bl&+}I0OS=0gwsi zL?VSuHV0uKke8VMQxN}3;xE%(t_{}ts|6Le=eoOlc&oEj{iH(LGoFQ~EJ|1s zfc_v^6o3G=xkTchC15Ec17st!RefuN!Yk5m3gd(EgzSA3fC@R(MiKx#V47{5ZJ4w= zOd#M{;_*VE&@33b@yr<9UHJJHBN)%-K^L7FBQoL>AtA&tn1pa!M`)~@k8!@Yu+h(H zo!0ZF&a{bdB1=+NstCvBo7r2hd0a_!z($)_ZJ!-XtE~E6wsxdTHd8owetB)64oyAP zQP)wav`gU{>1~E`ZZg?7js1hwK=2;J_uuAEx7$Sboolvw0yCCm4l%m z!3&4n_@wKXhTNJ%)K>)j&4heI@1pfo9rd3xZD>!Te>DHK`eAtreLBZ~Lw$BMyeuw& zKKgvOluqZ3wWGb<{m)~(EZwYP0^+3$^w6BMYcA0GW;)mDfv`b2=HVi2s-MIN*zsS4 z4Z4)(bB)3RY+hWhU@^taQ$-|LkV!-;lwyb=RezfQPvFI{RZAlRB^EIZEdhvOvT#T~ zd0I_lj?EQW%K{woYjkQhCF$_i*aro!ywWDiWPJU0mOc8$d-i!iwWJ3Ue1!BJ`#M{XnOeO5A?h2A*S3>>9m?`PY0P^_5P<9 z(|6TRojQ5-S*EqeotLa98eXxz&k*-Hnh%!IlJX6Go#h7|dsN7z$>wZ37haP|r4e9p z#7t$Vt3M)xO7khD82b*|JAHmRbWQ=*+>bMatKbM{=qTg?Uvac+|AT4^L;QpD%BbOKLs4 z2>uyBbm~6=|Fc{#1>d-n?U)`d^L`@ysM*FJrySi6O49-J1@J-a0TBD_)k*q)34SCf zuP5>a5sQ{!}L2CUTtJ+Z|3>0-k&9 zSd(CDZ^`MiIkNkKCJCb(I(|d%oQpV7>d#KcBD#_$2PQ8nx;oF~Ra@8fbUpFO*&lyC zUPa)NQVcXM`|b%VFofOj!Q;+9Kmeaqnzk#y>qgY2c% zKQ{GtthJ2esp}H+!b7%YxfeP*m+iH$+)OGEgvxkSMR1*_OlnCeyKws^fh)Hx=~%^j z{Wbbo<(D@n&2D;H^3}O|I}@1mV?jB2#_omkWuhs0Dq>o{*9;1?Ss~ZC#Sovhn&$1SL)2G z@7FN8qJ1JORzBY`CEyO$g4BK$?S504-E~bp^7S^w?t|Mi$Mq3)v^4i^3NM)yT@_aq zKh5&=smU{09iDY9zMi3J(iOO=_97D;mshm`1{|rj?LdET^~%_J&5E}7H!Euu@6%V_ zZMUklES^9sN*tFf)xnwxy4NW@+<`rxxBIx`7FtUQ-n#tF+b6tV{>XE)KcMXv?)jZ{ z@>RhOxn=Rzhe(G-rGW3SKazMPtUOJ#kHw!0rL!8G??s;_DYJ5f>DNpb_!h%r!5c67 z6T&6`Dz$$W;J+nY41-=SnmD8wCJnBL1V4$zrw)UOf&rp&!069v77oK|LHzT-nE3(G zl@EjAfT(JPsN9Pc!4BqtFB`B56oj$)IL3#rhBSKj%4<}5@wD^ z-x30wTC@}66E#j*Ia-YWl({k0X6bo45D6cV`{Q q@v7En{MJTqxlt=xv&#JpozdnRr|Nm`aQB1$*-jZLi;GcFI{yYRJX1RW literal 0 HcmV?d00001 diff --git a/certs/dummy_fairplay.pem b/certs/dummy_fairplay.pem new file mode 100644 index 0000000..00611ab --- /dev/null +++ b/certs/dummy_fairplay.pem @@ -0,0 +1,3 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3BKrLPIBabhpr+4SvuQHnbF0ssqRIQ67/1bTfArVuUF6p9sdcv70N+r8yFxesDmpTmKitLP06szKNAO1k5JVk9/P1ejz08BMe9eAb4juAhVWdfAIyaJ7sGFjeSL015mAvrxTFcOM10F/qSlARBiccxHjPXtuWVr0fLGrhM+/AMQIDAQABAoGACGW3bHHPNdb9cVzt/p4Pf03SjJ15ujMY0XY9wUm/h1s6rLO8+/10MDMEGMlEdcmHiWRkwOVijRHxzNRxEAMI87AruofhjddbNVLt6ppW2nLCK7cEDQJFahTW9GQFzpVRQXXfxr4cs1X3kutlB6uY2VGltxQFYsj5djv7D+A72A0CQQDZj1RGdxbeOo4XzxfA6n42GpZavTlM3QzGFoBJgCqqVu1JQOzooAMRT+NPfgoE8+usIVVB4Io0bCUTWLpkEytTAkEA11rzIpGIhFkPtNc/33fvBFgwUbsjTs1V5G6z5ly/XnG9ENfLblgEobLmSmz3irvBRWADiwUx5zY6FN/Dmti56wJAdiScakufcnyvzwQZ7Rwp/61+erYJGNFtb2Cmt8NO6AOehcopHMZQBCWy1ecm/7uJ/oZ3avfJdWBI3fGv/kpemwJAGMXyoDBjpu3j26bDRz6xtSs767r+VctTLSL6+O4EaaXl3PEmCrx/U+aTjU45r7Dni8Z+wdhIJFPdnJcdFkwGHwJAPQ+wVqRjc4h3Hwu8I6llk9whpK9O70FLo1FMVdaytElMyqzQ2/05fMb7F6yaWhu+Q2GGXvdlURiA3tY0CsfM0w== +-----END RSA PRIVATE KEY----- diff --git a/src/activation.rs b/src/activation.rs index 39b7d18..ad85e0b 100644 --- a/src/activation.rs +++ b/src/activation.rs @@ -38,6 +38,7 @@ macro_rules! include_cert { }; } +#[cfg(not(feature = "dummy-fairplay"))] const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[ include_cert!("4056631661436364584235346952193"), include_cert!("4056631661436364584235346952194"), @@ -51,6 +52,12 @@ const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[ include_cert!("4056631661436364584235346952208"), ]; +#[cfg(feature = "dummy-fairplay")] +const FAIRPLAY_KEYS: &[(&'static [u8], &'static [u8])] = &[( + include_bytes!("../certs/dummy_fairplay.crt"), + include_bytes!("../certs/dummy_fairplay.pem"), +)]; + fn fairplay_sign(data: &[u8]) -> Result<(&'static [u8], Vec), PushError> { let (cert, key) = FAIRPLAY_KEYS.choose(&mut thread_rng()).expect("no keys!"); From d1fd43fa2b77ac3ee5c581312fd468812c0b9159 Mon Sep 17 00:00:00 2001 From: seres Date: Thu, 9 Jan 2025 14:32:00 +0100 Subject: [PATCH 3/4] pushed wrong cert --- certs/dummy_fairplay.pem | Bin 875 -> 607 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/certs/dummy_fairplay.pem b/certs/dummy_fairplay.pem index 00611abf69839097585793a3763ecc262dc30184..a1ba622279b9b1a452ab2c2e84962670be55d0d2 100644 GIT binary patch literal 607 zcmV-l0-*gcf&yCt0RRGlfdIDzs>?ipT5cL^`-HE#0q1O8EV86XL$3eTwBG`?ZctvS z_Qzbmy$$-mG8Y%D4r)`FsI4shIO;2YvQfQ40^d;&6P zp6nP{-blSQ=3pC97Cmh6h&tBV>R=poAYT+~Qz%c>?0RRC4fq)2Q zw`_6GHP-!cTtzS4nAuUKw-g0p$oY0V`w!qd*bM?f0NIaJMt2t8I*u357r^R%HX4>%y*W(X48|6K zNq{P#QMFLEwrsY$X#|x?~e8QvyK%*IM%;k%)v@546`m z-*@i>STIq$BTmg#^bzn%{@vr_$UYi0y7{&6SFk`0ec`$RI%Kh$0F^hOhV8wYS}w?e_co2SG-v`Q>`x z%XZZO`103He*6{RzYJ9s!%YmaZIOV&nCIdp=3s;CHub)@_2F&YKA=vSGBK;c=VH>yx+&M$YFTq3Z>d zL6{XlJz|ZU5Ug`gCrG9P>$v+cwG5Jg_{VF3D^zK^E43ZXOBjqqp`)=hFdP_;Dgg%w zphrMNA(beKZDt9d2Iq_qv|SLCS8F7*)W(B|9{hIi@RFR^QMaxbP7;P>$jE5rEbWvk zbeqizs@hfd({y(k80wV+VVV| zHuh|$I7Jn!0AJfZnQDI`0|v1t(;j&AM!akmdeXk+KG8d`JE>}11vdmzwcU5-e6Y~O zrEabmcGEysd1>4%MfyJ0b90`YyA3!?V)^*ckO}AHB6joDv{+!}W!evl@pJ?+Jjgul zaBk7?{z=7ap=F_`ffYjaZP*zV7KPX3=sS zM=fQ`ojC6J9gF??PBSAXy{qdJ+p<#Cpq;(7G=t5Cl%KBcU|aBU>y$1jWm~Q)+qMnA zmBWp Date: Thu, 9 Jan 2025 14:45:23 +0100 Subject: [PATCH 4/4] removed unnecessary dep --- Cargo.toml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0bf9623..f8edab6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,14 +32,12 @@ flume = "0.11.0" open-absinthe = { path = "/home/tae/Documents/open-absinthe", optional = true, features = ["serde"] } omnisette = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } icloud_auth = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } -apple-dev-apis = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } -apple-codesign-wrapper = { git = "https://github.com/OpenBubbles/apple-private-apis", branch = "master" } deku = "0.16.0" zip = { version = "2.1.5", default-features = false, features = ["deflate-zlib"] } rasn = "0.16.0" backon = "0.4.4" futures = "0.3.30" -serde_json = "1.0.128" +serde_json = "1.0.133" [features] default = ["macOS"] @@ -61,5 +59,3 @@ path = "src/lib.rs" [patch."https://github.com/OpenBubbles/apple-private-apis"] omnisette = { path = "../apple-private-apis/omnisette"} icloud_auth = { path = "../apple-private-apis/icloud-auth"} -apple-dev-apis = { path = "../apple-private-apis/apple-dev-apis"} -apple-codesign-wrapper = { path = "../apple-private-apis/apple-codesign-wrapper"}