DDoS

수정됨
분류
1. 개요2. 예시 코드3. 범죄

1. 개요[편집]

특정 서버나 네트워크에 과도한 트래픽을 발생시켜 정상적인 서비스 제공을 방해하는 사이버 공격.

원리는 requests로 서버에 과부화를 주는 것. 사실상 이코드로 DDos 공격은 불가능이다. 애초에 구글 도메인에 get을 해야하기에...

신기하게 깃허브에는 DDOS 코드가 존재한다...

2. 예시 코드[편집]

이게 디도스가 맞나... 싶을 정도로 그냥 트래픽만 늘리는... post를 get으로 바꾸어야 정상적을 받을 수 있다.
그냥 API 보내고 받을때 쓰는 아주 기초적인 코드다.
  • python
import requests

url = "https://www.google.com"

for i in range(1):
     a = requests.post(url)

print(a)
print(a.text)

  • c#
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "https://www.google.com";

        using (HttpClient client = new HttpClient())
        {
            HttpResponseMessage response = await client.PostAsync(url, null);

            Console.WriteLine(response);
            string text = await response.Content.ReadAsStringAsync();
            Console.WriteLine(text);
        }
    }
}

  • cpp
#include <iostream>
#include <string>
#include <curl/curl.h>

size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* buffer) {
    size_t totalSize = size * nmemb;
    buffer->append((char*)contents, totalSize);
    return totalSize;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string response;

    curl = curl_easy_init();

    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com");

        
        curl_easy_setopt(curl, CURLOPT_POST, 1L);

        
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);

        
        res = curl_easy_perform(curl);

        
        std::cout << "Response Code: " << res << std::endl;
        std::cout << "Response Text:\n" << response << std::endl;

        curl_easy_cleanup(curl);
    }

    return 0;
}

  • ruby
require 'net/http'
require 'uri'

url = URI.parse("https://www.google.com")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url.request_uri)

response = http.request(request)

puts response           
puts response.body

  • java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String url = "https://www.google.com";

        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .POST(HttpRequest.BodyPublishers.noBody())
                .build();

        HttpResponse<String> response =
                client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response);
        System.out.println(response.body());
    }
}

  • JS
const url = "https://www.google.com";

fetch(url, {
  method: "POST"
})
  .then(res => res.text())
  .then(text => {
    console.log(text);
  })
  .catch(err => {
    console.error(err);
  });

  • Visual Basic 이거 쓰는 사람이 아직 있을까...
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Module Module1
    Sub Main()
        PostRequest().Wait()
    End Sub

    Async Function PostRequest() As Task
        Dim url As String = "https://www.google.com"
        Dim client As New HttpClient()

        Dim response As HttpResponseMessage = 
            Await client.PostAsync(url, Nothing)

        Console.WriteLine(response)

        Dim text As String = Await response.Content.ReadAsStringAsync()
        Console.WriteLine(text)
    End Function
End Module

  • GO
package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	url := "https://www.google.com"

	resp, err := http.Post(url, "application/x-www-form-urlencoded", nil)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	defer resp.Body.Close()

	fmt.Println(resp)

	body, _ := ioutil.ReadAll(resp.Body)
	fmt.Println(string(body))
}

  • windows CMD
curl -X POST "https://www.google.com"
  • PowerShell
$url = "https://www.google.com"

$response = Invoke-WebRequest -Uri $url -Method Post

$response

$response.Content

  • TypeScript
const url: string = "https://www.google.com";

fetch(url, { method: "POST" })
  .then((res: Response) => res.text())
  .then((text: string) => {
    console.log(text);
  })
  .catch((err: any) => {
    console.error(err);
  });


3. 범죄[편집]

사이버 공격은 엄연한 범죄이다.