Last active
April 30, 2016 22:10
-
-
Save ritwikd/0f1b61f28bd820be8d7e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''Module containing variety of system-jamming functions, | |
including CPU, RAM, and TCP-based functions''' | |
from subprocess import Popen | |
from multiprocessing import Process | |
import socket | |
from time import sleep | |
from time import time as get_time | |
import os | |
def jam_cpu(time, pnum): | |
'''Jam CPU by using all available cycles to discard empty data''' | |
jam_cpu_command = ['yes'] | |
devnull = open(os.devnull, 'r') | |
print "Process " + str(pnum) + " initialized: CPU" | |
new_jprocess = Popen(jam_cpu_command, stdout=devnull, stderr=devnull) | |
sleep(time) | |
print "Killing process " + str(pnum) + " with PIDs " + str(new_jprocess.pid) + "." | |
os.kill(new_jprocess.pid, 9) | |
def jam_tcp(time, pnum): | |
'''Jam CPU by overloading network stack with TCP packets''' | |
jam_tcp_message = bytes('Jam.', 'UTF-8') | |
print "Process " + str(pnum) + " initialized: TCP" | |
stop_time = get_time() + time | |
jam_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | |
jam_socket.connect(('1.2.3.4', 666)) | |
while get_time() < stop_time: | |
jam_socket.send(jam_tcp_message) | |
print "Process " + str(pnum) + " finished." | |
def jam_mem(pnum): | |
'''Jam memory by running fork-bomb''' | |
jam_mem_command = [':(){ :|: & };:'] | |
print "Process " + str(pnum) + " initialized: NUKE" | |
Popen(jam_mem_command, shell=True, executable='/bin/bash') | |
JFUNCTIONS = {'cpu': jam_cpu, 'ram': jam_mem, 'tcp': jam_tcp} | |
def start_process(jtype, time, pnum): | |
'''Start the jamming process''' | |
new_jprocess_target = JFUNCTIONS[jtype] | |
new_jprocess = Process(target=new_jprocess_target, args=(time, pnum)) | |
new_jprocess.start() | |
def nuke_system(intensity, countdown): | |
'''Jam the entire system, a system-nuke of sorts''' | |
for i in range(countdown): | |
print str(countdown - i) + '...' | |
sleep(1) | |
print "NUKE!" | |
for i in range(intensity): | |
JFUNCTIONS['ram'](i + 1) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment