Code Monkey home page Code Monkey logo

whatsapp-web-reveng's People

Contributors

abdurrahmanekr avatar adiwajshing avatar alvarofe avatar arbaaz avatar coolnickname avatar dependabot[bot] avatar elonsalfati avatar hossinasaadi avatar j4yf7o avatar jangid avatar jobr99 avatar lalohao avatar makhlab avatar ndunks avatar nikneym avatar nvanderburg avatar offboard avatar omerfi avatar purpshell avatar quad avatar rhymen avatar robtec avatar sigalor avatar supersandro2000 avatar tiwarishrijan avatar tulir avatar vadolasi avatar valga avatar vjyanand avatar wiomoc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

whatsapp-web-reveng's Issues

send Message

I'm trying to implement the messaging part, but my knowledge regarding this type of project is very small, do you have alpha idea of ​​how does the way data encryption work? after encrypted just send via websoket send? Do you have any idea of ​​the structure of sending the message?

Reusing the login credentials

Hey

After getting annoyed of always having to scan the QR code I tried myself implementing the authentication after the initial one.

Sadly I was unable to do so. I am currently sending the exact same message as the web client does.

message = messageTag + ',["admin","login","' + clientToken + '","' + serverToken + '","' + self.loginInfo["clientId"] + '",takeover]';
self.activeWs.send(message);

Is there a way to contact you @sigalor ? Would like to work together.

ERR_CONNECTION_REFUSED

Good afternoon!

I made the installation on a ubuntu 16.04 LTS server and when I click connect the following ERR_CONNECTION_REFUSED error appears:
Has anyone gone through this?
Thank you.

Invalid

wtf, how did I create this issue

License is ambiguous

Hi,

Just need a clarification here: your "Terms and Conditions" section can be interpreted to be part of the software's license, but the repository contains a LICENSE file without these terms. So:

  • Are the terms in "Terms and Conditions" additional software license terms on top of the MIT License; or

  • Are the terms in "Terms and Conditions" just a disclaimer against supporting users who use the software for those purposes?

Note that the first option makes this software non-free and possibly GPL-incompatible, which could cause some interoperability problems.

How can I find my contact is online?

On whatsapp web I can find any person is online with below code.

Store.Precense.find("[email protected]").then(function (d) { console.log(d.isOnline) })

but since few days it's not returning correct data until I open that contact's chat screen on my android.
Can I do then same thing with this or there is an other way?

Trying to follow E2E media decryption documentation

I'm trying to follow Dealing with E2E media documentation, recently incorporated in pull request 42 by @valga and @sigalor

My implementation is on NodeJs but I believe I'm following everything step by step. However the decoded file is too small and cannot be opened. This a sample file you can run directly, documented step by step:

// How to install dependencies and run this index.js file:
// npm init
// npm install hkdf
// npm install atob
// npm install btoa
// node index.js

const crypto = require('crypto');
const HKDF = require('hkdf');
const atob = require('atob');
const btoa = require('btoa');

start();

function start()
{
    // encodedHex is a very small encoded jpeg file downloaded as a .enc file from WhatsApp servers, and converted to an hex string. The decoded image itself shows a 4x4 pixel dark orange gradient. From here we'll try to decode the image.
    
    var encodedHex = "15a15b57f8fe2cd238089b5d7cf021f3a870e70843b4267294e244d5868e14355810175c1657ff9e0d5b461a60c986a8bac76531566e7c46a986369f902ff695cd667294acb4dd7daf1f71b4f31444d1838c858ce0257f56c90ebf1b7ee9401d99c7f79c162b5a2eed4324b3d106dbfa99a3070c2c9e7a3b1f2e924b184e7c9557adc3a61b427963081b15a6146f13161cdd3d0aeccd58640fd3cd5f0fdfcc4f158ae8bdaf15e5587b5088bc6bec78091ebddae9ffcb651e3099102f9fd57ea9a88efc15547d49a9720c53fe839d11c4536c806c500462f4da53312ddd799c86f698f55d5330f1b8e344b4ba08193a052baf5d4092322a4c739b22dbe40103b286893c3d922c6b0e0dfdcb466ce6ecb3fc9b424eeed8e08ca01ec4f42515ecae6b99a7d69fdcac269c6e914268036bdb1e7623ae219b552a27e88be0eabaa532c0edbb222ecb186e8647";
    var encodedBytes = hexToBytes(encodedHex);
    
    console.log("encodedHex: " + encodedHex + " (" + encodedBytes.length + " bytes)");
    
    // STEP 1: obtain mediaKey and decode it from Base64
    
    var mediaKeyBase64 = "gd5RDqKHBi846u5UA3I5hMjgy5ygwPw6+4RttFbGP+M=";
    var mediaKeyBytes = base64ToBytes(mediaKeyBase64);
    
    // STEP 2: Expand it to 112 bytes using HKDF with "WhatsApp Image Keys" as input key material
    
    var hkdf = new HKDF("sha256", new Uint8Array(32), mediaKeyBytes);
    hkdf.derive("WhatsApp Image Keys", 112, function (mediaKeyExpanded)
    {
        console.log("mediaKeyExpanded: " + mediaKeyExpanded.toString("hex") + " (" + mediaKeyExpanded.length + " bytes)");
        
        // STEP 3: Split mediaKeyExpanded into iv and cipherKey (macKey and refKey are not needed for decoding)

        var iv = mediaKeyExpanded.slice(0, 16);
        var cipherKey = mediaKeyExpanded.slice(16, 48);
        
        console.log("iv: " + iv.toString("hex") + " (" + iv.length + " bytes)");
        console.log("cipherKey: " + cipherKey.toString("hex") + " (" + cipherKey.length + " bytes)");
        
        // STEP 4: Download .enc file (already loaded in encodedBytes) and discard the last 10 bytes (mac is not needed for decoding)
        
        encodedBytes = encodedBytes.slice(0, -10);
        
        // STEP 5: Validate media data. Skipping because it's not needed for decoding.
        // STEP 6: Decrypt file with AES-CBC using cipherKey and iv, and unpad it.
        
        var decipher = crypto.createDecipheriv("aes-256-cbc", cipherKey, iv);
        decipher.update(encodedBytes);
        var decoded = decipher.final();
        
        console.log("decodedHex: " + decoded.toString("hex") + " (" + decoded.length + " bytes)");
        
        //Output decodedHex is wrong, it should be = "ffd8ffe000104a46494600010100000100010000ffdb00430001010101010101010101010101020203020202020204030302030504050505040404050607060505070604040609060708080808080506090a09080a07080808ffdb00430101010102020204020204080504050808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808ffc00011080004000403012200021101031101ffc4001500010100000000000000000000000000000009ffc4001d1000020201050000000000000000000000000102030406071112b1ffc40014010100000000000000000000000000000009ffc40017110100030000000000000000000000000000010231ffda000c03010002110311003f00999bb55ab35ae7ca4e5cf55eb0005ed320ac3fffd9";
    });
    
}


// Utils

function hexToBytes(hexStr)
{
    var intArray = [];
    for (var i = 0; i < hexStr.length; i+=2)
    {
        intArray.push(parseInt(hexStr.substr(i, 2), 16));
    }
    return new Uint8Array(intArray);
}

function base64ToBytes(base64Str)
{
    var binaryStr =  atob(base64Str);
    var byteArray = new Uint8Array(binaryStr.length);
    for (var i = 0; i < binaryStr.length; i++)
    {
        byteArray[i] = binaryStr.charCodeAt(i);
    }
    return byteArray;
}

And this is the output:

encodedHex: 15a15b57f8fe2cd238089b5d7cf021f3a870e70843b4267294e244d5868e14355810175c1657ff9e0d5b461a60c986a8bac76531566e7c46a986369f902ff695cd667294acb4dd7daf1f71b4f31444d1838c858ce0257f56c90ebf1b7ee9401d99c7f79c162b5a2eed4324b3d106dbfa99a3070c2c9e7a3b1f2e924b184e7c9557adc3a61b427963081b15a6146f13161cdd3d0aeccd58640fd3cd5f0fdfcc4f158ae8bdaf15e5587b5088bc6bec78091ebddae9ffcb651e3099102f9fd57ea9a88efc15547d49a9720c53fe839d11c4536c806c500462f4da53312ddd799c86f698f55d5330f1b8e344b4ba08193a052baf5d4092322a4c739b22dbe40103b286893c3d922c6b0e0dfdcb466ce6ecb3fc9b424eeed8e08ca01ec4f42515ecae6b99a7d69fdcac269c6e914268036bdb1e7623ae219b552a27e88be0eabaa532c0edbb222ecb186e8647 (330 bytes)
mediaKeyExpanded: b3326e24e192940b8f16ed6ce7f4bf536bb285165def426beb6379f5b1c5ea337fdf1dd5cbfb46c958e0ea2a9c149b102e5c5268b809f54244c0358a254cbacfefff07e27626983e8599c6ff2cf4f092a1ae646aac9658052cf0d0b06292ca6be05764485c7148866513fcf5eef5b500 (112 bytes)
iv: b3326e24e192940b8f16ed6ce7f4bf53 (16 bytes)
cipherKey: 6bb285165def426beb6379f5b1c5ea337fdf1dd5cbfb46c958e0ea2a9c149b10 (32 bytes)
decodedHex: b0005ed320ac3fffd9 (9 bytes)

The output (decodedHex) is wrong, it should be a much bigger 313 byte file. Any hint on what I'm doing wrong? I don't know the value of AES.block_size but I'm using "aes-256-cbc" as per link and because the key length is wrong for 128.

It would be great if someone could try to reproduce this in Python with the same input data provided and be able to generate the output small .jpeg file.

Logo design

Hi, are you guys interested in having a logo for your app? Tell me what kind of logo you would like and I send you some ideas.

New version?

Hi today erro

window.Store.Wap.profilePicFind("[email protected]").then(res => console.log(res));

VM1372:1 Uncaught TypeError: Cannot read property 'Wap' of undefined
at :1:14
(anonymous) @ VM1372:1

can't connect: message type: closed

Hi,
I've been using this project for a while without problems but since the last 2 days I've not been able to connect.
I get every time the following message on Chrome console while trying to connect to he API:
got message {from: "meta", type: "closed"}

Above I get the following message:
WebSocket connection to 'ws://localhost:2019/' failed: Connection closed before receiving a handshake response

This happens every time I click on the Click to connect to API button.

Backend, API server and HTTP server seems to be running fine.

Parameters for the "login" command

Have you already tried to figure out what parameters are used for the "login" command? Here is a screenshot from Chrome DevTools:
screen shot 2018-03-20 at 11 51 51
This command is sent by the WhatsApp web application when an already authenticated client reopens a web socket connection (for example after page reloading or browser reopening).

Hint: I noticed that after sending a "login" command, a server "Conn" response no longer contains a "secret" along with other parameters. It confirms that the server implies that the client is already authenticated and has all required credentials (which is a perfectly valid assumption).

Messages history

Tell me please. How can I get a message history with a contact? Thank you!

how to get image and send message

Hello sigalor,
i started my panel and login successfully .
but how can find my image and send message. please guide me
thank Manoj Rao

Inaccuracy in the step #12 description

Hi, and thanks for this titanic work!
It seems there is some inaccuracy in the description of the step #12:

Encode a message containing 32 null bytes with the shared secret using HMAC SHA256. Take this value and extend it to 80 bytes using HKDF. Call this value sharedSecretExpanded. This is done with HKDF(HmacSha256("\0"*32, sharedSecret), 80).

According to the code 32 null bytes here is used as a key and not as a message.
I'm implementing the described algorithm for iOS and still cannot pass the HMAC validation, just trying to find where I could be wrong.

add subscribe

@sigalor
for subscribe iv add to
backend
whatapp-web-backend.py
with
elif cmd == "backend-subscribe": currWhatsAppInstance.subscribe(callback); self.sendJSON({ "type": "resource_subscribe", "resource": "whatsapp", "resource_instance_id": obj["whatsapp_instance_id"] }, tag);

and
add to

whatsapp.py

def subscribe(self): messageTag = str(getTimestamp()); self.activeWs.send(messageTag+',["action","presence","subscribe","number"]');

it's work greet it's subscribe but how can I edit it get parameter number like
def subscribe(number)

Can I initiate a new chat with a number not yet saved to my contacts?

I need to send messages to numbers I have not yet saved to my contacts through WhatsApp. WhatsApp officially said that they provide an API, click to chat, that responds to an open-xdg native application, chats to a new number and creates a new room for that.
Is it possible to create a new chat with a new number without opening the native app or staying on the website of whatsapp-web_reveng? Alternatively, does an API exist to do this in a humanly way?

How do you keep WA online?

Hi,
Simple question how do you keep your WA account/s online? I mean WA app must be always online to be able to access WA web?

Message sending flow

Hi there,

we are trying to send messages over the websocket connection, but WhatsApp always responds with a 401 stastus code. Our message object looks like this:

[
    "action",
    {
        "type": "relay",
        "epoch": "17"
    },
    [
        [
            "message",
            null,
            {
                "key": {
                    "remoteJid": "[email protected]",
                    "fromMe": true,
                    "id": "01234567890ABCDEF0123"
                },
                "message": {
                    "conversation": "Your message"
                },
                "messageTimestamp": 1526455013,
                "status": 1
            }
        ]
    ]
]

Our workflow looks like this:

  1. marshal the inner object with protobuf
  2. parse the node to the binary format
  3. encrypt the binary with cbc and the encKey
  4. take the id and put it into the output message as the messageTag followed by a ','
  5. hash the cipher with hmac and append the first 32 bytes to the output message
  6. append the cipher to the output message
  7. send the message

We implemented our own parser in golang and just wanted to check if you have more information on message sending. Our parser seems to be working, at least we can parse messages back and forth between the binary format and json with protobuf inside

If you set a breakpoint in the app.js in line 43808 you can check out the messages sent through WhatsAppWeb (see e.binaryOpts.debugObj.pb / xml for the data and e.serialize() for the ArrayBuffer).
We are unable to determine how the id is generated and don´t know if it´s relevant for the message we are sending.
We also don´t know if epoch is relevant, but it seems to be incremental.

How to Login

Hello
I am a newbie I followed the instructions and successfully started the project, but I dont understand how to login in the system, Can somebody please elaborate the login steps
Thanks in advance

Getting video and VoiceNote

When the client receives video, I get an exception:

File: "whatsapp.py", line 181, in onMessage
[1]     {"message_type": messageType});
[1]   File "./backend/whatsapp-web-backend.py", line 73, in <lambda>
[1]     getAttr(cbSelf, "args")), moreArgs), getAttr(cbSelf, "tag")),
[1]   File "./backend/whatsapp-web-backend.py", line 35, in sendJSON
[1]     eprint("sending " + json.dumps(obj).encode('ascii'));
[1]   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 243, in dumps
[1]     return _default_encoder.encode(obj)
[1]   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode
[1]     chunks = self.iterencode(o, _one_shot=True)
[1]   File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode
[1]     return _iterencode(o, 0)
[1] UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 4: invalid start byte

And I cant get the encoded video

How to send message ??

Message receiving works fine. But million dollar question :) HOW TO SEND MESSAGE BACK TO CONTACT ??

Reconnection problem

Hi guys, i'm storing the conn and login infos using pickle:

`
with open('conninfo', 'wb') as handle:
pickle.dump(self.connInfo, handle, protocol=pickle.HIGHEST_PROTOCOL)

    with open('logininfo', 'wb') as handle:
        pickle.dump(self.loginInfo, handle, protocol=pickle.HIGHEST_PROTOCOL) `

I restore those variables and then i can reconnect sucessfully, but only once! in the third try i receive a challenge message:

message:s1,["Cmd",{"type":"challenge","challenge":"wmpflh6NMtwbbjHgQ0iVpI9LNchZlIAwiOVauqmkGb4="}]

I tried to simulate that in the web client but no success, i didn't find any way to receive this challenge in the client.

Any ideias @sigalor ?

get MediaKey

Hello!

I saw that we return from this amazing project when I get a file it returns me to mediaKey, I would like to know if this return is done by whatsapp server or has some way of generating it based on media_enc_hash and media_enc.

Connection of backend to WhatsApp failed: Timeout. Click to try again.

Connection of backend to WhatsApp failed: Timeout. Click to try again.

got message { command: 'backend-connectWhatsApp',
[0] from: 'client',
[0] type: 'call' }
[1] 1519677652386,{"command":"backend-connectWhatsApp","from":"api2backend","type":"call"}
[1] {u'from': u'api2backend', u'command': u'backend-connectWhatsApp', u'type': u'call'}
[1] [Errno -2] Name or service not known
[1] sending {"type": "resource_gone", "resource": "whatsapp", "resource_instance_id": "2d983339402140a39327621250975637", "from": "backend"}
[1] WhatsApp backend Websocket closed.
[0] got message { type: 'resource_gone',
[0] resource: 'whatsapp',
[0] resource_instance_id: '2d983339402140a39327621250975637',
[0] from: 'backend' }

Can I find the keys in the whatsapp web client local storage?

Hi Guys,

reading the readme of this project made me wonder. The text says:

The keysDecrypted variable is 64 bytes long and contains two keys, each 32 bytes long. The encKey is used for decrypting binary messages sent to you by the WhatsApp Web server or encrypting binary messages you send to the server. The macKey is needed to validate the messages sent to you:  
encKey: keysDecrypted[:32]
macKey: keysDecrypted[32:64]

When I use the official web client, would these be keys that are stored in my browsers local storrage? there is a variable there called WASecretBundle...

And... I read:

AESDecrypt(encKey, messageContent[32:])

Which AESDecrypt function is this? I can't seem to find the source of a AESDecrypt function.. and, doesn't this need a IV parameter (initialization vector)?

Cannot conect to the server

When I try to connect to the server

[0] got message  { command: 'api-connectBackend', from: 'client', type: 'call' }
[1] sending {"type": "connected", "from": "backend"}
[1] ('127.0.0.1', 50372) connected to backend
[0] got message  { from: 'meta', type: 'opened' }
[0] got message  { type: 'connected', from: 'backend' }
[0] got message  { command: 'backend-connectWhatsApp',
[0]   from: 'client',
[0]   type: 'call' }
[1] 1529099960012,{"command":"backend-connectWhatsApp","from":"api2backend","type":"call"}
[1] {u'from': u'api2backend', u'command': u'backend-connectWhatsApp', u'type': u'call'}
[1] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:579)
[1] sending {"type": "resource_gone", "resource": "whatsapp", "resource_instance_id": "1c30db64f3d64f6b92469685d17c4910", "from": "backend"}
[1] WhatsApp backend Websocket closed.

Converting Media files

This is the object tree I get when I receive an image, how do I convert this to normal file?

{
    "actionKey": "msg",
    "meta": {
        "add": "relay"
    },
    "node": [{
        "chat": "[email protected]",
        "meta": {
            "add": "relay"
        },
        "msg": {
            "ack": 0,
            "body": "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",
            "broadcast": false,
            "clientUrl": "https://mmg-fna.whatsapp.net/d/f/xxx.enc",
            "filehash": "fn5nPoGofeP3lKvY0TUVfQBPEMZk9XaOq3vFNwgi1qc=",
            "from": "[email protected]",
            "id": {
                "fromMe": false,
                "id": "xxx",
                "remote": "[email protected]"
            },
            "invis": false,
            "mediaKey": "s9Fmwi/40YdCvkG3Gh5U8QcMdCfdFXV1U5hOJ+8uzis=",
            "mimetype": "image/jpeg",
            "protocolMessageKey": {},
            "size": 140046,
            "star": false,
            "subtype": "unknown",
            "t": 1525430894,
            "to": "[email protected]",
            "type": "image"
        }
    }]
}

WhatsApp APK not working after recompilation

This issue came from #45.
I have recompiled the WhatsApp APK without changing its source code, but it's not working after the recompilation process, because they are validating their APK signature.
I have also tried the same with GBWhatAapp; here, I don't get any errors and generally, it's working fine, but there is an issue with the network connection.
So I asked how to bypass this signature validation and @sigalor commented as he has already recompiled the WhatsApp APK and it's working fine. I'd appreciate if he would share how he did it.

EDIT: I have enabled logs for WhatsApp APK and I'm getting a bad-token error when I try to do registration or request-sms.

[question] end-to-end encryption in whatsapp web? push notifications?

Hi, short question regarding encryption: Is WhatsApp-Web properly end-to-end encrypted? If i understood right, the phone needs to be online at all times in order to encrypt messages. So the chain of communication works like this(?): 1. Sending message via Whatsapp Web --> 2. message sent to WhatsApp server (websocket) -->3. server forwards message to phone --> phone encrypts message and sends it out to the server again?
Did I understand that right? Is the communication from step 1 - 3 readable by WhatsApp?
Also: In WhatsApp-Web, you can enable push notifications. In order for them to work, the messages need to be routed through a chrome/mozilla push-service. Does that mean that Google/Mozilla can read all the messages?
Thanks in advance!

Error when run npm start

Hello, I'm getting an error when trying to run for the first time.
npm start

[email protected] start /home/jnadinh/whatsapp-web-reveng-master
npm run dev
[email protected] dev /home/jnadinh/whatsapp-web-reveng-master
concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp_web_backend.py -i client -e py" "sass --sourcemap=none --watch `client/css/main.scss:client/css/main.css"

[2] /bin/sh: sass: no se encontró la orden
[2] sass --sourcemap=none --watch client/css/main.scss:client/css/main.css exited with code 127
--> Sending SIGTERM to other processes..
[1] ./node_modules/.bin/nodemon --exec python ./backend/whatsapp_web_backend.py -i client -e py exited with code null
[0] ./node_modules/.bin/nodemon index.js -i client -e js exited with code null
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp_web_backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-06-13T02_11_45_386Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `npm run dev`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-06-13T02_11_45_439Z-debug.log

Logfile:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/bin/npm', 'start' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle [email protected]~prestart: [email protected]
6 info lifecycle [email protected]~start: [email protected]
7 verbose lifecycle [email protected]~start: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~start: PATH: /usr/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/jnadinh/whatsapp-web-reveng-master/node_modules/.bin:/sbin:/bin:/usr/sbin:/usr/bin
9 verbose lifecycle [email protected]~start: CWD: /home/jnadinh/whatsapp-web-reveng-master
10 silly lifecycle [email protected]~start: Args: [ '-c', 'npm run dev' ]
11 silly lifecycle [email protected]~start: Returned: code: 1  signal: null
12 info lifecycle [email protected]~start: Failed to exec start script
13 verbose stack Error: [email protected] start: `npm run dev`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd /home/jnadinh/whatsapp-web-reveng-master
16 verbose Linux 3.10.0-514.el7.x86_64
17 verbose argv "/usr/bin/node" "/bin/npm" "start"
18 verbose node v8.11.2
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] start: `npm run dev`
22 error Exit status 1
23 error Failed at the [email protected] start script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

ERR_CONNECTION_REFUSED

Good afternoon people!
I did the installation and can start with npm start, but when access I'm with this rro, could someone help me?

WebSocket connection to 'ws://localhost:2019/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

Document that the binary message comes with a tag that should be discarted

First, thanks a lot by this extensive documentation

In this section of the documentation:

Validating and decrypting messages
Now that you have the two keys, validating and decrypting messages the server sent to you is quite easy. Note that this is only needed for binary messages, all JSON you receive stays plain. The binary messages always have 32 bytes at the beginning that specify the HMAC checksum.

Took me a while to realize that the binary message comes with a tag that should be discarted.
I had to look in the implementation to understand that. I guess that this section could describe this too.

index_jsdemo.js Upgrade Required

node -v
v10.2.1

npm -v
5.10.0

gem -v
2.5.2.1

python -v 2.7

pip -V pip 10.0.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)

OS Ubuntu 16.04 LTS

node index_jsdemo.js
whatsapp-web-reveng jsdemo server listening on port 2021

Browser Chrome
Version 66.0.3359.181 (Official Build) (64-bit)

try open
http://localhost:2021/

Upgrade Required

console browser
:2021/favicon.ico:1 Failed to load resource: the server responded with a status of 426 (Upgrade Required)
localhost/:1 Failed to load resource: the server responded with a status of 426 (Upgrade Required)

Can't run on Windows 10

It took quite some time to get all the depencies, but I managed to do it, and this is what happens when I try to run the project. (Sorry for the poor formatting) fixed thanks to @SuperSandro2000!

I guess it seems like a Windows issue?


> [email protected] start C:\Users\User\Documents\Whatsapp\Web\whatsapp-web-reveng
> npm run dev


> [email protected] dev C:\Users\User\Documents\Whatsapp\Web\whatsapp-web-reveng
> concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"

[0] '.' is not recognized as an internal or external command,
[0] operable program or batch file.
[1] '.' is not recognized as an internal or external command,
[1] operable program or batch file.
[1] ./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py exited with code 1
--> Sending SIGTERM to other processes..
[0] ./node_modules/.bin/nodemon index.js -i client -e js exited with code 1
[2] sass --sourcemap=none --watch client/css/main.scss:client/css/main.css exited with code 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\User\AppData\Roaming\npm-cache\_logs\2018-04-10T17_58_26_327Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `npm run dev`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\User\AppData\Roaming\npm-cache\_logs\2018-04-10T17_58_26_501Z-debug.log````

Which version of windows works

Hello

First of all, excellent project friend, I have been using yowsup for some time and I found out that your project existed and I want to try it.

My question is, what version of Windows works? I have Windows 10 and the truth is giving me many errors, I have installed the Node 8, python 2.7.15 64 bits.

The error that most presents is:

gcc exited with status 1

Thank you.

Error when running npm start

Hello, I'm getting an error when trying to run for the first time.

npm start

> [email protected] start D:\sourcesadg\Whatsapp
> npm run dev


> [email protected] dev D:\sourcesadg\Whatsapp
> concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"

[0] '.' is not recognized as an internal or external command,
[0] operable program or batch file.
[0] ./node_modules/.bin/nodemon index.js -i client -e js exited with code 1
--> Sending SIGTERM to other processes..
[1] '.' is not recognized as an internal or external command,
[1] operable program or batch file.
[1] ./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py exited with code 1
[2] sass --sourcemap=none --watch client/css/main.scss:client/css/main.css exited with code 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `concurrently --kill-others "./node_modules/.bin/nodemon index.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Alejandro\AppData\Roaming\npm-cache\_logs\2018-04-13T14_19_31_443Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `npm run dev`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Alejandro\AppData\Roaming\npm-cache\_logs\2018-04-13T14_19_31_487Z-debug.log

Logfile:

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'D:\\SourcesADG\\Whatsapp\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'dev' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle [email protected]~predev: [email protected]
6 info lifecycle [email protected]~dev: [email protected]
7 verbose lifecycle [email protected]~dev: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]~dev: PATH: D:\SourcesADG\Whatsapp\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\sourcesadg\Whatsapp\node_modules\.bin;C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;D:\sourcesadg\Whatsapp\node_modules\.bin;C:\Python27\;C:\Python27\Scripts;C:\Program Files\Microsoft MPI\Bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;C:\Program Files\Microsoft SQL Server\110\DTS\Binn\;C:\Users\Alejandro\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files\7-Zip;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft\Web Platform Installer\;C:\openssl;C:\Program Files\Java\jdk1.8.0_131\bin;D:\Drivers y programas\ngrok;C:\Program Files\nodejs\;C:\Program Files\MongoDB\Server\3.6\bin\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\;C:\Users\Alejandro\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Alejandro\AppData\Local\Programs\Python\Python36-32\;C:\Users\Alejandro\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\Alejandro\AppData\Roaming\npm
9 verbose lifecycle [email protected]~dev: CWD: D:\sourcesadg\Whatsapp
10 silly lifecycle [email protected]~dev: Args: [ '/d /s /c',
10 silly lifecycle   'concurrently --kill-others "./node_modules/.bin/nodemon index_jsdemo.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"' ]
11 silly lifecycle [email protected]~dev: Returned: code: 1  signal: null
12 info lifecycle [email protected]~dev: Failed to exec dev script
13 verbose stack Error: [email protected] dev: `concurrently --kill-others "./node_modules/.bin/nodemon index_jsdemo.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (D:\SourcesADG\Whatsapp\node_modules\npm\node_modules\npm-lifecycle\index.js:283:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (D:\SourcesADG\Whatsapp\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd D:\sourcesadg\Whatsapp
16 verbose Windows_NT 10.0.16299
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "D:\\SourcesADG\\Whatsapp\\node_modules\\npm\\bin\\npm-cli.js" "run" "dev"
18 verbose node v8.9.4
19 verbose npm  v5.8.0
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] dev: `concurrently --kill-others "./node_modules/.bin/nodemon index_jsdemo.js -i client -e js" "./node_modules/.bin/nodemon --exec python ./backend/whatsapp-web-backend.py -i client -e py" "sass --sourcemap=none --watch client/css/main.scss:client/css/main.css"`
22 error Exit status 1
23 error Failed at the [email protected] dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Issues sending a message

Hi there, thanks for doing all the hard work finding this out and putting it all in this repo!

I'm having an issue sending a message and am unable to find out what I'm doing wrong.

I used this: #63 (comment) and the golang library from @Rhymen as a reference (https://github.com/Rhymen/go-whatsapp).

The serialization I'm using is the whatsapp_binary_writer.py included in this project.

These are the steps I'm taking:

  • Create a new WebMessageInfo proto object with the following fields set:
    • key.fromMe = true
    • key.remoteJid = remoteJid
    • key.id = 10 byte hex code (I've also tried 32 bytes)
    • messageTimestamp = unix time now
    • status = 1
    • message.conversation = content of message
  • Serialize this WebMessageInfo
  • Create the object ["action", { "type": "relay", "epoch": "1" }, [ [ "message", None, <serializedWebMessageInfo> ] ]] and pass it through whatsappWriteBinary
  • create a tag with getTimeStamp
  • create a HMAC SHA265 hash of the object created with the macKey
  • AES encrypt the object created with the encKey
  • send the following message: <tag>,<0x16><0x00><hashed><encrypted>

I don't get any response from WA, so it's hard for me to find out what exactly goes wrong. @Rhymen or @sigalor have you encountered this? And if so; could you help me in the right direction?

Thanks so much!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.