Phiên bản 21.5.1 đã được phát hành. Nó chứa nhiều thay đổi liên quan đến tính ẩn danh của trình duyệt. Hãy xem xét kỹ hơn về chúng:
Các trình duyệt hiện đại hỗ trợ API để làm việc với âm thanh. Sử dụng API này, site có thể tạo và xử lý âm thanh, cũng như truy cập dữ liệu nhị phân. Tương tự như Canvas và WebGL, dữ liệu âm thanh cũng chứa những khác biệt nhỏ tùy thuộc vào phần cứng, trình duyệt và hệ thống. Những khác biệt này có thể được dùng để nhận diện bạn giữa những người dùng khác của site, ngay cả khi dùng proxy. Phiên bản mới hỗ trợ audio fingerprinting - BAS thêm các mẫu nhiễu khác nhau vào dữ liệu âm thanh được trả về mỗi khi fingerprint thay đổi. Ngoài ra, API này cũng cấp quyền truy cập vào nhiều tham số hệ thống liên quan đến âm thanh. BAS thay thế các tham số này, các giá trị được lấy từ các thiết bị thật bằng dịch vụ FingerprintSwitcher.
Thông tin thêm về kỹ thuật này có thể tìm thấy trong bài viết này http://randomwalker.info/publications/OpenWPM_1_million_site_tracking_measurement.pdf đoạn 6.4. Trên site này bạn có thể lấy audio fingerprint cho trình duyệt của mình https://audiofingerprint.openwpm.com/
Site có thể lấy thông tin về ngôn ngữ hệ thống bằng nhiều cách: từ header Accept-Language, các phương thức navigator.language và navigator.languages, cũng như từ internalization API. Các thuộc tính này có thể chứa không chỉ một, mà nhiều ngôn ngữ, và header Accept-Language có định dạng khác nhau tùy thuộc vào hệ thống. Những khác biệt này là một trong những yếu tố fingerprinting trình duyệt. Sau một thử nghiệm ngắn, người ta phát hiện ra rằng với 20.000 người dùng có 751 giá trị độc nhất của trường Accept-Language. Tất nhiên, việc thay thế các trường này bằng các giá trị thật từ một thiết bị khác sẽ là sai, vì nó sẽ tạo ra sự khác biệt giữa ngôn ngữ hệ thống và proxy hiện tại. Do đó, một thuật toán đã được phát triển để "kết nối" quốc gia / ngôn ngữ của IP hiện tại và định dạng các trường thật từ một thiết bị thật. Ví dụ, nếu header gốc là ru-RU,en-US;q=0.9, và proxy ở Đức, kết quả sẽ là de-DE,en-US;q=0.9. Thuật toán bảo toàn đúng định dạng và loại bỏ các ngôn ngữ bổ sung, ví dụ, một trường như vậy ru, uk;q=0.8, be;q=0.8, en;q=0.7, *;q=0.01 sẽ được thay thế bằng de, en;q=0.8, *;q=0.01. IP, quốc gia và ngôn ngữ hiện tại được lấy sau khi thay đổi proxy.
Thông tin thêm về Accept-Language https://tools.ietf.org/html/rfc7231#section-5.3.5 Kết quả kiểm tra thuật toán https://pastebin.com/raw/mmgVmbyb
Một trong những thuộc tính của phần cứng được phép truy cập từ web là mức sạc pin. Các nghiên cứu trong bài viết dưới đây cho thấy thông tin này không nguy hiểm cho người dùng, vì nó chỉ cho phép theo dõi họ trong ngắn hạn. Thật vậy, mức sạc pin liên tục thay đổi, và không thể dự đoán được nó sẽ có giá trị gì trong thời gian dài. Tuy nhiên, phương pháp này có thể hữu ích để theo dõi các hành động hàng loạt. Hãy tưởng tượng rằng bạn đang chạy BAS từ một laptop, và site thấy hàng nghìn lượt đăng ký từ một thiết bị có mức sạc 56%, và còn 35 phút nữa cho đến khi sạc đầy. Tất nhiên, bạn có thể chạy phần mềm chỉ trên một thiết bị không có pin hoặc từ một laptop được sạc đầy, nhưng điều này cũng có thể đáng ngờ, đặc biệt khi dùng fingerprint di động. Do đó, quyết định được đưa ra là mô phỏng việc sạc / xả pin, cũng như tất cả các sự kiện và giá trị được API trả về trên các thiết bị có pin. Thông tin về sự sẵn có của pin do FingerprintSwitcher cung cấp. Đây là cách nó có thể trông:, trên biểu đồ bạn có thể thấy rằng các giá trị đang giảm dần.
Bài viết về battery fingerprints https://eprint.iacr.org/2015/616.pdf Kiểm tra battery API cho trình duyệt của bạn https://fingerprints.bablosoft.com/battery
BAS sử dụng một lượng mã phụ trợ nhất định để tìm kiếm phần tử trên trang, triển khai các injection recaptcha và những thứ khác. Trước đây, phần mềm có thể bị phát hiện bằng cách kiểm tra sự hiện diện của chức năng này, vì vậy trong phiên bản mới nó bị ẩn đi, tất cả tên hàm được tạo ngẫu nhiên và khác nhau cho mỗi luồng. Cơ chế chèn fingerprint đã được làm lại. Trước đây, BAS dựa vào các cấu trúc như thế này: Object.defineProperty(...), giờ đây việc thay thế xảy ra bên trong trình duyệt. Phương pháp cũ chỉ được dùng để thay đổi danh sách plugin và ở những nơi tuyệt đối cần thiết. Ví dụ, Chrome, không giống Firefox, không hỗ trợ API để làm việc với kính VR. Do đó, để mô phỏng chức năng này, javascript được sử dụng. Việc vượt qua một số phương pháp khác được dùng để xác định engine của trình duyệt cũng được viết lại bằng c++.
Việc mô phỏng chuột đã được cải thiện. Khi di chuyển đến phần tử không nhìn thấy trên màn hình, con lăn chuột được dùng để cuộn trang, chứ không phải javascript như trước. Nếu phần tử ở xa ngoài vùng nhìn thấy, tốc độ cuộn nhanh hơn nhiều so với khi nó rất gần. Đây là cách nó trông. Vị trí ban đầu của con trỏ được chọn ngẫu nhiên, chứ không phải ở góc trên bên trái như trước. Tăng tần suất tạo các sự kiện liên quan đến chuyển động của chuột.
Việc mô phỏng thứ tự header đã tạm thời bị loại bỏ sau khi chuyển sang kỹ thuật tunneling để triển khai proxy. Giờ đây chức năng này được triển khai lại. Thứ tự các header được lấy từ các thiết bị thật.
Đã thêm khả năng lưu một fingerprint trong thư mục hồ sơ và tải nó lên từ đó khi áp dụng một hồ sơ. Khi bạn nhận thông tin về hồ sơ hiện tại, bạn có thể tìm ra liệu nó có chứa fingerprint hay không, kết quả sẽ được trả về trong biến HAS_FINGERPRINT.
Thuật toán thay thế font đã được viết lại hoàn toàn. Trước đây, BAS được chèn vào tiến trình trình duyệt "ngay lập tức" và thay thế một số lệnh gọi hệ thống, giờ đây cùng một hiệu ứng đạt được bằng cách thay đổi mã nguồn của trình duyệt. Triển khai mới cho phép bạn thay đổi bộ font mà không cần khởi động lại trình duyệt, cũng như loại bỏ một số lỗi. Hiện tại để hoạt động đầy đủ, nên cài đặt càng nhiều font càng tốt trên máy chạy BAS. Sau này các font mới sẽ được tạo ngay cả khi không thực sự có mặt trên hệ thống bằng cách thêm nhiễu.
Đã thêm hỗ trợ Flash tunneling. Điều này có nghĩa là tuyệt đối tất cả các request mà tiến trình flash tạo ra sẽ đi qua một proxy nhất định. Cũng lưu ý rằng flash có khả năng lớn hơn nhiều so với javascript và do đó việc bật flash làm cho trình duyệt của bạn dễ bị phát hiện hơn. Trong BAS, rất có thể, các kỹ thuật sẽ không được sử dụng để làm cho flash an toàn hơn, như được làm với javascript vì sự hỗ trợ của nó sẽ bị Adobe chấm dứt vào năm 2020 https://theblog.adobe.com/adobe-flash-update/ Với một phần tử flash nhỏ hơn một kích thước nhất định, Chrome yêu cầu người dùng xác nhận việc khởi chạy nó, phiên bản BAS mới hoạt động theo cách tương tự khi người dùng tự động đồng ý làm điều này (nếu flash được bật).
Bạn có thể kiểm tra ip do flash trả về trên site này https://whatleaks.com/
Một số thay đổi khác không liên quan đến fingerprint trình duyệt:
Giao diện web giờ đây có thể dùng localStorage để lưu trữ cài đặt phần mềm giữa các lần khởi chạy.
Việc gọi phương thức BAS_API bên trong Node.js giờ đây tạo ra một exception trong trường hợp có lỗi. Giờ đây bạn có thể làm điều này:
try await BAS_API(load("wrongurl11111.com")!) catch(e) console.log(Something went wrong: $e) Có một cài đặt mới cho ứng dụng được bảo vệ: "Allow only single instance of the application."
Các file thực thi của BAS giờ đây được ký. Điều này cho phép vượt qua nhanh chóng thử thách SmartScreen trên Windows 10, cũng như tránh các cảnh báo sai của phần mềm diệt virus.
Cuộn ở cạnh được triển khai trong trình chỉnh sửa scenario.
Rất nhiều lỗi đã được sửa, quan trọng nhất là:
Đã sửa lỗi khi sử dụng header referrer và chuyển hướng trang. Các lỗi mạng khi tải một dự án không còn báo cáo URL của máy chủ. Đã sửa việc hỏng dự án trước đó sau khi tải dự án mới thất bại.
Khi chuyển sang phiên bản mới, các dự án cũ sẽ hoạt động theo cách cũ, nếu bạn muốn sử dụng chức năng mới, thì bạn cần bắt đầu chỉnh sửa các action 'Proxy', 'Apply fingerprint' và 'Get fingerprint' và nhấp Ok mà không thay đổi bất cứ thứ gì.