76.172.157.66;user6;user3 76.172.157.66;user2;user3 76.172.157.66;user5;user1 76.172.157.66;adnin1;user1 76.172.157.66;adnin;user1 76.172.156.174;adnin6;user2 76.172.156.174;adnin8;user2 76.172.156.174;user3;user2 76.172.156.174;adnin;user2 76.172.156.174;user3;user2 76.172.156.170;adnin2;user8 76.172.156.168;user7;user9 Нужно удалить повторяющиеся файлы. 76.172.157.66;user6;user3 76.172.157.66;user2;user3 76.172.157.66;user5;user1 76.172.157.66;adnin1;user1 76.172.157.66;adnin;user1 76.172.156.174;adnin6;user2 76.172.156.174;adnin8;user2 76.172.156.174;user3;user2 76.172.156.174;adnin;user2 76.172.156.174;user3;user2 Причем что бы удалилось вместе с повторением ипа то есть (логин пасс что бы то же удалился) 76.172.157.66 76.172.156.174 Что бы на выходе осталось только это 76.172.156.170;adnin2;user8 76.172.156.168;user7;user9 Это что бы все удалилось. 76.172.157.66;user6;user3 76.172.157.66;user2;user3 76.172.157.66;user5;user1 76.172.157.66;adnin1;user1 76.172.157.66;adnin;user1 76.172.156.174;adnin6;user2 76.172.156.174;adnin8;user2 76.172.156.174;user3;user2 76.172.156.174;adnin;user2 76.172.156.174;user3;user2 Сам пробовал разделять файл логин пасс и ипы отдельно но остаются повторы ипов. Заранее благодарю за помощь
Дак тебе тупо по ипам отфильтровать нужно? Как я понял из твоего обьяснения, тебе не важно какой логин и пароль останется, ибо они все актуальны, либо тебе нужен последний логин и пас отодного и того же ипа. Я правильно тебя понял?
Как я понял ему нужно отфильтровать набрученые SSH , удалять все строки где одинаковых IP один и более , но логины и пароли у них разные , оставлять только уникальные IP без повторов
как я понял ему нужно удалить дубли айпи все дубли без остатка, но оставить те которые не дублируются
Раз уж тема про программирование и компилируемые языки, то держи некачественное решение Code: #include <iostream> #include <fstream> #include <string> #include <vector> #include <map> #include <regex> #include <cinttypes> using namespace std; int main() { ifstream ifs("in.txt"); ofstream ofs("out.txt"); if (!ifs || !ofs) return EXIT_FAILURE; string line; map<string, uint64_t> ip; map<string, string> ip_out; regex delim(";"); vector<string> lparts; while (!ifs.eof()) { getline(ifs, line); lparts.clear(); for_each(regex_token_iterator<string::iterator>(line.begin(), line.end(), delim, -1), regex_token_iterator<string::iterator>(), [&lparts](const string & s){ lparts.push_back(s); }); if (lparts.size() != 3) continue; ip[lparts[0]]++; if (ip[lparts[0]] == 1) ip_out[lparts[0]] = lparts[1] + ";" + lparts[2]; else ip_out.erase(lparts[0]); } for_each(ip_out.begin(), ip_out.end(), [&ofs](const pair<string, string> & p){ ofs << p.first << ';' << p.second << endl; }); return EXIT_SUCCESS; }
Писал такую программку. ТЫЦ В файле 'in.txt' - то что Вам необходимо отсортировать. Разделитель между IP,PASS,LOGIN - ';' В файле 'out.txt' результат.
Файл out.txt стереть. потом запустить. Файл out.txt должен появиться! Вы в in.txt вставили новые данные?
VladimirV Вроде разобрался файл 4 метра просто из-за этого так долго) Спасибо тебе огромное! Kaimi Дорабатываем твой софт) http://kaimi.ru/2010/12/ssh-bruteforce/ Это он такую байду увы выдает.
Байду выдает, потому что libssh считает успешной авторизацией то, что ею не является. Проще тогда уж было в софт добавить вызов чего-нибудь вроде uname после попытки авторизации и проверять результат выполнения.
Приделал к бруту кнопочку для очистки дублей . В архиве 3 модифицированных файла исходника и release сборка . (Сборку пока нормально не тестировал ). https://www.sendspace.com/file/67367j