Closed Thorin-Oakenpants closed 1 year ago
Windows 7 64bit (machine no.1)
Windows 7 64bit (machine no.2)
Windows 7 32bit (VM on machine no.1)
Windows 10 64bit (machine no.1) vm
Android (aarch64)
macOS
iOS
Linux 64bit (we'll list them as we get them)
Linux 32bit (we'll list them as we get them)
...
@abrahamjuliot - I only have a single android result (for 78+: it should be the same since 68) .. but I see you have three android results there: are you holding out on me, bro?
PS: the properly handled
link in your readme needs updating
Lol, I do have a secret weapon. Actually, I obtained b and c on a trail run at browserstack and by using a custom server to auto collect the hash and userAgent. FF Android results seem to jump around. I narrowed it down to 3. I plan to test more. I might start subbing to browserstacks 1 month/annually to gather in hashes.
[a] - Android 8.1 on Chromebook
[b] - Android 8, 7.1, 10 (browserstacks)
[c] - Android 4.4, 6 and 9 (browserstacks)
Thx. I updated the link. TZP index home page looks really nice.
Here are the goods =)
FF Android TZP tests:
225f4a612fdca4065043a4becff76a87ab324a74
66b3de14094fec47652f8ad203e6d8e6c9ee418f [F26]
56c05c3f03fb55c3c046ad1b68d05d2392fe0c54 [F21]
da130b6da16b5ddffc42ebf56259c4746d01a3b6 [F22]
d246b2f0103139eb4407a7dfe4dda2af0bcca4e6 [F23]
571b9a318869bd09dab3fd83fd88883a66188011 [F20] already known
a624571a642dbcb468f6d2d8203d0659d351bdc1 [F24]
02e1298182c58da58956df1342b525bd5aecfd7e [F25]
Q: did the engine test on them hold up? I hope so
I'm not a mobile expert, and of course limited access. I had an android 5 (32bit for sure) until about a year ago, now I have an android 9 (64bit I think - did I say I'm not a mobile expert). - both of those stayed the same with my current math (the eight cos tests) - so super stable from 68 to 83 - but now we're testing more functions
And I'm wondering about the v2.5 tests. Are those browserstack tests from roms/vms or real devices. That said, exploring the results of combos of droid OS versions + droid hardware/devices + droid architecure is just part of the real world results. Nailing down what causes the differences would be interesting
For me it's not about being able to correctly guess the OS. It doesn't affect my tests:
For me, it's getting the full results to see how many buckets it creates, and there may be some equivalency. I guess that will come if and when I can ever get tzp to a state where it can send back a full FP data set to a backend
I'll come back to this to decide what to do with those results. I think I need to only include real devices. I'm wondering how to leverage mozillians
Sounds good. BrowserStack uses 2000+ real devices (so they say). There's just 1 new engine on certain devices running Android 5, 6, 7, 7.1, 8, 8.1, 9 and it matches my device running 8.1.
There's just 1 new engine on certain devices running Android 5, 6, 7, 7.1, 8, 8.1, 9 and it matches my device running 8.1.
So this is new hash not in my tiny engine code hash check - for Firefox? I don't use this for isFF but I do for blink. And this matches your actual real android device, right - in which case that's a confirmed new FF hash to add to math v2.5 (and the engine for completeness sake). Or am I misinterpreting what you said?
So what is your 8.1 device? 64bit, 32bit, something else .. IDK (not a hardware person) - not essential but may shed some light if/when we get lots of droid hashes
Update: see #13 for you to check - edit it to correct anything or add in your version 8.1 note somewhere - squash and merge it if you want - this will help with your tests to spot NEW
ones 👍
Update2: "I think I need to only include real devices." <-- WTF am I thinking - this is research, of course we record all data into the dataset 🤦 edit: and they are real devices according to browserstacks. so yeah 🤦 🤦 🍻 - even if one of them wasn't real world, how the F would we ever know without testing 3 billion devices
So this is new hash not in my tiny engine code hash check - for Firefox?
This is correct. Here's the data.
Android 8.1 Android 9 on Chrome OS 32bit (ASUS Chromebook Flip C100PA)
correction: TB useragent reports Android 8.1, but it's actually Android 9 on FF 🧐
TB: Mozilla/5.0 (Android 8.1; Mobile; rv:68.0) Gecko/20100101 Firefox/68.0
FF: Mozilla/5.0 (Android 9; Mobile; rv:81.0) Gecko/81.0 Firefox/81.0
225f4a612fdca4065043a4becff76a87ab324a74
· 1.4645918875615234
· 0.48288235131479357
· 0.15051499783199063
· 1.4474840516030247
· 0.881373587019543
· 1.1071487177940904
engine:[NEW]
control: Firefox 78 64bit on Windows 64bit
----------------------------------------------------
hash: 66b3de14094fec47652f8ad203e6d8e6c9ee418f [NEW]
func: 9739fb2e9adbeba1c3f5cc9b7a67c5a254391458
poly: 2198a721f499ba07626ef27c36021acec222f24d
cbrt: 1p1
cos: 5, 6, 13, 14, 15, 16, 17, 18, 20
sin: 13, 14
tan: 10, 11, 12, 13, 14, 15
control: Firefox 78 64bit on Windows 64bit
----------------------------------------------------
hash: 66b3de14094fec47652f8ad203e6d8e6c9ee418f [NEW]
func: 9739fb2e9adbeba1c3f5cc9b7a67c5a254391458
poly: 2198a721f499ba07626ef27c36021acec222f24d
cbrt: 1p1
cos: 5, 6, 13, 14, 15, 16, 17, 18, 20
sin: 13, 14
tan: 10, 11, 12, 13, 14, 15
* bigN = 5.860847362277284e+38
----------------------------------------------------
ACOS
0: 0.123 : 1.4474840516030247,
1: Math.SQRT1_2 : 0.7853981633974483,
----------------------------------------------------
ACOSH
0: 1e300 : 709.889355822726, Infinity [match]
1: Math.PI : 1.811526272460853, 1.8115262724608532 [match]
2: Math.SQRT2 : 0.881373587019543, 0.8813735870195432 [match]
----------------------------------------------------
ASIN
0: 0.123 : 0.12331227519187199,
----------------------------------------------------
ASINH
0: 1e300 : 691.4686750787736, 691.4686750787736
1: Math.PI : 1.8622957433108482, 1.885022066017804 [match]
----------------------------------------------------
ATAN
0: 2 : 1.1071487177940904,
1: Math.PI : 1.2626272556789115,
----------------------------------------------------
ATANH
0: 0.5 : 0.5493061443340548, 0.5493061443340548
----------------------------------------------------
ATAN2
0: 1e-310, 2 : 5e-311,
1: Math.PI, 2 : 1.0038848218538872,
----------------------------------------------------
CBRT
0: 100 : 4.641588833612779, 4.641588833612778 [match]
1: Math.PI : 1.4645918875615231, 1.4645918875615234 [match]
----------------------------------------------------
COS
0: 1e251 : -0.37419577499634155,
1: 1e140 : -0.7854805190645291,
2: 1e12 : 0.7914463018528902,
3: 1e130 : -0.767224894221913,
4: 1e272 : -0.7415825695514536,
5: 1e0 : 0.5403023058681398,
6: 1e284 : 0.7086865671674247,
7: 1e75 : -0.7482651726250321,
8: 0.123 : 0.9924450321351935,
9: Math.PI : -1,
10: bigN : -0.10868049424995659,
11: -1e308 : -0.8913089376870335,
12: 13*Math.E : -0.7108118501064332,
13: 57*Math.E : -0.536911695749024,
14: 21*Math.LN2 : -0.4067775970251724,
15: 51*Math.LN2 : -0.7017203400855446,
16: 21*Math.LOG2E : 0.4362848063618998,
17: 25*Math.SQRT2 : -0.6982689820462377,
18: 50*Math.SQRT1_2 : -0.6982689820462377,
19: 21*Math.SQRT1_2 : -0.6534063185820198,
20: 17*Math.LOG10E : 0.4537557425982784,
21: 2*Math.LOG10E : 0.6459044007438142,
----------------------------------------------------
COSH
0: 1 : 1.5430806348152437, 1.5430806348152437
1: Math.PI : 11.591953275521519, 11.591953275521519
2: 492*Math.LOG2E : 9.199870313877774e+307, Infinity [match]
3: 502*Math.SQRT2 : 1.046919966902314e+308, Infinity [match]
----------------------------------------------------
EXPM1
0: 1 : 1.718281828459045, 1.718281828459045
1: Math.PI : 22.140692632779267, 22.140692632779267
----------------------------------------------------
EXP
0: 0.123 : 1.1308844209474893,
1: Math.PI : 23.140692632779267,
----------------------------------------------------
HYPOT
0: 1,2,3,4,5,6 : 9.539392014169456, 9.539392014169458 [match]
1: bigN, bigN : 8.288489826731114e+38, 8.288489826731116e+38 [match]
2: 2*Math.E,-100 : 100.14767208675258, 100.14767208675259 [match]
3: 6*Math.PI,-100 : 101.7610227859332, 101.76102278593319 [match]
4: 2*Math.LN2,-100 : 100.00960859865252, 100.0096085986525 [match]
5: Math.LOG2E,-100 : 100.01040630344927, 100.01040630344929 [match]
6: Math.SQRT2,-100 : 100.00999950005, 100.00999950004999 [match]
7: Math.SQRT1_2,-100 : 100.00249996875078, 100.0024999687508 [match]
8: 2*Math.LOG10E,-100 : 100.00377216279418, 100.00377216279416 [match]
----------------------------------------------------
LOG
0: 0.123 : -2.0955709236097197,
1: Math.PI : 1.1447298858494002,
----------------------------------------------------
LOG1P
0: 0.123 : 0.11600367575630613, 0.11600367575630613
1: Math.PI : 1.4210804127942926, 1.4210804127942926
----------------------------------------------------
LOG10
0: 0.123 : -0.9100948885606021, -0.9100948885606022 [match]
1: Math.PI : 0.49714987269413385, 0.49714987269413385
2: Math.E : 0.4342944819032518, 0.4342944819032518
3: 34*Math.E : 1.965773398945507, 1.965773398945507
4: Math.LN2 : -0.1591745389548616, -0.1591745389548616
5: 11*Math.LN2 : 0.8822181462033635, 0.8822181462033635
6: Math.LOG2E : 0.15917453895486158, 0.15917453895486158
7: 43*Math.LOG2E : 1.7926429945344482, 1.792642994534448 [match]
8: Math.LOG10E : -0.36221568869946325, -0.3622156886994632 [match]
9: 7*Math.LOG10E : 0.48288235131479357, 0.4828823513147936 [match]
10: Math.SQRT1_2 : -0.15051499783199057, -0.15051499783199057
11: 2*Math.SQRT1_2 : 0.15051499783199063, 0.1505149978319906 [match]
12: Math.SQRT2 : 0.15051499783199063, 0.1505149978319906 [match]
----------------------------------------------------
SIN
0: 1e251 : -0.9273497301314576,
1: 1e140 : -0.6188863822787813,
2: 1e12 : -0.6112387023768895,
3: 1e130 : 0.6413781736901984,
4: 1e272 : 0.6708616046081811,
5: 1e0 : 0.8414709848078965,
6: 1e284 : -0.7055234578073583,
7: 1e75 : 0.66339975236386,
8: bigN : 0.994076732536068,
9: Math.PI : 1.2246467991473532e-16,
10: 39*Math.E : -0.7181630308570678,
11: 35*Math.LN2 : -0.765996413898051,
12: 110*Math.LOG2E : 0.9989410140273757,
13: 7*Math.LOG10E : 0.10135692924965616,
14: 35*Math.SQRT1_2 : -0.3746357547858202,
15: 21*Math.SQRT2 : -0.9892668187780497,
----------------------------------------------------
SINH
0: 1 : 1.1752011936438014, 1.1752011936438014
1: Math.PI : 11.548739357257748, 11.548739357257748
2: Math.E : 7.544137102816975, 7.544137102816975
3: Math.LN2 : 0.75, 0.75
4: Math.LOG2E : 1.9978980091062795, 1.9978980091062797 [match]
5: 492*Math.LOG2E : 9.199870313877774e+307, Infinity [match]
6: Math.LOG10E : 0.44807597941469024, 0.4480759794146903 [match]
7: Math.SQRT1_2 : 0.7675231451261164, 0.7675231451261164
8: Math.SQRT2 : 1.935066822174357, 1.9350668221743568 [match]
9: 502*Math.SQRT2 : 1.046919966902314e+308, Infinity [match]
----------------------------------------------------
SQRT
0: 0.123 : 0.3507135583350036,
1: Math.PI : 1.7724538509055159,
----------------------------------------------------
TAN
0: 1e251 : 2.478247463217681,
1: 1e140 : 0.7879079967710036,
2: 1e12 : -0.7723059681318761,
3: 1e130 : -0.8359715365344825,
4: 1e272 : -0.904635076595654,
5: 1e0 : 1.5574077246549023,
6: 1e284 : -0.9955366596368418,
7: 1e75 : -0.8865837628611647,
8: -1e308 : 0.5086861259107568,
9: Math.PI : -1.2246467991473532e-16,
10: 6*Math.E : 0.6866761546452431,
11: 6*Math.LN2 : 1.6182817135715877,
12: 10*Math.LOG2E : -3.3537128705376014,
13: 17*Math.SQRT2 : -1.9222955461799982,
14: 34*Math.SQRT1_2 : -1.9222955461799982,
15: 10*Math.LOG10E : 2.5824856130712432,
----------------------------------------------------
TANH
0: 0.123 : 0.12238344189440875, 0.12238344189440872 [match]
1: Math.PI : 0.99627207622075, 0.9962720762207501 [match]
----------------------------------------------------
POW
0: 0.123,-100 : 1.0220893335845176e+91,
1: Math.PI,-100 : 1.9275814160560185e-50,
2: Math.E,-100 : 3.720075976020851e-44,
3: Math.LN2,-100 : 8269017203802410,
4: Math.LN10,-100 : 6.003867926738811e-37,
5: Math.LOG2E,-100 : 1.2093335584550061e-16,
6: Math.LOG10E,-100 : 1.665592934758592e+36,
7: Math.SQRT1_2,-100 : 1125899906842611.5,
8: Math.SQRT2,-100 : 8.881784197001154e-16,
OK, added it https://github.com/arkenfox/TZP/commit/804cabec250996443818f6f6848c6238bca8f4a5. Don't worry about too much about the comments - the detailed info is in the first post (and a local spreadsheet). I'll update OP later
@abrahamjuliot - I'm yet to finish it, but here you go
This is easier than fucking around with long lists and formatting crap in github comments
all: 110 tests diff from control all firefox: 72 tests differ firefox 68+: 55 tests differ firefox 67-: 61 tests differ
Obviously since the control is FF, it has less diffs. If you want to double check the entries for the five new android ones (I had to go on your screenshots), that would be cool (I edited your post to add the short code). If we ignore obsolete FF's .. we can get away with 55 tests as a maximum - and that can probably be reduced as well. I will build something down the track to programmatically determine the minimum set to maintain entropy
I am yet to finish the webpage: some cosmetic stuff, outputting the unique test numbers for various (FF68+ vs all)
android 4.4 must be using v68 .. I assume the others were Fenix (78+) .. right?
@abrahamjuliot just a FYI should you need to do anything with creepy - https://github.com/arkenfox/user.js/issues/1234
- RFP math mitigations landed: it doesn't affect our my engine math check. And I've already patched TZP's feature detection math test (used to show OS) - note: I'm using my old small set and only missing out on android polyfill entropy AFAICT, not the large monsta you are: I do plan to upgrade the math test in the future though to catch those extra android results
bugzilla: 531915
note:
removing sin/cos/tan from Firefox android results
F20: nothing, it's the control
F21 + F24 cbrt: 1p1 cosh: 0, 0p1 expm1: 0p1 sinh: 0p1
F22 + F23 + F25 cosh: 0, 0p1 expm1: 0p1 sinh: 0p1
F26 cbrt: 1p1
### entropy still exists
polyfills [are here](https://github.com/arkenfox/TZP/blob/d7b77267890483c4e111500fc2c3b7c0a7258c6d/tests/math.html#L321)
- cbrt uses `pow`
- cosh uses `log` + `sqrt`
- expm1 uses `exp`
- sinh uses `exp`
non polyfill
- cosh
interesting article calculator forensics
reminds me of how old-timey passports were checked in Russia .. American passports used stainless steel staples, Russian ones didn't ... a check for rust masks could unearth a paradox .. oh noes, it's the gulag for you! I have to admit I'm a bit of a fan of old-timey spycraft, most is still relevant today .. OpSec vs Meatware
https://bugzilla.mozilla.org/show_bug.cgi?id=1775254 - @abrahamjuliot keep an eye when this lands to see if it affects your math stuff
yup, changes all 9 pow
test results in my windows: my windows was F1 the control
https://arkenfox.github.io/TZP/tests/math.html
looking at the math data, pow
(all nine) were a factor in FP diffs in FF prior to FF68, but not since. So if this still holds true (same results on all platforms), it doesn't change entropy (in our list of tests), just some values
@abrahamjuliot FYI
omg ... https://bugzilla.mozilla.org/show_bug.cgi?id=1784111 ... I've pinged tjr, let's hope they never add any FP webcompat site overrides, let alone go down a slippery slope of specially modifying results like math (which can change for a number of reasons, libraries/compression) - if they do it for bet365, then I bet (pun intended) it happens for other FP scripts using various pow calculations - you know like creep - see above pic :)
yikes, fpjs uses math pow pi -100 too. I imagine that throws a monkey wrench in their heuristics.
I went ahead and switched over to error lengths for engine detection (needs improvement though).
yeah, I want to move away from math (except as a single FP measure) - a change in compression altered FF68+, a change in libraries (see that Pow change), diff libraries in geckoview vs gecko? ... so I don't want to rely on math to detect global vars
I've always had a pretty robust gecko (and if math failed for gecko I always had it hardened), and gonna has used non-math for a while.
Current state is
So yeah, after the isEngine page, I was wanting to do something more robust for blink/webkit. trident should fail to run on TZP, so I don't know what else is left?
so one thing I have observed, is using the console you can check what is valid by typing the first letter
console.log(k
will reveal different results in gecko vs blinkSo KeyEvent = function in gecko and undefined/reference-error in blink/webkit. I think we should enumerate these and run a universal script to find unique items per engine. IDK non gecko releases very well, e.g. what can be flipped by settings or when they were added/removed - e.g. older versions
I consider this finished: new math is https://github.com/arkenfox/TZP/pull/192/commits/1aa30edf71fbe5f8b4fb5fba4813c3be055529ba
test: https://arkenfox.github.io/TZP/tests/math.html results: https://arkenfox.github.io/TZP/tests/mathdata.html