Форум сайта python.su
0
Привет!
Волею судьбы столкнулся с питоном (делаю аддон для XBMC Python 2.7.8, источник контента т. е. парсинг сайта выдергивание видео ссылок). Разработчики сайта не поленились и используют криптографию в обмене флешплеер - сервер и получение прямых ссылок (Blowfish, mode: CBC, padding:none, prepend IV to cipher text), а секретный ключ передают закодированным с помощью RSA private key
Вообщем весело … и так вопросы:
1. Существуют ли модули для работы с RSA keys?
вот пример, на ActionScript3 (из флешплеера сайта) используется фреймфорк crypto.hurlant.com, где переданная сигнатура sign расшифровывается с помощью приват ключа P_KEY, в итоге получается пароль pwd к Blowfish:
priv_key = PEM.readRSAPrivateKey(this.P_KEY);
dst = new ByteArray();
priv_key.decrypt(sign, dst, sign.length);
pwd = Hex.toString(Hex.fromArray(dst));
Отредактировано rvlad1987 (Янв. 21, 2015 08:00:37)
Офлайн
88
Офлайн
0
Shaman, спасибо.
Короч, установил это PyCrypto, значит по первому вопросу, сделал так:
from Crypto.Cipher import PKCS1_v1_5 from Crypto.PublicKey import RSA from Crypto.Hash import SHA from Crypto import Random # ............... key = RSA.importKey( open('c:\key.pem').read() ) dsize = SHA.digest_size sentinel = Random.new().read(15+dsize) cipher = PKCS1_v1_5.new(key) key_bf = cipher.decrypt(ciphertext, sentinel) # вот и наш ключик к blowfish
# ............ from Crypto.Cipher import Blowfish # ............ iv = cipherdata[:8] #вектор в данных 8 первые восемь байт hexdata = cipherdata.decode("hex") cipher2 = Blowfish.new(key_bf, Blowfish.MODE_CBC, iv) dec = cipher2.decrypt(hexdata) print dec[8:] # вот наш долгожданный конфиг )))
Офлайн
14
rvlad1987Что же это за сайт такой?
используют криптографию в обмене флешплеер - сервер и получение прямых ссылок
Офлайн
0
alex925, kset.kz - хорошие быстрые сервера + бесплатный трафик у моего провайдера.
Прикрутил к XBMC криптографию под win32, а можно ли из pyd-файла dll'ки сделать so для linux машин?
Офлайн
88
rvlad1987
можно ли из pyd-файла dll'ки сделать so для linux машин?
Microsoft (R) COFF/PE Dumper Version 12.00.31101.0Нельзя.
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file _ssl.pyd
File Type: DLL
Section contains the following imports:
WS2_32.dll
100D6220 Import Address Table
1010FD00 Import Name Table
0 time date stamp
0 Index of first forwarder reference
Ordinal 19
Ordinal 111
Ordinal 22
Ordinal 3
Ordinal 112
Ordinal 16
Ordinal 18
CRYPT32.dll
100D6010 Import Address Table
1010FAF0 Import Name Table
0 time date stamp
0 Index of first forwarder reference
28 CertEnumCRLsInStore
3B CertFreeCRLContext
12 CertCloseStore
2C CertEnumCertificatesInStore
58 CertOpenSystemStoreA
40 CertFreeCertificateContext
47 CertGetEnhancedKeyUsage
KERNEL32.dll
100D605C Import Address Table
1010FB3C Import Name Table
0 time date stamp
0 Index of first forwarder reference
162 FreeLibrary
52 CloseHandle
2A3 GetVersionExA
156 FlushConsoleInputBuffer
473 SetLastError
2E9 InterlockedCompareExchange
4C0 TerminateProcess
1C0 GetCurrentProcess
4D3 UnhandledExceptionFilter
4A5 SetUnhandledExceptionFilter
2EC InterlockedExchange
2BF GlobalMemoryStatus
1C1 GetCurrentProcessId
3A7 QueryPerformanceCounter
293 GetTickCount
264 GetStdHandle
1F3 GetFileType
2A2 GetVersion
215 GetModuleHandleA
245 GetProcAddress
1C5 GetCurrentThreadId
367 MultiByteToWideChar
202 GetLastError
4B2 Sleep
33C LoadLibraryA
300 IsDebuggerPresent
DE DisableThreadLibraryCalls
279 GetSystemTimeAsFileTime
143 FindNextFileA
132 FindFirstFileA
12E FindClose
USER32.dll
100D620C Import Address Table
1010FCEC Import Name Table
0 time date stamp
0 Index of first forwarder reference
168 GetProcessWindowStation
123 GetDesktopWindow
20E MessageBoxA
18B GetUserObjectInformationW
GDI32.dll
100D6030 Import Address Table
1010FB10 Import Name Table
0 time date stamp
0 Index of first forwarder reference
31 CreateDCA
30 CreateCompatibleDC
1CB GetDeviceCaps
2F CreateCompatibleBitmap
277 SelectObject
1FB GetObjectA
13 BitBlt
1A7 GetBitmapBits
E6 DeleteObject
E3 DeleteDC
ADVAPI32.dll
100D6000 Import Address Table
1010FAE0 Import Name Table
0 time date stamp
0 Index of first forwarder reference
282 RegisterEventSourceA
28E ReportEventA
DB DeregisterEventSource
python27.dll
100D6240 Import Address Table
1010FD20 Import Name Table
0 time date stamp
0 Index of first forwarder reference
15F PyList_Append
2AF PyThread_release_lock
268 PySet_New
3E PyCapsule_Import
356 Py_InitModule4
B0 PyErr_WarnEx
2FD PyUnicodeUCS2_DecodeUTF8
86 PyDict_SetItemString
F5 PyExc_TypeError
1A6 PyModule_AddObject
94 PyErr_Format
130 PyGILState_Ensure
193 PyMem_Malloc
165 PyList_New
216 PyObject_IsTrue
160 PyList_AsTuple
90 PyErr_Clear
3CC _PyString_Resize
A5 PyErr_SetFromErrnoWithFilenameObject
178 PyLong_FromLong
16D PyLong_AsLong
408 _Py_TrueStruct
ED PyExc_RuntimeWarning
2C5 PyType_IsSubtype
AD PyErr_SetString
371 _PyArg_ParseTupleAndKeywords_SizeT
E PyBool_FromLong
1A5 PyModule_AddIntConstant
203 PyObject_Free
377 _PyByteArray_empty_string
2AD PyThread_get_thread_ident
9A PyErr_Occurred
FD PyExc_ValueError
21C PyObject_Repr
2E3 PyUnicodeUCS2_AsASCIIString
1A8 PyModule_GetDict
30F PyUnicodeUCS2_FromObject
E3 PyExc_MemoryError
312 PyUnicodeUCS2_FromStringAndSize
CA PyEval_SaveThread
B2 PyErr_WriteUnraisable
E7 PyExc_OSError
192 PyMem_Free
401 _Py_NoneStruct
372 _PyArg_ParseTuple_SizeT
1F6 PyObject_CallFunctionObjArgs
E8 PyExc_OverflowError
221 PyObject_SetAttrString
330 PyWeakref_NewRef
85 PyDict_SetItem
C9 PyEval_RestoreThread
40A _Py_ZeroStruct
AC PyErr_SetObject
26 PyByteArray_Type
2C7 PyType_Ready
283 PyString_InternFromString
20B PyObject_GetBuffer
2A5 PyThread_allocate_lock
263 PySet_Add
98 PyErr_NoMemory
32E PyWeakref_GetObject
17E PyLong_FromUnsignedLong
341 Py_FileSystemDefaultEncoding
2E6 PyUnicodeUCS2_AsEncodedString
2A4 PyThread_acquire_lock
A3 PyErr_SetFromErrno
276 PyString_AsString
169 PyList_Size
18 PyBuffer_IsContiguous
132 PyGILState_Release
311 PyUnicodeUCS2_FromString
7D PyDict_GetItem
282 PyString_FromStringAndSize
373 _PyArg_Parse_SizeT
1A PyBuffer_Release
30D PyUnicodeUCS2_FromFormat
151 PyInt_FromLong
1F9 PyObject_CallObject
97 PyErr_NewExceptionWithDoc
A7 PyErr_SetFromWindowsErr
30C PyUnicodeUCS2_FromEncodedObject
83 PyDict_New
DB PyExc_IOError
2BD PyTuple_New
224 PyObject_Str
2AA PyThread_free_lock
39 PyCallable_Check
3B9 _PyObject_New
8F PyErr_CheckSignals
281 PyString_FromString
3F7 _Py_BuildValue_SizeT
MSVCR90.dll
100D60DC Import Address Table
1010FBBC Import Name Table
0 time date stamp
0 Index of first forwarder reference
390 _stat64i32
535 qsort
52A memset
554 strerror
55B strncpy
4EF fwrite
526 memcpy
4FB isalnum
4FE isdigit
504 isspace
54E strchr
170 _errno
8C __clean_type_info_names_internal
31C _onexit
276 _lock
96 __dllonexit
3E6 _unlock
52E printf
14B _crt_debugger_hook
173 _except_handler4_common
6A __CppXcptFilter
10B _adjust_fdiv
115 _amsg_exit
205 _initterm_e
204 _initterm
160 _decode_pointer
16B _encoded_null
287 _malloc_crt
16A _encode_pointer
1B7 _ftime64
4B5 abort
561 strstr
546 sprintf
1DB _getch
543 signal
4DF fputs
4BF atoi
1F5 _gmtime64
565 strtol
55F strrchr
505 isupper
572 tolower
3A4 _strnicmp
39A _stricmp
274 _localtime64
3CA _time64
513 isxdigit
54F strcmp
55A strncmp
4DC fprintf
537 raise
17C _exit
A1 __iob_func
578 vfprintf
40A _vsnprintf
59A wcsstr
4F4 getenv
54A sscanf
566 strtoul
51B malloc
53A realloc
4E4 free
4CF fclose
528 memmove
46C _wfopen
4D5 fgets
4EA fseek
4D0 feof
4EC ftell
18A _fileno
366 _setmode
4DA fopen
4D2 fflush
4E2 fread
4D1 ferror
Summary
E000 .data
3B000 .rdata
B000 .reloc
D5000 .text
Офлайн
0
Shaman,
серьезный аргумент
теперь с плагином таскаю версию криптографии для win32(pyd), linux2 (so) и osx (so) подключаю в зависимости от sys.platform 
Офлайн