Changeset 3737
- Timestamp:
- 06/28/06 22:50:15 (2 years ago)
- Files:
-
- framework2/trunk/lib/Pex/DCERPC.pm (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
framework2/trunk/lib/Pex/DCERPC.pm
r3736 r3737 825 825 my $s = Pex::Socket::Tcp->new('PeerAddr' => $host, 'PeerPort' => $port); 826 826 if ($s->IsError) { 827 $self->{'error'} = "Socket error: " . $s->GetError(); 828 return; 827 return ('SOCKET: '.$s->GetError()); 829 828 } 830 829 … … 834 833 $x->SMBSessionRequest($target_name); 835 834 if ($x->Error) { 836 $self->{'error'} = "Session request failed for $target_name : " . $x->Error; 837 return; 835 return ('FAILED SESSION REQUEST: '. $x->Error); 838 836 } 839 837 } … … 841 839 $x->SMBNegotiate(); 842 840 if ($x->Error) { 843 $self->{'error'} = 'Negotiate failed: ' . $x->Error; 844 return; 841 return ('FAILED NEGOTIATE: '. $x->Error); 845 842 } 846 843 … … 852 849 853 850 if ($x->Error) { 854 $self->{'error'} = 'Failed to establish a null session: ' . $x->Error; 855 return; 851 return ('FAILED TO CREATE NULL SESSION: '. $x->Error); 856 852 } 857 853 … … 862 858 $x->SMBTConnect($ipc); 863 859 if ($x->Error) { 864 $self->{'error'} = 'Failed to connect to the IPC share:' . $x->Error; 865 return; 860 return ('FAILED TO CONNECT TO IPC: '. $x->Error); 866 861 } 867 862 … … 869 864 $x->SMBCreate($pipe); 870 865 if ($x->Error) { 871 $self->{'error'} = "Failed to create pipe to $pipe: " . $x->Error; 872 return; 866 return ('FAILED TO CREATE PIPE: '. $x->Error); 873 867 } 874 868 … … 877 871 $x->SMBTransNP($x->LastFileID, $bind); 878 872 if ($x->Error) { 879 $self->{'error'} = "Failed to bind to $uuid over DCE RPC: " . $x->Error; 880 return; 873 return ('BIND FAILURE: '. $x->Error); 881 874 } 882 875 $self->{'_handles'}{$handle}{'connection'} = $x; … … 887 880 my $s = Pex::Socket::Tcp->new('PeerAddr' => $host, 'PeerPort' => $port); 888 881 if ($s->IsError) { 889 $self->{'error'} = "Socket error: " . $s->GetError(); 890 return; 882 return ('SOCKET: '.$s->GetError()); 891 883 } 892 884 my ($bind, $ctx) = &$bind($self, $self->UUID_to_Bin($uuid), $version); … … 894 886 my $ret = $s->Send($bind); 895 887 if (! $ret ) { 896 $self->{'error'} = 'service closed connection'; 897 return; 888 return ('CONNECTION CLOSED'); 898 889 } 899 890 900 891 my $response = $self->ReadResponse($s); 901 892 if (!$response) { 902 $self->{'error'} = 'service failed to respond to bind request'; 903 return; 893 return('NO RESPONSE TO BIND'); 904 894 } 905 895 $self->{'_handles'}{$handle}{'connection'} = $s; 906 896 $self->{'_handles'}{$handle}{'context_id'} = $ctx; 907 897 } else { 908 $self->{'error'} = "no support for $protocol yet!"; 909 return; 898 return('NO PROTOCOL SUPPORT'); 910 899 } 911 900 … … 951 940 $self->DecodeResponse($response->Get('data_bytes')); 952 941 if ($self->{'response'}->{'Type'} eq 'fault') { 953 return (' DCE/RPC FAULT => ' . $self->{'response'}->{'Error'});942 return ('FAULT: ' . sprintf("0x%.8x", $self->{'response'}->{'Error'})); 954 943 } else { 955 return ('RESPONSE => ' . $self->{'response'}->{'Type'},"STUB DATA =" . $self->bin2hex($self->{'response'}->{'StubData'}));944 return ('RESPONSE: ' . $self->{'response'}->{'Type'}, "STUB DATA: " . $self->bin2hex($self->{'response'}->{'StubData'})); 956 945 } 957 946 } else { 958 947 $response ||= ''; 959 $self->{'error'} = "response => $response";948 return ('NO RESPONSE'); 960 949 } 961 950 } elsif ($protocol eq 'ncacn_ip_tcp') { … … 964 953 my $ret = $connection->Send($DCE); 965 954 if (! $ret ) { 966 $self->{'error'} = 'SERVER CLOSED CONNECTION'; 967 return; 955 return ('CONNECTION CLOSED'); 968 956 } 969 957 } … … 979 967 } 980 968 if ($self->{'response'}->{'Type'} eq 'fault') { 981 return (' DCE/RPC FAULT => ' . $self->{'response'}->{'Error'});969 return ('FAULT: ' . sprintf("0x%.8x",$self->{'response'}->{'Error'})); 982 970 } 983 971 984 return ('RESPONSE =>' . $self->{'response'}->{'Type'},"STUB DATA = " . $self->bin2hex($self->{'response'}->{'StubData'}));972 return ('RESPONSE: ' . $self->{'response'}->{'Type'},"STUB DATA = " . $self->bin2hex($self->{'response'}->{'StubData'})); 985 973 } else { 986 $self->{'error'} = "ACK, no support for $protocol yet!"; 987 return; 974 return('NO PROTOCOL SUPPORT'); 988 975 } 989 976 }
