Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

23.08.2009, 10:47
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
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
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
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
Провел на форуме: 71052
Репутация:
5
|
|
thx, но тут вроде не совсем от скрипта зависит  это что-то с самой программой.
можно легко сделать на wininet, но хотелось попрактиковаться в winsock.
|
|
|

23.08.2009, 12:15
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
1) у тебя скрипт почемуто выдавал ошибку.
2) invoke lstrlen
А где параметры? забыл указать строку длинну которой считать
|
|
|

23.08.2009, 12:22
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
вот рабочий код.
Я тут внес некоторую оптимизацию )
Теперь размер 1024 байта после компила )
Код:
format PE GUI 4.0
entry main
include 'win32a.inc'
section '.text' data readable writeable executable import
;--------------- IMPORT -------------------
library kernel32, 'kernel32.dll',\
wsock32, 'wsock32.dll'
include 'api\kernel32.inc'
include 'api\wsock32.inc'
;--------------- CODE -------------------
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, hello
invoke send, [sock], hello, eax, 0
invoke closesocket, [sock]
invoke ExitProcess, 0
;--------------- DATA -------------------
ip db '127.0.0.1', 0
hello db 'GET http://localhost/hello.php HTTP/1.0', 13, 10
db 'Host: localhost', 13, 10, 13, 10, 0
wdata WSADATA
saddr sockaddr_in
sock dd ?
Последний раз редактировалось slesh; 23.08.2009 в 12:25..
|
|
|

23.08.2009, 12:45
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
1) хм у меня вроде норм все было.
2) действительно))
собственно туплю  поставил обработку ошибок и нашел ошибку 10061 после вызова функции connect. посмотерл - на локалхост не заходит хотя сервер запущен. кароче сменил сервер на vertrigo (был easyphp). все норм работает.
а почему у тебя в пинге ReplySize = 92? ведь размер структуры = 24 а буфера 32,
Последний раз редактировалось e4key; 23.08.2009 в 12:50..
|
|
|

23.08.2009, 12:50
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ого 1 кб!  -2 секции - 1 кб  ушел читать твою статью про оптимизацию прог. на fasm  спасибо!
|
|
|

23.08.2009, 13:14
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
насчет 92 - это просто ошибка. когда переписывал.
потому как включил буфер ответа в саму структуру, но забыл вычесть размер.
ICMP_ECHO_REPLY - 28 байт + 32 буфер = 60 байт
60 + точно я забыл удрать +32 какраз и вышло 92 )
Да и код писал очень давно и криво, так что могут быть косяки всякие )
|
|
|

23.08.2009, 13:51
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ну а в моем случае это будет размер ICMP_ECHO_REPLY + PingBuf = 24 + 32 = 56?
структуру IP_OPTION_INFORMATION я не использую.
но тогда после выполнения функции возвращается ошибка 11001.
может следует взять с запасом или я ошибся в расчетах?
Последний раз редактировалось e4key; 23.08.2009 в 13:58..
|
|
|

23.08.2009, 22:44
|
|
Новичок
Регистрация: 24.07.2009
Сообщений: 24
Провел на форуме: 71052
Репутация:
5
|
|
ни у кого нет примера серверной программы с использованием winapi? хотелось бы простой примерчик, например, выводящий полученную от клиента команду в messagebox'e.
нашел немало такого, но не выходит перевести на асм
спасибо 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|