FreaxNet (присоединяйтесь к разработке!)
Модератор: Модераторы разделов
FreaxNet
Привет всем юниксойдам!
Я тут решил написать (бесплатный) сканер портов (любительскую версию – он не будет такой профессиональной, как nmap) . Это не что-то принципиально новое, быстрое или мега функциональное. Это просто хобби
Нет нет, я не какой-нибудь мега_продвинутый_кернел_хакер, вы не подумайте. Я самый что ни на есть начинающий. Студент. Просто хочу развлечся и заодно, в процессе, продолжать учить программирование. Если вам интересно, предлагайте свои идеи, создавайте код, выкладывайте его сюда.
Сейчас этот сканер практически ничего не умеет. Он сканирует первые 1015 портов, и показывает открытые. Кстати, работает только с локальной машиной (127.0.0.1 или имя_машины). Сейчас думаю над этим, но времени совсем нет...
Короче говоря, хочу просто развлечся и предложить вам поучавствовать.
Я тут решил написать (бесплатный) сканер портов (любительскую версию – он не будет такой профессиональной, как nmap) . Это не что-то принципиально новое, быстрое или мега функциональное. Это просто хобби
Нет нет, я не какой-нибудь мега_продвинутый_кернел_хакер, вы не подумайте. Я самый что ни на есть начинающий. Студент. Просто хочу развлечся и заодно, в процессе, продолжать учить программирование. Если вам интересно, предлагайте свои идеи, создавайте код, выкладывайте его сюда.
Сейчас этот сканер практически ничего не умеет. Он сканирует первые 1015 портов, и показывает открытые. Кстати, работает только с локальной машиной (127.0.0.1 или имя_машины). Сейчас думаю над этим, но времени совсем нет...
Короче говоря, хочу просто развлечся и предложить вам поучавствовать.
FreaxNet «Shut up and hack!»
Re: FreaxNet
(Линус Торвальдс @ 25th August 1991) писал(а):Привет всем пользователям minix!
Я тут пишу (бесплатную) операционную систему (любительскую версию – она не будет такой большой и профессиональной, как gnu).
Зело извиняюсь за оффтоп, но это одному мне напомнило первое письмо Линуса Торвальдса в конференцию Minix, где он объявил о создании своей ОС ?
Re: FreaxNet
Да без проблем !
Вряд ли! Я думаю, тут многие читали его книгу и сразу же вспомнили это письмо
FreaxNet «Shut up and hack!»
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
А где на код посмотреть можно?
Re: FreaxNet
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
точно. Только не работает, когда вводишь свой адрес - нормально, когда чужой - зависает. предпоследней строки не не понял: return куда дел? А ещё ввод не понравился - не удобно адрес вводить, из argv[1] было бы проще(всем).
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
А на каком языке пишем? Или тебе printf не нравится?
лови код:
Код: Выделить всё
#define IP_LENGTH 20
char IP[IP_LENGTH];
int cmd(int argc, char *argv[])
{
if(argc != 2)
{
fprintf(stderr, "Использование: %s <IP_address>\n", argv[0]);
return 1;
}
if(strlen(argv[1]) >= IP_LENGTH-1)
{
fprintf(stderr, "Слишком длинный адрес: %s", argv[1]);
return 1;
}
strcpy(IP, argv[1]);
return 0;
}
int main(int argc, char *argv[])
{
int port;
if(cmd(argc, argv)) return 1;
printf("Scanning for %s\nPORT\tSTATUS\n", IP);
ЗЫЖ
За такое надо яйца отрезать кодерам. Не пиши так никогда, пожалуйста!!! Вот цитата из man fgets:cin>>IP;
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.
Re: FreaxNet
Пишем на С++. Я пользуюсь g++. Просто я учил С++ по учебнику Стивена Прата "С++ Лекции и упражнения", а там он с самого начала юзает cin и cout, и вообще ввод/вывод с помощью iostream, как самый обычный для С++. Ты можешь использовать функции С какие хочешь.
Да, и еще. Ты бы сразу вносил изменения в код и выкладвал.
А про это
Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.
Если ты обеспокоен за безопасность, то "классы из <iostream> входят в пространство имён std", к тому же у меня using namespace std
http://www.progz.ru/forum/index.php?showtopic=28426
FreaxNet «Shut up and hack!»
Re: FreaxNet
Теперь можно вводить IP (или имя машины) в командной строке как аргумент, и он почти сканирует внешнюю сеть.
Что значит почти? Это значит, что ваш внешний IP или IP вашего знакомого, он просканировать может (кое-как, но выходит), а вот что-то покруче - виснет сразу. Сейчас думаю над этой проблемой.
З.Ы. спасибо за идею drBatty
Что значит почти? Это значит, что ваш внешний IP или IP вашего знакомого, он просканировать может (кое-как, но выходит), а вот что-то покруче - виснет сразу. Сейчас думаю над этой проблемой.
З.Ы. спасибо за идею drBatty
- Вложения
-
- scanner.cpp.tar.gz
- (713 байт) 132 скачивания
FreaxNet «Shut up and hack!»
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
ну не люблю я перегруженый сдвиг... Кроме того, в твоём коде кроме сдвига и namespace ничего от плюсов нет
А про это
Never use gets().
не я не про то, что будет если юзер введёт больше 19 символов? Причём ты, со своим сдвигом это никак не проконтролируешь. Просто сдвиг это та же gets(), только называется по другому. Мы ж сканер допишем, прав нам не хватит, SUID бит припишем. А злоумышленик запустит scanner<ххх, причём в ххх будет больше 19 байт, и затрётся стек, и он сможет выполнить любую команду с правами рута...
PS: вот, добавил необходимые проверки.
- Вложения
-
- scanner.cpp.tar.gz
- (926 байт) 142 скачивания
Re: FreaxNet
Да, я тоже заметил, что с плюсами там своеобразно. ))
entry, в плюсовых книжках обычно те же ворнинги и "never use" написаны для cin >> char* , что и процитированные для fgets. Никогда к нему не прикасайтесь. Это злобный артефакт из темного средневековья, который продолжает вытягивать души из новичков.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
новичкам необходимо юзать fgets вместо gets. А что делать с <<? Кроме как определить "резиновый" класс с перезагрузкой << я ничего не могу придумать, а это не для новичков. Что касается вывода в cout, так он жутко неудобный, если надо вывести что-то сложнее "hello world!".
Re: FreaxNet
drBatty писал(а): ↑17.11.2007 14:52
новичкам необходимо юзать fgets вместо gets. А что делать с <<? Кроме как определить "резиновый" класс с перезагрузкой << я ничего не могу придумать, а это не для новичков. Что касается вывода в cout, так он жутко неудобный, если надо вывести что-то сложнее "hello world!".
На вывод я как-то не жалуюсь. А для ввода строк вообще-то cin >> string есть - это если речь о плюсах действительно, а не о "си с cin/cout". Не говоря уж о нескольких не->> методах для ввода символьных последовательностей.
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
Ну я и писал о резиновом классе, вроде string. Но что будет, если я скормлю десяток-другой гигабайтов твоему string'у? Исключение? Или смерть системе? Вот fgets в случае ошибки вернёт 0. А string?
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
неполучается, пишет "bash: java: command not found", что, для сканирования портов мне обязательно яву надо? Да нафиг она мне нужна? А сканер портов мне бы пригодился, только такой маленький и чтоб везде работал, хоть у меня, хоть у друга в Америке виндузятника.
Re: FreaxNet
drBatty, ты сам себе противоречишь, как известно реализация сокетов в венде отличается от линукса, так что придется писать платформенно-зависимый код. А в случае джавы, достаточно установленной JVM у тебя и твоего друга в Америке и один и тот же сканер портов.
LightLang Team
Re: FreaxNet
Простите, но класс istream и связка его оператор >> - это система считывания форматированного текстового ввода. Вопрос: откуда считываем ваши десяток-другой гигабайтов?? из командной строки - как в данном случае? Ну так сожрать всю память или упасть по исключению - имхо совершенно нормальная реакция для таких патологических случаев использования. =) Чтобы это не вредило системе в целом - это уже задача админа лимиты настроить. Если оне не сделаны, а по системе ходят неадекватные личности - так админ сам себе злобный буратина, неадекватные личности и без сканера портов найдут чем все память сожрать, если им захочеццо.
Если вы считываете ввод непойми-откуда-где-может-ходить-злой-бармалей - так это совсем другой разговор. ))) И в этом случае -
- вообще-то ни пару перегруженых istream::get (плюсовый аналог вашей сишной), ни пару getline, ни read c readsome, ни (если уж у вас настолько не trusted и непонятно-кем-форматированный ввод) посимвольное считывание или работу напрямую с буфером - никто не отменял. Надо просто в каждом случае использовать подходящие к задаче средства, только и всего.
Вы просто для себя определитесь - работаете вы с си или с си++, если си - убрать из этого сканера син и каут. Если с си++ и используете потоки иострим - так и используйте их. Смешивать потоковые операции си и си++ без нужды - не лучшая идея, в некоторых случаях (хоть и вряд ли в этом) это накладывает оч. неприятные ограничения и не дает использовать функциональность плюсов в полной мере...
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Re: FreaxNet
entry писал(а): ↑15.11.2007 23:25Привет всем юниксойдам!
Я тут решил написать (бесплатный) сканер портов (любительскую версию – он не будет такой профессиональной, как nmap) . Это не что-то принципиально новое, быстрое или мега функциональное. Это просто хобби
Нет нет, я не какой-нибудь мега_продвинутый_кернел_хакер, вы не подумайте. Я самый что ни на есть начинающий. Студент. Просто хочу развлечся и заодно, в процессе, продолжать учить программирование. Если вам интересно, предлагайте свои идеи, создавайте код, выкладывайте его сюда.
Сейчас этот сканер практически ничего не умеет. Он сканирует первые 1015 портов, и показывает открытые. Кстати, работает только с локальной машиной (127.0.0.1 или имя_машины). Сейчас думаю над этим, но времени совсем нет...
Короче говоря, хочу просто развлечся и предложить вам поучавствовать.
я извиняюсь - а нафига ? есть же nmap и ещё гуева туча всяких вроде portscan ,мне кажется очередное изобретение велосипеда
Quae videmus quo dependet vultus. (лат) - То, что мы видим, зависит от того, куда мы смотрим.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
да, конечно. Топикстартер писал на си без плюсов. Вот и я на нём пишу. А про отличия реализации socket'ов я знаю, не бойтесь, соберу и под масдаем.
Re: FreaxNet
А вот я когда-то пытался написать сканер .
- Вложения
-
- port_scan.py.tar
- (10 КБ) 122 скачивания
Debian GNU/Linux 4.0
Registered User # 410887
Registered User # 410887
Re: FreaxNet
Хочу просто развлечся... Просто написать что-нибудь, чтобы не забывать программирование, или, чтобы получить какой-то опыт совместной разработки или даже научиться чему-то новому в сетевом программировании.
Дружище, спасибо конечно! Отличная идея. Но вот сканер, к примеру, запинается на портах, которые фильтруются. Может лучше сейчас подумать об этой проблеме?
Да и еще: проверяй код, который ты выкладываешь!
Код: Выделить всё
$ g++ scanner.cpp -o scanner
scanner.cpp: In function ‘int main(int, char**)’:
scanner.cpp:48: error: ‘av’ was not declared in this scope
Знаешь С/С++? Присоединяйся к разработке!
Ко всем: ребят, спасибо за советы, идеи по поводу функций, или того, на каком языке лучше писать, как писать и что писать... Меня в данный момент больше волнует функциональность. Я вам буду очень благодарен, если вы будете думать над тем, как его сделать более функциональным. Т.е., к примеру, избавть от зависаний или, как я уже писал выше, найти решение по поводу пробемы с портами, которые фильтрует фаервол:
$./scanner какой-то_айпишник
IP : какой-то_айпишник
PORT STATUS
21 open
80 open
тут зависание, которое может только #kill pid_numer исправить. А почему? А вот почему:
$nmap какой-то_айпишник
Starting Nmap 4.20 ( http://insecure.org ) at 2007-11-16 21:29 CET
Interesting ports on какой-то_айпишник:
Not shown: 1691 closed ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
135/tcp filtered msrpc
137/tcp filtered netbios-ns
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
Nmap finished: 1 IP address (1 host up) scanned in 9.230 seconds
З.Ы. Давайте сначала сделаем сам сканер, а уже потом будем думать над тем, как и через какие функции лучше и безопасней вводить/выводить инфу. Появится время, нарисую морду на Qt.
FreaxNet «Shut up and hack!»
Re: FreaxNet
entry
Не я С/С++ не знаю. Я только python. и то уже забыл
Не я С/С++ не знаю. Я только python. и то уже забыл
Debian GNU/Linux 4.0
Registered User # 410887
Registered User # 410887
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
уж проверял. Он работает. Если ты не смог собрать - твоя проблема. Тебе бинарик надо, или exe под масдай?
Re: FreaxNet
FreaxNet «Shut up and hack!»
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: FreaxNet
Ладно не то выложил. Вот тебе с закрытием сокета(чтоб можно все 65536 портов проверять), с выводом ошибок connect(), а ещё, чтоб не скучать, с динамическим отображением портов
- Вложения
-
- scanner.cpp.tar.gz
- (1.01 КБ) 107 скачиваний
Re: FreaxNet
ver_0.02
Ну раз такое дело, то с гордостью представляю всем версию 0.02 нашего сканера!
Кстати, я тебя, drBatty, вписал там как второго автора. Надеюсь, ты не против?
Еще переписал строки использование и слишком длинный адрес, заменил последний cout на printf(), ну и все вроди бы...
Ну раз такое дело, то с гордостью представляю всем версию 0.02 нашего сканера!
Кстати, я тебя, drBatty, вписал там как второго автора. Надеюсь, ты не против?
Еще переписал строки использование и слишком длинный адрес, заменил последний cout на printf(), ну и все вроди бы...
- Вложения
-
- scanner_0.02.tar.gz
- (1002 байт) 125 скачиваний
FreaxNet «Shut up and hack!»
Re: FreaxNet
Тогда до кучи надо выкинуть using namespace std; и включение <iostream>, добавить <string.h> и переименовать из .cpp в .c
А ведь когда-то не боялись мы программы любой,
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
И с одним лишь debug'ом выходили на бой,
И искусно написанный вирус встречали как брата
Re: FreaxNet
Да. Вот и подобоались мы вплотную к С.
З.Ы. хоть создавай параллельную тему с опросом о более передавых механизмах I/O в С/С++
- Вложения
-
- scanner_0.021.tar.gz
- (1003 байт) 107 скачиваний
FreaxNet «Shut up and hack!»