graffiti sends ASCII-art texts to remote webserver logs using consecutive 404 errors.
Don't use this software to abuse other people's systems, this is not a DOS tool and it's not optimized for that use case.
From your computer:
~ $ graffiti -t "hello world" -d www.example.com
Text: "hello world"
Destination: http://www.example.com/
User Agent: graffiti
** Use -v to switch verbose mode on **
From the remote server:
# tail -f /var/log/nginx/access.log
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------------------N HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------------------N------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNN--------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /--------------NNNNN----------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNN-------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NNNNNNNNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NN-----N-----NN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N------N-------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N------N-------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N------N------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------N-----NNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NN---NNNNNN-------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------------NNN----------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------------------N HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------------------N HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /--------------NNNNN----------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNN-------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NNNNNNNNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NN-----------NN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N--------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N--------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNN-------NNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNNN------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------NNNNNNNN--------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------------------NNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------NNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------------NNNNNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NNNNNNNNNN---------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNN------------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------NNN-------------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NNNNNNNNNN---------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNN------------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------NNN-------------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------------NNNN---N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------------------NNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /--------------NNNNN----------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNN-------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NNNNNNNNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NN-----------NN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N--------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N--------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNN-------NNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNNN------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------NNNNNNNN--------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N--------------N----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------------------NN------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------------------NN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /--------------------NNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------------NNNNNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------------NNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------------------N HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-------------NNNNNNN---------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /-----------NNNNNNNNNNNN------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNN------------ HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NN-----------NNN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------NN----------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /----------NN----------N------------N HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------NNNNNNNNNNNNNNNNNNNNNNNNNNN HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /---------N-------------------------- HTTP/1.1" 404 168 "-" "graffiti"
1.2.3.4 - - [20/Sep/2015:14:03:36 +0200] "GET /------------------------------------ HTTP/1.1" 404 168 "-" "graffiti"
-a string
User Agent (default "graffiti")
-bg string
Background (default "-")
-d string
Destination (ie: www.example.com)
-fg string
Foreground (default "N")
-n Dry Run
-r int
Number of times to execute (default 1)
-s Silent or quiet mode
-t string
Text to send to the remote server
-v Verbose output