<div dir="ltr"><div>Hello again,</div><div><br></div>quick update if anyone wants to have a look before I find time to do so: The unlock is most probably in SIMService.exe, which contains the magic string "KHOIHGIUCCHHII" that is checked for in DMI and also used by the unlocking Snap...<div><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">Regards,<br>Thilo</div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 9, 2022 at 8:13 PM Thilo-Alexander Ginkel <<a href="mailto:thilo@ginkel.com">thilo@ginkel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Bjørn,<br>
<br>
thanks for your reply! I don't think that the lenovo-wwan-dpr snap<br>
implements the OTP unlocking mechanism.<br>
<br>
Lenovo also just posted in their forum [1] that the new firmware<br>
deliberately broke the unlock used by ModemManager. So that was<br>
probably my last Lenovo laptop...<br>
<br>
With regards to reversing the OTP mechanism: I made some first<br>
attempts at decompiling / diffing the Windows driver using Ghidra, but<br>
have to admit that I am not very experienced doing so and am somewhat<br>
lost as to which driver file actually implements the unlocking.<br>
<br>
Thanks,<br>
Thilo<br>
<br>
[1] <a href="https://forums.lenovo.com/t5/Other-Linux-Discussions/Finally-X55-5G-modem-works-under-linux/m-p/5082236?page=11#5639046" rel="noreferrer" target="_blank">https://forums.lenovo.com/t5/Other-Linux-Discussions/Finally-X55-5G-modem-works-under-linux/m-p/5082236?page=11#5639046</a><br>
<br>
<br>
On Sun, May 1, 2022 at 6:31 PM Bjørn Mork <<a href="mailto:bjorn@mork.no" target="_blank">bjorn@mork.no</a>> wrote:<br>
><br>
> Bjørn Mork <<a href="mailto:bjorn@mork.no" target="_blank">bjorn@mork.no</a>> writes:<br>
><br>
> > Wrt the implementation: Any protocol depending on closed binaries is<br>
> > broken by design, without exception.  It doesn't matter whether you use<br>
> > a "secret" algorithm or just store keys inside the binary. Anything that<br>
> > was compiled can be decompiled.  Sure it can be obfuscated to make that<br>
> > harder.  We all love a challenge :-)<br>
><br>
> And just let me prove that fact without even modifying one byte of the<br>
> code:<br>
><br>
>  root@miraculix:/tmp# cat /sys/class/dmi/id/product_family<br>
>  ThinkPad X1 Carbon 4th<br>
>  root@miraculix:/tmp# echo ThinkEdge > /tmp/product_family<br>
>  root@miraculix:/tmp# mount --bind /tmp/product_family /sys/class/dmi/id/product_family<br>
>  root@miraculix:/tmp# cat /sys/class/dmi/id/product_family<br>
>  ThinkEdge<br>
><br>
> And what do you think?  There goes the machine check....<br>
><br>
>  May  1 18:24:59 miraculix DPR_Fcc_unlock_service: main(): FCC unlock app started<br>
>  May  1 18:24:59 miraculix DPR_Fcc_unlock_service: get_product(): DT<br>
>  May  1 18:24:59 miraculix DPR_Fcc_unlock_service: MACHINE = [4] --- THINKEDGE_SE30 = [4]<br>
>  May  1 18:24:59 miraculix DPR_Fcc_unlock_service: main(): FCC unlock app exited<br>
><br>
> This doesn't work for me of course, only having the original EM7455<br>
> modem.  But I do note that the log output changed from -1 to 4, whatever<br>
> that means.  Previously:<br>
><br>
>  May  1 18:21:01 miraculix DPR_Fcc_unlock_service: MACHINE = [-1] --- THINKEDGE_SE30 = [4]<br>
><br>
> Something to try out on your X1E4, maybe?<br>
><br>
><br>
> Bjørn<br>
</blockquote></div>