یادداشت‌های عمومی من

تلاشی برای مفید‌تر بودن

یادداشت‌های عمومی من

تلاشی برای مفید‌تر بودن

۲ مطلب با موضوع «کامپیوتر :: راه حل» ثبت شده است

يكشنبه, ۲۲ تیر ۱۳۹۳، ۰۲:۵۷ ق.ظ

انتخاب شماره‌ی گلچین سیم‌کارت همراه اول

اگه بخواید از صفحه‌ی فروش سیم‌کارت همراه اول یه شماره‌ی گلچین انتخاب کنید باید دونه دونه شماره‌ها رو انتخاب کنید ببینید قابل واگذاری هست یا نه. با توجه به این‌که اکثر شماره‌ها قابل واگذاری نیستن، با اجرا کردن این اسکریپت شروع می‌کنه تمام شماره‌های از ورودی اسکریپت به بعد رو چک می‌کنه و اون‌هایی که قابل واگذاری هستن رو echo می‌کنه و یک فایل‌هم به اسمشون توی فولدر mci می‌سازه

#!/usr/bin/bash
# sample usage: ./script.sh 9129376600
start=$1 trap ctrl_c INT function ctrl_c(){ echo "checked $start - $i" exit 0 } mkdir mci 2>/dev/null for ((i=$start; $i>0; i=$i+1)); do if [ "true" = "`curl -s http://sim.mci.ir/chk-number-availability?number=0$i`" ]; then touch "mci/0$i"; echo "0$i"; fi done

من تقریبا تمام شماره‌هایی که تا امشب برای تهران با پیش‌شماره ۹۱۲ باز بودن رو در آوردم. (دریافت)

با یه اسکریپت دیگه‌هم می‌تونید این‌ها رو بر حسب یک تابع roundness مرتب کنید:

#!/usr/bin/ipython
from random import shuffle
b = !ls mci/
shuffle(b)
cnt = lambda s: sum(1 for i in zip(s+'#', '#'+s) if len(set(i))==1)
print '\n'.join(sorted(b, key=lambda s: len(set(s))-0.5*s.count('0')-0.5*cnt(s)**2)[:100])

و راحت‌تر شماره‌ رو انتخاب کنید :)

۱ نظر ۲۲ تیر ۹۳ ، ۰۲:۵۷
محمد حسین سخاوت
شنبه, ۱۴ دی ۱۳۹۲، ۱۱:۳۶ ق.ظ

مشکل Unknown SSL protocol error برای ایرانی‌ها

به نقل از ویکی‌پدیای فارسی، پروتکل SSL/TLS به برنامه‌های Client/Server اجازه می‌دهد که در شبکه از طریقی که از شنود و جعل پیام جلوگیری می‌کند، با یکدیگر ارتباط برقرار کنند. این پروتکل احراز هویت و ارتباط مطمئن در اینترنت را از طریق استفاده از رمز نگاری فراهم می‌کند.

این پروتکل نسخه‌های متفاوتی دارد. این نسخه‌ها از SSL 1.0 شروع شد تا SSL 3 و بعد شد TLS 1.0 بعد TLS 1.1 و در حال حاضر جدید ترین آن‌ها TLS 1.2 هست. طبیعتا جدید ترین نسخه، بیشترین امنیت را دارد. اما به لطف دست‌کاری‌های دوستان حاکم بر زیرساخت اینترنت ایران، امکان استفاده از هیچ کدام از این نسخه‌ها بجز SSL 3 برای ما ایرانی‌ها فراهم نیست.

برنامه‌ها هم بصورت پیش‌فرض سعی می‌کنند از جدید ترین نسخه که TLS هست استفاده کنند، اما چه می‌دانند که اینجا ایران است :) در نتیجه مثلا وقتی دستور 

curl https://github.com
را اجرا می‌کنیم با خطای زیر مواجه می‌شویم:
curl: (35) Unknown SSL protocol error in connection to github.com:443 
خیلی از برنامه‌ها از جمله git و yaourt برای برقراری ارتباط خود از کتابخانه‌ی curl استفاده می‌کنند. در نتیجه حتما کاربران ایرانی این برنامه‌ها هم با این مشکل مواجه شده اند.
خب دو راه حل داریم، یا اینجا ایران نباشد (استفاده از پراکسی) و یا به curl بگیم که [عمو جون دلت خوشه‌ها،] اینجا ایرانه :) و از TLS استفاده نکند. کاربران آرچ‌لینوکس می‌تونن پکیج curl-git-with-tls-disabled را از aur نصب کنند. این پکیج، همان پکیج curl-git هست که یک patch به آن اضافه شده تا TLS را غیر فعال کند و مشکل حل می‌شود.
کاربران سایر سیستم عامل‌ها هم باید سورس curl را دانلود کنند و patch زیر را روی آن اعمال کنند و خودشان کامپایل و نصب کنند. اگر یک نفر پکیج دبیان هم بسازد که خیرش به بقیه می‌رسد :)
---
lib/vtls/openssl.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
index 7a21c73..c44f773 100644
--- a/lib/vtls/openssl.c
+++ b/lib/vtls/openssl.c
@@ -1552,6 +1552,7 @@ ossl_connect_step1(struct connectdata *conn,
switch(data->set.ssl.version) {
case CURL_SSLVERSION_DEFAULT:
ctx_options |= SSL_OP_NO_SSLv2;
+ ctx_options |= SSL_OP_NO_TLSv1; /* Disable TLS */
#ifdef USE_TLS_SRP
if(data->set.ssl.authtype == CURL_TLSAUTH_SRP) {
infof(data, "Set version TLSv1.x for SRP authorisation\n");
---

۱ نظر ۱۴ دی ۹۲ ، ۱۱:۳۶
محمد حسین سخاوت