rss
twitter
    Find out what I'm doing, Follow Me :)

יום שני, מרץ 31, 2014

גלישה באוניברסיטת בן גוריון

לפני זמן מה הייתי באוניברסיטת בן גוריון ויצא לי להתחבר לרשת האלחוטית הפתוחה לאורחים just4visitors, רק מה לא הצלחתי להתחבר לשירותי jabber.org או לvpn שלי.

אם הבנתי נכון כל מה שלא עבר על 80 ו 443 נחסם  (כולל ICMP),הפתרון היה להשתמש בvpn  שעובד על פורט 443 (באם ע"י שימוש באופציה port-share של openvpn או sslh), גיגול מהיר נתן לי רשימה של ספקי vpn חינמי שעובדים על 443 מה שאיפשר חיבור ,ובתוכו הפעלת ה vpn שלי.

לצערי נאלצתי לעבוד עם vpn חינמי שעבד על כי לא הצלחתי להתחבר לvpn שלי , עוד נקודה מוזרה היה לי כשלושה פעמים בשעה ניתוק מהרשת האלחוטית .

יום חמישי, ינואר 09, 2014

רשת עצלה איך אני צריך פתרון גלישת 3G לתקופות ארוכות

כמו רבים אחרים גם אני מנצל את רוחב הפס ששאני משלם עליו לספק השירות שלי (בממוצע כ 8-10 ג"ב בחודש בתקופות קצרות).


הבעיה שלי זה החיבור, אני כבר התרגלתי למכה של החלפת כתובות או ניתוק/חיבור כל רבע שעה הבעיה שלי זה שלא תמיד חוזרים מתקלות.


לדוגמה כאשר אני עובר מספר ג"ב רציפים דרך E72 המכשיר מתאתחל (וזה עוד מצב טוב כאשר היה מכשיר שהיה פשוט היה נכבה ולא מחזיר לי חיבור).


שיחקתי עם HTC mytouch רק שהחמוד פשוט הפסיק להגיב לאחר כשלושה ג"ב ב burst.
היה עוד אנדרויד שבדקתי (נראה לי S2) שגם הוא לא ממש תפקד לאורך זמן.


יש לי העדפה ברורה לפתרונות שיכולים לדבר ב AT אבל עם אין ברירה יכול לחיות גם עם QMI ודומיו, וכמובן מאוד חשוב לי שהרכיב נתמך בקרנל עם עדיפות ברורה למשהוא פתוח.

אני מעדיף AT כי בעת בעיה יש לי יותר מדרך אחת להרים חיבור/לעבוד מול המכשיר ואני לא רק תקוע מול ממשק net שאי אפשר לעשות כלום כדי להחזיר את המכשיר לעבודה.


אהה .. ושיהיה אפשר לייבא את זה אם זה לא נמצא בארץ .


מי עוזר לי פה בעסק ?

Ignoring spoofed proxy reply. Signature is invalid (should be for bad secret)

היום נתקלתי בבעיה כי אחד השרתים מסרב לעבוד במחוגהחופשי שמשמש כמפנה תעבורה (פרוקסי) שהגדרתי למערכת שלי.

כאשר הפעלתי את המחוגהחופשי עם דגל X ראיתי כי קיימת התראה על אי ההתאמה בסוד המשותף. ובגלל זה הלקוח ממודר מהודעות שעונות.

נגדיר: 

סוד = "shamur" 
לקוח קצה כ 192.168.1.2 
שרת מפנה תעבורה 192.168.1.3 
שרת1 המשמש כמחוג 192.168.1.4 
שרת2 המשמש כמחוג 192.168.1.5 

ההודעה שראיתי הייתה :

 Ignoring spoofed proxy reply. Signature is invalid (should be for bad secret) 

הבעיה היא שהודעה זו מדברת בדר"כ על שגיאה של לקוח מול מפנה התעבורה.

חיפשתי מספר שעות ואף שיחקתי ושיניתי מי שרת ברירת המחדל עבד :
realm DEFAULT {
        nostrip
        authhost        = 192.168.1.4:1812
        accthost        = 192.168.1.4:1813
        secret          = "shamur"
        type=radius
}
אבל זה לא עבד:
#Going to the next request
#Waking up in 0.9 seconds.
#rad_recv: Access-Accept packet from host 192.168.1.5 port 1812, id=63, length=46
#Ignoring spoofed proxy reply.  Signature is invalid
#Waking up in 0.8 seconds.
realm DEFAULT {
        nostrip
        authhost        = 192.168.1.5:1812
        accthost        = 192.168.1.5:1813
        secret          = "shamur"
        type=radius
}
שברתי את הראש ,
כי וידאתי בעזרת ntradping של MasterSoft שאני מצליח לבצע זיהויי. 
ואז עלה במוחי הרעיון לבדוק עם radclient.exe (גם מבית המחוגהחופשי)

C:\FreeRADIUS\bin\tests>..\radclient.exe -d ..\..\etc\raddb  -f  radclient-chap.conf 192.168.1.5:1812 auth shamur
rad_verify: Received Access-Accept packet from home server 192.168.1.5 port 1812 with invalid signature!  (Shared secret is incorrect.)
rad_verify: Received Access-Accept packet from home server 192.168.1.5 port 1812 with invalid signature!  (Shared secret is incorrect.)
rad_verify: Received Access-Accept packet from home server 192.168.1.5 port 1812 with invalid signature!  (Shared secret is incorrect.)
radclient: no response from server for ID 115 socket 120 
פה כבר הבנתי שהבעיה שהמחוגהחופשי מדווח שגיאה לא מדוייקת בצד השרת (2.2) , הבעיה היא לא בין הלקוח לשרת ההפניה כי אם בין שרת ההפניה לבין שרת הבית (homeserver) מפה זיהוי הבעייה היה קל (הסוד המשותף באחד השרתים היה שונה באות אחת גדולה לאומת קטנה). 

או כמו שאמרתי לידיד מחברה שמחזירה משרדים בשדרות בקוד פתוח זה לא היה קורה .. 

המחוג החופשי 

יום שלישי, ינואר 07, 2014

מכירים את זה שלוקח לדפדפן "שעה" לעלות ? ושכשיש בעיות בחיבור הבין לאומי (אהם התקלה בדצמבר אהם .... ) פתאום אתרים ישראלים מפסיקים לעבוד ?
אני כן , אז לקחתי את הדביאן שלי לסיבוב בדיקות.

הדבר הראשון היה שהגבלתי את המיקום הגאוגרפי לו הדפדפן יכול לגשת באמצעות iptables:

#!/bin/bash

iptables -F

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

iptables -A OUTPUT -m geoip --dst-cc IL -j ACCEPT
iptables -A INPUT -m geoip --src-cc IL -j ACCEPT

הגבלתי מספר שרתי פרסומות ו דברים מעצבנים ע"י שימוש ברשימה של someonewhocares ו הוספת מספרי שרתים שאני לא אוהב כ 127.0.0.1 :

127.0.0.1 stats.g.doubleclick.net doubleclick.net
127.0.0.1 media.datahc.com datahc.com
127.0.0.1 connect.facebook.net facebook.net
127.0.0.1 www.facebook.com
127.0.0.1 ads.pro-market.net pbid.pro-market.net promarket.net
127.0.0.1 nrgdigital.checkm8.com
127.0.0.1 ghm_israel.hit.gemius.pl hit.gemius.pl
127.0.0.1 blob.am3prdstr01a.store.core.windows.net exposebox.blob.core.windows.net sf.exposebox.com
127.0.0.1 st.dynamicyield.com
127.0.0.1 live.sekindo.com

ומה אני רואה ?

פיירפוקס עולה מאוד לאט בגלל הסיבות האישיות שלו (ניסיון עידכון ocsp) ובגלל שnoscript היקר והטוב מנסה לגשת לשרתי המפתח (ידוע גם כ secure1.informaction.com)

פתאום ל whatsup לקוח המון זמן לעלות בגלל שmootools מאוחסן על שרתי גוגל בחו"ל ולא בארץ.

גלישה לאתרי חדשות מרכזים הפכה למייגעת (עד שלא הוספתי עוד ועוד שירותים ל hosts) טמקא את יודעת על מי אני מדבר נכון ? גלישה למערכות פורמים היתה כמעט בלתי אפשרית (מתבססים יותר מדי על שירותי google.

יום ראשון, דצמבר 15, 2013

איך לבצע ניגון של הרבה פאטצים ב git

לפני מספר חודשים התחלתי לעבוד על קובץ מסויים תחת git-svn אתמול גיליתי שמה שאני צריך זה לא לדחוף אלא לבצע fork שלם, אבל אני מבין שאני צריך את כל ההיסטוריה שלי.

git לא שומר שמות קבצים אלא עץ מצב לכן לא הצצלחתי לחשוב על דרך ב אוכל להזיז היסטוריה (התחלתי מ svn cp source dest בשביל שההיסטוריה תשמר בשרת).

המחשבה הראשונה היתה לעשות:
boris@pc /c (case_0x567823_devil)
$ git format-patch master
ולאחר מכן שינוי יידני של כל פאטץ יצירת ענף חדש ואז git am רק שקיבלתי שגיאות של patch does not
 apply
 שזה משהוא לא ממש הגיוני אני עובד על אותה המכונה (השגיאה יכולה לצוץ עם בעיית הרשאות למשל)

שברתי את הראש וכמעט אמרתי נואש ואז מצאתי שמישהוא הציע אולי הבעיה בכלל בwhitespaces או רווחים.

וזה היה הפתרון!

התהליך שעשיתי היה :
boris@pc /c/src/ (case_0x567823_devil)
$ git format-patch master

קיבלתי כמה עשרות קבצים(קובץ עבור כל commit שנעשה), שיניתי בכל אחד מהם את שם הקובץ הישן והפורק
:%s/source.cpp/dest.cpp/g  
לאחר מכן הפעלתי את קסמי ה git:
boris@pc /c/ (case_0x567823_devil_newbranch)
$ git am 0*.patch --ignore-space-change --ignore-whitespace
ובא לציון גואל

למידע נוסף
git am
git format-patch

משלוח קבצים ב MMS

נאלצתי לבצע העברת קבצים די גדולה לפני זמן מה וחבילת האינטרנט בנייד הסתיימה.
מכיוון שאני די תקוע עם linmodem ואין לי יכולת לפתוח קישור ע"ג gnuradio גמלה בלבי ההחלטה להשתמש בMMS בשביל לשלוח את הקבצים.

מה שעשיתי היה להתקין את python-messaging ולכתוב תסריט פשוט שיבצע שליחה של הקבצים.
בחרתי לשלוח ע"ג תמונה בגלל היכולת שלgif לאחסן קבצים אחרים ועדיין לעבור תחת הידיים של האנטיספאמרים הידועים לי.

תוצאות:

בדקתי עם מספר ספקים ושליחה של מ"ב ספורים (עד 3 לקובץ מקודד) עברה בצורה תקינה.

לא הייתי ממליץ לשלוח ג"ב בצורה כזאת (כי בכל זאת MMSים עולים כסף - אם אני מבין נכון זה נע באזור ה60 אגורות ליחידה) ואצל חלק מהמפעילים גודל ההודעות מתומכר גם כן.

תזהרו לא להספים או לשלוח לרשומות תפוצה (זה לא שימוש הוגן והספק כנראה ינתק אותכם).

דברים שצריך לדעת לפני :

הapn
הsmsc

התסריט עצמו:

#!/usr/bin/python
 

from messaging.mms.message import MMSMessage, MMSMessagePage

from argparse import RawTextHelpFormatter
import argparse

import socket    
import cStringIO # for the response

import sys,os #needed for file size + exit
import errno  #error handling
import getpass#to log the user name

parser = argparse.ArgumentParser(description='Send mms image to an email or a PSTN',formatter_class=RawTextHelpFormatter,
     epilog="""
 Scrapped from the docs by Boris Shtrasman (license GPLv2 as the python-messaging)

 1. In case you don't have a public access to mmsc (like I do): 

 get a cable and connect your phone to the pc,find out what are your mmsc and apn
 
 my mms apn is mms.provider.fr (look for mms apn configuration at your provider.tld)
 wvdial.conf example: 
    [Dialer mms]
    Phone = *99***1#
    Username = fillmeifneed #if your provider uses a username for mms fill it up
    Password = fillmeifneed #if your provider uses a password for mms fill it up
    Stupid Mode = 1
    Dial Command = ATDT
    Modem = /dev/ttyACM0
    Baud = 460800
    Init2 = ATZ
    Init3 = ATE0V1&D2&C1S0=0+IFC=2,2
    ISDN = 0
    Modem Type = Analog Modem
    Init5 =AT+CGDCONT=1,"IP","mms.provider.fr";
 
 run wvdial 
 ~/sudo screen wvdial mms
 
 You would need to check your routing as both the mms provider and your internet provider would\
 give you an ip address.
 
 2. 
 
 find out what is the mmsc address ,don't relay on name as some provider will not resolve it in my example it is 192.168.10.200
 every mms provider has it own port mine used 8080 (other use 80, 9090 and many others)

 In order to pass normal files zip them and add into a gif : 
    cat ~/somegif.gif >> /tmp/tobesent.gif
    zip -0 archive.zip stufftosend/* 
    cat ./archive >> /tmp/tobesent.gif
    
 to send to an email to user at example dot  net when your provider uses email  : 
    send -s 192.168.10.200 --port 8080 -i /tmp/tobesent.gif -d "user@example.net"  -a /mmsc -b "rename the gif to zip"
 to send an email to a phone number 
    send -s 192.168.10.200 --port 8080 -i /tmp/tobesent.gif -d "+3362123123"  -a /mmsc -b "rename the gif to zip" """)
     
     
parser.add_argument('-s','--mms_host', help='mmsc host',required=True)
parser.add_argument('-p','--port',help='mmsc port',type=int, required=True)
parser.add_argument('-i','--input_file',help='file to send as image', required=True)
parser.add_argument('-d','--destination',help='destination in PLMN or email', required=True)
parser.add_argument('-a','--mms_address',help='the mms address to use (commenly just /) some will have http://ip:port/path', required=True)
parser.add_argument('-c','--cc',help=' CC optional ', required=False)
parser.add_argument('-b','--subject',help=' subject  ', required=False)

args = parser.parse_args()

cc_destination = ''
if  args.cc: cc_destination = args.cc
subject = ''
if args.subject: subject=args.subject

print "As you wish %s, I will send the file:%s[%u kb] to %s and cc %s subject (%s)" % (getpass.getuser(),args.input_file,os.stat(args.input_file).st_size / 1024,args.destination,cc_destination,subject)
  
mms_page = MMSMessagePage()
mms_page.add_image(args.input_file)

mms = MMSMessage()
mms.headers['To'] = args.destination
mms.headers['Cc'] = cc_destination
mms.headers['Message-Type'] = 'm-send-req'
mms.headers['Subject'] = subject
mms.add_page(mms_page)
print "will encode '%s' (preparing what would be sent to the destination)" % args.input_file
encoded_mms = mms.encode()
print "message had been encoded"
mmsc_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "connecting to %s:%u" % (args.mms_host , args.port)
try:
  mmsc_socket.connect((args.mms_host, args.port))
  
except socket.timeout:
  print "A timeout to %s:%d was set, make sure you can access it (routes, packet loss etc)" % (args.mms_host, args.port)
  sys.exit()
except KeyboardInterrupt:
  print "Don't be so hard on %s:%d it should work ... " % (args.mms_host, args.port)
  sys.exit()
except socket.error as serror:
  if serror.errno == errno.ECONNREFUSED:
    print "your provider prevent accessing to this mmsc %s have you checked you are using the correct credntials ?" %  (args.mms_host, args.port)
    sys.exit()
  if serror.errno == errno.ETIMEDOUT:
    print "I'm sorry but you need to check your routes to %s, then check your fw doesn't block unreachable destination, when all fail contact customer service" % (args.mms_host)
    sys.exit()

  print "A timeout to %s:%d was set, make sure you can access it (routes, packet loss etc) (%s)" % (args.mms_host, args.port, serror.errno)
  sys.exit()

  
print "was able to connect to %s:%u" % (args.mms_host , args.port)
mmsc_socket.send("POST %s HTTP/1.0\r\n" % args.mms_address)
print "POST command sent to the server"
mmsc_socket.send("Content-Type: application/vnd.wap.mms-message\r\n")
mmsc_socket.send("Content-Length: %d\r\n\r\n" % len(encoded_mms))
print "an encoded mms is on the way to the server , please wait : as %d bytes are on their way to the server and that will take some time" % len (encoded_mms)
try:
 mmsc_socket.sendall(encoded_mms)
except socket.error as serror:
  print "Try to use a smaller file, or check your connection as I couldn't finish the transfer %s" % serror.errno
  sys.exit()
except KeyboardInterrupt:
  mmsc_socket.close()
  print "Don't be so hard on %s:%d it should work ... " % (args.mms_host, args.port)
  sys.exit()
  
print "encoded mms had been sent "
serverResponseStream = cStringIO.StringIO()

while True:
    data = mmsc_socket.recv(4096)
    if not data:
        break

    serverResponseStream.write(data)

mmsc_socket.close()
data = serverResponseStream.getvalue()
serverResponseStream.close()

print "PROXY RESPONSE", data

יום חמישי, יולי 25, 2013

רכיב הtap ב OpenVpn מקבל כתובת MAC חדשה בכל חיבור

אני יודע שקבלת mac בכל חיבור זהוא פיטצר מאוד נחמד רק שלצערי כשאני עובד עם קבלת כתובות ב dhcp זה חמור, כי כל חיבור חדש יוביל לקבלת כתובת חדשה מה שבתורו "מבזבז" הרבה מאוד כתובות.

התיקון הוא ביצוע בקשות release מהמחשב שלך ושמירה על כתובת mac זהה עבור כל חיבור חדש.

dhclient -r tap0 ישחרר את הכתובת הנוכחית, לצערי לא מצאתי איך אני שולח DHCP Release באמצעות nc (או כל חבר אחר) לביצוע שיחרור מסיבי של כתובות שהיו בשימוש (הבעיה היא שצריך גם לנחש את כתובת הmac שהיתה בשימוש בחיבור ישן).

בקובץ שמגדיר את החיבור בopenvpn הוסיפו קישור לתסריט שישנה את ה mac למשהוא קבוע:

user@pc:~$diff old.ovpn new.ovpn 

24a25,26                                                                                                                                                                            
> up "changemac.sh"                                                                                                                > script-security 2
> script-security 2

user@pc:~$cat changemac.sh

#!/bin/bash
ifconfig $1 hw ether 11:11:11:11:11:11 

פעולה זו תגדיר את הmac בכל עלייה עבור כל ממשק רשת חדש שיווצר ע"י חיבור  ה ovpn.