Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
JS fonksiyonunu Python'a çevirme
#1
Merhabalar, modemimin arayüzüne ulaşmak için Python kullanıyorum ama bir tane JS fonksiyonu var ve bunu Python diline çevirmem lazım ama beceremedim bir türlü.

Bu JS fonksiyonunu python'a çevirebilecek olan var mı?

Kod:
function encrypt(str) {
    if (str == "" || str == undefined) {
        return "";
    }
    var key = "abcdefghjklmnoprs";
    var str1 = [];
    var encryStr = "";
    for (var i = 0; i < str.length; i++) {
        var char_i = str.charAt(i);
        var num_char_i = char_i.charCodeAt();
        str1[2 * i] = (key[i % key.length].charCodeAt() & 0xf0) | ((num_char_i & 0xf) ^ (key[i % key.length].charCodeAt() & 0xf));
        str1[2 * i + 1] = (key[i % key.length].charCodeAt() & 0xf0) | ((num_char_i >> 4) ^ (key[i % key.length].charCodeAt() & 0xf));
    }
    for (var i = 0; i < str1.length; i++) {
        encryStr += String.fromCharCode(str1[i]);
    }
    return encryStr;
}

Özellikle böyle başlayan kısımlardan hiçbir şey anlamadım Big Grin
Kod:
str1[2 * i] =

str1[2 * i + 1] =

Benim çalışmayan denemelerimden birisi şöyle oldu:

def encrypt(abc):
    key = "abcdefghjklmnoprs"
    str1 = []
    encryStr = ""
    
    for i in range(len(abc)):
        char_i = abc[i]
        num_char_i = int(char_i[i])
        str1[2 * i] = (chr(key[i % len(key)]) & 0xf0) | ((num_char_i & 0xf) ^ (chr(key[i % len(key)]) & 0xf))
        str1[2 * i + 1] = (chr(key[i % len(key)]) & 0xf0) | ((num_char_i >> 4) ^ (chr(key[i % len(key)]) & 0xf))
    for i in range(len(str1)):
        encryStr += chr(str1[i])
    return encryStr

print(encrypt("18532447"))


Ara
Cevapla
#2
Yüzünü gören cennetlik mory, yoktun uzun zamandır Smile

öncelikle illaki python'a çevrilir de madem python ile ulaşmak istiyosun neden selenium kullanmıyosun Smile kaldı ki js tarayıcıda çalışır ama python çalışmaz biliyosun
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#3
Hoşbuldum abi. Smile

Modem'in API'ları var. Direkt ulaşabiliyorum bazı şeylere. Daha kolay oluyor. Mesela kaç cihaz bağlanmış, kaç sms gelmiş, sinyal değeri nedir falan bunları direkt alabiliyorum.


Ama işte bazı API'lara ulaşmak için yukarıdaki JS koduyla kullanıcı adını, şifreyi, ve bir tane token'i encrypt etmek gerekiyor. Encrypt etmeden gönderirsem erişim hatası veriyor.

Şöyle ulaşabiliyorum bir çoğuna(anlaşılacağı üzere kodun tamamı bu değil tabii ki):

# bu kodla giriş yapıp, tokeni alıyorum mesela token her defasında değişiyor
LoginR={'id':'1.1','jsonrpc':'2.0','method':'Login','params':{'UserName':pu,'Password':pu}}

s = requests.Session()

r = s.post(URL, json=LoginR, headers=Headers)
token = r.json().get("result", {}).get("token")

Ama bağlanan cihazların isimleri, ne kadar internet kullanılmış, smsler neler bunları görebilmek için giriş yapmak gerekiyor. Giriş yapmak için de kullanıcı adını, şifreyi, ve bir tane token'i encrypt etmek gerekiyor.

Modemin kodlarını inceledim onu da yukarıdaki JS koduyla yapıyorlar.


Bir tane de Keypirinha diye program var. Onun arayüzünde python'la çekilen verileri gösterebiliyorum. Şu şekilde:



Benim açımdam pratik oluyor.

Özellikle modemi yeniden başlatmak için de giriş yapmak gerekiyor. Giriş yapmak için de yukarıdaki JS kodunun python versiyonuna ihtiyacım var.
Ara
Cevapla
#4
hmm anladım o şekilde girip kontrol etmek istiyosun, valla müsait olsam bakıverirdim de maalesef değilim. Müsait olduğum bi vakit bakarım eğer o zaman kadar çözüm bulunmazsa. Modemin madem api'si var neden o kadar encrypt etme gereği duymuşlarsa o da bi ilginç Smile
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#5
Ben de anlamadım valla :Big Grin Hergün bakıyorum kodlara tekrar tekrar yapmaya çalışıyorum ama olmuyor.

Hergün bir satırı yaparsam, bitiririm herhalde :Big Grin
Ara
Cevapla
#6
js2py kütüphanesi kullan çevirmekle uğraşmassın javascript kodlarını.

kendi websitesinden çeviri yaptım. bu kodu kullanabilirsiniz yada javascript kodunu string olarak girip de kullanmanız mümkün.
from js2py.pyjs import *
# setting scope
var = Scope( JS_BUILTINS )
set_global_object(var)

# Code follows:
var.registers([u'encrypt'])
@Js
def PyJsHoisted_encrypt_(str, this, arguments, var=var):
   var = Scope({u'this':this, u'arguments':arguments, u'str'Confusedtr}, var)
   var.registers([u'str', u'char_i', u'i', u'str1', u'encryStr', u'key', u'num_char_i'])
   if ((var.get(u'str')==Js(u'')) or (var.get(u'str')==var.get(u'undefined'))):
       return Js(u'')
   var.put(u'key', Js(u'abcdefghjklmnoprs'))
   var.put(u'str1', Js([]))
   var.put(u'encryStr', Js(u''))
   #for JS loop
   var.put(u'i', Js(0.0))
   while (var.get(u'i')<var.get(u'str').get(u'length')):
       try:
           var.put(u'char_i', var.get(u'str').callprop(u'charAt', var.get(u'i')))
           var.put(u'num_char_i', var.get(u'char_i').callprop(u'charCodeAt'))
           var.get(u'str1').put((Js(2.0)*var.get(u'i')), ((var.get(u'key').get((var.get(u'i')%var.get(u'key').get(u'length'))).callprop(u'charCodeAt')&Js(240))|((var.get(u'num_char_i')&Js(15))^(var.get(u'key').get((var.get(u'i')%var.get(u'key').get(u'length'))).callprop(u'charCodeAt')&Js(15)))))
           var.get(u'str1').put(((Js(2.0)*var.get(u'i'))+Js(1.0)), ((var.get(u'key').get((var.get(u'i')%var.get(u'key').get(u'length'))).callprop(u'charCodeAt')&Js(240))|((var.get(u'num_char_i')>>Js(4.0))^(var.get(u'key').get((var.get(u'i')%var.get(u'key').get(u'length'))).callprop(u'charCodeAt')&Js(15)))))
       finally:
               (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))
   #for JS loop
   var.put(u'i', Js(0.0))
   while (var.get(u'i')<var.get(u'str1').get(u'length')):
       try:
           var.put(u'encryStr', var.get(u'String').callprop(u'fromCharCode', var.get(u'str1').get(var.get(u'i'))), u'+')
       finally:
               (var.put(u'i',Js(var.get(u'i').to_number())+Js(1))-Js(1))
   return var.get(u'encryStr')
PyJsHoisted_encrypt_.func_name = u'encrypt'
var.put(u'encrypt', PyJsHoisted_encrypt_)
pass
pass
(02-03-2021, Saat: 19:24)ahgonlum Nickli Kullanıcıdan Alıntı:  js2py kütüphanesi kullan çevirmekle uğraşmassın javascript kodlarını.
python ve javascript dünyada en çok yazılan iki dil.
c kadar hızlı python kadar syntaxı kolay olan julia da geleceğin dilleri arasında..
Ara
Cevapla
#7
@ahgonlum teşekkürler.

Evet öyle kullanıyorum şu an (string olarak, çevirmeden) ama özellikle Keypirinha programında kullanabilmem için direkt python versiyonuna ihtiyacım var.

Keypirinha programında Python ile eklenti yapabiliyorsun, mesela aşağıdaki görselde Beautiful Soup paketini kullanarak Tureng'ten çeviri ve döviz için bir eklenti yaptım. Görsel olarak hoşuma gittiği için bu programla kullanmak istiyorum.

a4WUupa.png  XW31kiG.png

Ama programın içinde sadece kendi python paketleri var. Sisteme yüklü paketleri kullandırtmıyor nedense. Bir türlü js2py paketini de bu programda kullanabileceğim şekilde import edemedim.
Ara
Cevapla
#8
(02-03-2021, Saat: 21:06)morty Nickli Kullanıcıdan Alıntı:  @ahgonlum teşekkürler.

Evet öyle kullanıyorum şu an (string olarak, çevirmeden) ama özellikle Keypirinha programında kullanabilmem için direkt python versiyonuna ihtiyacım var.

Keypirinha programında Python ile eklenti yapabiliyorsun, mesela aşağıdaki görselde Beautiful Soup paketini kullanarak Tureng'ten çeviri ve döviz için bir eklenti yaptım. Görsel olarak hoşuma gittiği için bu programla kullanmak istiyorum.

a4WUupa.png  XW31kiG.png

Ama programın içinde sadece kendi python paketleri var. Sisteme yüklü paketleri kullandırtmıyor nedense. Bir türlü js2py paketini de bu programda kullanabileceğim şekilde import edemedim.
python da bir kutuphaneyi sisteme kurmadan da kullanabilirsiniz, main.py'in ayni dizinde kutuphane kodlarini koyarsaniz calisir. js2py tamamiyle python kodu herhangi bir js motoru yok. kendi cevirisini kendisi yapiyor.
python ve javascript dünyada en çok yazılan iki dil.
c kadar hızlı python kadar syntaxı kolay olan julia da geleceğin dilleri arasında..
Ara
Cevapla
#9
@ahgonlum Evet biliyorum onu denedim ama olmadı. Hatta yukarıda bahsettiğim Beautiful Soup paketi de bu Keypirinha programının kütüphanalerinde yok, dediğiniz şekilde kendim ekleyip kullanabilmiştim.

Ama js2py'yi ekleyemedim neden bilmiyorum.
Ara
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  15gb .myd uzantılı dosya python ile okutma perry 1 1,174 27-11-2022, Saat: 17:59
Son Yorum: perry
Question Python Dili Soru & Cevap gecemor 1,493 1,071,916 08-11-2022, Saat: 11:18
Son Yorum: Antonyobanderas
  GÜNCEL Python request , c# request e göre çok yavaş ne yapabilirim perry 12 3,008 28-09-2022, Saat: 20:27
Son Yorum: krast
  YENİ Python Pyqt5 memory leak sorunu perry 3 1,332 28-09-2022, Saat: 11:33
Son Yorum: gecemor
  YENİ PYTHON ads approval CaglarDevv 2 1,495 04-07-2022, Saat: 01:23
Son Yorum: CaglarDevv

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme