Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
[SOLVED] Idealna bramka... curl,wget,bash,python,perl,php
Autor Wiadomość
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #1
Idealna bramka... curl,wget,bash,python,perl,php
Niektórzy może wiedzą inni może mniej.... Tak czy siak zajmuję się tworzeniem skryptu/programu infosms... Obecnie jestem na etapie dopracowywania samego 'silnika' wysyłającego(potem zajmę się tylko i wyłącznie dodatkami).... Szukam osób które mają numer w Play - aby napisać logowanie do tej jakże ważnej bramki, poprawiam błędy w starych modułach(orange.mbox od dzisiaj znów działa) i szukam nowych coraz to bardziej rewolucyjnych bramek.... Uderzyła mnie ta oto strona: http://sms.priv.pl <-Darmowe sms, bez limitów, bez rejestracji(bynajmniej nie jest obowiązkowa), bez obrazków captcha, do wszystkich sieci - 95% wiadomości dochodzi....... I niby wszystko ładnie z tym że nie jestem w stanie przekształcić tego w kod.... Próbowałem już tricków, które dobrze znam: LiveHttpHeaders + wget (lub cURL) niestety nic z tego.... Coś mnie blokuje.... wszystko niby ustawiam tak jak mi to radzi LHH jednak LHH przechodzi kontrole(jest tam narzędzie do powtarzania zapytań z nagłówkami...), a mój skrypt nie... Więc proszę was o pomoc - może wam się uda....
Tutaj ktoś wpadł na ten sam pomysł lecz też miał problemy: http://pl.python.org/forum/index.php?top..._next=next
Mój obecny kod... (z logowaniem - chciałem sprawdzić czy to coś da niestety nie......)
Kod:
#!/bin/bash
# -*- coding: UTF-8 -*-
#################################################
#                sms.priv.pl                    #
#       Wersja:     v0.1                        #
#       Autor:      Eryk Rutkowski              #
#       Licencja:   CC by-sa v3.0               #
#       Web:        http://rryk.jogger.pl       #
#      SKRYPT NAPISANY NA POTRZEBY Info-SmS     #
#################################################

login=$1 # <-Metoda bez logowania....
pass=$2
userAgent="Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.0.3"
nadawca=$3
siec=`echo "$4"|cut -b-3`
number2=`echo "$4"|cut -b4-`
wiadomosc=`echo "$5"|sed 's/ /+/g'`
post1="login=$login&passwd=$pass&x=8&y=10&status=login"
post2="nr=&siec=$siec&number2=$number2&tresc=$wiadomosc&od=$nadawca&status=send"
wget -q --user-agent="$userAgent" --content-disposition --no-check-certificate --keep-session-cookies --save-cookie=/home/rryk/ciastko11.txt --post-data="$post1" --referer="http://sms.priv.pl/" -O /home/rryk/logowanie.html http://sms.priv.pl/login.php
wget -q --user-agent="$userAgent" --content-disposition --no-check-certificate --keep-session-cookies --load-cookie=/home/rryk/ciastko11.txt --post-data="$post2" --referer="http://sms.priv.pl/" -O /home/rryk/wysylanie.html http://sms.priv.pl/

http://counter.li.org/cgi-bin/certificate.cgi/471137
[Obrazek: apt3.png]
(Ten post był ostatnio modyfikowany: 31.01.2011 12:03:40 przez rryk.)
07.12.2010 20:26:07
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
wanter Offline
Użytkownik

Liczba postów: 9
Dołączył: 21-01-2011
Reputacja: 1
Post: #2
RE: Idealna bramka... curl,wget,bash,python,perl,php
Szukając właśnie takiego rozwiązania (wysyłanie sms z konsoli linuxa) wpadłem przypadkowo na tą stronę. Pozwoliłem sobie pobrać powyższy kod i sprawdzić dlaczego nie działa. Rozwiązanie jest dość proste. Idąc tą samą drogą rozumowania co Ty (Live HTTP Headers + Cookie Editor pod FF) doszedłem do wniosku, że problem leży w plikach ciasteczek, przykładowe ciasteczko wygenerowane z wgeta prezentuje się mniej więcej tak:

Kod:
# HTTP cookie file.
# Generated by Wget on 2011-01-21 18:53:37.
# Edit at your own risk.

sms.priv.pl     FALSE   /       FALSE   0       a       64ff20849f5a4846ba8a82afc19d7962
.sms.priv.pl    TRUE    /       FALSE   1295654399      PHPSESSID       e8d5b326ffd1cfae84e8e36660d7aa78

Jak można się domyślić pole "PHPSESSID" zmienia się za każdym razem jak odpalamy nową sesję, oraz ma ustawiony czas wygaśnięcia, natomiast pole "a" (przynajmniej u mnie) pozostaje niezmienione. Cały widz polega na tym, żeby skopiować pole "a" z ciasteczka ze zwykłego kompa pod windą i wkleić w plik ciasteczka wgeta. Należy to zrobić przed odpaleniem POSTa wysyłającego SMSa. U mnie działa. Pozdrawiam.

Aha i zapomniałbym, linia z zapytaniem post2 ma wyglądać tak:

Kod:
post2="status=send&siec=$siec&number2=$number2&tresc=$wiadomosc&od=$nadawca"

A ta z logowaniem jest w ogóle niepotrzebna.

Idąc jeszcze dalej wklejam gotowy kod:

Kod:
#!/bin/bash
# -*- coding: UTF-8 -*-
userAgent="Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
referer="http://sms.priv.pl/"
nadawca="twojanazwa"
siec="500"
number2="123456"
wiadomosc="twoja wiadomosc"
post2="status=send&siec=$siec&number2=$number2&tresc=$wiadomosc&od=$nadawca"
wget --user-agent="$userAgent" --no-check-certificate --keep-session-cookies --save-cookie=ciastko.txt -O wczytaj.html http://sms.priv.pl
cat ciastko.txt | sed 's/34bf7d8ec7ee7c9b20e060a6a96efe82/64ff20849f5a4846ba8a82afc19d7962/g' > ciastko11.txt
rm ciastko.txt
sleep 3
wget --user-agent="$userAgent" --no-check-certificate --keep-session-cookies --load-cookie=ciastko11.txt --post-data="$post2" --referer="http://sms.priv.pl/" -O wysylanie.html http://sms.priv.pl/
rm ciastko11.txt

Słowem wyjaśnienia: nie kasować linijki
Kod:
sleep 3
bez niej nie ruszy (widać co strona ma zabezpieczenia antyspamowe, albo jakies inne wynalazki). Jest to skrypt bez logowania. W tym miejscu:
Kod:
cat ciastko.txt | sed 's/34bf7d8ec7ee7c9b20e060a6a96efe82/64ff20849f5a4846ba8a82afc19d7962/g' > ciastko11.txt
zamieniamy stare "a" na to odpisane z komputera.
(Ten post był ostatnio modyfikowany: 22.01.2011 11:08:16 przez wanter.)
21.01.2011 19:13:02
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #3
RE: Idealna bramka... curl,wget,bash,python,perl,php
Dzięki za wskazówkę jednak "a" od czasu do czasu się zmienia... I tutaj jest problem bo bramka powinna być uniwersalna i działać wszędzie, a tak nie jest... Tutaj jest problem.. Jak by tu zrobić żeby a było zawsze dobre ;p

http://counter.li.org/cgi-bin/certificate.cgi/471137
[Obrazek: apt3.png]
25.01.2011 00:21:17
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
wanter Offline
Użytkownik

Liczba postów: 9
Dołączył: 21-01-2011
Reputacja: 1
Post: #4
RE: Idealna bramka... curl,wget,bash,python,perl,php
"a" zmienia się co 24h. Zastanawiam się jak ta bramka wykrywa to, że podłączamy się z Linuxa a nie z Windowsa? Może jakoś po pobranej od nas rozdzielczości? Dobrze by było powalczyć o ten skrypt bo to chyba jedyne co w ogóle działa do wysyłania sms?
25.01.2011 07:59:03
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #5
RE: Idealna bramka... curl,wget,bash,python,perl,php
Cofnij do działu Programowanie i zobacz przypięty temat InfoSMS ;p Jak widać to nie jest jedyne co wysyła sms z poziomu konsoli z tym że wysyła bez względu na ilość i sieć...
Tak się teraz zastanawiam.... Hmm Czy "a" jest dla każdego inne i co 24h się dla każdego generuje nowe czy może dla każdego jest takie same....
Jeżeli dla każdego jest takie same to obejście problemu nie jest aż takie trudne...
[EDIT]
To nie jest tak że wykrywa czy to windows czy to nie windows, po prostu wget nie pobiera jednej ważnej informacji z headers mianowicie Cookies dla porównania Headers z wgeta i LiveHttpheaders;
WGET
Kod:
HTTP/1.1 200 OK
Server: Sun-Java-System-Web-Server/7.0
Date: Wed, 26 Jan 2011 10:37:13 GMT
Content-type: text/html X-powered-by: PHP/5.2.10
Set-cookie: PHPSESSID=df8feb648291caee1569f88583b3687f; expires=Wed, 26-Jan-2011 23:59:59 GMT; path=/; domain=sms.priv.pl
Expires: Wed, 26 Jan 2011 10:37:12 GMT
Last-modified: Wed, 26 Jan 2011 10:37:12 GMT
Cache-control: no-store, no-cache, must-revalidate
Cache-control: post-check=0, pre-check=0
Pragma: no-cache
Set-cookie: a=e4744243c511dccb2058211b5a390691
LiveHTTPheaders
Kod:
POST / HTTP/1.1

Host: sms.priv.pl

User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.3) Gecko/20100423 Ubuntu/10.04 (lucid) Firefox/3.0.3

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: pl,en-us;q=0.7,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: http://sms.priv.pl/

Cookie: __utma=119820042.1514182040.1295903840.1295910809.1296037360.4; __utmz=119820042.1295903840.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=119820042.nie_blokowane_reklamy; bbnaut=776173b0957b41c4; PHPSESSID=39cca88f150b35529f3da52e589a50fc; a=872c4e6e1f4bcc889cf75c69b8140641; __utmb=119820042.2.10.1296037360; __utmc=119820042

Content-Type: application/x-www-form-urlencoded

Content-Length: 60

status=send&siec=510&nr=&number2=000000&tresc=Siemka&od=Eryk

HTTP/1.1 200 OK

Server: Sun-Java-System-Web-Server/7.0

Date: Wed, 26 Jan 2011 10:23:13 GMT

Content-Type: text/html

X-Powered-By: PHP/5.2.10

Expires: Wed, 26 Jan 2011 10:23:11 GMT

Last-Modified: Wed, 26 Jan 2011 10:23:11 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Set-Cookie: a=e4744243c511dccb2058211b5a390691

Content-Encoding: gzip

Transfer-Encoding: chunked
jak widać wget ukrywa/ignoruje całą część nad HTTP/1.1 200 OK
a tam właśnie jest "a" które należy zastąpić... gdyż wget otrzymuje "a" z
Cytat:Set-Cookie: a=e4744243c511dccb2058211b5a390691
a trzeba je zastąpić z tym "a"
Cytat:Cookie: __utma=119820042.1514182040.1295903840.1295910809.1296037360.4; __utmz=119820042.1295903840.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=119820042.nie_blokowane_reklamy; bbnaut=776173b0957b41c4; PHPSESSID=39cca88f150b35529f3da52e589a50fc; a=872c4e6e1f4bcc889cf75c69b8140641; __utmb=119820042.2.10.1296037360; __utmc=119820042
Tylko jak je wyłuskać skoro nawet nie wiadomo gdzie ono jest widzimy je tylko dzięki LiveHTTPheaders;p

http://counter.li.org/cgi-bin/certificate.cgi/471137
[Obrazek: apt3.png]
(Ten post był ostatnio modyfikowany: 26.01.2011 12:45:02 przez rryk.)
26.01.2011 10:56:47
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Kwpolska Offline
NIE MA MENU

Liczba postów: 301
Dołączył: 11-09-2010
Reputacja: 16
Post: #6
RE: Idealna bramka... curl,wget,bash,python,perl,php
A curl co na to?

Debian(opodobne) i problemy z WiFi? Zajrzyj do wiki.
Jeśli ci pomogłem - polecam pacnąć w takiego pana trochę niżej: [Obrazek: postbit_reputation.gif]
26.01.2011 15:02:58
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #7
RE: Idealna bramka... curl,wget,bash,python,perl,php
(26.01.2011 15:02:58)Kwpolska napisał(a):  A curl co na to?
Kod:
:~$  curl -I http://sms.priv.pl
HTTP/1.1 200 OK
Server: Sun-Java-System-Web-Server/7.0
Date: Wed, 26 Jan 2011 14:10:49 GMT
Content-type: text/html
X-powered-by: PHP/5.2.10
Set-cookie: PHPSESSID=96a03c3eea6877d18408e882bb5bb4b6; expires=Wed, 26-Jan-2011 23:59:59 GMT; path=/; domain=sms.priv.pl
Expires: Wed, 26 Jan 2011 14:10:49 GMT
Last-modified: Wed, 26 Jan 2011 14:10:49 GMT
Cache-control: no-store, no-cache, must-revalidate
Cache-control: post-check=0, pre-check=0
Pragma: no-cache
Set-cookie: a=e4744243c511dccb2058211b5a390691
Jak widać również nie pobiera tych danych...

http://counter.li.org/cgi-bin/certificate.cgi/471137
[Obrazek: apt3.png]
26.01.2011 15:11:56
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Kwpolska Offline
NIE MA MENU

Liczba postów: 301
Dołączył: 11-09-2010
Reputacja: 16
Post: #8
RE: Idealna bramka... curl,wget,bash,python,perl,php
Cytat:
Kod:
Set-cookie: a=e4744243c511dccb2058211b5a390691

Debian(opodobne) i problemy z WiFi? Zajrzyj do wiki.
Jeśli ci pomogłem - polecam pacnąć w takiego pana trochę niżej: [Obrazek: postbit_reputation.gif]
26.01.2011 15:12:55
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
rryk Offline
Użytkownik

Liczba postów: 238
Dołączył: 14-06-2009
Reputacja: 1
Post: #9
RE: Idealna bramka... curl,wget,bash,python,perl,php
Tak ale to jest te złe cookie ;p prawidłowe jest a=872c4e6e1f4bcc889cf75c69b8140641 przeczytaj uważnie #5 post ;p
Te cookie jest wysyłane dla zmyłki prawidłowe jest gdzie indziej ;p od takie zabezpieczenie, którego nie możemy złamać ;p

http://counter.li.org/cgi-bin/certificate.cgi/471137
[Obrazek: apt3.png]
(Ten post był ostatnio modyfikowany: 26.01.2011 15:41:06 przez rryk.)
26.01.2011 15:40:56
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
wanter Offline
Użytkownik

Liczba postów: 9
Dołączył: 21-01-2011
Reputacja: 1
Post: #10
RE: Idealna bramka... curl,wget,bash,python,perl,php
Ok znalazłem rozwiązanie. Wysyłam gotowy kod:

Kod:
#!/bin/bash
# -*- coding: UTF-8 -*-

userAgent="Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"
referer="http://sms.priv.pl/"
siec=`echo "$1"|cut -b-3`
number2=`echo "$1"|cut -b4-`
wiadomosc="$3"
nadawca="$2"
post2="status=send&siec=$siec&number2=$number2&tresc=$wiadomosc&od=$nadawca"

i=0;
ok=0;

while [ -z $zostalo ]; do

ok=1;

if [ $i -gt 0 ]; then

data11=`date +%Y/%m/%d\ %R`
echo "[$data11] [SMS] Blad [$i] podczas wysylania wiadomosci SMS."
echo "[$data11] [SMS] Ponawiam probe wysylania..."

fi

i=$[i+1];

wget --user-agent="$userAgent" --no-check-certificate --keep-session-cookies --save-cookie=ciastko.txt -p -O logowanie.html http://sms.priv.pl &> /dev/null
sleep 5
wget --user-agent="$userAgent" --no-check-certificate --keep-session-cookies --load-cookie=ciastko.txt --post-data="$post2" --referer="http://sms.priv.pl/" -O wysylanie.html http://sms.priv.pl/ &> /dev/null
zostalo=`cat wysylanie.html | grep Zostało | grep ci | cut -d" " -f 3`

ok=0;

done

if [ $ok = 0 ]; then

data11=`date +%Y/%m/%d\ %R`
echo "[$data11] [SMS] Wyslano sms."
echo "[$data11] [SMS] Pozostalo jeszcze [$zostalo] smsow do wyslania na dzisiejszy dzien."

fi

rm ciastko.txt
rm wysylanie.html
rm logowanie.html

Już wyjaśniam. Cały problem rozwiązuje dodanie opcji "-p" do wgeta. Opcja ta powoduje pobranie obrazków. Widać co strona sprawdza czy aby nie mamy poblokowanych jakichś reklam. Czasem smsy się jednak nie wysyłają, doszedłem jednak do tego jak to obejść. Jeżeli w pobranej stronie nie ma tekstu ile sms nam pozostało to sms się nie wysłał. Sprawdzam to i ponawiam wysyłanie w razie czego.

Tyle Smile Miłego użytkowania. Pozdrawiam.
27.01.2011 23:19:10
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  zabijanie i uruchamianie procesów przez www/php NiKiEL 5 169 10.04.2012 06:54:04
Ostatni post: Cyryl
  [solved][BASH] aktualizowanie czasu co 10 min waldi11 2 397 19.11.2011 21:01:13
Ostatni post: waldi11
  [PHP] Odpalenie top z poziomu php... rryk 8 496 05.11.2011 18:13:05
Ostatni post: holywar
  Bash wyswietlanie nr lini w ktorym znajduje sie dany wyraz?? rryk 6 2 281 31.10.2011 12:56:18
Ostatni post: wrosiak
  [BASH] Zablokowanie wylaczenie komputera... rryk 10 547 26.09.2011 18:33:46
Ostatni post: Lachu
  [ROZWIĄZANE] [BASH] - dowolny - Kawałek stringa do zmiennej rewers79 2 683 15.06.2011 14:16:00
Ostatni post: rewers79
  BASH-sortowanie bąbelkowe Pitek016 2 844 20.04.2011 18:10:26
Ostatni post: Pitek016
  [ROZWIĄZANE] [bash]Dzielenie tekstu danym znakiem Freev 4 1 493 06.03.2011 21:52:36
Ostatni post: Freev
  [ROZWIĄZANE] [Bash][C#/Gambas] Wiele pytań. eloaders 7 1 451 23.01.2011 00:07:52
Ostatni post: eloaders
  BASH - zmiena w nazwie tablicy dragonn 5 1 098 22.01.2011 22:51:53
Ostatni post: Enlik

Skocz do:


Użytkownicy przeglądający ten wątek: 5 gości

Kontakt | Linux360.pl - forum | Wróć do góry | Wróć do forów | Wersja bez grafiki | RSS