CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум Python

Ответ Создать новую тему
 
Старый 03.02.2012, 18:20   #1
bodrich
Форумчанин
 
Регистрация: 20.06.2010
Сообщений: 703
Репутация: 68 (60)
По умолчанию Перевести из второго в третий

Может кто перевести этот код из второго питона в третий ?
Код Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python
# coding=utf-8
'''
 sms_mrim_client.py
 author: Dominus
 site: [url]http://k0derz.ru/[/url]
 [url]http://agent.mail.ru/ru/help/3/2.html[/url] - поддерживаемые операторы
 '''
import socket, string, sys
from struct import *
'''
 Конфигурационные данные
 '''
 LOGIN    = '' # e-mail
 PASSWORD = '' # пароль
 NUMBER   = '' # номер телефона
 TEXT         = "" # текст сообщения
'''
 The End of config
 '''
 PROTO_VERSION               = 0x10008    # версия протокола
 CS_MAGIC                            = 0xDEADBEEF # тип магическая хрень (начало заголовка пакета)
 MRIM_CS_HELLO                   = 0x1001     # приветсвуем сервер
 MRIM_CS_HELLO_ACK       = 0x1002     # получаем ответный привет
 MRIM_CS_LOGIN2          = 0x1038     # пытаемся залогиниться
 MRIM_CS_LOGIN_ACK     = 0x1004     # ответ в случае успешной авторизации
 MRIM_CS_SMS                     = 0x1039         # шлём СМСку
 MRIM_CS_SMS_ACK             = 0x33A          # читаем статус СМСки
 MRIM_CS_STATUS_ONLINE = 0x00000001 # логинимся со статусом On-line
 
# получаем адрес куда будет конектиться
def get_host_port():
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect(('mrim.mail.ru', 2042))
     s.send("GET / HTTP 1.1\r\n\r\n")
     data = s.recv(128)
     s.close()
     return data
# ф-ция по созданию пакета приветствия
def packet_make(msg, seq=1, mydata=''):
     formt = '<5L'
     dlen = len(mydata)
     my_header = pack(formt, CS_MAGIC, PROTO_VERSION, seq, msg, dlen) + pack('<L', 0)*6
     return my_header
     
# ф-ция авторизации
def mrim_login(login=LOGIN, password=PASSWORD, client='pymra 0.1beta'):
     formt = '<5L'
     mydata = pack('<L', len(login)) + login + pack('<L', len(password)) + password + pack('<L', MRIM_CS_STATUS_ONLINE) + pack('<L', len(client)) + client + pack('<L', 0)*5
     dlen = len(mydata)
     my_header_login = pack(formt, CS_MAGIC, PROTO_VERSION, 2, MRIM_CS_LOGIN2, dlen) + pack('<L', 0)*6 + mydata
     return my_header_login
 
# ф-ция отправки SMS    
def sms_send(number=NUMBER, text=TEXT):
     formt = '<5L'
     mydata = pack('<L', 0) + pack('<L', len(number)) + number + pack('<L', len(text)) + text
     dlen = len(mydata)
     my_header_sms = pack(formt, CS_MAGIC, PROTO_VERSION, 3, MRIM_CS_SMS, dlen) + pack('<L', 0)*6 + mydata
     return my_header_sms
 
def main():     
     host_port = get_host_port().split(':')  
     my_header = packet_make(MRIM_CS_HELLO, 1)
     my_header_login = mrim_login()
     my_header_sms = sms_send()  
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect((host_port[0], int(host_port[1])))    
     s.send(my_header)
     data = s.recv(48)
     resp = unpack('12L', data)
     if resp[3] == MRIM_CS_HELLO_ACK:
         print "[+] Подключились!"
     else:
         print "[!] Не подключились!"
         sys.exit(0)
     s.send(my_header_login)
     data_l = s.recv(48)
     resp_l = unpack('12L', data_l)
     if resp_l[3] == MRIM_CS_LOGIN_ACK:
         print "[+] Залогинились!"
     else:
         print "[!] Проверьте логин и пароль!"
         sys.exit(0) 
     s.send(my_header_sms)
     data_s = s.recv(48)
     resp_s = unpack('12L', data_s)  
     if resp_s[3] == MRIM_CS_SMS_ACK:
         print "[+] SMS отправили!"
     else:
         print "[!] SMS не отправили :("
         sys.exit(0) 
     s.close()
     
if __name__ == "__main__":
     main()
bodrich вне форума
Другие темы раздела
Python Ошибка...функция не определена
Здравствуйте. Вот начинаю с питоном знакомиться и написал тривиальнейшую программку...до нового года отлично запускалась, сейчас решил продолжить работать над ее усовершенствованием, но даже не добавил ни одной строчки кода, и она перестала не запускаться) Пишет что функция не определена...все.... Ошибка...функция не определена
Python Список чисел....
Дан список ДВУЗНАЧНЫХ чисел произвольной размерности N. Заменить каждый отрицательный элемент произведением его цифр. Помогите!!!. Список чисел....
Старый 04.02.2012, 07:44   #2
accept
Форумчанин
 
Регистрация: 10.12.2008
Адрес: UGFjaWZpYyBPY2Vhbg==
Сообщений: 6,651
Репутация: 3305 (2063)
По умолчанию Re: Перевести из второго в третий

Код Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env python3
 
'''
 sms_mrim_client.py
 author: Dominus
 site: [url]http://k0derz.ru/[/url]
 [url]http://agent.mail.ru/ru/help/3/2.html[/url] - поддерживаемые операторы
 '''
import socket, string, sys
from struct import *
'''
 Конфигурационные данные
 '''
LOGIN    = '' # e-mail
PASSWORD = '' # пароль
NUMBER   = '' # номер телефона
TEXT         = "" # текст сообщения
'''
 The End of config
 '''
PROTO_VERSION               = 0x10008    # версия протокола
CS_MAGIC                            = 0xDEADBEEF # тип магическая хрень (начало заголовка пакета)
MRIM_CS_HELLO                   = 0x1001     # приветсвуем сервер
MRIM_CS_HELLO_ACK       = 0x1002     # получаем ответный привет
MRIM_CS_LOGIN2          = 0x1038     # пытаемся залогиниться
MRIM_CS_LOGIN_ACK     = 0x1004     # ответ в случае успешной авторизации
MRIM_CS_SMS                     = 0x1039         # шлём СМСку
MRIM_CS_SMS_ACK             = 0x33A          # читаем статус СМСки
MRIM_CS_STATUS_ONLINE = 0x00000001 # логинимся со статусом On-line
 
# получаем адрес куда будет конектиться
def get_host_port():
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect(('mrim.mail.ru', 2042))
     s.send(b"GET / HTTP 1.1\r\n\r\n")
     data = s.recv(128)
     s.close()
     return data
     
# ф-ция по созданию пакета приветствия
def packet_make(msg, seq=1, mydata=''):
     formt = '<5L'
     dlen = len(mydata)
     my_header = pack(formt, CS_MAGIC, PROTO_VERSION, seq, msg, dlen) + pack('<L', 0)*6
     return my_header
     
# ф-ция авторизации
def mrim_login(login=LOGIN, password=PASSWORD, client='pymra 0.1beta'):
     login = login.encode('latin1')
     password = password.encode('latin1')
     client = client.encode('latin1')
     formt = '<5L'
     mydata = pack('<L', len(login)) + login + pack('<L', len(password)) + password + pack('<L', MRIM_CS_STATUS_ONLINE) + pack('<L', len(client)) + client + pack('<L', 0)*5
     dlen = len(mydata)
     my_header_login = pack(formt, CS_MAGIC, PROTO_VERSION, 2, MRIM_CS_LOGIN2, dlen) + pack('<L', 0)*6 + mydata
     return my_header_login
 
# ф-ция отправки SMS    
def sms_send(number=NUMBER, text=TEXT):
     number = number.encode('latin1')
     text = text.encode('latin1')
     formt = '<5L'
     mydata = pack('<L', 0) + pack('<L', len(number)) + number + pack('<L', len(text)) + text
     dlen = len(mydata)
     my_header_sms = pack(formt, CS_MAGIC, PROTO_VERSION, 3, MRIM_CS_SMS, dlen) + pack('<L', 0)*6 + mydata
     return my_header_sms
 
def main():     
     host_port = get_host_port().split(b':')  
     my_header = packet_make(MRIM_CS_HELLO, 1)
     my_header_login = mrim_login()
     my_header_sms = sms_send()  
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect((host_port[0], int(host_port[1])))    
     s.send(my_header)
     data = s.recv(48)
     resp = unpack('12L', data)
     if resp[3] == MRIM_CS_HELLO_ACK:
         print("[+] Подключились!")
     else:
         print("[!] Не подключились!")
         sys.exit(0)
     s.send(my_header_login)
     data_l = s.recv(48)
     print(data_l)
     resp_l = unpack('12L', data_l)
     if resp_l[3] == MRIM_CS_LOGIN_ACK:
         print("[+] Залогинились!")
     else:
         print("[!] Проверьте логин и пароль!")
         sys.exit(0) 
     s.send(my_header_sms)
     data_s = s.recv(48)
     resp_s = unpack('12L', data_s)  
     if resp_s[3] == MRIM_CS_SMS_ACK:
         print("[+] SMS отправили!")
     else:
         print("[!] SMS не отправили :(")
         sys.exit(0) 
     s.close()
     
if __name__ == "__main__":
     main()
Код
1
2
3
4
5
6
7
8
9
10
[guest@localhost tests]$ ./t.py
[+] Подключились!
b''
Traceback (most recent call last):
  File "./t.py", line 103, in <module>
    main()
  File "./t.py", line 86, in main
    resp_l = unpack('12L', data_l)
struct.error: unpack requires a bytes object of length 48
[guest@localhost tests]$
accept вне форума
Старый 04.02.2012, 09:50  [ТС]   #3
bodrich
Форумчанин
 
Регистрация: 20.06.2010
Сообщений: 703
Репутация: 68 (60)
По умолчанию Re: Перевести из второго в третий

У меня работает отлично:
Код
1
2
3
4
5
6
bodrich@bodrich-G47724-30:~$ python3 test.py
[+] Подключились!
[+] Залогинились!
[!] SMS не отправили :(
bodrich@bodrich-G47724-30:~$ 
 
bodrich вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 05.02.2012, 09:36   #4
accept
Форумчанин
 
Регистрация: 10.12.2008
Адрес: UGFjaWZpYyBPY2Vhbg==
Сообщений: 6,651
Репутация: 3305 (2063)
По умолчанию Re: Перевести из второго в третий

Цитата Сообщение от bodrich Посмотреть сообщение
У меня работает отлично:
я не заполнял поля
просто, если вдруг не работает, нужно отлаживать дальше
accept вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
C# для начинающих Записать в третий файл те пары чисел, в которых число из первого файла меньше соответствующего числа из второго
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго.
Dani'
C# для начинающих Записать в третий файл те пары чисел, в которых число из первого файла меньше соответствующего числа из второго
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго. Начните с продумывания заголовков для своих тем
LadyStrong
Python Перевести данный код под третий питон
Может кто перевести данный код(он на втором питоне) под третью версию питона ? Или там слишком много работы ?
bodrich
Pascal (Паскаль) аписать в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго
Помогите пожалуйста написать программу. Вот задание-Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго. Я вообще не понимаю как там и че....(((
ksuha90
Prolog Написать программу объединения двух списков в третий так, чтобы нечетные (по номеру) элементы были из первого вписка, а четные - из второго.
Написать программу объединения двух списков в третий так, чтобы нечетные (по номеру) элементы были из первого вписка, а четные - из второго. Написать нужно на Prolog 5.2
KASDIM
Опции темы

Текущее время: 05:04. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru