[Perl Tk] FTP Manager 0.2

  • 0 Respuestas
  • 1543 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BigBear

  • *
  • Underc0der
  • Mensajes: 543
  • Actividad:
    0%
  • Reputación 3
    • Ver Perfil

[Perl Tk] FTP Manager 0.2

  • en: Abril 22, 2012, 12:05:44 am
Version Tk de un cliente FTP que hice en Perl

Las opciones que tiene son

  • Listado de archivos en un directorio[/li]
  • Borrar archivos y directorios[/li]
  • Crear directorios nuevos[/li]
  • Renombrar[/li]
  • Descargar y subir archivos[/li][/list]

    Una imagen


    El codigo del programa

    Código: Perl
    1. #!usr/bin/perl
    2. #FTP Manager 0.2
    3. #Version Tk
    4. #Coded By Doddy H
    5.  
    6. use Tk;
    7. use Tk::FileSelect;
    8. use Cwd;
    9. use Net::FTP;
    10.  
    11. if ( $^O eq 'MSWin32' ) {
    12.     use Win32::Console;
    13.     Win32::Console::Free();
    14. }
    15.  
    16. my $color_fondo = "black";
    17. my $color_texto = "cyan";
    18.  
    19. my $navedos =
    20.   MainWindow->new( -background => $color_fondo, -foreground => $color_texto );
    21.  
    22. $navedos->title("FTP Manager 0.2");
    23. $navedos->geometry("218x150+20+20");
    24. $navedos->resizable( 0, 0 );
    25.  
    26. $navedos->Label(
    27.     -text       => "Host : ",
    28.     -font       => "Impact1",
    29.     -background => $color_fondo,
    30.     -foreground => $color_texto
    31. )->place( -x => 10, -y => 10 );
    32. my $host = $navedos->Entry(
    33.     -width      => 23,
    34.     -text       => "localhost",
    35.     -background => $color_fondo,
    36.     -foreground => $color_texto
    37. )->place( -x => 60, -y => 13 );
    38.  
    39. $navedos->Label(
    40.     -text       => "User : ",
    41.     -font       => "Impact1",
    42.     -background => $color_fondo,
    43.     -foreground => $color_texto
    44. )->place( -x => 10, -y => 40 );
    45. my $user = $navedos->Entry(
    46.     -width      => 23,
    47.     -text       => "doddy",
    48.     -background => $color_fondo,
    49.     -foreground => $color_texto
    50. )->place( -x => 60, -y => 43 );
    51.  
    52. $navedos->Label(
    53.     -text       => "Pass : ",
    54.     -font       => "Impact1",
    55.     -background => $color_fondo,
    56.     -foreground => $color_texto
    57. )->place( -x => 10, -y => 70 );
    58. my $pass = $navedos->Entry(
    59.     -width      => 23,
    60.     -text       => "doddy",
    61.     -background => $color_fondo,
    62.     -foreground => $color_texto
    63. )->place( -x => 60, -y => 73 );
    64.  
    65. $navedos->Button(
    66.     -text             => "Connect",
    67.     -width            => 13,
    68.     -command          => \&now,
    69.     -background       => $color_fondo,
    70.     -foreground       => $color_texto,
    71.     -activebackground => $color_texto
    72. )->place( -x => 60, -y => 110 );
    73.  
    74. MainLoop;
    75.  
    76. sub now {
    77.  
    78.     my $host = $host->get;
    79.     my $user = $user->get;
    80.     my $pass = $pass->get;
    81.  
    82.     my $socket = Net::FTP->new($host);
    83.     if ( $socket->login( $user, $pass ) ) {
    84.  
    85.         $navedos->destroy;
    86.  
    87.         my $mandos = MainWindow->new(
    88.             -background => $color_fondo,
    89.             -foreground => $color_texto
    90.         );
    91.         $mandos->title("FTP Manager 0.2 || Coded By Doddy H");
    92.         $mandos->geometry("565x335+20+20");
    93.         $mandos->resizable( 0, 0 );
    94.  
    95.         $menul = $mandos->Frame(
    96.             -relief     => "sunken",
    97.             -bd         => 1,
    98.             -background => $color_fondo,
    99.             -foreground => $color_texto
    100.         );
    101.         my $menulnow = $menul->Menubutton(
    102.             -text             => "Options",
    103.             -underline        => 1,
    104.             -background       => $color_fondo,
    105.             -foreground       => $color_texto,
    106.             -activebackground => $color_texto
    107.         )->pack( -side => "left" );
    108.         my $aboutnow = $menul->Menubutton(
    109.             -text             => "About",
    110.             -underline        => 1,
    111.             -background       => $color_fondo,
    112.             -foreground       => $color_texto,
    113.             -activebackground => $color_texto
    114.         )->pack( -side => "left" );
    115.         my $exitnow = $menul->Menubutton(
    116.             -text             => "Exit",
    117.             -underline        => 1,
    118.             -background       => $color_fondo,
    119.             -foreground       => $color_texto,
    120.             -activebackground => $color_texto
    121.         )->pack( -side => "left" );
    122.         $menul->pack( -side => "top", -fill => "x" );
    123.  
    124.         $menulnow->command(
    125.             -label      => "Delete File",
    126.             -background => $color_fondo,
    127.             -foreground => $color_texto,
    128.             -command    => \&delnow
    129.         );
    130.         $menulnow->command(
    131.             -label      => "Delete Directory",
    132.             -background => $color_fondo,
    133.             -foreground => $color_texto,
    134.             -command    => \&deldirnow
    135.         );
    136.         $menulnow->command(
    137.             -label      => "Make Directory",
    138.             -background => $color_fondo,
    139.             -foreground => $color_texto,
    140.             -command    => \&makedirnow
    141.         );
    142.         $menulnow->command(
    143.             -label      => "Rename",
    144.             -background => $color_fondo,
    145.             -foreground => $color_texto,
    146.             -command    => \&renamenow
    147.         );
    148.         $menulnow->command(
    149.             -label      => "Download",
    150.             -background => $color_fondo,
    151.             -foreground => $color_texto,
    152.             -command    => \&downloadnow
    153.         );
    154.         $menulnow->command(
    155.             -label      => "Upload",
    156.             -background => $color_fondo,
    157.             -foreground => $color_texto,
    158.             -command    => \&updatenow
    159.         );
    160.  
    161.         $aboutnow->command(
    162.             -label      => "About",
    163.             -background => $color_fondo,
    164.             -foreground => $color_texto,
    165.             -command    => \&aboutnownow
    166.         );
    167.         $exitnow->command(
    168.             -label      => "Exit",
    169.             -background => $color_fondo,
    170.             -foreground => $color_texto,
    171.             -command    => \&exitnow
    172.         );
    173.  
    174.         $mandos->Label(
    175.             -text       => "Directory : ",
    176.             -font       => "Impact1",
    177.             -background => $color_fondo,
    178.             -foreground => $color_texto
    179.         )->place( -x => 23, -y => 40 );
    180.         my $actual = $mandos->Entry(
    181.             -text       => "/",
    182.             -width      => 60,
    183.             -background => $color_fondo,
    184.             -foreground => $color_texto
    185.         )->place( -x => 105, -y => 43 );
    186.         $mandos->Button(
    187.             -width            => 8,
    188.             -text             => "Enter",
    189.             -command          => \&dirs,
    190.             -background       => $color_fondo,
    191.             -foreground       => $color_texto,
    192.             -activebackground => $color_texto
    193.         )->place( -x => 480, -y => 43 );
    194.  
    195.         $mandos->Label(
    196.             -text       => "Directory",
    197.             -font       => "Impact1",
    198.             -background => $color_fondo,
    199.             -foreground => $color_texto
    200.         )->place( -x => 130, -y => 90 );
    201.         $mandos->Label(
    202.             -text       => "Files",
    203.             -font       => "Impact1",
    204.             -background => $color_fondo,
    205.             -foreground => $color_texto
    206.         )->place( -x => 350, -y => 90 );
    207.  
    208.         my $dir_now = $mandos->Listbox(
    209.             -width      => 25,
    210.             -height     => 13,
    211.             -background => $color_fondo,
    212.             -foreground => $color_texto
    213.         )->place( -x => 88, -y => 130 );
    214.         my $files_now = $mandos->Listbox(
    215.             -width      => 25,
    216.             -height     => 13,
    217.             -background => $color_fondo,
    218.             -foreground => $color_texto
    219.         )->place( -x => 300, -y => 130 );
    220.  
    221.         sub exitnow {
    222.             $socket->close();
    223.             exit(1);
    224.         }
    225.  
    226.         sub aboutnownow {
    227.             $mandos->Dialog(
    228.                 -title            => "About",
    229.                 -buttons          => ["OK"],
    230.                 -text             => "Coded By Doddy H",
    231.                 -background       => $color_fondo,
    232.                 -foreground       => $color_texto,
    233.                 -activebackground => $color_texto
    234.             )->Show();
    235.         }
    236.  
    237.         sub dirs {
    238.  
    239.             $dir_now->delete( "0.0", "end" );
    240.             $files_now->delete( "0.0", "end" );
    241.  
    242.             if ( my @files = $socket->dir() ) {
    243.  
    244.                 my @files_found;
    245.                 my @dirs_found;
    246.  
    247.                 $socket->cwd( $actual->get );
    248.  
    249.                 for my $fil (@files) {
    250.                     my @to = split( " ", $fil );
    251.                     my ( $dir, $file ) = @to[ 0, 8 ];
    252.                     if ( $dir =~ /^d/ ) {
    253.                         $dir_now->insert( "end", $file );
    254.                     }
    255.                     else {
    256.                         $files_now->insert( "end", $file );
    257.                     }
    258.                 }
    259.             }
    260.         }
    261.  
    262.         sub delnow {
    263.  
    264.             my $ventdos = MainWindow->new(
    265.                 -background => $color_fondo,
    266.                 -foreground => $color_texto
    267.             );
    268.             $ventdos->geometry("260x80+20+20");
    269.             $ventdos->title("Delete File");
    270.             $ventdos->resizable( 0, 0 );
    271.  
    272.             $ventdos->Label(
    273.                 -text       => "File : ",
    274.                 -font       => "Impact",
    275.                 -background => $color_fondo,
    276.                 -foreground => $color_texto
    277.             )->place( -x => 20, -y => 20 );
    278.             my $filechau = $ventdos->Entry(
    279.                 -width      => 20,
    280.                 -background => $color_fondo,
    281.                 -foreground => $color_texto
    282.             )->place( -x => 60, -y => 26 );
    283.             $ventdos->Button(
    284.                 -width            => 6,
    285.                 -text             => "Delete",
    286.                 -command          => \&delnowdos,
    287.                 -background       => $color_fondo,
    288.                 -foreground       => $color_texto,
    289.                 -activebackground => $color_texto
    290.             )->place( -x => 190, -y => 25 );
    291.  
    292.             sub delnowdos {
    293.                 if ( $socket->delete( $filechau->get ) ) {
    294.                     $mandos->Dialog(
    295.                         -title            => "Deleted",
    296.                         -buttons          => ["OK"],
    297.                         -text             => "File Deleted",
    298.                         -background       => $color_fondo,
    299.                         -foreground       => $color_texto,
    300.                         -activebackground => $color_texto
    301.                     )->Show();
    302.                 }
    303.                 else {
    304.                     $mandos->Dialog(
    305.                         -title            => "Error",
    306.                         -buttons          => ["OK"],
    307.                         -text             => "Error",
    308.                         -background       => $color_fondo,
    309.                         -foreground       => $color_texto,
    310.                         -activebackground => $color_texto
    311.                     )->Show();
    312.                 }
    313.             }
    314.         }
    315.  
    316.         sub deldirnow {
    317.  
    318.             my $venttres = MainWindow->new(
    319.                 -background => $color_fondo,
    320.                 -foreground => $color_texto
    321.             );
    322.             $venttres->geometry("300x80+20+20");
    323.             $venttres->title("Delete Directory");
    324.             $venttres->resizable( 0, 0 );
    325.  
    326.             $venttres->Label(
    327.                 -text       => "Directory : ",
    328.                 -font       => "Impact",
    329.                 -background => $color_fondo,
    330.                 -foreground => $color_texto
    331.             )->place( -x => 20, -y => 20 );
    332.             my $dirchau = $venttres->Entry(
    333.                 -width      => 20,
    334.                 -background => $color_fondo,
    335.                 -foreground => $color_texto
    336.             )->place( -x => 99, -y => 26 );
    337.             $venttres->Button(
    338.                 -width            => 6,
    339.                 -text             => "Delete",
    340.                 -command          => \&deldirnowdos,
    341.                 -background       => $color_fondo,
    342.                 -foreground       => $color_texto,
    343.                 -activebackground => $color_texto
    344.             )->place( -x => 230, -y => 25 );
    345.  
    346.             sub deldirnowdos {
    347.                 if ( $socket->rmdir( $dirchau->get ) ) {
    348.                     $mandos->Dialog(
    349.                         -title            => "Deleted",
    350.                         -buttons          => ["OK"],
    351.                         -text             => "Directory Deleted",
    352.                         -background       => $color_fondo,
    353.                         -foreground       => $color_texto,
    354.                         -activebackground => $color_texto
    355.                     )->Show();
    356.                 }
    357.                 else {
    358.                     $mandos->Dialog(
    359.                         -title            => "Error",
    360.                         -buttons          => ["OK"],
    361.                         -text             => "Error",
    362.                         -background       => $color_fondo,
    363.                         -foreground       => $color_texto,
    364.                         -activebackground => $color_texto
    365.                     )->Show();
    366.                 }
    367.             }
    368.         }
    369.  
    370.         sub makedirnow {
    371.  
    372.             my $ventcuatro = MainWindow->new(
    373.                 -background => $color_fondo,
    374.                 -foreground => $color_texto
    375.             );
    376.             $ventcuatro->geometry("300x80+20+20");
    377.             $ventcuatro->title("Make Directory");
    378.             $ventcuatro->resizable( 0, 0 );
    379.  
    380.             $ventcuatro->Label(
    381.                 -text       => "Directory : ",
    382.                 -font       => "Impact",
    383.                 -background => $color_fondo,
    384.                 -foreground => $color_texto
    385.             )->place( -x => 20, -y => 20 );
    386.             my $dirnow = $ventcuatro->Entry(
    387.                 -width      => 20,
    388.                 -background => $color_fondo,
    389.                 -foreground => $color_texto
    390.             )->place( -x => 99, -y => 26 );
    391.             $ventcuatro->Button(
    392.                 -width            => 6,
    393.                 -text             => "Make",
    394.                 -command          => \&makedirnowdos,
    395.                 -background       => $color_fondo,
    396.                 -foreground       => $color_texto,
    397.                 -activebackground => $color_texto
    398.             )->place( -x => 230, -y => 25 );
    399.  
    400.             sub makedirnowdos {
    401.  
    402.                 if ( $socket->mkdir( $dirnow->get ) ) {
    403.                     $mandos->Dialog(
    404.                         -title            => "Ok",
    405.                         -buttons          => ["OK"],
    406.                         -text             => "Ok",
    407.                         -background       => $color_fondo,
    408.                         -foreground       => $color_texto,
    409.                         -activebackground => $color_texto
    410.                     )->Show();
    411.                 }
    412.                 else {
    413.                     $mandos->Dialog(
    414.                         -title            => "Error",
    415.                         -buttons          => ["OK"],
    416.                         -text             => "Error",
    417.                         -background       => $color_fondo,
    418.                         -foreground       => $color_texto,
    419.                         -activebackground => $color_texto
    420.                     )->Show();
    421.                 }
    422.             }
    423.         }
    424.  
    425.         sub renamenow {
    426.  
    427.             my $ventcinco = MainWindow->new(
    428.                 -background => $color_fondo,
    429.                 -foreground => $color_texto
    430.             );
    431.             $ventcinco->geometry("440x80+20+20");
    432.             $ventcinco->title("Rename");
    433.             $ventcinco->resizable( 0, 0 );
    434.  
    435.             $ventcinco->Label(
    436.                 -text       => "Name : ",
    437.                 -font       => "Impact",
    438.                 -background => $color_fondo,
    439.                 -foreground => $color_texto
    440.             )->place( -x => 20, -y => 20 );
    441.             my $unonow = $ventcinco->Entry(
    442.                 -width      => 20,
    443.                 -background => $color_fondo,
    444.                 -foreground => $color_texto
    445.             )->place( -x => 74, -y => 26 );
    446.  
    447.             $ventcinco->Label(
    448.                 -text       => "To : ",
    449.                 -font       => "Impact",
    450.                 -background => $color_fondo,
    451.                 -foreground => $color_texto
    452.             )->place( -x => 210, -y => 20 );
    453.             my $dosnow = $ventcinco->Entry(
    454.                 -background => $color_fondo,
    455.                 -foreground => $color_texto
    456.             )->place( -x => 240, -y => 26 );
    457.  
    458.             $ventcinco->Button(
    459.                 -width            => 6,
    460.                 -text             => "Rename",
    461.                 -command          => \&renamenowdos,
    462.                 -background       => $color_fondo,
    463.                 -foreground       => $color_texto,
    464.                 -activebackground => $color_texto
    465.             )->place( -x => 372, -y => 26 );
    466.  
    467.             sub renamenowdos {
    468.  
    469.                 if ( $socket->rename( $unonow->get, $dosnow->get ) ) {
    470.                     $mandos->Dialog(
    471.                         -title            => "Ok",
    472.                         -buttons          => ["OK"],
    473.                         -text             => "Ok",
    474.                         -background       => $color_fondo,
    475.                         -foreground       => $color_texto,
    476.                         -activebackground => $color_texto
    477.                     )->Show();
    478.                 }
    479.                 else {
    480.                     $mandos->Dialog(
    481.                         -title            => "Error",
    482.                         -buttons          => ["OK"],
    483.                         -text             => "Error",
    484.                         -background       => $color_fondo,
    485.                         -foreground       => $color_texto,
    486.                         -activebackground => $color_texto
    487.                     )->Show();
    488.                 }
    489.             }
    490.         }
    491.  
    492.         sub updatenow {
    493.  
    494.             my $ventseis = MainWindow->new(
    495.                 -background => $color_fondo,
    496.                 -foreground => $color_texto
    497.             );
    498.             $ventseis->geometry("440x80+20+20");
    499.             $ventseis->title("Upload");
    500.             $ventseis->resizable( 0, 0 );
    501.  
    502.             $ventseis->Label(
    503.                 -text       => "File : ",
    504.                 -font       => "Impact",
    505.                 -background => $color_fondo,
    506.                 -foreground => $color_texto
    507.             )->place( -x => 20, -y => 20 );
    508.             my $filenow = $ventseis->Entry(
    509.                 -width      => 40,
    510.                 -background => $color_fondo,
    511.                 -foreground => $color_texto
    512.             )->place( -x => 60, -y => 26 );
    513.  
    514.             $ventseis->Button(
    515.                 -width            => 8,
    516.                 -text             => "Browse",
    517.                 -command          => \&bronow,
    518.                 -background       => $color_fondo,
    519.                 -foreground       => $color_texto,
    520.                 -activebackground => $color_texto
    521.             )->place( -x => 310, -y => 26 );
    522.             $ventseis->Button(
    523.                 -width            => 8,
    524.                 -text             => "Upload",
    525.                 -command          => \&updatenowdos,
    526.                 -background       => $color_fondo,
    527.                 -foreground       => $color_texto,
    528.                 -activebackground => $color_texto
    529.             )->place( -x => 365, -y => 26 );
    530.  
    531.             sub bronow {
    532.                 $browse = $ventseis->FileSelect( -directory => getcwd() );
    533.                 my $file = $browse->Show;
    534.                 $filenow->configure( -text => $file );
    535.             }
    536.  
    537.             sub updatenowdos {
    538.  
    539.                 if ( $socket->put( $filenow->get ) ) {
    540.                     $mandos->Dialog(
    541.                         -title            => "File uploaded",
    542.                         -buttons          => ["OK"],
    543.                         -text             => "Ok",
    544.                         -background       => $color_fondo,
    545.                         -foreground       => $color_texto,
    546.                         -activebackground => $color_texto
    547.                     )->Show();
    548.                 }
    549.                 else {
    550.                     $mandos->Dialog(
    551.                         -title            => "Error",
    552.                         -buttons          => ["OK"],
    553.                         -text             => "Error",
    554.                         -background       => $color_fondo,
    555.                         -foreground       => $color_texto,
    556.                         -activebackground => $color_texto
    557.                     )->Show();
    558.                 }
    559.             }
    560.         }
    561.  
    562.         sub downloadnow {
    563.  
    564.             my $ventsiete = MainWindow->new(
    565.                 -background => $color_fondo,
    566.                 -foreground => $color_texto
    567.             );
    568.             $ventsiete->geometry("270x80+20+20");
    569.             $ventsiete->title("Downloader");
    570.             $ventsiete->resizable( 0, 0 );
    571.  
    572.             $ventsiete->Label(
    573.                 -text       => "File : ",
    574.                 -font       => "Impact",
    575.                 -background => $color_fondo,
    576.                 -foreground => $color_texto
    577.             )->place( -x => 20, -y => 20 );
    578.             my $filenownow = $ventsiete->Entry(
    579.                 -width      => 20,
    580.                 -background => $color_fondo,
    581.                 -foreground => $color_texto
    582.             )->place( -x => 59, -y => 26 );
    583.             $ventsiete->Button(
    584.                 -width            => 8,
    585.                 -text             => "Download",
    586.                 -command          => \&downloadnowdos,
    587.                 -background       => $color_fondo,
    588.                 -foreground       => $color_texto,
    589.                 -activebackground => $color_texto
    590.             )->place( -x => 190, -y => 25 );
    591.  
    592.             sub downloadnowdos {
    593.  
    594.                 if ( $socket->get( $filenownow->get ) ) {
    595.                     $mandos->Dialog(
    596.                         -title            => "File downloaded",
    597.                         -buttons          => ["OK"],
    598.                         -text             => "Ok",
    599.                         -background       => $color_fondo,
    600.                         -foreground       => $color_texto,
    601.                         -activebackground => $color_texto
    602.                     )->Show();
    603.                 }
    604.                 else {
    605.                     $mandos->Dialog(
    606.                         -title            => "Error",
    607.                         -buttons          => ["OK"],
    608.                         -text             => "Error",
    609.                         -background       => $color_fondo,
    610.                         -foreground       => $color_texto,
    611.                         -activebackground => $color_texto
    612.                     )->Show();
    613.                 }
    614.             }
    615.         }
    616.  
    617.     }
    618.     else {
    619.         $mandos->Dialog(
    620.             -title            => "Error",
    621.             -buttons          => ["OK"],
    622.             -text             => "Error",
    623.             -background       => $color_fondo,
    624.             -foreground       => $color_texto,
    625.             -activebackground => $color_texto
    626.         )->Show();
    627.     }
    628. }
    629.  
    630. #The End ?
    631.  
« Última modificación: Marzo 14, 2015, 10:19:55 am por Expermicid »

 

Tutorial perl desde cero By: Black Poision & Painboy

Iniciado por ProcessKill

Respuestas: 2
Vistas: 5331
Último mensaje Septiembre 02, 2011, 09:43:36 pm
por blozzter
[Perl] Verificando si es root para correr un script

Iniciado por c1st

Respuestas: 1
Vistas: 3474
Último mensaje Octubre 07, 2012, 06:01:39 pm
por ANTRAX
[Uniscan] Scanner de vulnerabilidades WEB hecho en Perl

Iniciado por tar3kw0rm3d

Respuestas: 0
Vistas: 3016
Último mensaje Junio 02, 2013, 08:01:28 pm
por tar3kw0rm3d
[Perl] Counter Strike 1.6 Servers List

Iniciado por BigBear

Respuestas: 0
Vistas: 2560
Último mensaje Noviembre 12, 2012, 07:32:11 pm
por BigBear
DoSing IP 1.0 - [Creado por SkillmaX] + Source [PERL]

Iniciado por SkillmaX

Respuestas: 0
Vistas: 2598
Último mensaje Julio 04, 2010, 10:14:31 am
por SkillmaX