Eu escrevi um programa c ++ chamado addressid, que emprega o comando netstat com o utilitário whois. No dia 14.04, o utilitário whois não vem 'pronto para o uso', então você terá que instalar via linha de comando assim como construir-essencial para compilar o arquivo de classe em binário.
:~$ sudo apt-get install build-essential -y
:~$ sudo apt-get install whois -y
O programa também espera que existam outros dois diretórios, / usr / local / addressId e / var / log / addressid, então você terá que criá-los:
:~$ sudo mkdir -p -m0755 /usr/local/addressId
:~$ sudo mkdir -p -m0755 /var/log/adressid
Copie o programa no editor de texto gedit e compile o programa conforme mostrado abaixo:
:~$ g++ -o adressid addressId.cpp
Em seguida, mova o programa para / usr / bin (que já está em seu $ PATH) e use o novo utilitário a partir da linha de comando, conforme mostrado abaixo
:~$ sudo mv addressid /usr/bin/
:~$ sudo addressid
Você tem que executar o programa como root, porque o utilitário netstat requer
privilégios de root para exibir todas as informações do sistema tcp.
//*******************************************************************
// This addressId.cpp class is created to input the output from
// the netstat -tanp command and create a shell script that will be
// executed performing the ip address (a dotted quad) look up on the
// whois server (with whois utility).
// author:GeoWade
//*******************************************************************
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <cstdlib>
#include <cstring>
#include <locale>
using namespace std;
const int MAX_INDY = 300;
int main()
{
// create string variables
string line;
string holdWord = "";
// create a string array to hold the ip addresses
string holdArry[MAX_INDY];
// create string variables to be used as test vars in regexs
string theTcp = "tcp";
string firstLn = "0.0.0.0";
string theSix = "tcp6";
// create list<string> container object to hold input strings
list<string> addressList;
// create integer variables
int index;
int cardex;
int count = 0;
// use the system function to execute the netstat command and the data
system("sudo netstat -tanp > /usr/local/addressId/Ntstat.txt");
// create an ifstream object
ifstream inFile("/usr/local/addressId/Ntstat.txt");
while ( getline( inFile, line ) ) {
if ( !line.compare(44,7,firstLn) == 0 ) {
if ( line.compare(0,3,theTcp) == 0 ) {
if ( !line.compare(0,4,theSix) == 0 ) {
// find the index position of the line at which point it ends
cardex = line.find(':~$ cat /var/log/addressid/addressid.log
');
// store the substring of the line based on index positions
string intermStr = line.substr(44,cardex);
// locate the index position of the substring at which a colon
// resides
index = intermStr.find(":");
// create a second substr out of the first substring.
holdWord = intermStr.substr(0,index);
addressList.push_back(holdWord);
}
// null the holdWord var and increment the count integer
holdWord = "";
count++;
}
}
}
inFile.close();
cout << "The data has been inputted to the program!" << endl;
for (int i = 0; i < count; i++) {
string outStack = addressList.front();
addressList.pop_front();
holdWord = outStack;
holdArry[i] = holdWord;
holdWord = "";
}
// create an ofstream object
ofstream outOne;
outOne.open("/usr/local/addressId/myWhois.sh");
outOne << "#! /bin/bash\n\nMYWH=\"whois\"\nUPD=\"updatedb\"\n"
<< "TDTD=\"date\"\n\n$TDTD >> "
<< "/var/log/addressid/addressid.log\n" << endl;
for (int j = count-1; j >= 0; j--) {
string outHold = holdArry[j];
holdArry[j] = "";
holdWord = outHold;
outOne << "$MYWH " << holdWord << " >> "
<< "/var/log/addressid/addressid.log"
<< "\n" << endl;
holdWord = "";
}
outOne << "$UPD\n\nexit\n" << endl;
outOne.close();
system("chmod +x /usr/local/addressId/myWhois.sh");
system("/usr/local/addressId/myWhois.sh");
// delete the previously created and executed my
system("rm -rf /usr/local/addressId/myWhois.sh");
count = 0;
addressList.clear();
// output a statement to the user of the binary
cout << "The operation has completed successfully!" << endl;
return 0;
}
Eu escrevi este programa há cerca de 3 anos, em 12.04 como parte de uma suíte de segurança e registro que eu criei. Não obstante, ele registrará todos os endereços e as informações desses endereços quando forem executados, além de adicionar a data ao log toda vez que for executado. Você pode ver o log usando o comando cat ou fazer um back-up como mostrado abaixo
:~$ cat /var/log/addressid/addressid.log >> $HOME/addressid.log.bak
ou
:~$ sudo apt-get install build-essential -y
:~$ sudo apt-get install whois -y
O Programa é legítimo, eu apenas deletei meu / usr / bin / addressid, copiei o programa (para verificar se não houve erros) desta página web, compilei-o e executei o sudo mv addressid / usr / bin / e correu como sudo addressid.