• XSS.stack #1 – первый литературный журнал от юзеров форума

у кого есть рабочий код по AWS4-HMAC-SHA256 ?

Peace

(L3) cache
Забанен
Регистрация
19.12.2022
Сообщения
255
Реакции
80
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет, столкнулся с такой проблемой, что нужно создать signature для запроса и он использует AWS4-HMAC-SHA256. Есть официальные доки, но по ним пока не получается воссоздать всё. Есть кто сталкивался?
 
в теории берешь чатгпт и в бой

Java:
import com.amazonaws.auth.AWS4Signer;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.http.AWSRequest;
import com.amazonaws.http.HttpMethodName;
import com.amazonaws.internal.auth.SignerConstants;
import org.apache.commons.codec.binary.Hex;

import java.net.URI;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class S3Signer {

    public static void main(String[] args) throws Exception {
        String accessKey = "your-access-key";
        String secretKey = "your-secret-key";
        String regionName = "us-west-1";
        String serviceName = "s3";
        URI endpoint = new URI("https://s3.amazonaws.com");
        String bucketName = "your-bucket-name";
        String objectKey = "your-object-key";
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'");

        AWS4Signer signer = new AWS4Signer();
        signer.setRegionName(regionName);
        signer.setServiceName(serviceName);
        signer.setEndpointPrefix("s3");
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        AWSRequest request = new AWSRequest();
        request.setHttpMethod(HttpMethodName.GET);
        request.setEndpoint(endpoint);
        request.setResourcePath("/" + bucketName + "/" + objectKey);
        request.addHeader(SignerConstants.X_AMZ_CONTENT_SHA256, "UNSIGNED-PAYLOAD");
        request.addHeader("Host", endpoint.getHost());
        request.addHeader(SignerConstants.X_AMZ_DATE, now.format(formatter));

        signer.sign(request, credentials);

        String authorizationHeader = request.getHeaders().get(SignerConstants.AUTHORIZATION);

        System.out.println("Authorization: " + authorizationHeader);
        System.out.println("Content SHA-256: " + Hex.encodeHexString(request.getContent()));
        System.out.println("Canonical Request: " + request.getCanonicalRequest());
        System.out.println("String to Sign: " + request.getStringToSign());
        System.out.println("Signing Key: " + Hex.encodeHexString(signer.getDerivedSigningKey(now)));
    }
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
в теории берешь чатгпт и в бой

Java:
import com.amazonaws.auth.AWS4Signer;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.http.AWSRequest;
import com.amazonaws.http.HttpMethodName;
import com.amazonaws.internal.auth.SignerConstants;
import org.apache.commons.codec.binary.Hex;

import java.net.URI;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class S3Signer {

    public static void main(String[] args) throws Exception {
        String accessKey = "your-access-key";
        String secretKey = "your-secret-key";
        String regionName = "us-west-1";
        String serviceName = "s3";
        URI endpoint = new URI("https://s3.amazonaws.com");
        String bucketName = "your-bucket-name";
        String objectKey = "your-object-key";
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'");

        AWS4Signer signer = new AWS4Signer();
        signer.setRegionName(regionName);
        signer.setServiceName(serviceName);
        signer.setEndpointPrefix("s3");
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        AWSRequest request = new AWSRequest();
        request.setHttpMethod(HttpMethodName.GET);
        request.setEndpoint(endpoint);
        request.setResourcePath("/" + bucketName + "/" + objectKey);
        request.addHeader(SignerConstants.X_AMZ_CONTENT_SHA256, "UNSIGNED-PAYLOAD");
        request.addHeader("Host", endpoint.getHost());
        request.addHeader(SignerConstants.X_AMZ_DATE, now.format(formatter));

        signer.sign(request, credentials);

        String authorizationHeader = request.getHeaders().get(SignerConstants.AUTHORIZATION);

        System.out.println("Authorization: " + authorizationHeader);
        System.out.println("Content SHA-256: " + Hex.encodeHexString(request.getContent()));
        System.out.println("Canonical Request: " + request.getCanonicalRequest());
        System.out.println("String to Sign: " + request.getStringToSign());
        System.out.println("Signing Key: " + Hex.encodeHexString(signer.getDerivedSigningKey(now)));
    }
}
да, эти и занимаюсь, но сколько не вставлял данные входные - не могу получить исходные. Какие данные нужно вносить?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Спасибо за ответы, но решение каким то чудом нашёл! Там апи юрл не по адресу сайта, а какое то сторонние. Даже не пресдатвляю, как бы нашёл, если бы не было гитхаба

в теории берешь чатгпт и в бой

Java:
import com.amazonaws.auth.AWS4Signer;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.http.AWSRequest;
import com.amazonaws.http.HttpMethodName;
import com.amazonaws.internal.auth.SignerConstants;
import org.apache.commons.codec.binary.Hex;

import java.net.URI;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class S3Signer {

    public static void main(String[] args) throws Exception {
        String accessKey = "your-access-key";
        String secretKey = "your-secret-key";
        String regionName = "us-west-1";
        String serviceName = "s3";
        URI endpoint = new URI("https://s3.amazonaws.com");
        String bucketName = "your-bucket-name";
        String objectKey = "your-object-key";
        LocalDateTime now = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmss'Z'");

        AWS4Signer signer = new AWS4Signer();
        signer.setRegionName(regionName);
        signer.setServiceName(serviceName);
        signer.setEndpointPrefix("s3");
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
        AWSRequest request = new AWSRequest();
        request.setHttpMethod(HttpMethodName.GET);
        request.setEndpoint(endpoint);
        request.setResourcePath("/" + bucketName + "/" + objectKey);
        request.addHeader(SignerConstants.X_AMZ_CONTENT_SHA256, "UNSIGNED-PAYLOAD");
        request.addHeader("Host", endpoint.getHost());
        request.addHeader(SignerConstants.X_AMZ_DATE, now.format(formatter));

        signer.sign(request, credentials);

        String authorizationHeader = request.getHeaders().get(SignerConstants.AUTHORIZATION);

        System.out.println("Authorization: " + authorizationHeader);
        System.out.println("Content SHA-256: " + Hex.encodeHexString(request.getContent()));
        System.out.println("Canonical Request: " + request.getCanonicalRequest());
        System.out.println("String to Sign: " + request.getStringToSign());
        System.out.println("Signing Key: " + Hex.encodeHexString(signer.getDerivedSigningKey(now)));
    }
}[/CODE
[/QUOTE]
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
ни в коем случае не ищите +10500 реализаций на гитхабе
лучше сразу на форум с вопросами
Реализаций много, но не всё они работают нормально. В моем случае решение было в том, что нужно было подобрать апи юрл к данном запросу. И решил у точнить тут, возможно, люди сталкивались с таким, но конечно же, найдутся люди, которым нужно обязательно оффтопить бессмыслицей. Пожалуйста, будь добрее к миру, а не злобным гномом в четырех стенках
 
Всем привет, столкнулся с такой проблемой, что нужно создать signature для запроса и он использует AWS4-HMAC-SHA256. Есть официальные доки, но по ним пока не получается воссоздать всё. Есть кто сталкивался?
не aws cognito случайно мучаешь?или именно ищешь как подписать запрос AWS Signature ?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
не aws cognito случайно мучаешь?или именно ищешь как подписать запрос AWS Signature ?
да, подписать.

Скрытый контент для пользователей: spex222.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх