
22.08.2009, 21:24
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
HTTP запросы должна заканчиваться 2-мя crlf
так что типа
hello db 'GET http://localhost/hello.php HTTP/1.0', 10, 13
db 'Host: localhost', 13,10,13,10,0
ну и соответственно перерасчитай длинну посылаемых данных в
invoke send, [sock], hello, 57, 0
лучше заюзай типа
invoke lstrlenA, hello
invoke send, [sock], hello, eax, 0
|
|
|

22.08.2009, 21:28
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
может чтото ты чтото напутал? Но код
mov [ip], eax
ip dd ?
спокойно компилится в FASM
|
|
|

22.08.2009, 21:33
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
насчет пинга вот код который я юзал -
Код:
; необходимые структуры
struct IP_OPTION_INFORMATION
Ttl db 0
Tos db 0
Flags db 0
OptionsSize db 0
OptionsData dd 0
ends
struct ICMP_ECHO_REPLY
Address dd 0
Status dd 0
RoundTripTime dd 0
DataSize dw 0
Reserved dw 0
Data dd 0
Options IP_OPTION_INFORMATION
PingBuf db 32 dup (0)
ends
struct TInAddr
b1 db 0
b2 db 0
b3 db 0
b4 db 0
ends
Optionss IP_OPTION_INFORMATION
InAddr TInAddr
Reply ICMP_ECHO_REPLY
PingBuf db 32 dup (0)
proc Ping InetAddress,ttl ; пингование передается адрес сервера и ТТЛ
invoke IcmpCreateFile ;
cmp eax,INVALID_HANDLE_VALUE ; если не удалось создать "ICMP файл"
je exitp
mov [handle],eax ;сохраним дискриптор
invoke gethostbyname,[InetAddress] ; попытка отпределяни IP адреса
cmp eax,0 ; если не удалось
je exitp ; то
mov eax,[eax+0ch] ; заполение необходимой струкуры
mov eax,[eax]
mov cl,[eax]
mov [InAddr.b1],cl
mov cl,[eax+1]
mov [InAddr.b2],cl
mov cl,[eax+2]
mov [InAddr.b3],cl
mov cl,[eax+3]
mov [InAddr.b4],cl
mov eax,PingBuf
mov [Reply.Data],eax
mov [Reply.DataSize],32
mov al,byte [ttl]
mov [Optionss.Ttl],al
mov eax,[InAddr]
invoke IcmpSendEcho,[handle],eax,PingBuf,32,Optionss,Reply,92,3000 ; пинг
cmp eax,0
je exitp
mov eax,1
ret
exitp:
xor eax,eax
ret
endp
|
|
|

22.08.2009, 22:57
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами:
8842014
Репутация:
5
|
|
slesh, спасибо огромное за ответы
HTTP запросы должна заканчиваться 2-мя crlf
так что типа
hello db 'GET http://localhost/hello.php HTTP/1.0', 10, 13
db 'Host: localhost', 13,10,13,10,0
ну и соответственно перерасчитай длинну посылаемых данных в
invoke send, [sock], hello, 57, 0
лучше заюзай типа
invoke lstrlenA, hello
invoke send, [sock], hello, eax, 0
Так всеравно не вышло  Кстати собственно через lstrlen и было, только не отсылал и посчитал и поставил конкретное значение
при запуске данная программа просто висит в процессах, никаких пакетов, ничего не отсылвается. может лучше сделать через wininet?
может чтото ты чтото напутал? Но код
mov [ip], eax
ip dd ?
спокойно компилится в FASM
действительно
насчет icmp - он и этот код отлично пингует, но вываливается через некоторое время с ошибкой.
|
|
|

22.08.2009, 23:07
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами:
8842014
Репутация:
5
|
|
а что в твоем коде должно содержаться в PingBuf? или это просто пустой буфер в 32 байта?
|
|
|

22.08.2009, 23:27
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
PingBuf - это просто буфер для данных которые идут в нагрузку с пингом. В ответ должны приходить этиже данные для того чтобы проверить корректность работы.
насчет того что прога висит в процессах итд итп. то советую тебе поглядеть как ты реализовал заполнение addr для connect
погляди исходники моего спам бота - он в разделе избранное валяется вроде. написан полностью на FASM и там была функция для посылки HTTP запроса на сервак и корректное получение ответа.
|
|
|

23.08.2009, 10:47
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами:
8842014
Репутация:
5
|
|
спасибо  сейчас получилось - изменил элементы sockaddr_in:
1. перед загрузкой элемента sin_port обработал его функцией htons
2. перед загрузкой элемента sin_addr обработал его функцией inet_addr
снифер пакеты отслеживает, но эффекта 0
вот код на асме:
Код:
format PE GUI 4.0
entry main
include 'win32a.inc'
section '.data' data readable writeable
ip db '127.0.0.1', 0
wdata WSADATA
saddr sockaddr_in
sock dd ?
hello db 'GET http://localhost/hello.php HTTP/1.0', 13, 10
db 'Host: localhost', 13, 10, 13, 10, 0
section '.code' code readable executable
main:
invoke WSAStartup, 0101h, wdata
invoke socket, AF_INET, SOCK_STREAM, 6
mov [sock], eax
mov [saddr.sin_family], AF_INET
invoke htons, 80
mov [saddr.sin_port], ax
invoke inet_addr, ip
mov [saddr.sin_addr], eax
invoke connect, [sock], saddr, sizeof.sockaddr_in
invoke lstrlen
invoke send, [sock], hello, eax, 0
invoke closesocket, [sock]
invoke ExitProcess, 0
section '.idata' import data readable
library kernel32, 'kernel32.dll',\
user32, 'user32.dll',\
wsock32, 'wsock32.dll'
include 'api\kernel32.inc'
include 'api\user32.inc'
include 'api\wsock32.inc'
вот скрипт hello.php (в php не шарю  )
Код:
<?php
$handle = fopen("hello.txt", "a+");
$count = fread($handle, filesize("hello.txt"));
fclose($handle);
$count++;
$handle = fopen("hello.txt", "w");
fwrite($handle, $count);
fclose($handle);
echo $count;
?>
в итоге в файле hello.txt цифра должна при каждом обращении увеличиваться.
|
|
|

23.08.2009, 11:22
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
советую заюзать вот такой вот скрипт
PHP код:
<?
$handle = fopen('hello.txt', 'a+');
$count = intval(fgets($handle));
fclose($handle);
$count++;
$handle = fopen('hello.txt', 'w');
fputs($handle, $count);
fclose($handle);
echo $count;
?>
|
|
|

23.08.2009, 11:57
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами:
8842014
Репутация:
5
|
|
thx, но тут вроде не совсем от скрипта зависит  это что-то с самой программой.
можно легко сделать на wininet, но хотелось попрактиковаться в winsock.
|
|
|

23.08.2009, 12:15
|
|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами:
10097606
Репутация:
3349
|
|
1) у тебя скрипт почемуто выдавал ошибку.
2) invoke lstrlen
А где параметры? забыл указать строку длинну которой считать
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Вопросы для новичков! (faq)
|
PEPSICOLA |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
92 |
14.05.2010 17:59 |
|
ОС с нуля
|
z01b |
С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby |
36 |
03.07.2008 15:30 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|