Telnet chat server for Linux x86_64

Тема в разделе "WASM.BEGINNERS", создана пользователем Hacker, 16 июл 2023.

  1. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    170
    Адрес:
    Москва
    на nasmx , буду читать код который уже оствил добрый гражданин, а что делать?
    Конечно спасибо огромное человеку за x86 код без макросов но я ни чего не понимаю...
    ..вот что получаетсяу меня, ошибка вызова realloc делаю по аналогиис сишным кодом и пока не разобрался с этими двумя буферами и была такая фича в коде что можно еперебвать друг друга в сообщениях,как это исправитьи стоит ли исправлять?
    tcs.png
    Код (ASM):
    1.  
    2. fds istruc pollfd
    3.    at pollfd.fd, dq 0
    4.    at pollfd.events, dw 1
    5.    at pollfd.revents, dw 0
    6. iend
    7.  
    8. fds_size equ $ - pollfd
    9.  
    10. ...
    11.  
    12. ;Вызов
    13.    mov rdi, fds
    14.    mov rsi, fds_size
    15.    call realloc
    16.  
    ещё мне очень понравился Выход из программы...
     
    Последнее редактирование модератором: 16 фев 2024
  2. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    410
    а енто извините какая поза в камасутре
     
    mantissa и Mikl___ нравится это.
  3. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    170
    Адрес:
    Москва
    Вот, еле скачал, помехии на линии какие-то... может пригодится, мне то уж точно, буду смотреть как функции правильно вызывать
    http://global.net.ru/temp/asm/idafree84_linux.run
    Процесс пошел - вот так правильно вероятно
    Код (ASM):
    1. mov rdi, [fds]
    2. mov rsi, fds_size
    3. call realloc
    4.  
    Нет, ни чего не понятно... realloc вываливается
    Возможно ошбка у меня с размером структуры
    Код (ASM):
    1.  
    2. fds istruc pollfd
    3.    at pollfd.fd, dq 0
    4.    at pollfd.events, dw 1
    5.    at pollfd.revents, dw 0
    6. iend
    7.  
    8. fds_size equ $ - fds
    9. ...
    10.   mov rdi, fds
    11.   mov rsi, [fds_size]
    12.   call realloc
    13.  
    рабочий вариант вот такой
    Segmentation fault - пишут, как узнать что не нравится?
    Почему-то не могу передать syscall socket тип сокета SOCK_NONBLOCK (04000) с просто type 1 работает
    наверное не тот equ - у человека вроде type 6 стоит неблокирующий
     
    Последнее редактирование модератором: 16 фев 2024
  4. Hacker

    Hacker Member

    Публикаций:
    0
    Регистрация:
    9 авг 2018
    Сообщения:
    170
    Адрес:
    Москва
    Спасибо огромное Application и HoShiMin - буду пытаться разобраться в этом всём.
    --- Сообщение объединено, 16 фев 2024 ---
    Сначало передаём poll дискриптор сокета? не получается ни чего, Segmentation fault
    Код (ASM):
    1.  
    2. ;;
    3. ;;
    4.  
    5. %include '/home/user/Desktop/nasmx/inc/nasmx.inc'
    6. %include '/home/user/Desktop/nasmx/inc/linux/libc.inc'
    7. %include '/home/user/Desktop/nasmx/inc/linux/syscall.inc'
    8.  
    9. FIONBIO equ 0x5421
    10.  
    11. ENTRY main
    12.  
    13. struc sockaddr_in
    14.   .sin_family resw 1
    15.   .sin_port resw 1
    16.   .sin_addr resd 1
    17.   .sin_zero resb 8
    18. endstruc
    19.  
    20. struc pollfd
    21.    .fd resq 1
    22.    .events resw 1
    23.    .revents resw 1
    24. endstruc
    25.  
    26. [SECTION .data]
    27.  
    28. tcs_so istruc sockaddr_in
    29.   at sockaddr_in.sin_family, dw 2
    30.   at sockaddr_in.sin_port, dw 0x1700
    31.   at sockaddr_in.sin_addr, dd 0
    32.   at sockaddr_in.sin_zero, dd 0, 0
    33. iend
    34.  
    35. sockaddr_in_size equ $ - tcs_so
    36.  
    37. fds istruc pollfd
    38.    at pollfd.fd, dq 0
    39.    at pollfd.events, dw 1
    40.    at pollfd.revents, dw 0
    41. iend
    42.  
    43. fds_size equ $ - fds
    44.  
    45. do_linemode db 255, 253, 34
    46. do_linemode_size equ $ - do_linemode
    47.  
    48. on_linemode db 255, 250, 34, 1, 1, 255, 240
    49. on_linemode_size equ $ - on_linemode
    50.  
    51. will_echo db 255, 253, 1
    52. will_echo_size equ $ - will_echo
    53.  
    54. wont_echo db 255, 252, 1
    55. wont_echo_size equ $ - wont_echo
    56.  
    57.  
    58.  
    59. [SECTION .bss]
    60.  
    61. buffer: resb 1728
    62. ioctlchar: resq 1
    63.  
    64. reply_buff db 512 dup(0)
    65. reply_buff_size equ  $ - reply_buff
    66.  
    67. [SECTION .text]
    68.  
    69. proc main
    70. locals none
    71.  
    72.    syscall socket, 2, 1, 0
    73.    mov r13, rax
    74.  
    75.    syscall bind, r13, tcs_so, sockaddr_in_size  
    76.    syscall listen, r13, 4096
    77.  
    78.    syscall ioctl, r13, FIONBIO, ioctlchar
    79.  
    80. main_loop:
    81.  
    82.    mov [pollfd.fd], r13
    83.    syscall poll, fds, fds_size, 100
    84.  
    85.    syscall accept, r13, tcs_so, sockaddr_in_size
    86.  
    87.  
    88. telnet_negotiate_linemode:
    89.  
    90.    syscall write, pollfd.fd, do_linemode, do_linemode_size
    91.    syscall write, pollfd.fd, on_linemode, on_linemode_size
    92.    syscall write, pollfd.fd, will_echo, will_echo_size
    93.    syscall write, pollfd.fd, wont_echo, wont_echo_size
    94.  
    95.    syscall read, pollfd.fd, reply_buff, reply_buff_size
    96.  
    97.    jmp main_loop
    98.    
    99. endproc
    100.  
    --- Сообщение объединено, 16 фев 2024 ---
    Ребят помогите написать пожалуйста. Очень нужен этот проэкт
     
  5. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Пожалуйста!
    --- Сообщение объединено, 16 фев 2024 ---
    Я не программист, не знаю ни C ни asm толком, но очень нужен проект этого телетайпа
    --- Сообщение объединено, 16 фев 2024 ---
    Я бы заплатил за исходник мне нужный 5000 RUB, но сейчас в больших долгах и деньги появятся только в конце лета.
    Если напишите в кредит - в конце лета расчитаюсь с Вами.
    --- Сообщение объединено, 16 фев 2024 ---
    Да... до конца лета действительно не вриант. Найду Вам 5000 RUB сразу, что уж делать тут, залезу ещё в долг... постараюсь найти, если дадут...
    Работа есть работа. Без вложений ни куда.
    --- Сообщение объединено, 16 фев 2024 ---
    Исходинк нужен читабельный на nasmx 64 с syscall
     
  6. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    410
  7. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    так же укажу Вашу ФИО в лицензии копирайтих или любую другую организацию или структуру
    --- Сообщение объединено, 16 фев 2024 ---
    Ещё такой вопрос по поводу безопастности. удет ли telnet клиент защищён от выполнения произвольного кода\своих функций?
    Я так понимаю что сервер tty отправляет и принимает только тестовые сообщения и этим функционал ограничится.
     
  8. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Вопрос только зачем на ассемблере и почему не устраивает вариант на любом другом языке?
    Сам же видишь, что на ассемблере можно закопаться в самых простых вещах - вряд ли кто-то возьмётся даже за 5000, хотя на других языках здесь работы на пару вечеров.
    Если бы убрал из требований ассемблер с сисколлами - исполнитель нашёлся бы быстрее.
     
  9. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    У меня там критичный сервер, нужен nasm
    --- Сообщение объединено, 16 фев 2024 ---
    На C мне уже писали код, он вываливается от Windows Telnet & PuTTY работает только с GNU telnet
    Лучше на ассемблере будет надёжней, и потом исходник должен нормально читаться что бы пользователь видел что программа безопасна
    --- Сообщение объединено, 16 фев 2024 ---
    С макросами nasmx всё пишется на раз - нужна по сути только реализация функции poll
     
  10. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Если на насме с макросами всё пишется на раз - чего ж тогда ты его пишешь уже полгода?
    То, что на си тебе сделали падающий чат - значит лишь то, что автор не умеет писать надёжный код.
    Это не значит, что любой код на си будет так же падать.
    Вот ты сам и оценил читаемость ассемблерного кода.
    Никто не сможет понять, что делает этот сервер, если ты им дашь ассемблерный листинг.
    Хочешь читаемый код - пиши на языках высокого уровня.
    Критичный к чему? На основе чего ты решил, что тебе нужен именно ассемблер и что другие языки не подходят?
     
  11. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Ну я как бы на форуме низкоуровневого программирования, и как бы да, мне нужен nasm
     
  12. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Нет, тебе не нужен nasm для чата. И раз тебе об этом говорят на форуме именно низкоуровневого программирования - возможно, стоит к этому прислушаться.
     
  13. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Почему не реализовать одну простую функцию на asm?
     
  14. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Потому что это не простая функция, и она не одна. Потому что тебе придётся организовать менеджмент подключений, обработку вычитки данных для каждого, разбор протокола, по которому клиенты шлют тебе сообщения, и много что ещё.
    На C++ всё это делается довольно просто, а на ассемблере у тебя падает даже realloc. Ну и смысл насиловать ассемблер? Что ты от этого выиграешь?
    Быстрее сервер работать не будет, надёжнее не станет - даже наоборот, gcc тебе соберёт более быстрый код с SSE/AVX, и ошибиться в высокоуровневом коде сложнее.
     
  15. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Мне нужно подумать на счёт нормальной реализации tty на C. Я планировал найти 5000 RUB на nasm код, но не думал платить за C.
    Если ни кто не появится деловой в течении некторого времени то я обращусь тогда к вам за C кодом, Вы сможете помочь?
     
  16. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    На си или на чём-то другом простой чат на сокетах тебе и за бесплатно могут здесь написать.
     
  17. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Я планировал написать teletype телетайп на nasm - это не совсем чат
     
  18. HoShiMin

    HoShiMin Well-Known Member

    Публикаций:
    5
    Регистрация:
    17 дек 2016
    Сообщения:
    1.454
    Адрес:
    Россия, Нижний Новгород
    Начиналось с чата. А что подразумеваешь под телетайпом? Что должна делать программка?
     
  19. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    ну ты сишный код видел, ты жеж сишник. Отправлять сообщения всем присоденившемся консолям на telnet
     
  20. Kulesh

    Kulesh Member

    Публикаций:
    0
    Регистрация:
    16 фев 2024
    Сообщения:
    30
    Разрешите обратиться?
    Не могли бы Вы мне реализовать эту функцию на nasmx 64 Linux
    Не сочтите за грубость, я заплачу Вам 5000 RUB.
    Мну нужен сервер телетайпа.
    tty for telnet