done
Signed-off-by: K0RB4K <k0rb4k@k0rb4k.net>
This commit is contained in:
parent
553d93f38a
commit
fe5c12b29c
5
.idea/.gitignore
vendored
Normal file
5
.idea/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
12
.idea/ctf10k-rpn.iml
Normal file
12
.idea/ctf10k-rpn.iml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="WEB_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
6
.idea/jsLibraryMappings.xml
Normal file
6
.idea/jsLibraryMappings.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="JavaScriptLibraryMappings">
|
||||
<includedPredefinedLibrary name="Node.js Core" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
Normal file
8
.idea/modules.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/ctf10k-rpn.iml" filepath="$PROJECT_DIR$/.idea/ctf10k-rpn.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
59
main.js
Normal file
59
main.js
Normal file
@ -0,0 +1,59 @@
|
||||
const Net = require('net');
|
||||
|
||||
const port = 8002
|
||||
const host = "ctf10k.root-me.org"
|
||||
|
||||
const client = new Net.Socket
|
||||
|
||||
client.on('data', (data) => {
|
||||
console.log("received data:\n", data.toString())
|
||||
|
||||
regex =/(?<equation>^\d+.*$)/m
|
||||
let message = regex.exec(data.toString()).groups["equation"]
|
||||
console.log("equation:", message)
|
||||
|
||||
let response = interpretRPN(message)
|
||||
console.log("response:", response)
|
||||
let buf = Buffer.from(response+"\n")
|
||||
client.write(buf)
|
||||
})
|
||||
|
||||
client.on('end', () => {
|
||||
console.log("connection terminated by remote host")
|
||||
})
|
||||
|
||||
client.connect({port: port, host: host}, () => {
|
||||
console.log("connected")
|
||||
})
|
||||
|
||||
function interpretRPN(message){
|
||||
const operators = ['-', '+', 'x', '/']
|
||||
let elements = message.split(' ')
|
||||
for (let i = 0; i < elements.length; i++) {
|
||||
if (operators.includes(elements[i])) {
|
||||
let operation = elements.slice(i-2, i+1)
|
||||
let result = computeOperation(operation)
|
||||
elements.splice(i-2, 3, result)
|
||||
i = 0
|
||||
}
|
||||
}
|
||||
|
||||
return elements.toString()
|
||||
}
|
||||
|
||||
function computeOperation(operation) {
|
||||
switch (operation[2]) {
|
||||
case '-':
|
||||
return BigInt(operation[0]) - BigInt(operation[1])
|
||||
case 'x':
|
||||
return BigInt(operation[0]) * BigInt(operation[1])
|
||||
case '/':
|
||||
return BigInt(operation[0]) / BigInt(operation[1])
|
||||
case '+':
|
||||
return BigInt(operation[0]) + BigInt(operation[1])
|
||||
}
|
||||
}
|
||||
|
||||
// const example = "994 611 + 357 733 + 82 543 - x x 740 + 136 x 996 +"
|
||||
// console.log("response:", interpretRPN(example))
|
||||
|
||||
6
package.json
Normal file
6
package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "ctf10k-rpn",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user