Whisperfish - The unofficial SailfishOS Signal client

As an example, @sunburnedpenguin, my number is +32474… , so I select Belgium (by tapping on the +xx and searching +32), and then continue with 474…
There’s a known crash when you add another leading zero, so don’t enter in national format.

thank you very much !!
i can confirm that it works, the how-to is however missleading.
you say copy without quotations and in the next line you have ‘’
so it seems you need the quotations, which of course you don’t
i would remove them in step 6:
Via SSH, run harbour-whisperfish --verbose --captcha '<THE URL HERE>'

Currently, that would probably be fine, but if Signal changes the format to contain some weird characters, it could mess that up. The single quotes shouldn’t matter. Nesting quotes, however, would matter, and that’s why I had written “copy without quotes”.

A little side note for anyone trying to catch the captha url on firefox console. I had to enable ‘persist logs’ from the settings cog within the console, otherwise I could not see the url required.
Thanks for all the hardwork on whisperfish!

I’m a bit embarrassed – I didn’t notice that the “+xx” could be interacted with!

The remaining hurdle is that it appears the Sailfish console will only allow me to paste a portion of the URL, not the whole thing. It pastes fine locally, but when I paste it into the SSH session, Sailfish truncates it and won’t allow me to add any additional characters. If I try to use a single quote and paste it in two chunks before closing with a trailing single quote character, it still fails (number masked) even though it does appear to attempt to start Whisperfish using the full URL:

[defaultuser@Xperia10Plus-DualSIM ~]$ harbour-whisperfish --verbose --captcha ’

signalcaptcha://signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.r
egistration.03AGdBq24SJUIXoj0DI0zDlOjJ2bI4g8s1lywegvtrxAw1HZQjNMvxxxAZIQ62KLXxBe
uKenalOx2J7_MYCppKNQQ7OPsJEHLmeLqcx4-63U4wj5gmgf9Lt2VR4TMu4JASt7PuTBGl7Aq8DMw0uS
5_8PvOFvtIc0GXup1hk0KTVk3dR3j5B4_sodIqnC5BRUOWlvBUVYCEvSppaD5bVUFmznhEgSusikYYUR
KkmxXZSx36gtecmXSkkl8lFm-b-Cy2tAZ7Qc30heuyL1NdUEdQSuuYI811t7OBS2Vvuo0Ewy-vCrSDoV
0nUfkawyg94jqd1KpxrbttNPGd1sbhYfCmXvO1aLKXf9c1QfPlcSfB_QkJYOtBcbOZs-1VCFoHs1qw5G
ilTkW2oQB9rUQO4wsWTwuD-vv9x_B76WAhpAeIu-o1LlAWwuHhas9ltpFTE-_c67BquagNWhXu-5FLcA
RFyV50DEWdxr8YGz1Wy8Zj3MOebavuTgAnBFt405W54Bh6Zd7hoNS6TaZKUmj7JYlKL1TT-VceuYly_V
SROmSIIvq_U_D_Cot8ZyV4GppNrPboQ4x97QBbZU8mnMtuK4I_MVLm70Ggq7EPCCbWkQEwVtXDXsqBwZ
oAHlLrxT5cSP4bXa-i-CjM90h-mv4mqmJ1kFE6qn1UaAGfPxcoNxElNy-tRtMmaW3A_3NAdgbL-stHS7
MnHcL2pCSpZ3wcJcj4jSAbqqFMSeQ86Dpkia0l8My64Dl4-6C4YnzDkmH
-rYQP0KKYPkoRp-uB4Wt6Tcnf6AIDBUCu2mO2JKDC1QfbdmqhIfCYnlF1EECLEqI_elOJ0QlP6MEGN
sNuR_O-2BmWezzifRab9DQYMlybvwIFtb-22eYLNLxdzHFFe-dtWppOXdnpJsNts9mrg3MTzDLkNJ_4h
rWguxStRsatUCoXHc4GJce0WqrNVj6xBQyIbXTDyXnfmo89AvNyBjxFSqEqnU5zq—FYVaaYfEw_BX7
7N1MF1gFHVJI7ev1pSy0YQVEmju7MueVO0ruqtdmtscVT-GnJ4UZnxrn9r71MEJyhIsKKDzU9zGbhFyr
umuuBeIkTL9Z3IUTbb1ikcfLih36MIv2lf1svLRdJegilp5vOKns2CwSEoFBFIWhaWIN5ZXoRJEbM7sQ
MHDriU-hmlPloGF6gSbxxeTTw

[2022-03-28T05:04:20Z INFO harbour_whisperfish] Start main app (with autostart = false)
[D] unknown:0 - Using Wayland-EGL
[2022-03-28T05:04:21Z INFO harbour_whisperfish::gui] QmlApp::application loaded - version v0.6.0-beta.8
[W] __cpp_closure_14317703314545309294_impl:182 - Failed to load translator for (“en-GB”) Searched “/usr/share/harbour-whisperfish/translations” for “harbour-whisperfish”
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn’t exist”
[W] unknown:0 - “Failed to open contacts transient store”
[W] unknown:0 - “Unable to open synchronous engine database connection”
[W] unknown:0 - QSqlQuery::prepare: database not open
[W] unknown:0 - “Failed to prepare distinct display label group selection query: \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC”
[2022-03-28T05:04:22Z INFO harbour_whisperfish::worker::setup] SetupWorker::run
[2022-03-28T05:04:22Z INFO harbour_whisperfish::worker::setup] identity_key not found
[2022-03-28T05:04:22Z INFO harbour_whisperfish::config::settings] Setting default settings.
[D] unknown:0 - Starting favorites query at 519 ms
[D] unknown:0 - Favorites queried in 627 ms
[D] unknown:0 - Starting metadata query at 737 ms
[D] unknown:0 - All queried in 784 ms
[2022-03-28T05:04:47Z INFO harbour_whisperfish::config::settings] Setting string country_code
[2022-03-28T05:04:48Z INFO harbour_whisperfish::worker::setup] Using phone number: +40XXXXXXXXX
[2022-03-28T05:04:48Z INFO harbour_whisperfish::worker::setup] Using override captcha
signalcaptcha://signal-recaptcha-v2.6LfBXs0bAAAAAAjkDyyI1Lk5gBAUWfhI_bIyox5W.registration.03AGdBq24SJUIXoj0DI0zDlOjJ2bI4g8s1lywegvtrxAw1HZQjNMvxxxAZIQ62KLXxBeuKenalOx2J7_MYCppKNQQ7OPsJEHLmeLqcx4-63U4wj5gmgf9Lt2VR4TMu4JASt7PuTBGl7Aq8DMw0uS5_8PvOFvtIc0GXup1hk0KTVk3dR3j5B4_sodIqnC5BRUOWlvBUVYCEvSppaD5bVUFmznhEgSusikYYURKkmxXZSx36gtecmXSkkl8lFm-b-Cy2tAZ7Qc30heuyL1NdUEdQSuuYI811t7OBS2Vvuo0Ewy-vCrSDoV0nUfkawyg94jqd1KpxrbttNPGd1sbhYfCmXvO1aLKXf9c1QfPlcSfB_QkJYOtBcbOZs-1VCFoHs1qw5GilTkW2oQB9rUQO4wsWTwuD-vv9x_B76WAhpAeIu-o1LlAWwuHhas9ltpFTE-_c67BquagNWhXu-5FLcARFyV50DEWdxr8YGz1Wy8Zj3MOebavuTgAnBFt405W54Bh6Zd7hoNS6TaZKUmj7JYlKL1TT-VceuYly_VSROmSIIvq_U_D_Cot8ZyV4GppNrPboQ4x97QBbZU8mnMtuK4I_MVLm70Ggq7EPCCbWkQEwVtXDXsqBwZoAHlLrxT5cSP4bXa-i-CjM90h-mv4mqmJ1kFE6qn1UaAGfPxcoNxElNy-tRtMmaW3A_3NAdgbL-stHS7MnHcL2pCSpZ3wcJcj4jSAbqqFMSeQ86Dpkia0l8My64Dl4-6C4YnzDkmH
-rYQP0KKYPkoRp-uB4Wt6Tcnf6AIDBUCu2mO2JKDC1QfbdmqhIfCYnlF1EECLEqI_elOJ0QlP6MEGNsNuR_O-2BmWezzifRab9DQYMlybvwIFtb-22eYLNLxdzHFFe-dtWppOXdnpJsNts9mrg3MTzDLkNJ_4hrWguxStRsatUCoXHc4GJce0WqrNVj6xBQyIbXTDyXnfmo89AvNyBjxFSqEqnU5zq—FYVaaYfEw_BX77N1MF1gFHVJI7ev1pSy0YQVEmju7MueVO0ruqtdmtscVT-GnJ4UZnxrn9r71MEJyhIsKKDzU9zGbhFyrumuuBeIkTL9Z3IUTbb1ikcfLih36MIv2lf1svLRdJegilp5vOKns2CwSEoFBFIWhaWIN5ZXoRJEbM7sQMHDriU-hmlPloGF6gSbxxeTTw

[2022-03-28T05:04:48Z DEBUG libsignal_service_actix::push_service] HTTP request GET https://chat.signal.org/v1/accounts/sms/code/+40XXXXXXXXX
[2022-03-28T05:04:49Z DEBUG libsignal_service_actix::push_service] AwcPushService::get response:
ClientResponse HTTP/1.1 402 Payment Required
headers:
“cache-control”: “must-revalidate,no-cache,no-store”
“date”: “Mon, 28 Mar 2022 05:04:49 GMT”
“content-length”: “416”
“content-type”: “text/html;charset=iso-8859-1”
“connection”: “keep-alive”
“x-signal-timestamp”: “1648443889688”

[2022-03-28T05:04:49Z TRACE libsignal_service_actix::push_service] Unhandled response with body: Ok(b"\n\n<meta http-equiv=“Content-Type” content=“text/html;charset=ISO-8859-1”/>\nError 402 Payment Required\n\n

HTTP ERROR 402 Payment Required

\n\n\n\n\n\n
URI: /v1/accounts/sms/code/+40XXXXXXXXX
STATUS: 402
MESSAGE: Payment Required
SERVLET: jersey
\n\n\n\n")
greHome from GRE_HOME:/usr/bin
libxul.so is not found, in /usr/bin/libxul.so
Attempting load of libEGL.so
=============== Preparing offscreen rendering context ===============
[D] onUrlChanged:54 - Url changed to: Signal
[D] onRecvAsyncMessage:61 - embed:contentOrientationChanged
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: https://www.gstatic.com/recaptcha/releases/2uoiJ4hP3NUoP9v_eBNfU6CR/recaptcha__en.js, line 341: Error: grecaptcha.execute only works with invisible reCAPTCHA.
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined
JavaScript error: file:///usr/share/harbour-whisperfish/qml/pages/captchaframescript.js, line 20: TypeError: gc is undefined

Am I doing something else goofy here?

That sounds like a bug to me; the registration should give an error as long as it’s not filled in. I’ve made an issue about that. (Wow, we’re over 400 issues…)

So, there’s apparently an issue for some people that they cannot paste it in one go. I’m not sure why this is, but that’s certainly the reason why the registration does not work for you. There should be no line breaks in the whole string, not even leading nor trailing.

I’ve had someone suggest on Matrix to use something like vi a; harbour-whisperfish --verbose --captcha "$(cat a)", such that you can cleanly edit it in vi (replace with nano if you want) and then on close automatically start Whisperfish. Would that help?

1 Like

Ingvix proposed a solution to the character limit problem using vi…for details see matrix group https://matrix.to/#/#whisperfish:rubdos.be

1 Like

Actually, maybe I’m just dumb since no one else seemed vexed by it! :blush:

This worked perfectly! I did substitute nano, and I had no problems, so for others who would prefer to use nano, do the following variation on @rubdos’s procedure on Gitlab:

  1. Close Whisperfish on your phone, if it is already started.

  2. Open https://signalcaptchas.org/registration/generate.html using the browser on your computer.

  3. Open the browser console. In Firefox, you can use Control + Shift + K to open it. Click the gear icon and check “Persist Logs”.

  4. Now file the captcha that is presented on the webpage.

  5. When the captcha is filed, you get a warning in the console, in form of “Prevented navigation to …” or "Navigated to <captcha URL>". Part of this warning is a very long URL, starting with signalcaptcha://. Copy the URL to your clipboard, excluding any quotation marks but including the signalcaptcha://.

  6. Via an SSH session on your phone:

    • Run nano a; harbour-whisperfish --verbose --captcha "$(cat a)"
    • Paste the aforementioned captcha URL into nano.
    • Save and exit nano.
    • Complete the registration on your phone.
  7. When the registration is finished, close Whisperfish, then close SSH.

Thanks again for this great app, @rubdos!!!

5 Likes

Hi @rubdos on my Xperia 10ii running 4.4.0.58 EA I don’t seem to be able to get past the Register Screen (Whisperfish 0.6.0.beta.8-0.sf4). After I enter my phone number (Using the Prefix and Phone number omitting the leading zero) I get thrown out of the app back to the home screen.

I’ve also tried the Registration workaround but after going through the Captcha process (pasting in the URL from Signal) I get back into the App and the Registration process again but can’t get past the phone number entry point.

Not sure if this is a known issue with the Xperia 10ii (64 bit)?

1 Like

probably the longest I took to answer… just created a GL issue, hopefully there’s enough details.

Oh no, I imagine lots of others just don’t speak up about it :slight_smile:

And thanks to @direc85 to do a lot of heavy lifting this time!

This means that your captcha workaround didn’t succeed. I suggest you try the approach that @sunburnedpenguin documented.

Responded, most probably a duplicate long standing issue, with a workaround. I linked it in my response.

2 Likes

yes, saw it and it worked, thanks Ruben!

1 Like

Sorry I must be doing something wrong here. Have tried as per @sunburnedpenguin and get the following error message in PuTTY

login as: defaultuser
defaultuser@192.168.2.15’s password:
Last login: Mon Mar 28 11:57:39 2022 from 192.168.2.9
,—
| Sailfish OS 4.4.0.58 (Vanha Rauma)
'—
[defaultuser@Xperia10II-DualSIM ~]$ devel-su
Password:
[root@Xperia10II-DualSIM defaultuser]# nano a; harbour-whisperfish --verbose --c
aptcha “$(cat a)”
Config file not found: Could not open config file: /root/.config/harbour-whisperfish/config.yml
Could not create config directory: /root/.config/harbour-whisperfish
[root@Xperia10II-DualSIM defaultuser]#

I installed Whisperfish in Terminal with PKCON INSTALL harbour-whisperfish

I think you want to run whisperfish as a regular user rather than setting up the profile under root. Try again after exiting devel-su.

Thanks but have tried running without devel-su and that gives a different set of errors.

I’ll try again though and double check what I’m doing. :smiley:

Perhaps a silly question, but do you have nano installed?

`pkcon install nano`

Does it also say “Config file not found: Could not open config file: /defaultuser/.config/harbour-whisperfish/config.yml” when you run as regular user?

Never run user applications as root! Let us know what happens when you run under your defaultuser.

1 Like

Suitably chastised! (Thanks for the warning). I do have nano installed.

When running again just as defaultuser I get:

login as: defaultuser
defaultuser@192.168.2.15’s password:
Last login: Mon Mar 28 12:24:54 2022 from 192.168.2.9
,—
| Sailfish OS 4.4.0.58 (Vanha Rauma)
'—
[defaultuser@Xperia10II-DualSIM ~]$ nano a; harbour-whisperfish --verbose --capt
cha “$(cat a)”
[2022-03-28T12:05:44Z INFO harbour_whisperfish] Start main app (with autostart = false)
[D] unknown:0 - Using Wayland-EGL
library “libGLESv2_adreno.so” not found
library “eglSubDriverAndroid.so” not found
[2022-03-28T12:05:44Z INFO harbour_whisperfish::gui] QmlApp::application loaded - version v0.6.0-beta.8
[W] __cpp_closure_14317703314545309294_impl:182 - Failed to load translator for (“en-GB”) Searched “/usr/share/harbour-whisperfish/translations” for “harbour-whisperfish”
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Query failed: no such function: icu_load_collation Unable to execute statement\nSELECT icu_load_collation(‘en_GB’, ‘localeCollation’)”
[W] unknown:0 - "Failed to configure collation for locale en_GB: "
[W] unknown:0 - “Failed to attach key memory region for qtcontacts-sqlite-np: QSharedMemory::attach (shmget): doesn’t exist”
[W] unknown:0 - “Failed to open contacts transient store”
[W] unknown:0 - “Unable to open synchronous engine database connection”
[W] unknown:0 - QSqlQuery::prepare: database not open
[W] unknown:0 - “Failed to prepare distinct display label group selection query: \n SELECT DISTINCT DisplayLabelGroup FROM DisplayLabels ORDER BY DisplayLabelGroupSortOrder ASC”
[2022-03-28T12:05:45Z INFO harbour_whisperfish::worker::setup] SetupWorker::run
[2022-03-28T12:05:45Z INFO harbour_whisperfish::worker::setup] identity_key not found
[2022-03-28T12:05:45Z INFO harbour_whisperfish::config::settings] Setting default settings.
[D] unknown:0 - Starting favorites query at 489 ms
[D] unknown:0 - Favorites queried in 626 ms
[D] unknown:0 - Starting metadata query at 775 ms
[D] unknown:0 - All queried in 817 ms

That looks very normal; doesn’t it work when you continue the registration, then? The database errors are about loading your contact store, which only works when you run from the icon (or via invoker), but that doesn’t matter during registration.

1 Like

No when I run Whisperfish I get the Welcome to Whisperfish screen, then the Register screen where I enter my Phone Number using the Prefix and dropping the leading 0.

Then the App crashes to the home screen with the red/orange whisperfish logo on the cover.

Every time you open the App it reverts to the Welcome to Whisperfish screen. It’s impossible to progress past the Register screen,