From 69cfb66e426bd6c4ad339d1e9eca855eb5b7df1f Mon Sep 17 00:00:00 2001 From: louis Date: Tue, 14 Jul 2020 09:19:29 +0200 Subject: [PATCH 1/4] Start refactoring, cleaning, fixing, move sniffer out --- .circleci/config.yml | 18 -- .github/workflows/ci.yml | 25 ++ .github/workflows/npm-publish.yml | 25 ++ README.md | 179 ++++++++++---- data/1.13/d2gs.json | 52 +++- data/1.14/d2gs.json | 7 + examples/sniffer/package.json | 12 - examples/sniffer/sniffer.js | 386 ------------------------------ index.js | 4 +- lib/client/clientD2gs.js | 13 +- lib/client/createClientD2gs.js | 16 +- lib/client/createClientDiablo.js | 4 +- lib/client/createClientMcp.js | 1 + lib/utils/logger.js | 30 +++ 14 files changed, 287 insertions(+), 485 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/npm-publish.yml delete mode 100644 examples/sniffer/package.json delete mode 100644 examples/sniffer/sniffer.js create mode 100644 lib/utils/logger.js diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 5e6d704..0000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: 2 - -jobs: - build: - parallelism: 1 - docker: - - image: circleci/node:10 - steps: - - checkout - - restore_cache: - key: dependency-cache-{{ checksum "package.json" }} - - run: sudo apt-get install libpcap-dev - - run: npm i - - save_cache: - key: dependency-cache-{{ checksum "package.json" }} - paths: - - ./node_modules - - run: npm test diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bbeb50a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,25 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [14.x] + + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + run: npm test \ No newline at end of file diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml new file mode 100644 index 0000000..9d178bf --- /dev/null +++ b/.github/workflows/npm-publish.yml @@ -0,0 +1,25 @@ +name: npm-publish +on: + push: + branches: + - master # Change this to your default branch +jobs: + npm-publish: + name: npm-publish + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@master + - name: Set up Node.js + uses: actions/setup-node@master + with: + node-version: 10.0.0 + - name: Publish if version has been updated + uses: pascalgn/npm-publish-action@4f4bf159e299f65d21cd1cbd96fc5d53228036df + with: # All of theses inputs are optional + tag_name: "%s" + tag_message: "%s" + commit_pattern: "^Release (\\S+)" + env: # More info about the environment variables in the README + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Leave this as is, it's automatically generated + NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} # You need to set this in your repo settings \ No newline at end of file diff --git a/README.md b/README.md index 213601c..c91ae25 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,88 @@ + # diablo2-protocol -[![NPM version](https://img.shields.io/npm/v/diablo2-protocol.svg)](http://npmjs.com/package/diablo2-protocol) -[![Build Status](https://img.shields.io/circleci/project/MephisTools/diablo2-protocol/master.svg)](https://circleci.com/gh/MephisTools/diablo2-protocol) -[![Discord Chat](https://img.shields.io/badge/discord-here-blue.svg)](https://discord.gg/9RqtApv) -[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/MephisTools/diablo2-protocol) + + +[![Contributors][contributors-shield]][contributors-url] +[![Forks][forks-shield]][forks-url] +[![Stargazers][stars-shield]][stars-url] +[![Issues][issues-shield]][issues-url] +[![MIT License][license-shield]][license-url] +[![NPM version](npm-shield)](npm-url) +[![Build Status](build-shield)](build-url) +[![Discord](discord-shield)](https://discord.gg/9RqtApv) +[![Try it on gitpod](gitpod-shield)](gitpod-url) + + + + + +
+

+ + Logo + + +

Best-README-Template

+ +

+ An awesome README template to jumpstart your projects! +
+ Explore the docs » +
+
+ View Demo + · + Report Bug + · + Request Feature +

+

+ + +## Table of Contents + +* [About the Project](#about-the-project) + * [Built With](#built-with) +* [Getting Started](#getting-started) + * [Prerequisites](#prerequisites) + * [Installation](#installation) +* [Usage](#usage) +* [Projects using diablo2-protocol](#projects-using-diablo2-protocol) +* [Documentation](#documentation) +* [Roadmap](#roadmap) +* [Contributing](#contributing) +* [License](#license) +* [Acknowledgements](#acknowledgements) + + +## About The Project Network protocol for diablo 2 : create client and servers for diablo 1.13 and 1.14. -[Bot example](https://www.youtube.com/watch?v=KYPTijLiwMI&feature=youtu.be) +* [Bot video](https://www.youtube.com/watch?v=KYPTijLiwMI&feature=youtu.be) + +### Built With -[Sniffer example](https://www.youtube.com/watch?v=R5yfRTR3-mY) +* +* + +## Getting Started -## Installation +### Prerequisites +```sh +npm install npm@latest -g ``` + +### Installation + +```js npm install diablo2-protocol ``` + ## Usage Follow bot in a few lines @@ -50,52 +115,64 @@ start() ``` -See docs/API.md - -Follow bot example - -``` -node examples/simpleBot.js [-h] [-v] -au USERNAME -ap PASSWORD -c CHARACTER -gn \ - GAMENAME -gp GAMEPASSWORD -gs GAMESERVER -s SIDSERVER \ - [-dv DIABLOVERSION] -k1 KEYCLASSIC -k2 KEYEXTENSION -``` - -Sniffer (Linux / MacOS only) +## Projects using diablo2-protocol -``` -cd example/sniffer -npm install -sudo node sniffer.js -``` - -## Projects using diablo-protocol +* [mephistools-sniffer](https://github.com/MephisTools/mephistools-sniffer) diablo 2 packet sniffing. +* [diablo2-live-viewer](https://github.com/MephisTools/diablo2-live-viewer) web map hack, packets table and inventory. +* [AutoTathamet](https://github.com/MephisTools/AutoTathamet) high level API to build bots for example -* [diablo2-live-viewer](https://github.com/MephisTools/diablo2-live-viewer) displaying a live diablo map and live packets table -* [AutoTathamet](https://github.com/MephisTools/AutoTathamet) Create Diablo2 bots with a powerful, stable, and high level JavaScript API. +## Documentation +* + ## Roadmap -- [ ] Test all packets -- [x] Sniffer -- [x] more documentation -- [ ] Proxy ? -- [ ] More examples -- [ ] Web / mobile interface - -## Docs - -### Diablo - -* doc of diablo2 implementations https://github.com/MephisTools/diablo2-protocol/wiki/Diablo-2-implementations-and-docs -* packets general description http://www.blizzhackers.cc/viewtopic.php?f=182&t=444264 -* dump of a normal connection sequence http://www.blizzhackers.cc/viewtopic.php?t=406445 -* index of packets https://bnetdocs.org/packet/index -* example of packet doc https://bnetdocs.org/packet/146 -* basic example of packet parsing in python of a diablo2 packet https://gist.github.com/rom1504/8d2824d9d89dbd8b991b102696a1321e - -### Libs - -* node basic client implementation https://nodejs.org/api/net.html#net_net_createconnection_options_connectlistener -* protodef js implementation doc https://github.com/ProtoDef-io/node-protodef https://github.com/ProtoDef-io/node-protodef/blob/master/doc/api.md and https://github.com/ProtoDef-io/node-protodef/blob/master/example.js -* protodef types https://github.com/ProtoDef-io/ProtoDef/blob/master/doc/datatypes.md -* nodepcap for sniffing https://github.com/node-pcap/node_pcap \ No newline at end of file + +See the [open issues](https://github.com/Mephistools/diablo2-protocol/issues) for a list of proposed features (and known issues). + + +## Contributing + +Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + + +## License + +Distributed under the MIT License. See `LICENSE` for more information. + + + +## Acknowledgements + +* [GitHub Emoji Cheat Sheet](https://www.webpagefx.com/tools/emoji-cheat-sheet) +* [Img Shields](https://shields.io) +* [Choose an Open Source License](https://choosealicense.com) +* [GitHub Pages](https://pages.github.com) + + + +[contributors-shield]: https://img.shields.io/github/contributors/Mephistools/diablo2-protocol.svg?style=flat-square +[contributors-url]: https://github.com/Mephistools/diablo2-protocol/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/Mephistools/diablo2-protocol.svg?style=flat-square +[forks-url]: https://github.com/Mephistools/diablo2-protocol/network/members +[stars-shield]: https://img.shields.io/github/stars/Mephistools/diablo2-protocol.svg?style=flat-square +[stars-url]: https://github.com/Mephistools/diablo2-protocol/stargazers +[issues-shield]: https://img.shields.io/github/issues/Mephistools/diablo2-protocol.svg?style=flat-square +[issues-url]: https://github.com/Mephistools/diablo2-protocol/issues +[license-shield]: https://img.shields.io/github/license/Mephistools/diablo2-protocol.svg?style=flat-square +[license-url]: https://github.com/Mephistools/diablo2-protocol/blob/master/LICENSE.txt +[product-screenshot]: images/screenshot.png +[npm-shield]: https://img.shields.io/npm/v/diablo2-protocol.svg +[npm-url]: http://npmjs.com/package/diablo2-protocol +[build-shield]: https://github.com/Mephistools/diablo2-protocol/workflows/CI/badge.svg +[build-url]: https://github.com/Mephistools/diablo2-protocol/actions?query=workflow%3A%22CI%22 +[discord-shield]: https://img.shields.io/badge/chat-on%20discord-brightgreen.svg +[discord-url]: https://discord.gg/9RqtApv +[gitpod-shield]: https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg +[gitpod-url]: https://gitpod.io/#https://github.com/MephisTools/diablo2-protocol diff --git a/data/1.13/d2gs.json b/data/1.13/d2gs.json index ee3db24..cb52ad5 100644 --- a/data/1.13/d2gs.json +++ b/data/1.13/d2gs.json @@ -878,6 +878,7 @@ } ]], "D2GS_GAMEEXIT": ["container", []], + "D2GS_UNKNOWN3": ["container", []], "packet": [ "container", [ @@ -930,6 +931,7 @@ "0x28": "D2GS_INSERTSOCKETITEM", "0x29": "D2GS_SCROLLTOTOME", "0x2A": "D2GS_ITEMTOCUBE", + "0x2B": "D2GS_UNKNOWN3", "0x2D": "D2GS_UNSELECTOBJ", "0x2E": "D2GS_CHATUNK1", "0x2F": "D2GS_NPCINIT", @@ -1078,7 +1080,8 @@ "D2GS_SWITCHEQUIP": "D2GS_SWITCHEQUIP", "D2GS_RESURRECTMERC": "D2GS_RESURRECTMERC", "D2GS_INVENTORYTOBELT": "D2GS_INVENTORYTOBELT", - "D2GS_GAMEEXIT": "D2GS_GAMEEXIT" + "D2GS_GAMEEXIT": "D2GS_GAMEEXIT", + "D2GS_UNKNOWN3": "D2GS_UNKNOWN3" } } ] @@ -1298,24 +1301,48 @@ { "name": "ladder", "type": "lu8" + }, + { + "name": "unknown", + "type": "lu8" } ]], "D2GS_LOADSUCCESSFUL": ["container", []], "D2GS_LOADACT": ["container", [ { "name": "act", - "type": "lu8" + "type": "lu32" }, { "name": "mapId", "type": "lu32" }, + { + "name": "unknown1", + "type": "lu32" + }, + { + "name": "unknown2", + "type": "lu32" + }, + { + "name": "unknown3", + "type": "lu32" + }, + { + "name": "unknown4", + "type": "lu32" + }, { "name": "areaId", - "type": "lu16" + "type": "lu32" + }, + { + "name": "func1", + "type": "lu32" }, { - "name": "unkwown", + "name": "func2", "type": "lu32" } ]], @@ -2783,6 +2810,13 @@ } ]], "D2GS_UNKNOWN38": ["container", []], + "D2GS_UNKNOWN39": ["container", [ + {"name":"unknown","type" : ["array", {"count": 356, "type": "lu8" } ] } + ]], + "D2GS_UNKNOWN40": ["container", [ + {"name":"unknown","type" : ["array", {"count": 12, "type": "lu8" } ] } + ]], + "D2GS_UNKOWNFF": ["container", []], "packet": [ "container", [ @@ -2974,7 +3008,10 @@ "0xB2": "D2GS_UNKNOWN37", "0xB3": "D2GS_IPBAN", "0xB4": "D2GS_UNKNOWN38", - "0xB5": "D2GS_OVERHEAD" + "0xB5": "D2GS_OVERHEAD", + "0xD5": "D2GS_UNKNOWN39", + "0xF5": "D2GS_UNKNOWN40", + "0xFF": "D2GS_UNKOWNFF" } } ] @@ -3167,7 +3204,10 @@ "D2GS_UNKNOWN36": "D2GS_UNKNOWN36", "D2GS_UNKNOWN37": "D2GS_UNKNOWN37", "D2GS_IPBAN": "D2GS_IPBAN", - "D2GS_UNKNOWN38": "D2GS_UNKNOWN38" + "D2GS_UNKNOWN38": "D2GS_UNKNOWN38", + "D2GS_UNKNOWN39": "D2GS_UNKNOWN39", + "D2GS_UNKNOWN40": "D2GS_UNKNOWN40", + "D2GS_UNKOWNFF": "D2GS_UNKOWNFF" } } ] diff --git a/data/1.14/d2gs.json b/data/1.14/d2gs.json index 63bd19f..d536ef0 100644 --- a/data/1.14/d2gs.json +++ b/data/1.14/d2gs.json @@ -1298,6 +1298,10 @@ { "name": "ladder", "type": "lu8" + }, + { + "name": "unknown", + "type": "lu8" } ]], "D2GS_LOADSUCCESSFUL": ["container", []], @@ -2783,6 +2787,7 @@ } ]], "D2GS_UNKNOWN38": ["container", []], + "D2GS_UNKNOWN39": ["container", []], "D2GS_UNKOWNFF": ["container", []], "packet": [ "container", @@ -2976,6 +2981,7 @@ "0xB3": "D2GS_IPBAN", "0xB4": "D2GS_UNKNOWN38", "0xB5": "D2GS_OVERHEAD", + "0xD5": "D2GS_UNKNOWN39", "0xFF": "D2GS_UNKOWNFF" } } @@ -3170,6 +3176,7 @@ "D2GS_UNKNOWN37": "D2GS_UNKNOWN37", "D2GS_IPBAN": "D2GS_IPBAN", "D2GS_UNKNOWN38": "D2GS_UNKNOWN38", + "D2GS_UNKNOWN39": "D2GS_UNKNOWN39", "D2GS_UNKOWNFF": "D2GS_UNKOWNFF" } } diff --git a/examples/sniffer/package.json b/examples/sniffer/package.json deleted file mode 100644 index d8f751f..0000000 --- a/examples/sniffer/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "sniffer", - "version": "0.0.0", - "private": true, - "dependencies": { - "express": "^4.16.4", - "pcap": "^2.1.0", - "pug": "^2.0.3", - "ws": "^6.1.2" - }, - "description": "A sniffer example" -} diff --git a/examples/sniffer/sniffer.js b/examples/sniffer/sniffer.js deleted file mode 100644 index 3fcb624..0000000 --- a/examples/sniffer/sniffer.js +++ /dev/null @@ -1,386 +0,0 @@ -const { supportedVersions, defaultVersion } = require('../..') - -if (process.argv.length !== 4) { - console.log('Usage : node sniffer.js ') - process.exit(1) -} - -// If the version correspond to a supported version else use default -const version = supportedVersions.find(v => v === process.argv[3]) ? process.argv[3] : defaultVersion - -/* -in a new chrome tab press f12 then do this : -const ws = new WebSocket('ws://localhost:8080') - -ws.onmessage = (message) => console.log(message.data) - */ - -const Parser = require('protodef').Parser -const networkInterface = process.argv[2] - -const pcap = require('pcap') - -const tcpTracker = new pcap.TCPTracker() - -const WebSocket = require('ws') - -const wss = new WebSocket.Server({ port: 8080 }) - -// Broadcast to all. -wss.broadcast = function broadcast (data) { - wss.clients.forEach(function each (client) { - if (client.readyState === WebSocket.OPEN) { - client.send(data) - } - }) -} - -const pcapSession = pcap.createSession(networkInterface, 'ip proto \\tcp') - -pcapSession.on('packet', function (rawPacket) { - const packet = pcap.decode.packet(rawPacket) - tcpTracker.track_packet(packet) -}) - -const FullPacketParser = require('protodef').Parser -const ProtoDef = require('protodef').ProtoDef - -const express = require('express') -const app = express() -// app.use(express.static(`${__dirname}/public`)) - -const { - protocol, - createSplitter, - decompress, - d2gsReader, - itemParser, - bitfieldLE -} = require('../..') - -const mcpToServer = new ProtoDef(false) -mcpToServer.addProtocol(protocol[version].mcp, ['toServer']) - -const mcpToClient = new ProtoDef(false) -mcpToClient.addProtocol(protocol[version].mcp, ['toClient']) - -const sidToServer = new ProtoDef(false) -sidToServer.addProtocol(protocol[version].sid, ['toServer']) - -const sidToClient = new ProtoDef(false) -sidToClient.addProtocol(protocol[version].sid, ['toClient']) - -const bnftpToServer = new ProtoDef(false) -bnftpToServer.addProtocol(protocol[version].bnftp, ['toServer']) - -const bnftpToClient = new ProtoDef(false) -bnftpToClient.addProtocol(protocol['1.13'].bnftp, ['toClient']) - -const d2gsToClient = new ProtoDef(false) -d2gsToClient.addTypes(d2gsReader) -d2gsToClient.addTypes(bitfieldLE) -d2gsToClient.addProtocol(protocol['1.13'].d2gs, ['toClient']) - -const d2gsToServer = new ProtoDef(false) -d2gsToServer.addProtocol(protocol[version].d2gs, ['toServer']) - -const toClientParser = new FullPacketParser(d2gsToClient, 'packet') -const splitter = createSplitter() -splitter.sloppyMode = true -let messagesToClient = [] -let messagesToServer = [] - -splitter.on('data', data => { - const uncompressedData = decompress(data) - - toClientParser.write(uncompressedData) -}) - -toClientParser.on('data', ({ data, buffer }) => { - try { - let { name, params } = data - - if (name === 'D2GS_ITEMACTIONWORLD' || name === 'D2GS_ITEMACTIONOWNED') { - params = itemParser(buffer) - } - wss.broadcast(JSON.stringify({ protocol: 'd2gsToClient', name, params })) - console.info('d2gsToClient : ', name, JSON.stringify(params)) - // console.log('raw', 'd2gsToClient', name, buffer) - messagesToClient.push(`d2gsToClient : ${name} ${JSON.stringify(params)}`) - } catch (err) { - console.log(err) - console.log('raw', 'd2gsToClient', buffer) - } -}) - -let clientPortSid = null -let clientPortBnFtp = null -let compression = false - -// server ports -const sidPort = '6112' -const d2gsPort = '4000' -let mcpPort = '6113' -let mcpIp = null - -const trackedPorts = new Set([sidPort, d2gsPort, mcpPort]) - -function displayD2gsToClient (data) { - try { - if (!compression) { - if (data[0] !== 0xaf) { data = data.slice(1) } - - const parsed = d2gsToClient.parsePacketBuffer('packet', data).data - - const { name, params } = parsed - wss.broadcast(JSON.stringify({ protocol: 'd2gsToClient', name, params })) - console.info('d2gsToClient (uncompressed): ', name, JSON.stringify(params)) - if (name === 'D2GS_NEGOTIATECOMPRESSION' && params.compressionMode !== 0) { - console.log('enable compression') - compression = true - } - } else { - splitter.write(data) - } - } catch (error) { - console.log('d2gsToClient : ', error.message) - console.log('raw', 'd2gsToClient', data) - } -} - -function displayParsed (proto, protoName, data, raw = false) { - try { - const { name, params } = proto.parsePacketBuffer('packet', data).data - console.log(protoName, ':', name, JSON.stringify(params)) - wss.broadcast(JSON.stringify({ protocol: protoName, name, params })) - if (raw) console.log('raw', protoName, name, data.toString('hex')) - messagesToServer.push(`${protoName}:${name} ${JSON.stringify(params)}`) - return { name, params } - } catch (error) { - if (raw) console.log('raw', protoName, data.toString('hex')) - console.log(protoName, ':', error.message) - } -} - -function displayD2gsToServer (data) { - displayParsed(d2gsToServer, 'd2gsToServer', data) -} - -function displayMcpToServer (data) { - displayParsed(mcpToServer, 'mcpToServer', data) -} - -function displayMcpToClient (data) { - displayParsed(mcpToClient, 'mcpToClient', data) -} - -function displaySidToServer (data) { - displayParsed(sidToServer, 'sidToServer', data) -} - -function displaySidToClient (data) { - const parsed = displayParsed(sidToClient, 'sidToClient', data) - if (parsed.name === 'SID_LOGONREALMEX') { - const IP = parsed.params.IP - mcpIp = IP[0] + '.' + IP[1] + '.' + IP[2] + '.' + IP[3] - mcpPort = parsed.params.port + '' - console.log(`received SID_LOGONREALMEX ${JSON.stringify({ mcpIp, mcpPort })}`) - } -} - -const challengeParserClient = new Parser(bnftpToClient, 'CHALLENGE') -challengeParserClient.on('error', err => console.log('bnftpToClient challenge error : ', err.message)) -challengeParserClient.on('data', (parsed) => { - console.info('bnftpToClient challenge : ', JSON.stringify(parsed)) -}) - -const protocolParserClient = new Parser(bnftpToClient, 'FILE_TRANSFER_PROTOCOL') -protocolParserClient.on('error', err => console.log('bnftpToClient protocol error : ', err.message)) -protocolParserClient.on('data', (parsed) => { - console.info('bnftpToClient protocol : ', JSON.stringify(parsed)) -}) - -function displayBnftpToClient (data) { - try { - protocolParserClient.write('FILE_TRANSFER_PROTOCOL') - // console.log('bnftpToClient protocol: ', JSON.stringify(bnftpToClient.parsePacketBuffer('FILE_TRANSFER_PROTOCOL', data).data)) - } catch (error) { - console.log('bnftpToClient error: ', error) - console.log('bnftpToClient protocol: ', data) - // challengeParserClient.write(data) - } -} - -const challengeParserServer = new Parser(bnftpToServer, 'CHALLENGE') -challengeParserServer.on('error', err => console.log('bnftpToServer bnftp error : ', err.message)) -challengeParserServer.on('data', (parsed) => { - console.info('bnftpToServer challenge : ', JSON.stringify(parsed)) -}) -const protocolParserServer = new Parser(bnftpToServer, 'FILE_TRANSFER_PROTOCOL') -protocolParserServer.on('error', err => console.log('bnftpToServer bnftp error : ', err.message)) -protocolParserServer.on('data', (parsed) => { - console.info('bnftpToServer protocol : ', JSON.stringify(parsed)) -}) -function displayBnftpToServer (data) { - try { - protocolParserServer.write('FILE_TRANSFER_PROTOCOL') - // console.log('bnftpToServer protocol: ', JSON.stringify(bnftpToServer.parsePacketBuffer('FILE_TRANSFER_PROTOCOL', data).data)) - // console.log('bnftpToServer protocol: ', data) - } catch (error) { - console.log('bnftpToServer error: ', error) - console.log('bnftpToServer write challenge', data) - // challengeParserServer.write(data) - } -} - -// tracker emits sessions, and sessions emit data -tcpTracker.on('session', function (session) { - const srcPort = session.src_name.split(':')[1] - const dstPort = session.dst_name.split(':')[1] - const srcIp = session.src_name.split(':')[0] - const dstIp = session.dst_name.split(':')[0] - if (!trackedPorts.has(srcPort) && !trackedPorts.has(dstPort)) { - return - } - - /* - if (dstPort === sidPort) { - if (clientPortSid === null) { - console.log('zalloooo') - clientPortSid = srcPort - } else { - clientPortBnFtp = srcPort - } - } - if (srcPort === sidPort) { - if (clientPortSid === null) { - clientPortSid = dstPort - } else { - clientPortBnFtp = dstPort - } - } */ - - session.on('start', function () { - if (srcPort === d2gsPort || dstPort === d2gsPort) { - console.log('Start of d2gs session') - } - if ((srcPort === mcpPort || dstPort === mcpPort) && (dstIp === mcpIp || srcIp === mcpIp || mcpIp === null)) { - console.log('Start of mcp session') - } - if ((srcPort === sidPort || dstPort === sidPort) && ((dstIp !== mcpIp && srcIp !== mcpIp) || mcpIp === null)) { - console.log('Start of sid session') - } - }) - session.on('data send', function (session, data) { - if (srcPort === d2gsPort) { - displayD2gsToClient(data) - } - - if (dstPort === d2gsPort) { - displayD2gsToServer(data) - } - - if (srcPort === mcpPort && (srcIp === mcpIp || mcpIp === null)) { - displayMcpToClient(data) - } - - if (dstPort === mcpPort && (dstIp === mcpIp || mcpIp === null)) { - displayMcpToServer(data) - } - - if (dstPort === sidPort && data.length === 1 && data[0] === 1) { - console.log(`sid on port ${srcPort} : ${data}`) - clientPortSid = srcPort - return - } - - if (dstPort === sidPort && data.length === 1 && data[0] === 2) { - console.log(`bnftp on port ${srcPort} : ${data}`) - clientPortBnFtp = srcPort - return - } - - if (srcPort === sidPort && dstPort === clientPortSid && (srcIp !== mcpIp || mcpIp === null)) { - displaySidToClient(data) - } - - if (dstPort === sidPort && srcPort === clientPortSid && (dstIp !== mcpIp || mcpIp === null)) { - displaySidToServer(data) - } - - if (srcPort === sidPort && dstPort === clientPortBnFtp) { - displayBnftpToClient(data) - } - - if (dstPort === sidPort && srcPort === clientPortBnFtp) { - displayBnftpToServer(data) - } - }) - session.on('data recv', function (session_, data) { - if (srcPort === d2gsPort) { - displayD2gsToServer(data) - } - - if (dstPort === d2gsPort) { - displayD2gsToClient(data) - } - - if (srcPort === mcpPort && (srcIp === mcpIp || mcpIp === null)) { - displayMcpToServer(data) - } - - if (dstPort === mcpPort && (dstIp === mcpIp || mcpIp === null)) { - displayMcpToClient(data) - } - - if (srcPort === sidPort && data.length === 1 && data[0] === 1) { - console.log(`sid on port ${dstPort} : ${data}`) - clientPortSid = dstPort - return - } - - if (srcPort === sidPort && data.length === 1 && data[0] === 2) { - console.log(`bnftp on port ${dstPort} : ${data}`) - clientPortBnFtp = dstPort - return - } - - if (srcPort === sidPort && dstPort === clientPortSid && (srcIp !== mcpIp || mcpIp === null)) { - displaySidToServer(data) - } - - if (dstPort === sidPort && srcPort === clientPortSid && (dstIp !== mcpIp || mcpIp === null)) { - displaySidToClient(data) - } - - if (srcPort === sidPort && dstPort === clientPortBnFtp) { - displayBnftpToServer(data) - } - - if (dstPort === sidPort && srcPort === clientPortBnFtp) { - displayBnftpToClient(data) - } - }) - - session.on('end', function () { - if (srcPort === d2gsPort || dstPort === d2gsPort) { - console.log('End of d2gs session') - } - if ((srcPort === mcpPort || dstPort === mcpPort) && (dstIp === mcpIp || srcIp === mcpIp || mcpIp === null)) { - console.log('End of mcp session') - } - if ((srcPort === sidPort || dstPort === sidPort) && (dstIp === mcpIp || srcIp === mcpIp || mcpIp === null)) { - console.log('End of sid session') - } - }) -}) - -console.log('loaded') - -// Set view engine to use, in this case 'pug' -app.set('view engine', 'pug') - -app.get('/', (req, res) => { - res.render('index', { title: 'Sniffer', messagesToClient: messagesToClient, messagesToServer: messagesToServer }) -}) -app.listen(process.env.PORT || 3001) diff --git a/index.js b/index.js index fb1d5e2..e94207e 100644 --- a/index.js +++ b/index.js @@ -14,6 +14,7 @@ const { defaultVersion, supportedVersions } = require('./version') const cdKey = require('./lib/utils/cdkey') const cdKey26 = require('./lib/utils/cdkey26') const checkRevision = require('./lib/utils/checkRevision') +const basicLogger = require('./lib/utils/logger') const protocol = supportedVersions.reduce((acc, version) => { acc[version] = { @@ -45,5 +46,6 @@ module.exports = { defaultVersion, cdKey, cdKey26, - checkRevision + checkRevision, + basicLogger } diff --git a/lib/client/clientD2gs.js b/lib/client/clientD2gs.js index 104e7af..b6f9ef9 100644 --- a/lib/client/clientD2gs.js +++ b/lib/client/clientD2gs.js @@ -9,12 +9,15 @@ const bitfieldLE = require('../utils/bitfieldLE') const itemParser = require('../utils/itemParser') const { createSplitter, createFramer } = require('../utils/splitter') +const IGNORED_PACKETS = [0x01, 0xF1, 0x02] // Non debugged packets that just pollute +const LOGIN_PACKETS = [0xAF] class Client extends EventEmitter { constructor (version, isServer = false) { super() this.compression = false this.isServer = isServer + this.version = version const protocol = require(`../../data/${version}/d2gs`) this.protoToServer = new ProtoDef(false) this.protoToServer.addTypes(d2gsReader) @@ -71,14 +74,18 @@ class Client extends EventEmitter { const proto = this.isServer ? this.protoToServer : this.protoToClient this.socket.on('data', (data) => { // console.log('received that d2gs hex', data.toString('hex')) - + if (IGNORED_PACKETS.includes(data[0])) return if (!this.compression) { try { if (data[0] === 0x2b && this.isServer === true) { console.log('d2gsToClient anti-cheat') return } - if (data[0] !== 0xaf && this.isServer === false) { data = data.slice(1) } + + // Login packets are of size 2/4 bytes + if (this.version === 1.13 && + !LOGIN_PACKETS.includes(data[0]) && + this.isServer === false) { data = data.slice(1) } const parsed = proto.parsePacketBuffer('packet', data).data @@ -89,7 +96,7 @@ class Client extends EventEmitter { this.emit(name, params) this.emit('packet', { name, params }) } catch (err) { - console.log(err.message) + console.log(`crashed, raw: ${data.toString('hex')} - error: ${err.message}`) } } else { this.splitter.write(data) diff --git a/lib/client/createClientD2gs.js b/lib/client/createClientD2gs.js index 6f77a82..4b54ab4 100644 --- a/lib/client/createClientD2gs.js +++ b/lib/client/createClientD2gs.js @@ -34,25 +34,29 @@ async function createClientD2gs (clientDiablo, version) { }) setInterval(() => { + console.log(`Latency ${clientDiablo.lastPing - clientDiablo.lastPong}`) + if (clientDiablo.lastPing - clientDiablo.lastPong > 10000) { + console.log('Server stopped answering, probably crashed') + process.exit(1) + } clientDiablo.write('D2GS_PING', { tickCount: Date.now() - clientDiablo.initialTime, delay: clientDiablo.latency, wardenResponse: 0 }) - clientDiablo.timeAtLastPing = Date.now() + clientDiablo.lastPing = Date.now() }, 5000) clientDiablo.on('D2GS_PONG', () => { - clientDiablo.latency = Date.now() - clientDiablo.timeAtLastPing + clientDiablo.latency = Date.now() - clientDiablo.lastPing + clientDiablo.lastPong = Date.now() // console.log('latency is ' + clientDiablo.latency + 'ms') }) if (version === '1.13') await once(clientDiablo, 'D2GS_LOGONRESPONSE') - else { - await once(clientDiablo, 'D2GS_GAMELOADING') - } + else await once(clientDiablo, 'D2GS_GAMELOADING') clientDiablo.write('D2GS_ENTERGAMEENVIRONMENT', {}) - if (version === '1.13') clientD2gs.socket.write(Buffer.from('2b0155332211', 'hex'))// 2b0155332211 // PoD anticheat packet XD + if (version === '1.13') clientD2gs.socket.write(Buffer.from('2b0155332211', 'hex'))// 2b0155332211 // PoD anticheat clientD2gs.enableCompression() clientDiablo.emit('gameJoined') } diff --git a/lib/client/createClientDiablo.js b/lib/client/createClientDiablo.js index ca1ca95..20a5cd0 100644 --- a/lib/client/createClientDiablo.js +++ b/lib/client/createClientDiablo.js @@ -26,7 +26,8 @@ function createClientDiablo ({ username, password, host, version, keyClassic, ke clientDiablo.connect = async () => { const { hostMcp, portMcp, MCPCookie, MCPStatus, MCPChunk1, MCPChunk2, battleNetUniqueName } = await createClientSid(clientDiablo, host, version) - await createClientMcp(clientDiablo, hostMcp, portMcp, MCPCookie, MCPStatus, MCPChunk1, MCPChunk2, battleNetUniqueName, version) + const result = await createClientMcp(clientDiablo, hostMcp, portMcp, MCPCookie, MCPStatus, MCPChunk1, MCPChunk2, battleNetUniqueName, version) + console.log(`Got characters ${result.characters}`) } clientDiablo.selectCharacter = async (character) => { @@ -56,7 +57,6 @@ function createClientDiablo ({ username, password, host, version, keyClassic, ke // Create game = join game clientDiablo.createGame = async (gameName, gamePassword, gameServer, difficulty = 0, joinIfAlreadyExists = true) => { - console.log('joinIfAlreadyExists', joinIfAlreadyExists) gameName = toCamelCase(gameName) gamePassword = toCamelCase(gamePassword) clientDiablo.write('MCP_CREATEGAME', { diff --git a/lib/client/createClientMcp.js b/lib/client/createClientMcp.js index 7430830..91041fb 100644 --- a/lib/client/createClientMcp.js +++ b/lib/client/createClientMcp.js @@ -22,6 +22,7 @@ async function createClientMcp (clientDiablo, hostMcp, portMcp, MCPCookie, MCPSt }) clientDiablo.on('MCP_STARTUP', ({ result }) => { + // TODO: better error handling (exceptions ;..) if (result === 0x02 || (result >= 0x0A && result <= 0x0D)) { console.log('Realm Unavailable: No Battle.net connection detected.') } else if (result === 0x7E) { diff --git a/lib/utils/logger.js b/lib/utils/logger.js new file mode 100644 index 0000000..20e4f31 --- /dev/null +++ b/lib/utils/logger.js @@ -0,0 +1,30 @@ +const winston = require('winston') + +function basicLogger () { + const logger = winston.createLogger({ + level: 'info', + format: winston.format.json(), + // defaultMeta: { service: 'user-service' }, + transports: [ + // + // - Write all logs with level `error` and below to `error.log` + // - Write all logs with level `info` and below to `combined.log` + // + // new winston.transports.File({ filename: 'error.log', level: 'error' }), + // new winston.transports.File({ filename: 'combined.log' }) + ] + }) + + // + // If we're not in production then log to the `console` with the format: + // `${info.level}: ${info.message} JSON.stringify({ ...rest }) ` + // + if (process.env.NODE_ENV !== 'production') { + logger.add(new winston.transports.Console({ + format: winston.format.simple() + })) + } + return logger +} + +module.exports = basicLogger From ff5871ad432975e7249d4dd46c5ef7e059b06225 Mon Sep 17 00:00:00 2001 From: louis Date: Wed, 15 Jul 2020 21:42:29 +0200 Subject: [PATCH 2/4] Improve d2gs client --- README.md | 30 +++---- data/1.13/d2gs.json | 26 +----- docs/images/logo.png | Bin 0 -> 237502 bytes index.js | 5 +- lib/client/clientD2gs.js | 147 +++++++++++++++++---------------- lib/client/createClientD2gs.js | 6 +- 6 files changed, 97 insertions(+), 117 deletions(-) create mode 100644 docs/images/logo.png diff --git a/README.md b/README.md index c91ae25..1c91de3 100644 --- a/README.md +++ b/README.md @@ -8,30 +8,27 @@ [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] -[![NPM version](npm-shield)](npm-url) -[![Build Status](build-shield)](build-url) -[![Discord](discord-shield)](https://discord.gg/9RqtApv) -[![Try it on gitpod](gitpod-shield)](gitpod-url) - - - +[![NPM version](https://img.shields.io/npm/v/diablo2-protocol.svg)](npm-url) +[![Build Status](https://github.com/Mephistools/diablo2-protocol/workflows/CI/badge.svg)](build-url) +[![Discord](https://img.shields.io/badge/chat-on%20discord-brightgreen.svg)](discord-url) +[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](gitpod-url)

- Logo + Logo -

Best-README-Template

+

diablo2-protocol

- An awesome README template to jumpstart your projects! + Network protocol for diablo 2 : create client and servers for diablo 1.13 and 1.14.
- Explore the docs » + Explore the docs »

- View Demo + View Demo · Report Bug · @@ -55,14 +52,7 @@ * [License](#license) * [Acknowledgements](#acknowledgements) - -## About The Project - -Network protocol for diablo 2 : create client and servers for diablo 1.13 and 1.14. - -* [Bot video](https://www.youtube.com/watch?v=KYPTijLiwMI&feature=youtu.be) - -### Built With +## Built With * * diff --git a/data/1.13/d2gs.json b/data/1.13/d2gs.json index cb52ad5..8829c61 100644 --- a/data/1.13/d2gs.json +++ b/data/1.13/d2gs.json @@ -1311,38 +1311,18 @@ "D2GS_LOADACT": ["container", [ { "name": "act", - "type": "lu32" + "type": "lu8" }, { "name": "mapId", "type": "lu32" }, - { - "name": "unknown1", - "type": "lu32" - }, - { - "name": "unknown2", - "type": "lu32" - }, - { - "name": "unknown3", - "type": "lu32" - }, - { - "name": "unknown4", - "type": "lu32" - }, { "name": "areaId", - "type": "lu32" - }, - { - "name": "func1", - "type": "lu32" + "type": "lu16" }, { - "name": "func2", + "name": "unkwown", "type": "lu32" } ]], diff --git a/docs/images/logo.png b/docs/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd9100281ac5a07493ec6f56a862787ece8ef0f GIT binary patch literal 237502 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ν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�v$J#BzNfc@dL$)d z)%NHl;0R4Kkh&h71|EL#eLVK?Rc_tB#b>|r8n55DP1mdm3UyghlmVe+SkHNAJVM<$ zJUZf`s}E7kMnGa`cZbcb4Z3ztZwcJU%?dj{r=E9sax8!Vl{&Qw1&ZUivlWmlmB#Y? zt6%Di^%`9~Lv>-F9BRC%C@NuZR#T*gW^mr~?(>6p@8&=K#FMZ5H`lNIrIhmr8sYtG z7r;TlMZmzhPXrOb!2x$iM0mhNaC3aWtN0LQcD{{&NQClw7H@GkIPuL?@pJ!uh6O9q`M894T0b4iFWw3y|p&oGrW8lJc zn=~poJv`ta)u%u6cfw!!%Rl|T&-~oaJ$Co@n^co+wk8F$(GDZoVdw`uLDy!6GNI#0 zZVS$q#<+tagA^b&Lo=rGiuhFukc33R~Ry$`$@OOUv zuk)ME6X(lQOhyz%f#(59PALIWCSa^12#_L385m1s>Va-ZjLjHA1$n@;ff}MtQ3}xo zvQbmwUeNo1spA4EWyF>2nfcHo1S|;CQNy5_Zr-p_jd3@EWO5$JG0<9Kq)OZOm_k6n z9mEiX3VvOU{NYVeu1>bNy19cUqn$StRE)+OxCw2WFcEssxEP^OG-oh}ln`@7gs72m zJ>k4tGCw)t@_NOso7Z^a>8EJgfg87P@hu;Dmb12Jz3hR^V^2QGt?REb+27)w*KhHi zpZEk1Km0IXeeE^o*H(xNg(w?k#pZO%#>OUXKXB{rJ?@;IvgkTm%j9-VXpKo6acO^_ zQUiyl$DFrk&^vdpUE|XB4m(@BY;SB)gaaH!aH=UYGWVZP&AUL>YD%lQeD z%`HeR)6E&%yL+^6pK)})=6uyKt}FT>G33O^2TF?!C`!UC1CF{9u+1nul*H@$>}a_h zoUUK8fB7n9F+xs`sL$58cZ}R=MEIW(`M-GLJ?}1m@U1u7e-?f!D?i>M&o0oya0WFT z;Q`0M1s6aB0oHBKSU#T`czQ8F?$~`Nb z1;WZ5&5#Ag8ImeP?iuJQfM5_cAhM)1p>Rh{DMYZG$=xX>pa^{jNTBybBhb;49o9et zBoh*WP7>LLx5b~Bx%^w(8poH4n#Zi<|kxVut`v8(5XM{{d za5GdDS0@CajwKI`_F3f2>Crvr%aXkhe}o%vy$xh`FYI&u?mcEfxpjKZ=J65xk3P&t zzWrnL!>4%hrI+}~w|s;aN&M zaz+rrZ(U<~dPc0LoUc2Y^EtUsL>vjuQ4yfwJ?}#Q2^{>sI{s*9eC(j}Z);F60~`

Jkwbs=8kGeR8o*@C%aIEiisAu7#@{Egg~Ne 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≪?7Z=<IQ)HK^gznW>qi@# z+i7(ZIc_7P^@<@%xZwRA_Sc&fCMOOa5x6!T5X51)pVq0MpHaZW=TaWMg4ELm!+}55 z1O5bX#0(Y^g~1uXuL+||5pJ+r5`4-NY!2vU@d$cB5aAxl>

EZy_RVF~NSLf;ly; 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 { + try { + const uncompressedData = decompress(data) + this.toClientParser.write(uncompressedData) + } catch (err) { + this.emit('error', err) + } + }) + this.toClientParser.on('data', ({data, buffer}) => { + let {name, params} = data + this.emit(name, params) + const toServer = false + if (this.includeRaw) { + const raw = buffer + this.emit('packet', {name, params, toServer, raw}) + } else this.emit('packet', {name, params, toServer}) + }) + this.toClientParser.on('error', err => this.emit('error', err)) } - connect (host, port) { + connect(host, port) { this.host = host this.port = port - this.setSocket(net.createConnection({ port: this.port, host: this.host }, () => { + this.setSocket(net.createConnection({port: this.port, host: this.host}, () => { this.emit('connect') })) } - setSocket (socket) { - this.socket = socket - - this.splitter = createSplitter() - this.framer = createFramer() - this.framer.on('data', data => { - // console.log('sending buffer d2gs ' + data.toString('hex')) - this.socket.write(data) - }) - this.splitter.on('data', data => { - // console.log('compressed d2gs received hex : ' + data.toString('hex')) - const uncompressedData = decompress(data) - - // console.log('after decompression d2gs received hex : ' + uncompressedData.toString('hex')) - this.toClientParser.write(uncompressedData) - }) - - this.toClientParser.on('data', ({ data, buffer }) => { - let { name, params } = data - - if (this.isServer === false && (name === 'D2GS_ITEMACTIONWORLD' || name === 'D2GS_ITEMACTIONOWNED')) { - params = itemParser(buffer) - } - - // console.info('received compressed packet', name, JSON.stringify(params)) - console.info('d2gsToClient : ', name, JSON.stringify(params)) - - this.emit(name, params) - this.emit('packet', { name, params }) - }) - this.toClientParser.on('error', err => console.log('d2gsToClient error : ', err.message)) - - const proto = this.isServer ? this.protoToServer : this.protoToClient - this.socket.on('data', (data) => { - // console.log('received that d2gs hex', data.toString('hex')) - if (IGNORED_PACKETS.includes(data[0])) return - if (!this.compression) { - try { + /** + * Parse a packet, should emit the parsed packet if no error + * @param data raw data + * @param toServer to server or to client + */ + parse(data, toServer) { + // if (IGNORED_PACKETS.includes(data[0])) return + let parsed + try { + // Message to client + if (!toServer) { + // Uncompressed + if (!this.compression) { + // TODO: why we need this ? if (data[0] === 0x2b && this.isServer === true) { - console.log('d2gsToClient anti-cheat') return } - - // Login packets are of size 2/4 bytes + // Not sure optimal conditions, anyway required in some servers if (this.version === 1.13 && !LOGIN_PACKETS.includes(data[0]) && - this.isServer === false) { data = data.slice(1) } - - const parsed = proto.parsePacketBuffer('packet', data).data - - const { name, params } = parsed - // console.info('received uncompressed packet', name, JSON.stringify(params)) - console.info('d2gsToClient (uncompressed): ', name, JSON.stringify(params)) - - this.emit(name, params) - this.emit('packet', { name, params }) - } catch (err) { - console.log(`crashed, raw: ${data.toString('hex')} - error: ${err.message}`) + this.isServer === false) { + data = data.slice(1) + } + parsed = this.protoToClient.parsePacketBuffer('packet', data).data + if (parsed.name === 'D2GS_NEGOTIATECOMPRESSION') this.enableCompression() + } else { // Compressed, need to be split-ed and uncompressed + this.splitter.write(data) + return } - } else { - this.splitter.write(data) + } else { // Message to server + parsed = this.protoToServer.parsePacketBuffer('packet', data).data } - }) + const {name, params} = parsed + this.emit(name, params) + if (this.includeRaw) { + const raw = data + this.emit('packet', {name, params, toServer, raw}) + } + else this.emit('packet', {name, params, toServer}) + } catch (err) { + this.emit('error', err) + } + } + setSocket(socket) { + this.socket = socket + this.framer.on('data', data => { + this.socket.write(data) + }) + this.socket.on('data', (data) => { + this.parse(data, this.isServer) + }) this.socket.on('end', () => { - console.log('disconnected from server d2gs') + this.emit('end') }) } - enableCompression () { + enableCompression() { this.compression = true } - write (packetName, params) { + write(packetName, params) { const proto = this.isServer ? this.protoToClient : this.protoToServer try { const buffer = proto.createPacketBuffer('packet', { name: packetName, params }) - - // console.info('sending uncompressed packet', packetName, params) - console.info('d2gsToServer : ', packetName, params) const buffer2 = this.isServer && packetName !== 'D2GS_NEGOTIATECOMPRESSION' ? Buffer.concat([Buffer.from([buffer.length + 1]), buffer]) : buffer this.socket.write(buffer2) - // console.log('sending that hex', buffer2) } catch (err) { - console.log(err) + this.emit('error', err) } } } diff --git a/lib/client/createClientD2gs.js b/lib/client/createClientD2gs.js index 4b54ab4..9cc596e 100644 --- a/lib/client/createClientD2gs.js +++ b/lib/client/createClientD2gs.js @@ -56,8 +56,10 @@ async function createClientD2gs (clientDiablo, version) { if (version === '1.13') await once(clientDiablo, 'D2GS_LOGONRESPONSE') else await once(clientDiablo, 'D2GS_GAMELOADING') clientDiablo.write('D2GS_ENTERGAMEENVIRONMENT', {}) - if (version === '1.13') clientD2gs.socket.write(Buffer.from('2b0155332211', 'hex'))// 2b0155332211 // PoD anticheat - clientD2gs.enableCompression() + if (version === '1.13') { + clientD2gs.socket.write(Buffer.from('2b0155332211', 'hex'))// 2b0155332211 // PoD anticheat + clientD2gs.enableCompression() + } clientDiablo.emit('gameJoined') } From c4cb8d8e8f8dd88d8e70d8364b8ee3ab8ee23328 Mon Sep 17 00:00:00 2001 From: louis Date: Wed, 29 Jul 2020 20:17:34 +0200 Subject: [PATCH 3/4] Clean --- examples/simpleBot.js | 12 ++---- index.js | 6 +++ lib/client/baseClient.js | 67 ++++++++++++++++++++++++++++++++++ lib/client/clientD2gs.js | 59 +++++++++++------------------- lib/client/clientDiablo.js | 30 +++++++++------ lib/client/clientMcp.js | 61 ++++--------------------------- lib/client/clientSid.js | 53 +++------------------------ lib/client/createClientD2gs.js | 2 +- 8 files changed, 129 insertions(+), 161 deletions(-) create mode 100644 lib/client/baseClient.js diff --git a/examples/simpleBot.js b/examples/simpleBot.js index ce1ca42..2896c0f 100644 --- a/examples/simpleBot.js +++ b/examples/simpleBot.js @@ -1,8 +1,8 @@ const { createClientDiablo } = require('..') const { defaultVersion } = require('..') -var ArgumentParser = require('argparse').ArgumentParser -var parser = new ArgumentParser({ +const ArgumentParser = require('argparse').ArgumentParser +const parser = new ArgumentParser({ version: '1.4.1', addHelp: true, description: 'Simple bot' @@ -31,13 +31,7 @@ async function start () { keyExtension, delayPackets }) - clientDiablo.on('D2GS_PLAYERMOVE', ({ targetX, targetY }) => { - clientDiablo.write('D2GS_RUNTOLOCATION', { - x: targetX, - y: targetY - }) - }) - + clientDiablo.on('packet', packet => console.log(packet)) await clientDiablo.connect() await clientDiablo.selectCharacter(character) await clientDiablo.createGame(gameName, gamePassword, gameServer, 0) diff --git a/index.js b/index.js index c715443..7c858de 100644 --- a/index.js +++ b/index.js @@ -4,7 +4,10 @@ const { decompress, compress, getPacketSize } = require('./lib/utils/compression const d2gsReader = require('./lib/utils/d2gsSpecialReader') const getHash = require('./lib/utils/getHash') const createServerDiablo = require('./lib/server/createServerDiablo') +const ClientSid = require('./lib/client/clientSid') +const ClientMcp = require('./lib/client/clientMcp') const ClientD2gs = require('./lib/client/clientD2gs') +const ClientDiablo = require('./lib/client/clientDiablo') const ServerDiablo = require('./lib/server/serverDiablo') const ServerD2gs = require('./lib/server/serverD2gs') @@ -40,7 +43,10 @@ module.exports = { createServerDiablo, createServerSid, createServerMcp, + ClientSid, + ClientMcp, ClientD2gs, + ClientDiablo, ServerD2gs, ServerDiablo, itemParser, diff --git a/lib/client/baseClient.js b/lib/client/baseClient.js new file mode 100644 index 0000000..7641876 --- /dev/null +++ b/lib/client/baseClient.js @@ -0,0 +1,67 @@ +const EventEmitter = require('events').EventEmitter +const net = require('net') + + +/** + * Abstract Class Client. + * + * @class BaseClient + */ +class BaseClient extends EventEmitter { + + constructor(version, isServer = false) { + super() + if (this.constructor === BaseClient) { + throw new Error("Abstract classes can't be instantiated."); + } + this.isServer = isServer + this.protoToServer = null + this.protoToClient = null + } + + /** + * Parse a packet, should emit the parsed packet if no error + * @param data raw data + * @param toServer to server or to client + */ + parse(data, toServer) { + if (data.length === 1 && data[0] === 0x01) { + this.emit('init_connection') // TODO: maybe could emit some useful data (ip ..) + return + } + const proto = this.isServer ? this.protoToServer : this.protoToClient + try { + const parsed = proto.parsePacketBuffer('packet', data).data + const {name, params} = parsed + this.emit(name, params) + this.emit('packet', {name, params, toServer}) + } catch (err) { + err.raw = data + this.emit('error', err) + } + } + + connect (host, port) { + this.host = host + this.port = port + this.setSocket(net.createConnection({ port: this.port, host: this.host }, () => { + this.emit('connect') + })) + } + + setSocket (socket) { + this.socket = socket + this.socket.on('data', (data) => { + try { + this.parse(data, !this.isServer) + } catch (err) { + this.emit('error', err) + } + }) + this.socket.on('end', () => { + this.emit('end') + }) + } +} + +module.exports = BaseClient diff --git a/lib/client/clientD2gs.js b/lib/client/clientD2gs.js index ae0d39c..e8aa896 100644 --- a/lib/client/clientD2gs.js +++ b/lib/client/clientD2gs.js @@ -1,21 +1,19 @@ -const net = require('net') - const ProtoDef = require('protodef').ProtoDef const FullPacketParser = require('protodef').Parser -const EventEmitter = require('events').EventEmitter const {decompress} = require('../utils/compression') const d2gsReader = require('../utils/d2gsSpecialReader') const bitfieldLE = require('../utils/bitfieldLE') +const BaseClient = require('./baseClient') + const {createSplitter, createFramer} = require('../utils/splitter') // const IGNORED_PACKETS = [0x01, 0xF1, 0x02] // Non debugged packets that just pollute const LOGIN_PACKETS = [0xAF] -class Client extends EventEmitter { +class Client extends BaseClient { constructor(version, isServer = false, includeRaw = false) { - super() + super(version, isServer) this.compression = false - this.isServer = isServer this.version = version this.includeRaw = includeRaw const protocol = require(`../../data/${version}/d2gs`) @@ -37,6 +35,7 @@ class Client extends EventEmitter { const uncompressedData = decompress(data) this.toClientParser.write(uncompressedData) } catch (err) { + err.raw = data this.emit('error', err) } }) @@ -52,23 +51,15 @@ class Client extends EventEmitter { this.toClientParser.on('error', err => this.emit('error', err)) } - connect(host, port) { - this.host = host - this.port = port - this.setSocket(net.createConnection({port: this.port, host: this.host}, () => { - this.emit('connect') - })) - } - /** * Parse a packet, should emit the parsed packet if no error * @param data raw data * @param toServer to server or to client */ parse(data, toServer) { - // if (IGNORED_PACKETS.includes(data[0])) return - let parsed try { + // if (IGNORED_PACKETS.includes(data[0])) return + let parsed // Message to client if (!toServer) { // Uncompressed @@ -84,7 +75,9 @@ class Client extends EventEmitter { data = data.slice(1) } parsed = this.protoToClient.parsePacketBuffer('packet', data).data - if (parsed.name === 'D2GS_NEGOTIATECOMPRESSION') this.enableCompression() + if (parsed.name === 'D2GS_NEGOTIATECOMPRESSION') { + this.enableCompression(parsed.params.compressionMode) + } } else { // Compressed, need to be split-ed and uncompressed this.splitter.write(data) return @@ -97,42 +90,32 @@ class Client extends EventEmitter { if (this.includeRaw) { const raw = data this.emit('packet', {name, params, toServer, raw}) - } - else this.emit('packet', {name, params, toServer}) + } else this.emit('packet', {name, params, toServer}) } catch (err) { + err.raw = data this.emit('error', err) } } setSocket(socket) { - this.socket = socket + super.setSocket(socket) this.framer.on('data', data => { this.socket.write(data) }) - this.socket.on('data', (data) => { - this.parse(data, this.isServer) - }) - this.socket.on('end', () => { - this.emit('end') - }) } - enableCompression() { - this.compression = true + enableCompression(value) { + this.compression = value } write(packetName, params) { const proto = this.isServer ? this.protoToClient : this.protoToServer - try { - const buffer = proto.createPacketBuffer('packet', { - name: packetName, - params - }) - const buffer2 = this.isServer && packetName !== 'D2GS_NEGOTIATECOMPRESSION' ? Buffer.concat([Buffer.from([buffer.length + 1]), buffer]) : buffer - this.socket.write(buffer2) - } catch (err) { - this.emit('error', err) - } + const buffer = proto.createPacketBuffer('packet', { + name: packetName, + params + }) + const buffer2 = this.isServer && packetName !== 'D2GS_NEGOTIATECOMPRESSION' ? Buffer.concat([Buffer.from([buffer.length + 1]), buffer]) : buffer + this.socket.write(buffer2) } } diff --git a/lib/client/clientDiablo.js b/lib/client/clientDiablo.js index e1db12f..1e2f9ef 100644 --- a/lib/client/clientDiablo.js +++ b/lib/client/clientDiablo.js @@ -8,49 +8,55 @@ class ClientDiablo extends EventEmitter { setClientSid (clientSid) { this.clientSid = clientSid - this.clientSid.on('packet', ({ name, params }) => { + this.clientSid.on('packet', ({ name, params, toServer }) => { this.emit(name, params) - this.emit('packet', { name, params, protocol: this.clientSid.isServer ? 'sidToServer' : 'sidToClient' }) + this.emit('packet', { name, params, toServer }) }) + this.clientSid.on('error', err => this.emit('error', err)) } setClientMcp (clientMcp) { this.clientMcp = clientMcp - this.clientMcp.on('packet', ({ name, params }) => { + this.clientMcp.on('packet', ({ name, params, toServer }) => { this.emit(name, params) - this.emit('packet', { name, params, protocol: this.clientMcp.isServer ? 'mcpToServer' : 'mcpToClient' }) + this.emit('packet', { name, params, toServer }) }) + this.clientMcp.on('error', err => this.emit('error', err)) + } setClientBnftp (clientBnftp) { this.clientBnftp = clientBnftp - this.clientBnftp.on('packet', ({ name, params }) => { + this.clientBnftp.on('packet', ({ name, params, toServer }) => { this.emit(name, params) - this.emit('packet', { name, params, protocol: this.clientBnftp.isServer ? 'bnftpToServer' : 'bnftpToClient' }) + this.emit('packet', { name, params, toServer }) }) + this.clientBnftp.on('error', err => this.emit('error', err)) + } setClientD2gs (clientD2gs) { this.clientD2gs = clientD2gs - this.clientD2gs.on('packet', ({ name, params }) => { + this.clientD2gs.on('packet', ({ name, params, toServer, raw }) => { this.emit(name, params) - this.emit('packet', { name, params, protocol: this.clientD2gs.isServer ? 'd2gsToServer' : 'd2gsToClient' }) + this.emit('packet', { name, params, toServer, raw }) }) + this.clientD2gs.on('error', err => this.emit('error', err)) } write (name, params) { setTimeout(() => { if (name.startsWith('SID')) { - this.emit('sentPacket', { name, params, protocol: this.clientSid.isServer ? 'sidToClient' : 'sidToServer' }) + this.emit('sentPacket', { name, params, toServer: !this.clientSid.isServer }) this.clientSid.write(name, params) } else if (name.startsWith('MCP')) { - this.emit('sentPacket', { name, params, protocol: this.clientMcp.isServer ? 'mcpToClient' : 'mcpToServer' }) + this.emit('sentPacket', { name, params, toServer: !this.clientMcp.isServer }) this.clientMcp.write(name, params) } else if (name.startsWith('FILE_TRANSFER_PROTOCOL')) { - this.emit('sentPacket', { name, params, protocol: this.clientBnftp.isServer ? 'bnftpToClient' : 'bnftpToServer' }) + this.emit('sentPacket', { name, params, toServer: !this.clientBnftp.isServer }) this.clientBnftp.write(name, params) } else if (name.startsWith('D2GS')) { - this.emit('sentPacket', { name, params, protocol: this.clientD2gs.isServer ? 'd2gsToClient' : 'd2gsToServer' }) + this.emit('sentPacket', { name, params, toServer: !this.clientD2gs.isServer }) this.clientD2gs.write(name, params) } }, this.delayPackets) // Delay between packets, TODO: issue with async ? ... diff --git a/lib/client/clientMcp.js b/lib/client/clientMcp.js index 11b8ead..643b75b 100644 --- a/lib/client/clientMcp.js +++ b/lib/client/clientMcp.js @@ -1,70 +1,25 @@ -const net = require('net') - const ProtoDef = require('protodef').ProtoDef -const EventEmitter = require('events').EventEmitter +const BaseClient = require('./baseClient') -class Client extends EventEmitter { +class Client extends BaseClient { constructor (version, isServer = false) { - super() - this.isServer = isServer + super(version, isServer) const mcp = require(`../../data/${version}/mcp`) - this.mcpToServer = new ProtoDef(false) - this.mcpToServer.addProtocol(mcp, ['toServer']) - - this.mcpToClient = new ProtoDef(false) - this.mcpToClient.addProtocol(mcp, ['toClient']) - } + this.protoToServer = new ProtoDef(false) + this.protoToServer.addProtocol(mcp, ['toServer']) - connect (host, port) { - this.host = host - this.port = port - const socket = net.createConnection({ port: this.port, host: this.host }, () => { - this.emit('connect') - }) - this.setSocket(socket) - } - - setSocket (socket) { - this.socket = socket - - this.socket.on('data', (data) => { - try { - // console.log('received that hex MCP', data.toString('hex')) - if (data.length === 1 && data[0] === 0x01) { - this.emit('init_connection') - return - } - const proto = this.isServer ? this.mcpToServer : this.mcpToClient - const parsed = proto.parsePacketBuffer('packet', data).data - - const { name, params } = parsed - console.info('mcpToClient : ', name, JSON.stringify(parsed)) - - this.emit(name, params) - this.emit('packet', { name, params }) - } catch (err) { - console.log(err.message) - } - }) - - this.socket.on('end', () => { - console.log('disconnected from mcp server') - }) + this.protoToClient = new ProtoDef(false) + this.protoToClient.addProtocol(mcp, ['toClient']) } write (name, params) { - const proto = this.isServer ? this.mcpToClient : this.mcpToServer + const proto = this.isServer ? this.protoToClient : this.protoToServer const buffer = proto.createPacketBuffer('packet', { size: 0, name: name, params }) - - console.info('mcpToServer : ', name, params) buffer.writeInt16LE(buffer.length, 0) - - // console.log('sending that hex MCP ', buffer) - this.socket.write(buffer) } } diff --git a/lib/client/clientSid.js b/lib/client/clientSid.js index 241bb3b..094c85b 100644 --- a/lib/client/clientSid.js +++ b/lib/client/clientSid.js @@ -1,13 +1,9 @@ -const net = require('net') - const ProtoDef = require('protodef').ProtoDef +const BaseClient = require('./baseClient') -const EventEmitter = require('events').EventEmitter - -class Client extends EventEmitter { +class Client extends BaseClient { constructor (version, isServer = false) { - super() - this.isServer = isServer + super(version, isServer) const sid = require(`../../data/${version}/sid`) this.protoToServer = new ProtoDef(false) this.protoToServer.addProtocol(sid, ['toServer']) @@ -16,54 +12,15 @@ class Client extends EventEmitter { this.protoToClient.addProtocol(sid, ['toClient']) } - connect (host, port) { - this.host = host - this.port = port - this.setSocket(net.createConnection({ port: this.port, host: this.host }, () => { - this.emit('connect') - })) - } - - setSocket (socket) { - this.socket = socket - this.socket.on('data', (data) => { - try { - // console.log('received that hex sid', data.toString('hex')) - if (data.length === 1 && data[0] === 0x01) { - this.emit('init_connection') - return - } - const proto = this.isServer ? this.protoToServer : this.protoToClient - const parsed = proto.parsePacketBuffer('packet', data).data - - const { name, params } = parsed - console.info('sidToClient : ', name, JSON.stringify(parsed)) - - this.emit(name, params) - this.emit('packet', { name, params }) - } catch (err) { - console.log(err.message) - } - }) - this.socket.on('end', () => { - console.log('disconnected from server sid') - }) - } - - write (packetName, params) { + write (name, params) { const proto = this.isServer ? this.protoToClient : this.protoToServer const buffer = proto.createPacketBuffer('packet', { - name: packetName, + name: name, size: 0, ff: 255, params }) - - console.info('sidToServer : ', packetName, JSON.stringify(params)) buffer.writeInt16LE(buffer.length, 2) - // console.info(buffer.toString('hex')) - - // console.log('sending that hex SID ', buffer) this.socket.write(buffer) } } diff --git a/lib/client/createClientD2gs.js b/lib/client/createClientD2gs.js index 9cc596e..9b6dce9 100644 --- a/lib/client/createClientD2gs.js +++ b/lib/client/createClientD2gs.js @@ -58,7 +58,7 @@ async function createClientD2gs (clientDiablo, version) { clientDiablo.write('D2GS_ENTERGAMEENVIRONMENT', {}) if (version === '1.13') { clientD2gs.socket.write(Buffer.from('2b0155332211', 'hex'))// 2b0155332211 // PoD anticheat - clientD2gs.enableCompression() + clientD2gs.enableCompression(true) } clientDiablo.emit('gameJoined') } From 1f20dfadd3e405ce211960cb5a2d7ee72d0dadac Mon Sep 17 00:00:00 2001 From: louis Date: Thu, 30 Jul 2020 18:27:44 +0200 Subject: [PATCH 4/4] Emit errors, logs, clean --- examples/simpleBot.js | 6 +++++- index.js | 4 +--- lib/client/baseClient.js | 1 + lib/client/clientD2gs.js | 10 ++-------- lib/client/createClientD2gs.js | 7 +++---- lib/client/createClientDiablo.js | 24 +++--------------------- lib/client/createClientMcp.js | 21 ++++++--------------- lib/client/createClientSid.js | 25 +++++++++++-------------- lib/utils/logger.js | 30 ------------------------------ package.json | 4 ++-- 10 files changed, 34 insertions(+), 98 deletions(-) delete mode 100644 lib/utils/logger.js diff --git a/examples/simpleBot.js b/examples/simpleBot.js index 2896c0f..0d4c24e 100644 --- a/examples/simpleBot.js +++ b/examples/simpleBot.js @@ -31,7 +31,11 @@ async function start () { keyExtension, delayPackets }) - clientDiablo.on('packet', packet => console.log(packet)) + clientDiablo.on('packet', packet => console.log(`packet: ${JSON.stringify(packet)}`)) + clientDiablo.on('log', log => console.log(`log: ${log}`)) + clientDiablo.on('error', err => { + console.log(`Error: message: ${JSON.stringify(err.message)}, raw: ${JSON.stringify(err.raw.toString('hex'))}`) + }) await clientDiablo.connect() await clientDiablo.selectCharacter(character) await clientDiablo.createGame(gameName, gamePassword, gameServer, 0) diff --git a/index.js b/index.js index 7c858de..97ccc47 100644 --- a/index.js +++ b/index.js @@ -19,7 +19,6 @@ const { defaultVersion, supportedVersions } = require('./version') const cdKey = require('./lib/utils/cdkey') const cdKey26 = require('./lib/utils/cdkey26') const checkRevision = require('./lib/utils/checkRevision') -const basicLogger = require('./lib/utils/logger') const protocol = supportedVersions.reduce((acc, version) => { acc[version] = { @@ -55,6 +54,5 @@ module.exports = { defaultVersion, cdKey, cdKey26, - checkRevision, - basicLogger + checkRevision } diff --git a/lib/client/baseClient.js b/lib/client/baseClient.js index 7641876..3889e5e 100644 --- a/lib/client/baseClient.js +++ b/lib/client/baseClient.js @@ -37,6 +37,7 @@ class BaseClient extends EventEmitter { this.emit('packet', {name, params, toServer}) } catch (err) { err.raw = data + err.toServer = toServer this.emit('error', err) } } diff --git a/lib/client/clientD2gs.js b/lib/client/clientD2gs.js index e8aa896..abe638a 100644 --- a/lib/client/clientD2gs.js +++ b/lib/client/clientD2gs.js @@ -36,6 +36,7 @@ class Client extends BaseClient { this.toClientParser.write(uncompressedData) } catch (err) { err.raw = data + err.toServer = false this.emit('error', err) } }) @@ -58,16 +59,11 @@ class Client extends BaseClient { */ parse(data, toServer) { try { - // if (IGNORED_PACKETS.includes(data[0])) return let parsed // Message to client if (!toServer) { // Uncompressed if (!this.compression) { - // TODO: why we need this ? - if (data[0] === 0x2b && this.isServer === true) { - return - } // Not sure optimal conditions, anyway required in some servers if (this.version === 1.13 && !LOGIN_PACKETS.includes(data[0]) && @@ -75,9 +71,6 @@ class Client extends BaseClient { data = data.slice(1) } parsed = this.protoToClient.parsePacketBuffer('packet', data).data - if (parsed.name === 'D2GS_NEGOTIATECOMPRESSION') { - this.enableCompression(parsed.params.compressionMode) - } } else { // Compressed, need to be split-ed and uncompressed this.splitter.write(data) return @@ -93,6 +86,7 @@ class Client extends BaseClient { } else this.emit('packet', {name, params, toServer}) } catch (err) { err.raw = data + err.toServer = toServer this.emit('error', err) } } diff --git a/lib/client/createClientD2gs.js b/lib/client/createClientD2gs.js index 9b6dce9..93c83da 100644 --- a/lib/client/createClientD2gs.js +++ b/lib/client/createClientD2gs.js @@ -12,7 +12,7 @@ async function createClientD2gs (clientDiablo, version) { clientDiablo.emit('clientD2gsReady', clientD2gs) clientD2gs.on('connect', () => { - console.log('connected to clientD2gs') + clientDiablo.emit('log', 'connected to clientD2gs') }) clientDiablo.on('D2GS_NEGOTIATECOMPRESSION', (data) => { @@ -34,9 +34,9 @@ async function createClientD2gs (clientDiablo, version) { }) setInterval(() => { - console.log(`Latency ${clientDiablo.lastPing - clientDiablo.lastPong}`) + clientDiablo.emit('log', `Latency ${clientDiablo.lastPing - clientDiablo.lastPong}`) if (clientDiablo.lastPing - clientDiablo.lastPong > 10000) { - console.log('Server stopped answering, probably crashed') + clientDiablo.emit('error', new Error('Server stopped answering, probably crashed')) process.exit(1) } clientDiablo.write('D2GS_PING', { @@ -50,7 +50,6 @@ async function createClientD2gs (clientDiablo, version) { clientDiablo.on('D2GS_PONG', () => { clientDiablo.latency = Date.now() - clientDiablo.lastPing clientDiablo.lastPong = Date.now() - // console.log('latency is ' + clientDiablo.latency + 'ms') }) if (version === '1.13') await once(clientDiablo, 'D2GS_LOGONRESPONSE') diff --git a/lib/client/createClientDiablo.js b/lib/client/createClientDiablo.js index 20a5cd0..68d4ff6 100644 --- a/lib/client/createClientDiablo.js +++ b/lib/client/createClientDiablo.js @@ -1,14 +1,10 @@ const ClientDiablo = require('./clientDiablo') - const createClientSid = require('./createClientSid') - const createClientMcp = require('./createClientMcp') - const createClientD2gs = require('./createClientD2gs') - const { once } = require('once-promise') - const { toNumVersion } = require('../../version') +const diabloData = require('diablo2-data')('pod_1.13d') function toCamelCase (s) { if (s === '') { return '' } @@ -101,21 +97,7 @@ function createClientDiablo ({ username, password, host, version, keyClassic, ke const { gameToken, IPOfD2GSServer: IP2, gameHash, result } = await once(clientDiablo, 'MCP_JOINGAME') if (result !== 0) { - const errors = { - 0x00: 'Game joining succeeded. In this case, Diablo 2 terminates the connection with the MCP and initiates the connection with the D2GS.', - 0x29: 'Password incorrect.', - 0x2A: 'Game does not exist.', - 0x2B: 'Game is full.', - 0x2C: 'You do not meet the level requirements for this game.', - 0x6E: 'A dead hardcore character cannot join a game.', - 0x71: 'A non-hardcore character cannot join a game created by a Hardcore character.', - 0x73: 'Unable to join a Nightmare game.', - 0x74: 'Unable to join a Hell game.', - 0x78: 'A non-expansion character cannot join a game created by an Expansion character.', - 0x79: 'A Expansion character cannot join a game created by a non-expansion character.', - 0x7D: 'A non-ladder character cannot join a game created by a Ladder character.' - } - throw new Error(`Cannot connect error ${result} : ${errors[result]}`) + clientDiablo.emit('error', Error(`Cannot connect error ${result} : ${diabloData.responses.joinGame[result]}`)) } clientDiablo.IP2 = IP2 @@ -136,7 +118,7 @@ function createClientDiablo ({ username, password, host, version, keyClassic, ke const { status } = await once(clientDiablo, 'SID_STARTADVEX3') if (status === 1) { - throw new Error('join failed') + clientDiablo.emit('error', new Error('join failed')) } } diff --git a/lib/client/createClientMcp.js b/lib/client/createClientMcp.js index 91041fb..4400c0a 100644 --- a/lib/client/createClientMcp.js +++ b/lib/client/createClientMcp.js @@ -1,17 +1,14 @@ const ClientMcp = require('./clientMcp') - const { once } = require('once-promise') +const diabloData = require('diablo2-data')('pod_1.13d') // Connect to account async function createClientMcp (clientDiablo, hostMcp, portMcp, MCPCookie, MCPStatus, MCPChunk1, MCPChunk2, battleNetUniqueName, version) { const clientMcp = new ClientMcp(version) clientDiablo.setClientMcp(clientMcp) clientMcp.on('connect', () => { - // 'connect' listener - console.log('connected to MCP server!') - + clientDiablo.emit('log', 'connected to MCP server') clientMcp.socket.write(Buffer.from('01', 'hex')) // This Initialise conversation - clientDiablo.write('MCP_STARTUP', { MCPCookie: MCPCookie, MCPStatus: MCPStatus, @@ -22,23 +19,17 @@ async function createClientMcp (clientDiablo, hostMcp, portMcp, MCPCookie, MCPSt }) clientDiablo.on('MCP_STARTUP', ({ result }) => { - // TODO: better error handling (exceptions ;..) - if (result === 0x02 || (result >= 0x0A && result <= 0x0D)) { - console.log('Realm Unavailable: No Battle.net connection detected.') - } else if (result === 0x7E) { - console.log('CDKey banned from realm play.') - } else if (result === 0x7F) { - console.log('Temporary IP ban "Your connection has been temporarily restricted from this realm. Please try to log in at another time."') - } else { - console.log('Success!') + if (result === 0) { clientDiablo.write('MCP_CHARLIST2', { numberOfCharacterToList: 8 }) + clientDiablo.emit('log', diabloData.responses.startup[result]) + } else { + clientDiablo.emit('error', new Error(diabloData.responses.startup[result])) } }) const p = once(clientDiablo, 'MCP_CHARLIST2') - clientMcp.connect(hostMcp, portMcp) const { characters } = await p diff --git a/lib/client/createClientSid.js b/lib/client/createClientSid.js index a3184e9..e9ed2e9 100644 --- a/lib/client/createClientSid.js +++ b/lib/client/createClientSid.js @@ -1,23 +1,18 @@ const ClientSid = require('./clientSid') - const getHash = require('../utils/getHash') - const { once } = require('once-promise') - -// const cdkey16 = require('../utils/cdkey') -const cdkey = require('../utils/cdkey26') +const cdKey = require('../utils/cdkey26') const checkRevision = require('../utils/checkRevision') +const diabloData = require('diablo2-data')('pod_1.13d') + -// Connect to battlenet async function createClientSid (clientDiablo, host, version) { - // const getMpq = require(`../utils/getMpq1.13`) const portSid = 6112 const clientSid = new ClientSid(version) clientDiablo.setClientSid(clientSid) clientDiablo.clientToken = 2045114178 clientSid.on('connect', () => { - // 'connect' listener - console.log('connected to server!') + clientDiablo.emit('log', 'connected to SID server!') clientSid.socket.write(Buffer.from('01', 'hex')) // Initialises a normal logon conversation @@ -64,8 +59,8 @@ async function createClientSid (clientDiablo, host, version) { } }, () => {})) */ - const key1 = cdkey(clientDiablo.keyClassic, clientDiablo.clientToken, clientDiablo.serverToken) - const key2 = cdkey(clientDiablo.keyExtension, clientDiablo.clientToken, clientDiablo.serverToken) + const key1 = cdKey(clientDiablo.keyClassic, clientDiablo.clientToken, clientDiablo.serverToken) + const key2 = cdKey(clientDiablo.keyExtension, clientDiablo.clientToken, clientDiablo.serverToken) const { checksum, info } = checkRevision(valuestring) clientDiablo.write('SID_AUTH_CHECK', { @@ -94,14 +89,14 @@ async function createClientSid (clientDiablo, host, version) { clientDiablo.on('SID_AUTH_CHECK', ({ result, additionalInformation }) => { if (result === 0) { - console.log('Correct keys') + clientDiablo.emit('log', 'Correct keys') clientDiablo.write('SID_GETFILETIME', { requestId: 2147483652, unknown: 0, filename: 'bnserver-D2DV.ini' }) } else { - console.log(`result is ${result}, wrong key`) + clientDiablo.emit('error', new Error(`result is ${result}, wrong key`)) } }) @@ -115,9 +110,11 @@ async function createClientSid (clientDiablo, host, version) { }) clientDiablo.on('SID_LOGONRESPONSE2', ({ status }) => { - console.log(status === 0 ? 'Success' : status === 1 ? "Account doesn't exist" : status === 2 ? 'Invalid password' : 'Account closed') + clientDiablo.emit('log', diabloData.responses.logon[status]) if (status === 0) { clientDiablo.write('SID_QUERYREALMS2', {}) + } else { + this.emit('error', new Error(diabloData.responses.logon[status])) } }) diff --git a/lib/utils/logger.js b/lib/utils/logger.js deleted file mode 100644 index 20e4f31..0000000 --- a/lib/utils/logger.js +++ /dev/null @@ -1,30 +0,0 @@ -const winston = require('winston') - -function basicLogger () { - const logger = winston.createLogger({ - level: 'info', - format: winston.format.json(), - // defaultMeta: { service: 'user-service' }, - transports: [ - // - // - Write all logs with level `error` and below to `error.log` - // - Write all logs with level `info` and below to `combined.log` - // - // new winston.transports.File({ filename: 'error.log', level: 'error' }), - // new winston.transports.File({ filename: 'combined.log' }) - ] - }) - - // - // If we're not in production then log to the `console` with the format: - // `${info.level}: ${info.message} JSON.stringify({ ...rest }) ` - // - if (process.env.NODE_ENV !== 'production') { - logger.add(new winston.transports.Console({ - format: winston.format.simple() - })) - } - return logger -} - -module.exports = basicLogger diff --git a/package.json b/package.json index f96ed88..ac98fec 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "bit-buffer": "^0.2.4", "bridge.net": "^2.0.0", "csvtojson": "^2.0.8", - "diablo2-data": "^1.3.0", "once-promise": "^2.0.0", - "protodef": "^1.6.9" + "protodef": "^1.6.9", + "diablo2-data": "file:../node-diablo2-data" }, "standard": { "ignore": [