1
#!/bin/bash
#
# antirasistinen-maalitus.sh
# 2021.09.14 - ver.5
#
# Spammaa paskaa OlenAntirasisti.fi firmojen ilmottautumislomakkeeseen
# - Aja omalla vastuulla :D sanomista "voi" tulla
# - Aja TOR yli kayttamalla torify taí TOR transparent-proxy verkossa majailevaa virtuaalikonetta
# - CTRL+C lopettaa - tai sitte limitit ku tayttyy (MAXF tai MAXI)
# - Vaatimuksena perus bashi+perustyokalut ja CURL - testattu Debian10 ja Ubuntu21.04
# - Kayta mahd. paljon erilaisia nimia/emaileja/jne -  spammin siivoaminen on hankalempaa
#
# P.S. Neekerit vittuun Suomesta ja kommarimadattajat vittuun maapallolta

# KohdeURL
DST="https://link.webropolsurveys.com/Participation/Public/b2ee6d47-a84e-4539-a50a-dbfc4552d197?displayId=Fin2349037&surveyLocale=fi"

# Temppifilu - response bodyn ajonaikasee sailomiseen, tata pitaa pystya kirjottaa+lukeen
TEMPF="/tmp/ebininor-temp.txt"

# User-Agent
UA="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

# Max error eli monta virhetta PUTKEEN saa tulla tai kuollaan
# Arvo 0 poistaa rajoituksen kaytosta
MAXF="10"

# Max rounds eli monta ebin spammia lahetetaan(tai ees yritetaan) enneku lopetetaan SBAM
# Arvo 0 poistaa rajoituksen kaytosta
MAXI="0"

# Randomsleep elikkas montako sekuntia ENIMMILLAAN ootellaan kierrosten valissa ennenku spammataa lisaa
# Arvo 0 poistaa odotusajan kaytosta
MAXS="5"

# Firman nimi milla toivotaan rasisminvastustusta, tukee joka kierroksella uusiks listasta arvottavaa tai sitte staattista
#
# stattinen:
# VALC=('Firma Oy')
#
# randomilla valittava:
# VALC=('Firma Oy')
# VALC+=('Joku Muu Firma Ky')
# VALC+=('keksi lisaa naita nii paljo ku jaksat')
# jne
VALC=('Kauppisen Maansiirto Firma Ky')
VALC+=('Neekereiden Tehouunitus Oy')
VALC+=('NSDAP')
VALC+=('Israelin Jutkukomitea AB')
VALC+=('Auswhiz Birgenau :D')
VALC+=('Natsi-Kärkkäinen')
VALC+=('Helsingin Sanomat')
VALC+=('Vihapuhepoliisi')
VALC+=('Poliisihallitus')
VALC+=('Tmi Venäjän Trollitehdas')
VALC+=('Mossad')
VALC+=('NSA')
VALC+=('Cannonball MC')
VALC+=('Apache MC')
VALC+=('Yleisradio')
VALC+=('Elopainokapina')
VALC+=('Wuhan Institute of Virology')
VALC+=('Goatse Ry')

# Yhteyshenkilon nimi milla toivotaan rasisminvastustusta, tukee joka kierroksella uusiks listasta arvottavaa tai sitte staattista
# kato esimerkki firman nimesta, taa toimii samanlailla
VALN=('Pete Kauppinen')
VALN+=('Johannes Koski')
VALN+=('Jari MunatonNillttäjä Taponen')
VALN+=('Ebin Nyymi :D')
VALN+=('Maria Ohisalo')
VALN+=('Raija Toiviainen')
VALN+=('Sanna Marin')
VALN+=('Vladimir Putin')
VALN+=('Joku Vitun Ruma Neekeri')
VALN+=('Adolf Hitler')
VALN+=('Suomivoima')
VALN+=('Somaleiden Tuhoamiskomitea')
VALN+=('Pekka Siitoin')
VALN+=('Karl Marx')
VALN+=('Anders Behering Breivik')
VALN+=('Brenton Tarrant')
VALN+=('Breivik did nothing wrong')
VALN+=('Fentanyl Floyd')
VALN+=('Nakki Tranberg')
VALN+=('Mona Bling')

# Email osote milla toivotaan rasisminvastustusta, tukee joka kierroksella uusiks listasta arvottavaa tai sitte staattista
# kato esimerkki firman nimesta, taa toimii samanlailla
VALE=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')
VALE+=('[email protected]')


# Vapaamuotone viesti mika lahetetaan, tukee joka kierroksella uusiks listasta arvottavaa tai sitte staattista
# kato esimerkki firman nimesta, taa toimii samanlailla
VALM=('SUOMIVOIMA TÄS UUDEN KESÄBIITIN KANS JONKA TAHTIIN VOITTE TANSSII TAI AMPUA NEEKERIÄ JA VAIPUA TRANSSIIN')
VALM+=('KESÄ SAAPUI JA CADILLACIN OSTIN SEN KYYDISTÄ MONET ROTUPETOKSET KOSTIN, NEKRUT SUOMIVOIMAA VITUTTAA NII ET PAKKO PARI RIIMII TIPUTTAA')
VALM+=('KUN VALKOINEN LEIJONA KARJUU, ALKAA MUSTIEN SADONKORJUU, KUN NEEKERI OTTAA AIVOON HEITÄN SEN LIETEKAIVOON')
VALM+=('SUOMEN TOIVO ON SEPPO LEHTO, EI SEPOLLE ISLAMISAATIO OO VAIHTOEHTO, JOS NEEKERI MEINAA RAJAN YLI LOIKKAA ON AIKA ASEITA KOITTAA')
VALM+=('KETÄÄN EN RAJAN YLI PÄÄSTÄ, MUSLIMEIHIN EN LUOTEJA SÄÄSTÄ, KUN VALKOINEN MIES LÄHTEE DUUNIIN JUTKUN ELÄMÄ PÄÄTTYY UUNIIN')
VALM+=('AATTEEN MIEHEN VALINTA ON SELVÄ KUN ALKAA MUSLIMEITA PÄÄN VERRAN LYHENNELLÄ, KUN MUSLIMIT ITSEÄNSÄ SUOMEEN TYRKYTTÄÄ ON AIKA NE ZYCLON B:LLÄ MYRKYTTÄÄ')
VALM+=('CADILLACISTA NEEKERIN AMMUIN, SIIHEN AFRIKAN TÄHTI SAMMUI, SAMALLA KUN MUSLIMEITA TIEHEN LANAAN, ADOLF HITLERIN MÄ ELOON MANAAN')
VALM+=('MUSTALAISISTAKIN ON VAIN HAITTAA, ALI-IHMISET VOI SUORAAN UUNIIN LAITTAA, TUUTULAULUNI ON UUNIN LUUKUN KOLINA JA MIELENRAUHAN ANTAA VAIN NEEKERIN KUOLONKORINA')
VALM+=('MISTÄ NÄITÄ ALI-IHMISIÄ OIKEIN SIKIÄÄ, UUNIEN LUUKUT LYÖ JO KIPINÄÄ, JOSKUS VIELÄ MIELENRAUHAN SAAN KUN LAITAN TARPEEKSI NEKRUJA PUISTA ROIKKUMAAN')
VALM+=('SEPPO LEHTO, TUO JOKAISEN ARJALAISEN ELINEHTO, SEPPO LEHTO KULTIN LOI, SE ROTUPUHDISTUKSEN EUROOPPAAN TOI')
VALM+=('NEEKERI ON LÄPEENSÄ PAHA, ONNEKSI NIIHIN TOIMII POKASAHA, NEEKERIN KUULUU ITKEÄ, ON AIKA SAASTAA KITKEÄ')
VALM+=('KIRJAIMET JOTKA KUVASTAA MUA ON KOLME KOOTA, SIKS KANNATAN AKTIIVISESTI SOO:TA, LIITY SIIS SOLDERS OF ODIN, SEN JÄTKÄT TIETÄÄ VÄRIKOODIN')
VALM+=('OODINIT PARTIOIVAT MAIHINNOUSUKENGISSÄ, EI NEEKERIT SELVIÄ YÖSTÄ HENGISSÄ, SOLDERS OF ODIN VOIN TARJOTA SULLE KODIN')
VALM+=('CADILLACISTA JUUTALAISEN AMMUIN SIIHEN DAAVIDIN TÄHTI SAMMUI, SAMALLA KUN JUTKUJA TIEHEN LANAAN PEKKA SIITOIMEN MÄ ELOON MANAAN')
VALM+=('FEMINISTEISTÄKIN ON VAIN HAITTAA NEKIN VOI KAASUKAMMIOON LAITTAA, TIIVISTIN JUURI KAASUKAMMION OVEN KARMIN, PIRISTÄVÄ ÄÄNI LÄHTEE KUN ZYCLON B POISTAA HARMIN')
VALM+=('MISTÄ NÄITÄ ALI-IHMISIÄ OIKEIN SAAPUU, MELKEIN TALOUS KAASULASKUUN KAATUU')
VALM+=('KESÄSÄÄT KOHTA TAAS SAAPUU, SOKEA NEEKERI SUOJATIELLÄ MUN CADILLACIN ETEEN KAATUU, KAASUA LISÄÄ PAINAN JA KIVEKSIÄNI PURISTELEN NÄIN MINÄ SUOMIVOIMA NEEKERIN YLI HURISTELEN')
VALM+=('CADILLACISTANI KUN NEEKERIÄ AMMUIN, ONNELLISENA KOTONA SOHVALLENI SAMMUIN')

################################
### ELA KOSKE TASTA ALASBAIN :---DDD
### Sisaisia toiminnallisuuksia vain
################################

i=0     # Round cnt
f=0     # Fail cnt
s=0     # Sleep tenp val
tmpc="" # Temp company
tmpn="" # Temp name
tmpe="" # Temp email
tmpm="" # Temp message
tmpx=0  # Temp num store
tmpo="" # Tulostuspuskuri
maxc=$((${#VALC[@]}-1)) # Isoin rivi-id VALC taulukossa?
maxn=$((${#VALN[@]}-1)) # Isoin rivi-id VALN taulukossa?
maxe=$((${#VALE[@]}-1)) # Isoin rivi-id VALE taulukossa?
maxm=$((${#VALM[@]}-1)) # Isoin rivi-id VALM taulukossa?
statok=0    # Countteri montako onnistunutta pyyntoa
statfail=0  # Countteri montako epaonnistunutta pyyntoa

# Printtifunktio stdout ulostukseen - printtaa timestamp + formatoi viesti
function msg() {
    echo -e "[$(date +%H:%M.%S)] ${1}"
}

# Siivousfunktio joka ajetaan kun CTRL+C painettu - printtaa statsit
function onQuit() {
    msg "\t CTRL+C painettu, suljetaan skripti...\n\t\tOnnistuneita pyyntoja:\t${statok}\n\t\tEpaonnistuneita pyyntoja:\t${statfail}"
    exit 0
}

# Suorita onQuit() kun SIGINT
trap onQuit INT

while true; do
    i=$((i+1))

    # CONTROL: Liikaa virheita? Poletaa vittuu sit
    if [[ "${MAXF}" -gt "0" && "$f" -ge "${MAXF}" ]]; then
        msg "#${i}\t EXIT: ${f} perakkaista virhetta kun sallittu ${MAXF}, lopetetaan..."
        exit 1
    fi

    # CONTROL: Liikaa yrityksia? Poletaa vittuu sit
    if [[ "${MAXI}" -gt "0" && "$i" -ge "${MAXI}" ]]; then
        msg "#${i}\t EXIT: ${i} yritysta kun sallittu ${MAXI}, lopetetaan..."
        exit 0
    fi

    # CONTROL: Randomsleep? Jos asetettu ni nuku tovi ennenku jatkat, arvalla et kauanko
    if [[ "${MAXS}" -gt "0" && "$i" -gt "1" ]]; then
        s=$(shuf -i 0-${MAXS} -n 1)
        msg "#${i}\t INFO: Lepaillaan ${s}s"
        sleep $s
    fi

    # SELECT DATA: TEMP/Debug tulostusbusguri alustuu :D Lisataa taha dataa enne printtia
    tmpo="#${i}\t INFO: Lomakkeessa lahetettava data"

    # SELECT DATA: Firma - Jos asetettu monta arvoa niin arvo joku niista - data arrayna - arvottu data muuttujassa $tmpc
    if [[ "$maxc" -gt "0" ]]; then
        tmpx=$(shuf -i 0-$maxc -n 1)
        tmpc=${VALC[$tmpx]}
        tmpo="${tmpo}\n\t\tfirma\t=\t'${tmpc}' [R:${tmpx}/${maxc}]"
    else
        tmpc=${VALC}
        tmpo="${tmpo}\n\t\tfirma\t=\t'${tmpc}' [S]"
    fi

    # SELECT DATA: Nimi - Jos asetettu monta arvoa niin arvo joku niista - data arrayna - arvottu data muuttujassa $tmpn
    if [[ "$maxn" -gt "0" ]]; then
        tmpx=$(shuf -i 0-$maxn -n 1)
        tmpn=${VALN[$tmpx]}
        tmpo="${tmpo}\n\t\tyht.hlo\t=\t'${tmpn}' [R:${tmpx}/${maxn}]"
    else
        tmpn=${VALN}
        tmpo="${tmpo}\n\t\tyht.hlo\t=\t'${tmpn}' [S]"
    fi

    # SELECT DATA: Email - Jos asetettu monta arvoa niin arvo joku niista - data arrayna - arvottu data muuttujassa $tmpe
    if [[ "$maxe" -gt "0" ]]; then
        tmpx=$(shuf -i 0-$maxe -n 1)
        tmpe=${VALE[$tmpx]}
        tmpo="${tmpo}\n\t\temail\t=\t'${tmpe}' [R:${tmpx}/${maxe}]"
    else
        tmpe=${VALE}
        tmpo="${tmpo}\n\t\temail\t=\t'${tmpe}' [S]"
    fi

    # SELECT DATA: Message - Jos asetettu monta arvoa niin arvo joku niista - data arrayna - arvottu data muuttujassa $tmpm
    if [[ "$maxm" -gt "0" ]]; then
        tmpx=$(shuf -i 0-$maxm -n 1)
        tmpm=${VALM[$tmpx]}
        tmpo="${tmpo}\n\t\tmessage\t=\t'${tmpm}' [R:${tmpx}/${maxm}]"
    else
        tmpm=${VALM}
        tmpo="${tmpo}\n\t\tmessage\t=\t'${tmpm}' [S]"
    fi

    # SELECT DATA: TEMP/Debug tulostusbusguri tulostuu :D
    msg "${tmpo}"

    #########################################
    ##  Intrusiiviset toimenpiteet alkaa   ##
    #########################################

    # Pollaa sivulta responseID jota tarvitaan vastauksen lahettamiseen (ainoo dynaamine arvo)
    # Queryy ja sailo response code taha muuttujaan, ite response body taas temppifiluun (overwritee aina vanhan filun jos olemassa)
    RIDcode=$(curl -s -A "${UA}" -o ${TEMPF} -w "%{http_code}" ${DST})

    # Tarkasta responsecode - jos fail niin skippaa kierros
    if [[ "$RIDcode" -ne "200" ]]; then
        # Jotain muuta kuin 200 OK - lienee virhe
        f=$((f+1))
        statfail=$((statfail+1))
        msg "#${i}\t ERROR ${f}/${MAXF}: ResponseID HTTP-kysely failas koodilla '${RIDcode}' Tarkasta tiedostosta '${TEMPF}' mita sivu sano"
        continue
    fi

    # Kaiva lomakkeen tarjooma responseID arvo response bodysta (temppifilussa)
    RIDval=$(grep id=\"ResponseId\" ${TEMPF} | sed 's/.*value=\"\([^"]*\).*/\1/')
    if [[ -z "$RIDval" ]]; then
        # Ei tullu dataa - lienee virhe
        f=$((f+1))
        statfail=$((statfail+1))
        msg "#${i}\t ERROR ${f}/${MAXF}: ResponseID arvoa ei loydy! HTTP-koodi: '${RIDcode}' Tarkasta tiedostosta '${TEMPF}' mita sivu sano"
        continue
    else
        # Jotain dataa tuli 200/OK ja IDn hakukin tuotti tulosta
        msg "#${i}\t INFO: ResponseID saatu, koodi='${RIDcode}' arvo='${RIDval}'"
    fi

    # Laheta paskaa lomakkeeseen
    # Kyselyn responsecode tähän muuttujaan ja responsebody tempfiluun - overwritee vanhan filun
    POSTcode=$(curl -X POST \
    -s -o ${TEMPF} -w "%{http_code}" \
    -F "CurrentPage"="1" \
    -F "PreviousPages"="" \
    -F "SurveyId"="b2ee6d47-a84e-4539-a50a-dbfc4552d197" \
    -F "SurveyLocale"="fi" \
    -F "IsLanguageChange"="False" \
    -F "ResponseId"="${RIDval}" \
    -F "RedirectToSummaryPage"="False" \
    -F "SurveyTypeId"="80f90cfe-155a-4c64-ace2-063a2c3b7f48" \
    -F "ForcePageNum"="" \
    -F "ForceRedirectToThankYouPage"="False" \
    -F "ForceRedirectToEnd"="False" \
    -F "HiddenQuestionsString"="" \
    -F "HiddenOptionsString"="" \
    -F "Questions[0].QuestionId"="96e3d1a9-95b7-4c33-8f56-ef54dcae8ae2" \
    -F "Questions[0].QuestionType"="Label" \
    -F "Questions[1].QuestionId"="3f479e6c-3e13-4a68-b988-d5306924d554" \
    -F "Questions[1].QuestionType"="ContactForm" \
    -F "Questions[1].Options[0].OptionId"="18b0d3b0-da54-4cd2-8c30-8d55dc6789f6" \
    -F "Questions[1].Options[0].Answers[0].TextValue"="${tmpc}" \
    -F "Questions[1].Options[1].OptionId"="77c4d8c6-bf37-4220-be11-a53e184e2289" \
    -F "Questions[1].Options[1].Answers[0].TextValue"="${tmpn}" \
    -F "Questions[1].Options[2].OptionId"="c94f49b8-85a7-4359-802f-f54694c7d3af" \
    -F "Questions[1].Options[2].Answers[0].TextValue"="${tmpe}" \
    -F "Questions[2].QuestionId"="0b93a2e8-df8e-4cf0-9f5b-12462ce2c5e5" \
    -F "Questions[2].QuestionType"="OpenEnded" \
    -F "Questions[2].Options[0].OptionId"="64eec6fc-4cd3-48a1-9b4d-b6c3a3d8a9c7" \
    -F "Questions[2].Options[0].Answers[0].TextValue"="${tmpm}" \
    -F "Questions[3].QuestionId"="bb7d6fc8-3b42-4bdb-904d-b87d60bae3c9" \
    -F "Questions[3].QuestionType"="Selection" \
    -F "Questions[3].Options[0].OptionId"="01c0e9fa-7d84-4bef-b746-d9fe50510ff0" \
    -F "Questions[3].Options[1].OptionId"="4f9c10ea-e752-409e-a19c-aafd08cf6856" \
    -F "Questions[3].Options[2].OptionId"="e246ad7c-09f1-4ddc-93ee-d142c6c9d546" \
    -F "Questions[3].SelectedAttribute"="01c0e9fa-7d84-4bef-b746-d9fe50510ff0" \
    -F "Questions[4].Options[0].OptionId"="0942a313-4860-4f45-b7ac-08eab45658e2" \
    -F "Questions[4].QuestionId"="7f4b09d0-2b12-4987-84e2-8cb945cf387e" \
    -F "Questions[4].QuestionType"="Selection" \
    -F "Questions[4].SelectedAttribute"="0942a313-4860-4f45-b7ac-08eab45658e2" \
    -F "IsNext"="True" \
    -F "IsMaxTimeLimitExpired"="False" \
    -F "DoSubmit"="True" \
    -e "link.webropolsurveys.com" \
    -A "${UA}" \
    $DST)

     # Tarkasta responsecode - jos fail niin skippaa kierros
    if [[ "$POSTcode" -ne "200" ]]; then
        # Jotain muuta kuin 200 OK - lienee virhe
        f=$((f+1))
        statfail=$((statfail+1))
        msg "#${i}\t ERROR ${f}/${MAXF}: Lomakkeen POST failas koodilla '${POSTcode}' Tarkasta tiedostosta '${TEMPF}' mita sivu sano"
        continue
    fi

    # Tarkastetaan viela response bodysta tuleeks sielta sennakonen sivu etta vastaus ois hyvaksytty
    # Ettei tuu mitaa cloudflarea tai jotain maagista erroria ku aiemmin tarkastettiin vaan HTTP vastauskoodi
    POSTval=$(grep "thank-you-message-container" ${TEMPF})
    if [[ -z "${POSTval}" ]]; then
        # Ei tullu oikeeta onnitteluviestia - lienee virhe
        f=$((f+1))
        statfail=$((statfail+1))
        msg "#${i}\t ERROR ${f}/${MAXF}: Lomakkeen POST todennakoisesti failas vaikka vastauskoodi '${POSTcode}' Tarkasta tiedostosta '${TEMPF}' mita sivu sano"
        continue
    else
        # 200/OK ja tuli onnitteluboksi - resetoi failcountteri
        # Ala resetoi aikasemmi countteria - sei voi toimia jos se nollataan jossai valistepis mika onnistu
        # --> Resetti vikaan steppiin enne uutta looppia
        f="0"
        statok=$((statok+1))
        msg "#${i}\t INFO: Lomake lahetetty onnistuneesti!"
    fi
done

For immediate assistance, please email our customer support: [email protected]

Download RAW File