HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.08.2009, 21:24
slesh
Познавший АНТИЧАТ
Регистрация: 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
 
Ответить с цитированием

  #2  
Старый 22.08.2009, 21:28
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

может чтото ты чтото напутал? Но код
mov [ip], eax
ip dd ?
спокойно компилится в FASM
 
Ответить с цитированием

  #3  
Старый 22.08.2009, 21:33
slesh
Познавший АНТИЧАТ
Регистрация: 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
 
Ответить с цитированием

  #4  
Старый 22.08.2009, 22:57
e4key
Новичок
Регистрация: 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 - он и этот код отлично пингует, но вываливается через некоторое время с ошибкой.
 
Ответить с цитированием

  #5  
Старый 22.08.2009, 23:07
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами: 8842014

Репутация: 5
По умолчанию

а что в твоем коде должно содержаться в PingBuf? или это просто пустой буфер в 32 байта?
 
Ответить с цитированием

  #6  
Старый 22.08.2009, 23:27
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

PingBuf - это просто буфер для данных которые идут в нагрузку с пингом. В ответ должны приходить этиже данные для того чтобы проверить корректность работы.

насчет того что прога висит в процессах итд итп. то советую тебе поглядеть как ты реализовал заполнение addr для connect
погляди исходники моего спам бота - он в разделе избранное валяется вроде. написан полностью на FASM и там была функция для посылки HTTP запроса на сервак и корректное получение ответа.
 
Ответить с цитированием

  #7  
Старый 23.08.2009, 10:47
e4key
Новичок
Регистрация: 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 цифра должна при каждом обращении увеличиваться.
 
Ответить с цитированием

  #8  
Старый 23.08.2009, 11:22
slesh
Познавший АНТИЧАТ
Регистрация: 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;
?>
 
Ответить с цитированием

  #9  
Старый 23.08.2009, 11:57
e4key
Новичок
Регистрация: 24.07.2009
Сообщений: 24
С нами: 8842014

Репутация: 5
По умолчанию

thx, но тут вроде не совсем от скрипта зависит это что-то с самой программой.

можно легко сделать на wininet, но хотелось попрактиковаться в winsock.
 
Ответить с цитированием

  #10  
Старый 23.08.2009, 12:15
slesh
Познавший АНТИЧАТ
Регистрация: 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)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.