Giter VIP home page Giter VIP logo

db1000n's Introduction

Death by 1000 needles

See Docs

Made in Ukraine

This is a simple distributed load generation tool written in Go. It is able to fetch a simple JSON config from a local or remote location. The config describes which load generation jobs should be launched in parallel. There are other existing tools doing the same kind of job. I do not intend to copy or replace them but rather provide a simple open source alternative so that users have more options. Feel free to use it in your load tests (wink-wink).

The software is provided as is under no guarantee. I will update both the repository and this documentation as I go during following days (date of writing this is 26th of February 2022, third day of Russian invasion into Ukraine).

db1000n's People

Contributors

alexdanger avatar amet13 avatar arfgdev avatar arriven avatar artem-korotenko avatar bitshape avatar crabulik avatar deputinizer avatar devaniti avatar didgudan avatar dmitr101 avatar exsesx avatar golubovskyi avatar iamtodor avatar jdoe7865623 avatar k0xxx avatar krotoveugene avatar lagovas avatar localdotcom avatar nazariozad avatar neatdecisions avatar nicolaspbl avatar o-volkov avatar paalomnikdev avatar ralfeus avatar roman-kruglov avatar securims avatar sivillakonski avatar slayer avatar zmitry 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

db1000n's Issues

Only seems to attack 3 IPs

With -i 0 flag on launch, the only IPs visible in the log are
[DEBUG] 194.54.14.187:53 started at XYZ
[DEBUG] 194.54.14.186:53 started at XYZ
[DEBUG] 194.67.2.109:53 started at XYZ
No other targets are visible

Sometimes there are fail messages like
[DEBUG] GET https://bezformata.com/ failed at 1646319728 with code 403

With only 3 targets working out of 59, it doesn't seem to be effective

Crash on DigitalOcean droplet

Tool crashes on DigitalOcean droplet (Shared CPU, 2 vCPUs, 4 GB, 25 GB, 4 TB). Startup method: docker install.

goroutine 44381 [running]:
math/rand.(*Rand).Intn(0x80acea, 0x46817b)
/usr/local/go/src/math/rand/rand.go:168 +0x65
math/rand.Intn(...)
/usr/local/go/src/math/rand/rand.go:337
main.httpJob.func1(0xc003364d00)
/usr/src/app/main.go:229 +0x45
net/http.(*Transport).connectMethodForRequest(0xc00d50ab40, 0xc00d23d2c0)
/usr/local/go/src/net/http/transport.go:834 +0x91
net/http.(*Transport).roundTrip(0xc00d50ab40, 0xc003364d00)
/usr/local/go/src/net/http/transport.go:571 +0x6c5
net/http.(*Transport).RoundTrip(0xc003364d00, 0x8d2480)
/usr/local/go/src/net/http/roundtrip.go:18 +0x19
net/http.send(0xc003364c00, {0x8d2480, 0xc00d50ab40}, {0x7fe120, 0x48a501, 0xbb6680})
/usr/local/go/src/net/http/client.go:252 +0x5d8
net/http.(*Client).send(0xc00e272c00, 0xc003364c00, {0xc00e273c20, 0x2f, 0xbb6680})
/usr/local/go/src/net/http/client.go:176 +0x9b
net/http.(*Client).do(0xc00e272c00, 0xc003364c00)
/usr/local/go/src/net/http/client.go:725 +0x908
net/http.(*Client).Do(...)
/usr/local/go/src/net/http/client.go:593
main.httpJob({0x8db078, 0xc002cb5b80}, 0xc0000a6310, {0xc00230e1e0, 0x9a, 0xa0})
/usr/src/app/main.go:282 +0xa9e
created by main.main
/usr/src/app/main.go:586 +0x725

P.S. In Droplets with worse characteristics tool is killed by OOM-killer.

The app doesn't seem to generate any traffic, please contact your admin

WARN] 2022/03/04 12:49:51 [WARN] The app doesn't seem to generate any traffic, please contact your admin
[ERROR] 2022/03/04 12:49:51 github.com/Arriven/db1000n/logs.Logger.Error:logs.go:50 [ERROR] error sending packet: listen ip4:tcp 0.0.0.0: socket: operation not permitted
[ERROR] 2022/03/04 12:49:51 github.com/Arriven/db1000n/logs.Logger.Error:logs.go:50 [ERROR] error sending packet: listen ip4:tcp 0.0.0.0: socket: operation not permitted
[ERROR] 2022/03/04 12:49:51 github.com/Arriven/db1000n/logs.Logger.Error:logs.go:50 [ERROR] error sending packet: listen ip4:tcp 0.0.0.0: socket: operation not permitted
[ERROR] 2022/03/04 12:49:51 github.com/Arriven/db1000n/logs.Logger.Error:logs.go:50 [ERROR] error sending packet: listen ip4:tcp 0.0.0.0: socket: operation not permitted
[ERROR] 2022/03/04 12:49:51 github.com/Arriven/db1000n/logs.Logger.Error:logs.go:50 [ERROR] error sending packet: listen ip4:tcp 0.0.0.0: socket: operation not permitted

Panic

2022/03/03 21:59:31 178.248.236.218 is already an IP address, skipping DNS resolution
^M^M^M⠋ Flood is in progress, target=178.248.236.218:80, floodType=random, payloadLength=1000 (348 kB, 3.397 MB/s) ^M^M^M⠙ Flood is in progress, target=178.248.236.218:77, floodType=random, payloadLength=100$

runtime stack:
runtime.throw({0x83a6ba, 0x15})
        /usr/local/go/src/runtime/panic.go:1198 +0x71
runtime.(*mheap).sysAlloc(0xc03e20, 0x42b0e0)
        /usr/local/go/src/runtime/malloc.go:756 +0x2d8
runtime.(*mheap).grow(0xc03e20, 0x102)
        /usr/local/go/src/runtime/mheap.go:1347 +0x73
runtime.(*mheap).allocSpan(0xc03e20, 0x102, 0x0, 0x1)
        /usr/local/go/src/runtime/mheap.go:1179 +0x165
runtime.(*mheap).alloc.func1()
        /usr/local/go/src/runtime/mheap.go:913 +0x69
runtime.systemstack()
        /usr/local/go/src/runtime/asm_amd64.s:383 +0x49

goroutine 74 [running]:
runtime.systemstack_switch()
        /usr/local/go/src/runtime/asm_amd64.s:350 fp=0xc0137ab540 sp=0xc0137ab538 pc=0x4622c0
runtime.(*mheap).alloc(0xc013395960, 0x10, 0x98, 0x0)
        /usr/local/go/src/runtime/mheap.go:907 +0x73 fp=0xc0137ab590 sp=0xc0137ab540 pc=0x427413
runtime.(*mcache).allocLarge(0xc0001acd00, 0x204000, 0xf8, 0x1)
        /usr/local/go/src/runtime/mcache.go:227 +0x89 fp=0xc0137ab5f0 sp=0xc0137ab590 pc=0x418089
runtime.mallocgc(0x204000, 0x0, 0x0)
        /usr/local/go/src/runtime/malloc.go:1088 +0x5c5 fp=0xc0137ab670 sp=0xc0137ab5f0 pc=0x40e605
runtime.growslice(0x11, {0xc00002c948, 0x12, 0xc0133959d0}, 0x10)
        /usr/local/go/src/runtime/slice.go:261 +0x4ac fp=0xc0137ab6d8 sp=0xc0137ab670 pc=0x44b8ec
strings.(*Builder).Write(0xc0000624a0, {0xc02b37e000, 0x203d63, 0x204000})
        /usr/local/go/src/strings/builder.go:90 +0x85 fp=0xc0137ab728 sp=0xc0137ab6d8 pc=0x4e88c5
fmt.Fprint({0x8dad20, 0xc0000624a0}, {0xc0001f97e8, 0x1, 0x1})
        /usr/local/go/src/fmt/print.go:233 +0x75 fp=0xc0137ab778 sp=0xc0137ab728 pc=0x4dd275
text/template.(*state).printValue(0xc0001f99f8, {0x8e8090, 0xc00017b3e0}, {0x78c800, 0xc014fe82b0, 0xffffffffffffffff})
        /usr/local/go/src/text/template/exec.go:964 +0x176 fp=0xc0137ab828 sp=0xc0137ab778 pc=0x615f16
text/template.(*state).walk(0xc0001f99f8, {0x0, 0x0, 0x10000c000166480}, {0x8e8090, 0xc00017b3e0})
        /usr/local/go/src/text/template/exec.go:256 +0x22d fp=0xc0137ab8c8 sp=0xc0137ab828 pc=0x60f4cd
text/template.(*state).walk(0xc0137ab9f8, {0x0, 0x0, 0x0}, {0x8e8360, 0xc00017b2f0})
        /usr/local/go/src/text/template/exec.go:263 +0x37d fp=0xc0137ab968 sp=0xc0137ab8c8 pc=0x60f61d
text/template.(*Template).execute(0xc00053c900, {0x8dad20, 0xc0000624a0}, {0x0, 0x0})
        /usr/local/go/src/text/template/exec.go:217 +0x2d8 fp=0xc0137aba58 sp=0xc0137ab968 pc=0x60f198
text/template.(*Template).Execute(...)
        /usr/local/go/src/text/template/exec.go:200
html/template.(*Template).Execute(0xc00017b200, {0x8dad20, 0xc0000624a0}, {0x0, 0x0})
        /usr/local/go/src/html/template/template.go:124 +0x65 fp=0xc0137aba90 sp=0xc0137aba58 pc=0x6298c5
main.parseStringTemplate({0xc000265c50, 0x27})
        /github/workspace/main.go:170 +0x6c5 fp=0xc0137abc50 sp=0xc0137aba90 pc=0x758265
main.parseByteTemplate(...)```

Document config

Write understandable documentation for the config so that people could use their own setup when deploying to clusters

OOM issue

Screenshot 2022-03-04 at 20 49 13

$ docker ps -a
CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                        PORTS     NAMES
12b8c086e5ec   12b8c086e5ec                      "./main"                 23 hours ago     Exited (137) 11 hours ago               hardcore_galileo
docker inspect 12b8c086e5ec 
*****
            "Labels": {
                "org.opencontainers.image.created": "2022-03-03T17:42:18.035Z",
                "org.opencontainers.image.description": "",
                "org.opencontainers.image.licenses": "",
                "org.opencontainers.image.revision": "57aed46ac95d8137a56157ad4596dde845ad2b0f",
                "org.opencontainers.image.source": "https://github.com/Arriven/db1000n",
                "org.opencontainers.image.title": "db1000n",
                "org.opencontainers.image.url": "https://github.com/Arriven/db1000n",
                "org.opencontainers.image.version": "v0.5.9"
            }

If this issue is related to the older app version, just close it.

thanks for tool btw

Metrics

It'd be good to have more informative indicators on the tool progress.
Potential metrics:

  • Amount of traffic sent per job/job type/overall
  • Statuses of targets (at least http)
  • CPU/RAM/Network usage
    The most important metric would be the overall amount of traffic.
    To avoid impact on performance and stability please implement it so that worker threads populate some thread safe structures with metrics that are regularly read and logged by a background thread.

Sub issues to split and plan work:

bash and power-shell script of ease of installation

We need script similar to brew and other single line install scripts which will install appropriative binary/os and run the code.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Embedded VPN

Народ, можливо варто додати вбудовану роботу через vpn?
ось у мене є приклад на docker compose https://github.com/ctukraine22/runner
суть в тому, що підіймається контейнер з vpn, і контейнер з db1000n, потім періодично vpn перепідключається.
Щоб запустити достатньо тільки дати налаштування для свого vpn, мінус в тому що із коробки провайдерів не багато підтримується

Хто координує дії??

Отримав посилання на image від кібер козаків, але хости які атакує скрипт не співпадають з тим що вони пишуть у себе в групі

Security issue because of public repo

Росіяни чи про-російськи можуть взяти ваш код, підправити шлях до конфігу - і досити українські ресурси!

сховайте код, не робіть роботу за окупанта
роздавайте докер імідж і то краще б якось обережно імідж робити, щоб код не взяли звідти

dynamic targets list

I have created an API for targets, currently it has info on cloudflare, UP/DOWN, ips and other stuff.
I am planning to add open ports info and add sorting based on popularity.

If you'd like I can share an access with you.

You can check it out here:
http://164.92.247.88:9300/

Docker stopped after several seconds

Hi!

After several second docker has been stopped. Log below

root@vds2140872:~# docker run ghcr.io/arriven/db1000n:latest
2022/03/03 16:56:31 178.248.236.218 is already an IP address, skipping DNS resolution
2022/03/03 16:56:31 178.248.236.218 is already an IP address, skipping DNS resolution
⠧ Flood is in progress, target=178.248.236.218:80, floodType=random, payloadLength=1000 (5.3 MB, 383.465 kB/s)
root@vds2140872:~# 

Can you help with the fix?

Question: How this program works?

Hello dear Author. I have tested your program wth custom config on my default apache server. Config has type: http , get method.
Also i have tested other tools, https://github.com/codesenberg/bombardier and https://github.com/MHProDev/MHDDoS
So you can see that bombarier has a lot of RPC (requests per second) and Mhddos can open a lot of socket connections.
Cpu usage also is very tiny value, so I don't understand why this program is useful. If i don't right, please describe what I should check metrics, smth else. Thank you.
bombardier
db100n
MhDdos

Documentation structure

As new PRs come in the docs start to be a little chaotic. I think it's important to make the structure clearer to enable faster contributions.

I'm thinking about the following structure:

  • README.md - general info about the repository, links to docs/new-users.md and docs/technical-users.md should be in the beginning
  • docs/ - folder for all the other READMEs that don't belong to any other specific subfolder
  • docs/README.md - Highlited links to instructions for new and experienced users, then links to every doc that exists in the repo in a simple list
  • docs/new-users.md - instruction for new users with next to no technical experience. Should only include info about setting up the vpn and installing the app directly through releases or via docker (and clearly state that docker is an alternative to the direct install)
  • docs/technical-users.md - general info about all the ways to deploy and configure the app with links to appropriate folders/READMEs
  • docs/configuration.md - documentation including the commandline options, config file options and structure
  • path/to-specific/directory/README.md - all the docs related to a specific usage option (like already existing READMEs in terraform folder)

Please try to follow this structure when adding new documentation

How to stop the program?

Is there a way to stop program? Or I need only uninstall it to stop?
Device: Mac Book Pro Intel

Announcement to contributors: Code restructure

Considering the amount of contributions I decided to spend an hour or two restructuring the code a bit to reduce chances of merge conflicts in the future. Please avoid doing any major work until I resolve this issue or make sure you will be able to re-apply your work after I commit the code restructure as there may be a lot of file and code movements which could be hard to resolve automatically

Improve logging

Logs are formatted pretty poorly right now. Ideally we want to have an ability to write logs to different log levels (debug, info, warning, error, etc.) with better formatting.
After that we'd also need a cmdline option to set minimal logging level with everything below turning into noop to not spam users with debug logs and minimize performance impact

ARM and RaspberryPi support

For latest raspberry pi os:

~/db1000n $ docker run ghcr.io/arriven/db1000n
Unable to find image 'ghcr.io/arriven/db1000n:latest' locally
latest: Pulling from arriven/db1000n
docker: no matching manifest for unknown in the manifest list entries.
See 'docker run --help'.

Docker image won't run on arm64 devices

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Probably should be universal single-image-fits-all for easier scaling?

Write config generator so simplify management

Доброго дня! Хочу запропонувати написати (готовий це зробити сам) авто генератор конфігу, потрібні сайти будуть братись з телеграму або діскорду.

install.sh failed on arm architecture

Reproduced on Oracle cloud ampere instance.

sudo ./install.sh
failed with error
unknown: aarch64.

uname -a output
Linux arm 5.11.0-1028-oracle #31~20.04.1-Ubuntu SMP Wed Jan 26 14:20:52 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

echo $OSTYPE output
linux-gnu

echo $OSARCH return empty string.

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.